專利名稱:具有通過密鑰再分進(jìn)行存取保護(hù)的便攜式數(shù)據(jù)存儲介質(zhì)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)存儲介質(zhì),該數(shù)據(jù)存儲介質(zhì)具有存儲和處理秘密數(shù)據(jù)的半導(dǎo)體芯片。
包含芯片的數(shù)據(jù)存儲介質(zhì)在大量不同的應(yīng)用中使用,例如應(yīng)用于實現(xiàn)金融交易、貨物或服務(wù)付款、或作為用于控制出入檢查的識別裝置。在所有這些應(yīng)用中,通常受到保護(hù)以防止未授權(quán)的第三方訪問的秘密數(shù)據(jù)必須在數(shù)據(jù)存儲介質(zhì)芯片內(nèi)進(jìn)行處理。芯片的內(nèi)部結(jié)構(gòu)非常小,結(jié)果訪問該結(jié)構(gòu)以獲得經(jīng)該結(jié)構(gòu)處理的數(shù)據(jù)是非常困難的,由此可以確保保護(hù)數(shù)據(jù)。為了使數(shù)據(jù)訪問更加困難,芯片可以嵌入在一非常安全的粘著化合物中,如果試圖從該化合物中取出該半導(dǎo)體晶片將導(dǎo)致其毀壞,或者至少存儲在其上的秘密數(shù)據(jù)被擦除。也可以在半導(dǎo)體晶片生產(chǎn)過程中為其提供保護(hù)層,除非毀壞半導(dǎo)體晶片否則不能將保護(hù)層移開。
使用盡管極其昂貴但一般在市面上可以得到的適當(dāng)技術(shù)設(shè)備,攻擊者可以使芯片的內(nèi)部結(jié)構(gòu)暴露并對其進(jìn)行研究。例如,通過特殊的蝕刻方法或通過適當(dāng)?shù)难心ヌ幚砜梢允剐酒膬?nèi)部結(jié)構(gòu)暴露。為了確定芯片結(jié)構(gòu)內(nèi)的信號波形,使用微探針來接觸,或者使用其他方法來研究通過諸如互接方式暴露的芯片的結(jié)構(gòu)。這樣可以使用檢測的信號從數(shù)據(jù)存儲介質(zhì)中確定秘密數(shù)據(jù),如密匙,以便用于操縱目的。這樣也可以通過微探針試圖故意地改變暴露的結(jié)構(gòu)中的信號波形。
此外,近來通過測量加密處理(“Diffie-Hellman、RSA、DSS和其他系統(tǒng)實現(xiàn)的計時攻擊(Timing attacks on implementation of Diffie-Hellman,RSA,DAA,and other Systems)”,保羅.克歇爾(Paul C.Kocher),斯普瑞格出版社(Springer Verlag)1998;WO 99/35782)的電流消耗或計時以推導(dǎo)出秘密數(shù)據(jù),尤其是密鑰的方法已經(jīng)眾所周知。
該類型的一種簡單攻擊是“簡單的能量分析(SPA)”。在這個分析方法中,例如,使用密鑰d加密已知的信息M,即形成加密的文本Y=Mdmod n。在求模取冪處理期間,如果在指數(shù)d中存在“1”,則用中間結(jié)果執(zhí)行平方運(yùn)算,并用M執(zhí)行乘法運(yùn)算,然而如果在d中存在“0”,則僅使用中間結(jié)果執(zhí)行平方運(yùn)算。如果M是已知的,通過在運(yùn)算期間觀察電流和/或計時可以確定信息M。因為在d中存在“1”的情況下一直使用信息M,所以密鑰可以毫無問題地推導(dǎo)出。
僅通過在信息M或密鑰d中進(jìn)行改變可以很容易反擊這種攻擊。從保羅.克歇爾(Paul C.Kocher)的“Diffie-Hellman、RSA、DSS和其他系統(tǒng)實現(xiàn)的計時攻擊(Timing attacks on implementation of Diffie-Hellman,RSA,DAA,andother Systems)”(斯普瑞格出版社(Springer Verlag),1998年)以及國際專利申請WO 99/35782可以進(jìn)一步了解到分析方法,其中即使信息或密鑰被修改,即被加密,通過記錄大量的測量集成電路的電流響應(yīng)的測量曲線也可以推導(dǎo)出密鑰(“微分能量分析(Differential Power Analysis)”(DPA)或更高階的DPA)。
所謂的“指數(shù)消隱(blinding)”已經(jīng)被作為保密措施而提出,其中不直接使用密鑰d。
首先,取代密鑰d,對于加密處理使用了d+r*Φ,其中r是隨機(jī)數(shù)以及Φ是歐拉PHI函數(shù)。具體地,對于RSA算法n=p*q,其中p和q是質(zhì)數(shù),因此Φ=(p-1)*(q-1)。使用歐拉定理Mdmodn=Md+r*Φmodn。
如果針對每次計算使用不同的隨機(jī)數(shù)r,即使是執(zhí)行大量系列的分析處理也不可能推導(dǎo)出密鑰d。
或者,密鑰d可以分解成d1*d2 mod Φ,所以,對于加密處理,Y=Md1*d2 modΦmodn=(Md1)d2modn。
但是這種保護(hù)選擇的缺點在于,由于缺乏存儲空間,所以質(zhì)數(shù)p和q或Φ通常不存儲在智能卡中。
密鑰d也可以分解成d1與d2的和。則d=d1+d2,并且對于加密處理Y=Md1+d2modn=Md1*Md2modn=(Md1modn*Md2modn)modn。
為了獲得足夠高的保密等級,對于每次計算必須選擇新的隨機(jī)d1/d2對以將指數(shù)分解成d=d1+d2或d=d1*d2 mod Φ。由于隨機(jī)數(shù)的產(chǎn)生通常非常慢,這種方法不適用于智能卡。此外,求模取冪處理的計算復(fù)雜性顯著地增加,從而這種方法也不適宜使用在智能卡中。
因此,本發(fā)明的一個目的是保護(hù)包含在便攜式數(shù)據(jù)存儲介質(zhì)的芯片中的秘密數(shù)據(jù),防止未授權(quán)的存取,其目標(biāo)在于確保數(shù)據(jù)仍然可以如以前一樣有效地使用。
以權(quán)利要求1、7和12前序部分為基礎(chǔ),通過各個權(quán)利要求的特征部分可以實現(xiàn)該目的。
本發(fā)明提供了一種具有半導(dǎo)體芯片的數(shù)據(jù)存儲介質(zhì),該半導(dǎo)體芯片至少具有一個存儲有包含多個指令的運(yùn)算程序的存儲器,其中每個指令產(chǎn)生可以從半導(dǎo)體芯片外部檢測到的信號。
根據(jù)本發(fā)明,數(shù)據(jù)存儲介質(zhì)經(jīng)過設(shè)計以便將秘密數(shù)據(jù)分解成至少三個數(shù)據(jù)部分,其中該秘密數(shù)據(jù)存儲在半導(dǎo)體芯片中以便執(zhí)行保密相關(guān)或安全相關(guān)的運(yùn)算,或者由該半導(dǎo)體芯片生成。數(shù)據(jù)存儲介質(zhì)包括計算單元或運(yùn)算單元,用于計算隨機(jī)數(shù)并將秘密數(shù)據(jù)除以隨機(jī)數(shù)。第一數(shù)據(jù)部分包括除法運(yùn)算的整數(shù)結(jié)果,第二部分由除法運(yùn)算的余數(shù)產(chǎn)生,而第三數(shù)據(jù)部分是隨機(jī)數(shù)本身。
根據(jù)本發(fā)明的一個有利改進(jìn),秘密數(shù)據(jù)包括加密信息的密鑰,最好該密鑰用作計算不對稱加密法中(公用密鑰方法,例如橢圓曲線、RSA等)的群運(yùn)算或者模運(yùn)算的指數(shù)。
本發(fā)明的進(jìn)一步改進(jìn)規(guī)定了將要選擇的隨機(jī)數(shù),從而對于不同的隨機(jī)數(shù),隨機(jī)數(shù)的長度以及隨機(jī)數(shù)的漢明權(quán)近似為常數(shù)。這意味著不能從求模取冪處理的時間段中推導(dǎo)出秘密數(shù)據(jù),時間段與指數(shù)的長度以及指數(shù)的漢明權(quán)成比例。
根據(jù)本發(fā)明的方法規(guī)定密鑰將要除以比較小的隨機(jī)數(shù)。除余數(shù)之外的除法結(jié)果作為密鑰的第一部分,余數(shù)作為密鑰的第二部分,而隨機(jī)數(shù)作為第三部分。
為了加密信息M,Y=Mdmodn。密鑰分解成d1、d2和r,其中d1=d/r(r是隨機(jī)數(shù)),不包括余數(shù)。除法運(yùn)算的余數(shù)是密鑰d的第二部分d2,所以d2=d mod r,并且對于密鑰d,d=r*d1+d2。
這導(dǎo)致加密文本Y=Mdmodn=Mr*d1+d2modn=(Mr)d1*Md2modn=((Mr)d1modn *Md2modn)modn
圖1說明了形成加密的文本Y的過程。
首先,在步驟1形成隨機(jī)數(shù)r。在步驟2,通過除以由先前獲得的隨機(jī)數(shù)r從密鑰d中計算出第一密鑰部分d1。通過執(zhí)行d mod r而獲得密鑰的第二部分d2。
加密文本的計算開始于步驟4,首先計算Mrmod n。在下一個步驟5中計算D1=(Mr)d1mod n,而在步驟6中計算D2=Md2mod n。
當(dāng)然,在某些情況下各個計算操作的順序也可以在時間上互換。因此可以首先計算Md1mod n,然后計算(Md1)rmod n,因為(Mr)d1mod n=(Md1)rmod n。
在最后的步驟7中,中間結(jié)果D1和D2相互相乘,并且進(jìn)行模數(shù)n運(yùn)算。因此D1*D2 mod n=Mdmod n=Y(jié)。
本發(fā)明具有以下優(yōu)點不需要在卡上存儲用于形成Φ的質(zhì)數(shù)p和q,并且避免了生成需要花費很長計算時間的長隨機(jī)數(shù)。求模運(yùn)算的計算復(fù)雜性也保持在合理的限度內(nèi),因此根據(jù)本發(fā)明的解決方法可以既安全又有效地使用在智能卡中。此外,對于所述的方法,不需要修改數(shù)據(jù)存儲介質(zhì)的非易失性存儲器中的數(shù)據(jù),因為這個耗費時間的過程將會導(dǎo)致非易失性存儲器老化。
因為求模取冪需要與指數(shù)的長度和指數(shù)的漢明權(quán)成比例的時間段,如果使用一種r的長度和r的漢明權(quán)是常數(shù)的方法來產(chǎn)生隨機(jī)數(shù)r,可以實現(xiàn)在安全上的進(jìn)一步改進(jìn)。
本發(fā)明可以用于大量的加密系統(tǒng)。例如,可以用于RSA加密、基于ElGamal的加密、DSA和橢圓曲線系統(tǒng)等。
權(quán)利要求
1.一種具有半導(dǎo)體芯片的數(shù)據(jù)存儲介質(zhì),該半導(dǎo)體芯片至少具有一個存儲有包含多個指令的運(yùn)算程序的存儲器,其中每個指令生成可以從半導(dǎo)體芯片外部檢測到的信號,其特征在于,該數(shù)據(jù)存儲介質(zhì)經(jīng)過設(shè)計以便將秘密數(shù)據(jù)劃分解成至少三個數(shù)據(jù)部分,該秘密數(shù)據(jù)存儲在半導(dǎo)體芯片中以便執(zhí)行保密相關(guān)或安全相關(guān)的運(yùn)算或者由該半導(dǎo)體芯片生成,該數(shù)據(jù)存儲介質(zhì)包括運(yùn)算器以便計算隨機(jī)數(shù)并除以隨機(jī)數(shù),除法運(yùn)算得出的整數(shù)值作為第一數(shù)據(jù)部分,除法運(yùn)算的余數(shù)作為第二部分,以及隨機(jī)數(shù)本身作為第三部分。
2.如權(quán)利要求1所述的數(shù)據(jù)存儲介質(zhì),其特征在于,秘密數(shù)據(jù)是用于加密信息的密鑰。
3.如權(quán)利要求1和2所述的數(shù)據(jù)存儲介質(zhì),其特征在于,在不對稱的加密方法中,使用秘密數(shù)據(jù)作為計算群運(yùn)算的指數(shù)。
4.如權(quán)利要求1至3中任一項所述的數(shù)據(jù)存儲介質(zhì),其特征在于,使用秘密數(shù)據(jù)作為計算求模運(yùn)算的指數(shù)。
5.如權(quán)利要求1至3中任一項所述的數(shù)據(jù)存儲介質(zhì),其特征在于,使用秘密數(shù)據(jù)作為計算求模運(yùn)算的指數(shù)。
6.如權(quán)利要求1至5中任一項所述的數(shù)據(jù)存儲介質(zhì),其特征在于,選擇隨機(jī)數(shù)以使隨機(jī)數(shù)的長度和隨機(jī)數(shù)的漢明權(quán)對于不同的隨機(jī)數(shù)近似為常數(shù)。
7.一種用于保護(hù)在具有半導(dǎo)體芯片的數(shù)據(jù)存儲介質(zhì)中的秘密數(shù)據(jù)的方法,該半導(dǎo)體芯片至少包括一個存儲有多個指令的運(yùn)算程序的存儲器,其中每個指令產(chǎn)生可以在半導(dǎo)體芯片外部檢測到的信號,其特征在于,秘密數(shù)據(jù)被分解成至少三個數(shù)據(jù)部分,該秘密數(shù)據(jù)存儲在半導(dǎo)體芯片中以便執(zhí)行保密相關(guān)或安全相關(guān)的運(yùn)算或者由該半導(dǎo)體芯片產(chǎn)生,該方法首先計算隨機(jī)數(shù),并且由將秘密數(shù)據(jù)除以隨機(jī)數(shù)的整數(shù)結(jié)果得到第一數(shù)據(jù)部分,除法運(yùn)算的余數(shù)作為第二部分,而隨機(jī)數(shù)本身作為第三部分。
8.如權(quán)利要求7所述的方法,其特征在于,秘密數(shù)據(jù)是用于加密信息的密鑰。
9.如權(quán)利要求7或8所述的方法,其特征在于,在不對稱加密方法中,使用秘密數(shù)據(jù)作為計算群運(yùn)算的指數(shù)。
10.如權(quán)利要求7或8所述的方法,其特征在于,使用秘密數(shù)據(jù)作為計算模運(yùn)算的指數(shù)。
11.如權(quán)利要求7或8所述的方法,其特征在于,使用密鑰作為計算求模運(yùn)算的指數(shù)。
12.如權(quán)利要求7至11中任一項所述的方法,其特征在于,選擇隨機(jī)數(shù)以便隨機(jī)數(shù)的長度和隨機(jī)數(shù)的漢明權(quán)對于不同的隨機(jī)數(shù)近似為常數(shù)。
13.一種用于在系統(tǒng)中形成加密信息以驗證系統(tǒng)元件或形成特標(biāo)記的方法,其特征在于形成隨機(jī)數(shù)r;通過將密鑰d除以先前獲得的隨機(jī)數(shù)r來計算出第一密鑰部分d1;通過執(zhí)行d mod r來獲得密鑰的第二部分d2;通過計算Mrmod n以開始計算加密的文本;計算D1=(Mr)d1mod n和D2=Md2mod n;和互乘中間結(jié)果D1和D2并且形成模n。
14.如權(quán)利要求13所述的方法,其特征在于,首先計算Md1mod n,接著計算(Md1)rmod n,以便計算D1。
全文摘要
本發(fā)明涉及具有半導(dǎo)體芯片的數(shù)據(jù)載體,所述半導(dǎo)體芯片至少具有一個存儲有運(yùn)算程序的存儲器,所述運(yùn)算程序包含多個指令,由此每個指令可以通過能夠從半導(dǎo)體芯片外部檢測到的信號得出。本發(fā)明的目的是用于通過“微分能量分析”(DPA)或更高階的DPA來保護(hù)在數(shù)據(jù)載體的芯片中提供的秘密數(shù)據(jù)。在這個方面,本發(fā)明所提供的是,為了在半導(dǎo)體芯片中實現(xiàn)保密相關(guān)的運(yùn)算,數(shù)據(jù)載體經(jīng)設(shè)計用于將秘密數(shù)據(jù)分解成至少三個部分,所述秘密數(shù)據(jù)存儲在數(shù)據(jù)載體中或由數(shù)據(jù)載體產(chǎn)生,由此其中包括用于計算隨機(jī)數(shù)并除以該隨機(jī)數(shù)的運(yùn)算單元,由此第一數(shù)據(jù)部分是除法運(yùn)算的整數(shù)結(jié)果,第二部分是除法運(yùn)算的余數(shù),而第三部分是隨機(jī)數(shù)本身。
文檔編號G06F12/14GK1415147SQ00817950
公開日2003年4月30日 申請日期2000年12月20日 優(yōu)先權(quán)日1999年12月28日
發(fā)明者赫曼·德雷克斯勒, 哈拉爾德·瓦特 申請人:德國捷德有限公司