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