專利名稱:在電子組件中使用密鑰加密算法的對(duì)抗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在電子組件中使用密鑰加密算法的對(duì)抗方法。這些電子組件使用在對(duì)服務(wù)或數(shù)據(jù)的訪問(wèn)受到嚴(yán)格控制的應(yīng)用中。它們具有形成在微處理器及存儲(chǔ)器周圍的結(jié)構(gòu),其中一個(gè)程序存儲(chǔ)器包含密鑰。
這些組件主要使用在芯片卡中,用于它們的一些應(yīng)用。例如,它們?yōu)樵L問(wèn)某些數(shù)據(jù)庫(kù)的應(yīng)用;銀行業(yè)務(wù)的應(yīng)用;遠(yuǎn)程付費(fèi)的應(yīng)用,如用于電視,配給汽油,或通過(guò)高速公路的交費(fèi)站。
因此這些組件或這些卡要使用密鑰加密算法,其中最著名的是DES算法(英語(yǔ)Data Encryption Standard的縮寫)也具有另外的密鑰密碼,如RC5算法或COMP128算法。當(dāng)然,這種列舉沒(méi)有窮盡。
總地并簡(jiǎn)要地,這些算法的功能是根據(jù)由主系統(tǒng)(服務(wù)器,銀行自動(dòng)取款機(jī)…)在輸入端(對(duì)卡)提供的信息及根據(jù)包含在卡中的密鑰計(jì)算加密信息,及將該加密信息送回到主系統(tǒng),由此,允許譬如主系統(tǒng)認(rèn)證該組件或卡,允許交換數(shù)據(jù)…。
但是,顯然這些組件或卡易于受到侵襲,這種侵襲在于對(duì)消耗電流的差分分析并使心懷叵測(cè)的第三者能找出密鑰。這種侵襲被稱為DPA侵襲,為英語(yǔ)Differential Power Analysis的縮寫。
該DPA侵襲的原理是基于這樣的事實(shí),即微處理器執(zhí)行指令的電流損耗將根據(jù)被操作數(shù)據(jù)而變化。
尤其是,操作一個(gè)數(shù)據(jù)位的微處理器的指令將根據(jù)該位為值“1”還是“0”產(chǎn)生出兩種電流幅值。典型地,如果指令操作“0”,則在執(zhí)行時(shí)刻得到消耗電流的第一幅值,及如果指令操作“1”,則得到不同于第一幅值消耗電流的第二幅值。
密碼算法的特征是公知的執(zhí)行計(jì)算,及使用參數(shù)。唯一未知的是包含在程序存儲(chǔ)器中的密鑰。密鑰不能僅從知道施加在輸入端的信息及返回的編碼信息來(lái)推導(dǎo)出。
但是,在密碼算法中,某些計(jì)算數(shù)據(jù)項(xiàng)僅依賴于以明碼施加在卡輸入端的信息及卡中所包含的密鑰。在程序中計(jì)算的其它數(shù)據(jù)也可僅根據(jù)編碼信息(通常以明碼在卡的輸出端向主系統(tǒng)提供)及包含在卡中的密鑰來(lái)重計(jì)算。更確切地,這些具體數(shù)據(jù)的每個(gè)位可根據(jù)輸入端或輸出端的信息及密鑰有限的具體位數(shù)來(lái)確定。
因此,具體數(shù)據(jù)的每個(gè)位相應(yīng)于由密鑰位的具體組形成的子密鑰。
這些具體數(shù)據(jù)的位可被預(yù)計(jì)及在以下被稱為“目標(biāo)比特”。
DPA侵襲的基本思想是,使用依賴其操作的是“1”還是“0”的指令所消耗電流幅值的差別,及使用根據(jù)已知輸入及輸出信息及對(duì)相應(yīng)子密鑰的假定由算法指令計(jì)算目標(biāo)比特的可能性。
因此,DPA侵襲的原理是,通過(guò)對(duì)大量電流測(cè)量曲線應(yīng)用選擇布爾函數(shù)來(lái)?yè)祢?yàn)給出的子密鑰假定,每個(gè)電流測(cè)量曲線相應(yīng)于侵襲者已知的輸入數(shù)據(jù),其選擇布爾函數(shù)為子密鑰假定函數(shù)并對(duì)于每個(gè)曲線由對(duì)目標(biāo)比特的預(yù)計(jì)值來(lái)確定。
在對(duì)相關(guān)的子密鑰作出假定時(shí),實(shí)際上對(duì)于一個(gè)給定的輸入或輸出信息可以預(yù)計(jì)目標(biāo)比特將取得的值“0”或“1”。
作為選擇布爾函數(shù),可應(yīng)用對(duì)于相關(guān)子密鑰的假定由目標(biāo)比特取得的值“0”或“1”來(lái)將這些曲線分為兩個(gè)包第一包將觀察到目標(biāo)比特操作在“0”上的曲線集中起來(lái),及第二包將觀察到根據(jù)子密鑰假定目標(biāo)比特的操作在“1”上的曲線集中起來(lái)。通過(guò)對(duì)每個(gè)包中的消耗電流取平均值,可獲得第一包的平均耗電曲線M0(t)及第二包的平均耗電曲線M1(t)。
如果子密鑰的假定是正確的,則第一包正確地將N個(gè)曲線中觀察到目標(biāo)比特操作在“0”上的所有曲線集中起來(lái),及第二包正確地將N個(gè)曲線中觀察到目標(biāo)比特的操作在“1”上的曲線集中起來(lái)。第一包的平均耗電曲線M0(t)在任何地方均具有平均耗電值,但在執(zhí)行關(guān)鍵指令(les instructions critiques)的時(shí)刻除外,此時(shí)具有目標(biāo)比特操作在“0”上的特征(profile0)的耗電。換言之,對(duì)于所有曲線,所有被操作位具有值為“0”與值為“1”的相同機(jī)會(huì),但總是為“0”值的目標(biāo)比特除外。這可寫成下式M0(t)=[(profile0+profile1)/2]t≠tci+[profile0]tci即M0(t)=[Vmt]t≠tci+[profile0]tci式中tci表示執(zhí)行關(guān)鍵指令的關(guān)鍵時(shí)刻。
類似地,第二包的平均耗電曲線M1(t)在任何地方均相應(yīng)于平均耗電,但在執(zhí)行關(guān)鍵指令的時(shí)刻除外,此時(shí)具有目標(biāo)比特操作在“1”上的特征(profile1)的耗電。這可寫成下式M1(t)=[(profile0+profile1)/2]t≠tci+[profile1]tci即M0(t)=[Vmt]t≠tci+[profile1]tci可以看到,這兩個(gè)幅值profile0及profile1不相等。曲線M0(t)及M1(t)的差則給出一個(gè)信號(hào)DPA(t),它的幅值在執(zhí)行操作該位的關(guān)鍵指令的關(guān)鍵時(shí)刻、即在
圖1所示的例子中的點(diǎn)tc0至tc6上等于profile0-profile1,而在關(guān)鍵時(shí)刻以外的地方其幅值等于零。
如果子密鑰的假定不正確,則分組也是不真實(shí)的。從統(tǒng)計(jì)上看,這時(shí)在每個(gè)包中,觀察到目標(biāo)比特操作在“0”上的曲線真正與觀察到目標(biāo)比特的操作在“1”上的曲線同樣多。這時(shí)所產(chǎn)生的平均曲線M0(t)位于由(profile0+profile1)/2=Vm給出的平均值周圍,因?yàn)閷?duì)于每個(gè)曲線所有被操作位、包括目標(biāo)比特在內(nèi)具有值為“0”與值為“1”的相同機(jī)會(huì)。
同樣的原因使第二包導(dǎo)致為平均耗電曲線M1(t),它的幅值位于由(profile0+profile1)/2=Vm給出的平均值周圍。
在此情況下,被差值M0(t)-M1(t)提供的信號(hào)DPA(t)實(shí)質(zhì)上等于零。在子密鑰假定不正確的情況下的信號(hào)DPA(t)表示在圖2中。
因此,DPA侵襲使用了當(dāng)根據(jù)被操作位的值執(zhí)行指令時(shí)消耗電流幅值的差,以基于給定子密鑰的選擇布爾函數(shù)執(zhí)行消耗電流曲線的分組。通過(guò)產(chǎn)生的兩個(gè)曲線包之間的平均耗電的差分分析,可以獲得信息信號(hào)DPA(t)。
因而侵襲DPA的全部過(guò)程在于a-抽取N個(gè)隨機(jī)信息(例如N等于1000);b-對(duì)于N個(gè)隨機(jī)信息的每個(gè)由卡執(zhí)行算法,并每次記錄電流消耗曲線(在組件的電源端子上測(cè)量);c-對(duì)子密鑰作出假定;d-對(duì)于每個(gè)隨機(jī)信息預(yù)計(jì)由一個(gè)目標(biāo)比特取得的值,其值僅依賴于(輸入或輸出)信息的位及作為假定所取的子密鑰,以便獲得布爾選擇函數(shù);
e-根據(jù)該布爾選擇函數(shù)(即對(duì)于每個(gè)曲線在子密鑰假定下根據(jù)對(duì)目標(biāo)比特預(yù)計(jì)的值“0”或“1”)對(duì)曲線分組;f-在每個(gè)包中計(jì)算由平均消耗電流產(chǎn)生的曲線;g-確定這些平均曲線的差值,以獲得信號(hào)DPA(t)。
如果子密鑰的假定正確,該布爾選擇函數(shù)則正確,及第一包的曲線將真正對(duì)應(yīng)于在卡中在輸入端或輸出端上提供的信息所給出的目標(biāo)比特為“0”的曲線,以及第二包的曲線將真正對(duì)應(yīng)于在卡中在輸入端或輸出端上提供的信息所給出的目標(biāo)比特為“1”的曲線。
這是在圖1中所示的情況信號(hào)DPA(t)于是在相應(yīng)于執(zhí)行關(guān)鍵指令(即操作目標(biāo)比特的指令)的時(shí)刻tc0至tc6上不為零。
應(yīng)指出,侵襲者并不需要精確知道這些關(guān)鍵時(shí)刻。對(duì)侵襲者只要有測(cè)量周期中的至少一個(gè)關(guān)鍵時(shí)刻就夠了。
如果子密鑰的假定不正確,則分組不符合實(shí)際情況,及在每個(gè)包中實(shí)際上相應(yīng)于目標(biāo)比特為“0”的曲線與相應(yīng)于目標(biāo)比特為“1”的曲線同樣地多。DPA(t)信號(hào)實(shí)質(zhì)上到處為零(圖2中所示的情況)。這時(shí)必需返回到步驟c及對(duì)子密鑰作出新的假定。
如果假定被證明是正確的,將可以繼續(xù)進(jìn)行其它子密鑰的假定,直到最大限度地重組密鑰為止。例如,對(duì)于DES算法使用64位密鑰,其中僅有56位是有效的。對(duì)于DPA侵襲,可以至少重組這56個(gè)有效位中的48位。
本發(fā)明的目的是在電子組件中使用一種對(duì)抗方法,該方法甚至在子密鑰的假定正確時(shí)也導(dǎo)致信號(hào)DPA(t)為零。
以此方式,就根本不可能將子密鑰假定正確的情況與子密鑰假定不正確的情況區(qū)別開(kāi)來(lái)。借助該對(duì)抗策略,電子組件受到保護(hù)以免DPA侵襲。
根據(jù)本發(fā)明,該對(duì)抗方法可以使目標(biāo)比特、即由關(guān)鍵指令操作的數(shù)據(jù)變?yōu)椴豢深A(yù)計(jì)的。
實(shí)際上,因?yàn)樵搶?duì)抗方法對(duì)于施加在輸入端的每個(gè)信息由關(guān)鍵指令操作的目標(biāo)比特以相等的幾率取值“0”或“1”。在每個(gè)在給定子密鑰假定情況下借助侵襲者已計(jì)算的布爾選擇函數(shù)侵襲者作出的曲線包中,實(shí)際將具有同樣地多的以目標(biāo)比特“0”操作的曲線與以目標(biāo)比特“1”操作的曲線。信號(hào)DPA(t)總是為零,而不管子密鑰的假定正確還是不正確。
因此,作為其特征,本發(fā)明涉及一種在電子組件中使用密鑰加密算法的對(duì)抗方法,算法的實(shí)施包括使用第一裝置,以根據(jù)輸入數(shù)據(jù)、輸出數(shù)據(jù)和/或由關(guān)鍵指令操作得到的數(shù)據(jù)提供輸出數(shù)據(jù)。根據(jù)本發(fā)明,該對(duì)抗方法還考慮使用其它裝置,以使得輸出數(shù)據(jù)及推導(dǎo)出的數(shù)據(jù)是不可預(yù)計(jì)的。
根據(jù)本發(fā)明,使用的不同裝置將根據(jù)二分之一概率統(tǒng)計(jì)法則來(lái)管理。
在以下的說(shuō)明中以非限制說(shuō)明的方式并借助附圖來(lái)詳細(xì)地描述本發(fā)明的其它特征及優(yōu)點(diǎn),附圖為圖1及2(已被描述),表示根據(jù)DPA侵襲作為密鑰K的子密鑰假定的函數(shù)獲得的信號(hào)DPA(t);圖3及4是執(zhí)行第一循環(huán)及最后一循環(huán)DES算法的流程圖;圖5是用于DES算法中的SBOX操作的框圖;圖6表示用于SB0X操作的具有輸入及輸出的基本常數(shù)表;圖7及8表示根據(jù)本發(fā)明對(duì)抗方法一個(gè)實(shí)施方式的執(zhí)行第一循環(huán)及最后一循環(huán)DES算法的流程圖的例子;圖9及10分別表示本發(fā)明的第二及第三基本常數(shù)表;圖11表示根據(jù)本發(fā)明對(duì)抗方法一個(gè)實(shí)施方式的執(zhí)行DES算法的總流程圖;及圖12表示包括使用了根據(jù)本發(fā)明的對(duì)抗方法的電子組件的一個(gè)芯片卡的簡(jiǎn)化框圖。
下面將以DES密碼算法的一個(gè)應(yīng)用例子來(lái)解釋本發(fā)明。本發(fā)明并不限制在該一個(gè)例子上,它可使用在一般的密鑰加密算法中。
DES密碼算法(以下簡(jiǎn)稱為DES或DES算法)包括16循環(huán)計(jì)算,表示為T1至T16,如圖3及4中所示。
DES開(kāi)始于對(duì)輸入信息M的初始排列(圖3)。輸入信息是一個(gè)64位的字f。在排列后,獲得一個(gè)64位的字e,它被切成兩部分,以形成第一循環(huán)(T1)的輸入?yún)?shù)L0至R0。L0是包括字e的32個(gè)最高位的32位字d。R0是包括字e的32個(gè)最低位的32位字h。
密鑰K是一個(gè)64位的字q,它本身受到排列及壓縮,以提供一個(gè)56位的字r。
第一循環(huán)包括對(duì)參數(shù)R0的操作EXP PERM,該操作包括一次擴(kuò)展及一次排列,以提供48位的字1。
該字1在一個(gè)表示為XOR的異或(OU EXCLUSIF)型操作中與參數(shù)K1組合,以提供一個(gè)48位的字b。參數(shù)K1是一個(gè)48位的字m,它由字r移位一個(gè)位置(圖3及4中表示為SHIFT的操作)接著一次排列及一次壓縮(表示為COMP PERM)的操作。
字b被施加稱為SBOX的操作,在其輸出上獲得一個(gè)32位的字a。對(duì)于該特殊操作還要參照附圖5及6更詳細(xì)地說(shuō)明。
字a受到一次排列P PERM,在其輸出上得到一個(gè)32位的字c。
該字c在一個(gè)表示為XOR的異或(OU EXCLUSIF)型操作中與第一循環(huán)T1的輸入?yún)?shù)L0組合,作為輸出提供一個(gè)32位的字g。
第一循環(huán)的字h(=R0)提供下一循環(huán)(T2)的輸入?yún)?shù)L1,及第一循環(huán)的字g提供下一循環(huán)的輸入?yún)?shù)R1。第一循環(huán)的字p提供下一循環(huán)的輸入?yún)?shù)r。
另外的循環(huán)T2至T16以類似方式進(jìn)行,但涉及移位的操作SHIFT除外,它將根據(jù)相關(guān)的循環(huán)在一個(gè)或兩個(gè)位置上進(jìn)行。
于是每循環(huán)Ti作為輸入接收參數(shù)Li-1,Ri-1,及r及作為輸出提供參數(shù)Li,Ri及r,用于下一循環(huán)Ti+1。
在DES算法結(jié)束時(shí)(圖4),將根據(jù)最后一循環(huán)T16提供的參數(shù)L16及R16計(jì)算編碼信息。
實(shí)際上,編碼信息C包括以下操作-通過(guò)使字L16及R16位置的倒置及然后連接形成64位字e’;及-執(zhí)行排列IP-1,它為DES開(kāi)始時(shí)排列的倒置,以便獲得形成編碼信息C的64位字f。
SBOX操作被詳細(xì)地表示在圖5及6中。它包括一個(gè)常數(shù)表TC0,用于提供作為輸入數(shù)據(jù)b函數(shù)的輸出數(shù)據(jù)a。
實(shí)際上,該常數(shù)表TC0以8個(gè)基本常數(shù)表TC01至TC08的形式表示,每個(gè)表作為輸入僅接收字b的6位,以便在輸出上僅提供字a的4位。
因此,圖6上所示的基本常數(shù)表TC01作為輸入數(shù)據(jù)接收字b的位b1至b6及作為輸出數(shù)據(jù)提供字a的位a1至a6。
實(shí)際上,這8個(gè)基本常數(shù)表被存儲(chǔ)在電子組件的程序存儲(chǔ)器中。
在第一循環(huán)T1的SBOX操作中,常數(shù)表TC0的輸出數(shù)據(jù)a的具體位僅取決于在輸入上施加的數(shù)據(jù)b的6個(gè)位,即僅是密鑰K及輸入信息(M)的6位。
在最后一循環(huán)T16的SBOX操作中,常數(shù)表TC0的輸出數(shù)據(jù)a的具體位可根據(jù)密鑰K及編碼信息(C)的僅6位再計(jì)算。
但如果回顧DPA侵襲的原理,假如目標(biāo)比特被選擇為輸出數(shù)據(jù)a的一個(gè)位,對(duì)于給定輸入信息(M)或輸出信息(C)預(yù)計(jì)一個(gè)目標(biāo)比特的值來(lái)說(shuō),在密鑰K的6位上作出假定就夠了。換言之,對(duì)于DPA,在6位子密鑰上作出假定就夠了。
在對(duì)于一個(gè)給定目標(biāo)比特基于這種算法的DPA侵襲中,必需在64個(gè)可能性中鑒別出一個(gè)正確的子密鑰假定。
因此,通過(guò)在字a中僅取8位作為目標(biāo)比特(每個(gè)基本常數(shù)表TC01至TC08一個(gè)輸出位),并在這些目標(biāo)比特的每個(gè)作出DPA侵襲,就可以一直發(fā)現(xiàn)到密鑰的6×8=48位。
在DES中,在該算法的開(kāi)始及結(jié)束時(shí)由此可找出關(guān)于DPA侵襲的關(guān)鍵指令。
在DES算法開(kāi)始時(shí),根據(jù)輸入信息M及子密鑰假定可被預(yù)計(jì)的數(shù)據(jù)是在第一循環(huán)(T1)中計(jì)算的數(shù)據(jù)a及g。
第一循環(huán)T1中的數(shù)據(jù)(圖3)是相關(guān)循環(huán)中SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a通過(guò)排列(P PERM)及與輸入?yún)?shù)的異或(OUEXCLUSIF)操作被計(jì)算的。
而第一循環(huán)的數(shù)據(jù)c是由第一循環(huán)的數(shù)據(jù)a導(dǎo)出的數(shù)據(jù)。導(dǎo)出的數(shù)據(jù)c相應(yīng)于數(shù)據(jù)a的位的簡(jiǎn)單重排列。
第二循環(huán)的數(shù)據(jù)1是由第一循環(huán)的數(shù)據(jù)g導(dǎo)出的數(shù)據(jù),因?yàn)樗鄳?yīng)于字g的位的重排列,字g的某些位還是被復(fù)制了。
已知了a及g,就可以知道這些可導(dǎo)出的數(shù)據(jù)。
該算法開(kāi)始時(shí)的關(guān)鍵指令是操作可預(yù)計(jì)的數(shù)據(jù)、如第一循環(huán)的數(shù)據(jù)或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令。
于是操作第一循環(huán)T1的數(shù)據(jù)a或?qū)С龅臄?shù)據(jù)c的關(guān)鍵指令是SBOX操作結(jié)束時(shí)的指令、P PERM操作的指令及第一循環(huán)T1的XOR操作開(kāi)始時(shí)的指令。
操作數(shù)據(jù)g或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是從第一循環(huán)T1結(jié)束時(shí)的操作XOR結(jié)束的指令到第二循環(huán)T2的SBOX操作開(kāi)始的指令中的所有指令,及第三循環(huán)T3結(jié)束時(shí)的操作XOR開(kāi)始的指令(L2=h(T2)=g(T1))。
在DES算法結(jié)束時(shí),根據(jù)編碼信息及子密鑰假定可被預(yù)計(jì)的數(shù)據(jù)是第16循環(huán)T16的數(shù)據(jù)a及等于第14循環(huán)T14的字h的數(shù)據(jù)L15。
操作第16循環(huán)T16的數(shù)據(jù)a或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是用于第16循環(huán)操作SBOX結(jié)束、排列操作P PERM及XOR操作開(kāi)始的指令。
對(duì)于數(shù)據(jù)L15,操作該數(shù)據(jù)或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是從第14循環(huán)T14的操作XOR結(jié)束的指令到第15循環(huán)T15的SBOX操作開(kāi)始的指令中的所有指令,及第16循環(huán)T16結(jié)束時(shí)的操作XOR開(kāi)始的指令。
根據(jù)本發(fā)明應(yīng)用于該DES算法的對(duì)抗方法在于,對(duì)于操作一個(gè)數(shù)據(jù)的每個(gè)關(guān)鍵指令具有與操作其補(bǔ)數(shù)的關(guān)鍵指令相同的幾率。因此,不管在其上可作出DPA侵襲的目標(biāo)比特如何,操作該位、即操作“1”或“0”的關(guān)鍵指令具有相同機(jī)會(huì)。
實(shí)際上,這應(yīng)該適合每個(gè)可能的目標(biāo)比特?fù)Q言之,侵襲者具有多個(gè)可能的侵襲選擇,即具有多個(gè)布爾選擇函數(shù)的選擇,以便對(duì)于給定的子密鑰假定執(zhí)行其曲線分組,根據(jù)本發(fā)明的對(duì)抗方法的使用應(yīng)該致力于被每個(gè)關(guān)鍵指令操作的數(shù)據(jù)將隨機(jī)地每隔一次取一個(gè)數(shù)值或它的補(bǔ)數(shù)。當(dāng)本發(fā)明的對(duì)抗方法應(yīng)用于DES算法時(shí),因此需對(duì)DES開(kāi)始時(shí)的關(guān)鍵指令及對(duì)DES結(jié)束時(shí)的關(guān)鍵指令施加對(duì)抗措施,以便完全受到保護(hù)。
在DES中,被關(guān)鍵指令操作的所有數(shù)據(jù)為輸出數(shù)據(jù)或從SBOX操作的輸出數(shù)據(jù)中導(dǎo)出的數(shù)據(jù)。
在DES開(kāi)始時(shí),可被預(yù)計(jì)的數(shù)據(jù)是第一循環(huán)T1的數(shù)據(jù)a及g。數(shù)據(jù)a是第一循環(huán)SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a計(jì)算的數(shù)據(jù),因?yàn)間=P PERM(a)XOR L0。因此g是從第一循環(huán)的SBOX操作的輸出數(shù)據(jù)a導(dǎo)出的數(shù)據(jù)。于是,被DES開(kāi)始的關(guān)鍵指令操作的所有數(shù)據(jù)將直接或間接地由第一循環(huán)的SBOX操作的輸出數(shù)據(jù)來(lái)產(chǎn)生。
對(duì)于DES結(jié)束時(shí),可被預(yù)計(jì)的數(shù)據(jù)是第16循環(huán)T16的數(shù)據(jù)a及第14循環(huán)T14的數(shù)據(jù)g,g等于L15。
數(shù)據(jù)a是第16循環(huán)T16的SBOX操作的輸出數(shù)據(jù)。
對(duì)于數(shù)據(jù)L15,在DES算法常規(guī)執(zhí)行時(shí),可根據(jù)第14循環(huán)T14的SBOX操作的數(shù)據(jù)a來(lái)計(jì)算。
如果具體SBOX操作的輸出數(shù)據(jù)a變得不可預(yù)計(jì),所有導(dǎo)出的數(shù)據(jù)也變得不可預(yù)計(jì)因此由DES算法的關(guān)鍵指令操作的所有數(shù)據(jù)變得不可預(yù)計(jì)。
因而SBOX操作相應(yīng)于由常數(shù)表TC0組成的第一裝置,它被使用在每一循環(huán)中,以便根據(jù)輸入數(shù)據(jù)S提供輸出數(shù)據(jù)。
施加于DES算法的對(duì)抗方法的一個(gè)實(shí)施形式在于,使用至少另一常數(shù)表作為使得輸出數(shù)據(jù)a變得不可預(yù)計(jì)的另一裝置,以使得所有這些輸出數(shù)據(jù)和/或由關(guān)鍵指令操作的導(dǎo)出數(shù)據(jù)被變得不可預(yù)計(jì)的。
在執(zhí)行該算法時(shí),使用各個(gè)裝置,即在該例中,使用了根據(jù)二分之一概率統(tǒng)計(jì)規(guī)律管理的各個(gè)常數(shù)表。
另外一個(gè)或一些常數(shù)表時(shí)這樣的,即使得第一常數(shù)表TC0的輸入數(shù)據(jù)d及輸出數(shù)據(jù)的一個(gè)和/或另一個(gè)相應(yīng)于其補(bǔ)數(shù)數(shù)據(jù)。
圖7及8表示根據(jù)本發(fā)明施加于DES算法的對(duì)抗方法的一個(gè)應(yīng)用圖7表示該算法的開(kāi)始。根據(jù)本發(fā)明的對(duì)抗方法中未有變化的數(shù)據(jù)操作具有與上述圖3中相同的標(biāo)記。
在DES算法開(kāi)始時(shí),在第一循環(huán)T1的SBOX操作中設(shè)置了第二常數(shù)表TC1。這些圖中所有受第二常數(shù)表TC1影響的數(shù)據(jù)被標(biāo)有標(biāo)記’或標(biāo)記。可以看到,DES開(kāi)始時(shí)的關(guān)鍵指令操作由該對(duì)抗方法影響的所有數(shù)據(jù)。
可以看出,第一常數(shù)表實(shí)際是由8個(gè)第一常數(shù)表組成的,第二常數(shù)表也是由8個(gè)第二常數(shù)表組成的。
在所示的實(shí)施例中第一常數(shù)表TC0及第二常數(shù)表TC1是這樣的,即對(duì)于相同的輸入數(shù)據(jù)E,第二常數(shù)表在其輸出提供的數(shù)據(jù)是由第一常數(shù)表提供的輸出數(shù)據(jù)的補(bǔ)數(shù)。
圖9表示這樣一個(gè)第二基本表TC11,它提供的輸出是圖6中所示的第一基本表TC01輸出的補(bǔ)數(shù)。
借助該第二常數(shù)表TC1,在第一循環(huán)T1的SBOX操作的輸出上獲得了被第一常數(shù)表TC0獲得的數(shù)據(jù)a的補(bǔ)數(shù)/a。類似地,在第一循環(huán)T1中獲得補(bǔ)數(shù)數(shù)據(jù)/g,及在第二循環(huán)T2中獲得補(bǔ)數(shù)數(shù)據(jù)/h,/L2,/1及/b。
通過(guò)根據(jù)二分之一概率統(tǒng)計(jì)規(guī)律提供輸出數(shù)據(jù)的第一表或第二表,在DES開(kāi)始時(shí)由關(guān)鍵指令操作的所有可能的目標(biāo)比特具有取值“1”與取值“0”相同的機(jī)會(huì)。
在DES算法結(jié)束時(shí),根據(jù)本發(fā)明的對(duì)抗方法的實(shí)施形式需要使用與第一表不同的多個(gè)常數(shù)表,因?yàn)楸匦柰瑫r(shí)考慮在第14循環(huán)T14中計(jì)算的輸出數(shù)據(jù)a及在第16循環(huán)T16中計(jì)算的輸出數(shù)據(jù)a,以便使由該DES技術(shù)時(shí)的關(guān)鍵指令所操作的所有數(shù)據(jù)變得不可預(yù)計(jì)。
該對(duì)抗方法用于該DES算法結(jié)束的一個(gè)實(shí)施例被表示在圖8上。
考慮使用兩個(gè)常數(shù)表TC1及TC2。
在第14循環(huán)T14中計(jì)算的SBOX操作中,使用已在DES開(kāi)始時(shí)用過(guò)的第二常數(shù)表TC1。
在第15循環(huán)及第16循環(huán)的SBOX操作中,使用第三常數(shù)表TC2。
該第三常數(shù)表TC2是這樣的,即它對(duì)第一常數(shù)表TC0的輸入數(shù)據(jù)E的補(bǔ)數(shù)/E提供輸出數(shù)據(jù)s的補(bǔ)數(shù)/s。相應(yīng)的第三基本常數(shù)表的一個(gè)例子TC21表示在圖10上,它是根據(jù)第一基本常數(shù)表確定的。
通過(guò)使用這些常數(shù)表,顯然在圖8中所有關(guān)鍵指令將操作補(bǔ)數(shù)數(shù)據(jù)。
本發(fā)明并不被限制在這些常數(shù)表TC1及TC2的例子上。亦存在另外的可能性。例如,對(duì)于在DES結(jié)束時(shí)使用的對(duì)抗方法,可以將常數(shù)表TC1及另外的常數(shù)表組合使用,后者是相對(duì)第一常數(shù)表確定的,如它對(duì)輸入數(shù)據(jù)的補(bǔ)數(shù)/E提供輸出數(shù)據(jù)S。
一般地,DES的結(jié)束需要使用根據(jù)相關(guān)循環(huán)的不同的常數(shù)表,以便使由DES結(jié)束時(shí)關(guān)鍵指令操作的所有數(shù)據(jù)將是不可預(yù)計(jì)的。
但是,參照?qǐng)D7及8所述的實(shí)施形式具有一個(gè)缺點(diǎn)在DES輸入時(shí)所使用的對(duì)抗方法將產(chǎn)生中間計(jì)算的結(jié)果L3’及R3’,它們是不正確的。因此所有隨后的中間結(jié)果也將是不正確的。
類似地,在DES結(jié)束時(shí)所使用的對(duì)抗方法將產(chǎn)生中間計(jì)算的結(jié)果L16’及R16’,它們亦是不正確的。
在所有情況下,編碼信息均不正確。
在本發(fā)明的該實(shí)施形式中,因此,必需考慮能重新使后面的算法每次-一旦發(fā)出關(guān)鍵指令的話-有正確的中間結(jié)果。
實(shí)際上,因?yàn)镈ES開(kāi)始的關(guān)鍵指令處于頭三循環(huán)中,這頭三循環(huán)將被拆分為二。換言之,考慮執(zhí)行兩個(gè)序列,每個(gè)至少包括頭三循環(huán)T1,T2,T3。第一序列SEQA在每循環(huán)中使用第一常數(shù)表TC0。另一序列SEQB在至少第一循環(huán)T1中使用第二常數(shù)表TC1。在所示例中,在兩個(gè)隨后的循環(huán)T2及T3中使用第一常數(shù)表。
可看出,根據(jù)本發(fā)明的對(duì)抗方法使用了各個(gè)裝置,即在該例中使用了各個(gè)常數(shù)表,它們根據(jù)二分之一概率統(tǒng)計(jì)規(guī)律被管理。這時(shí)該二分之一概率統(tǒng)計(jì)規(guī)律將被具體地應(yīng)用在各個(gè)裝置使用的次序上,即在該例中,應(yīng)用在兩個(gè)序列SEQA及SEQB的執(zhí)行次序上。
同樣地,為了在產(chǎn)生編碼信息C的DES結(jié)束時(shí)具有正確的參數(shù)L16及R16,也使包含DES結(jié)束的關(guān)鍵指令三循環(huán)T14,T15及T16(圖7)拆分為二。于是執(zhí)行兩個(gè)序列,其中每個(gè)序列至少包括最后三循環(huán)T14,T15,T16。第一序列SEQA’在每循環(huán)中使用第一常數(shù)表TC0。另一序列SEQB’使用另外的常數(shù)表TC1及TC2。如上所述,二分之一概率統(tǒng)計(jì)規(guī)律應(yīng)用在這兩個(gè)序列SEQA’及SEQB’的執(zhí)行次序上。
這時(shí)關(guān)鍵指令被執(zhí)行兩次,每個(gè)序列中一次。但是在一個(gè)或另一序列中無(wú)論哪個(gè)關(guān)鍵指令的執(zhí)行時(shí)刻,操作一個(gè)數(shù)據(jù)的概率等于操作其補(bǔ)數(shù)的概率。
因此使用在電子組件中的DES計(jì)算程序應(yīng)該被修改,以包括根據(jù)本發(fā)明的對(duì)抗方法。根據(jù)本發(fā)明并使用參照?qǐng)D7及8所述實(shí)施形式中在DES開(kāi)始及結(jié)束時(shí)的對(duì)抗方法的一個(gè)執(zhí)行流程例表示在圖11中。在該例中,每個(gè)序列SEQA及SEQB包括頭三循環(huán)及每個(gè)序列SEQA’及SEQB’包括最后三循環(huán)。
計(jì)算程序則主要在于,將標(biāo)記為DATAIN及KEY的輸入數(shù)據(jù)存儲(chǔ)在標(biāo)記為CONTEXTO的暫存區(qū)中,這些參數(shù)相應(yīng)于L0,R0及r。
在該計(jì)算程序中,接著將第一環(huán)形計(jì)數(shù)器FR置成0,及隨機(jī)地抽取一個(gè)等于0或1的值RND1。
在該例中,如果RND1等于1,則首先執(zhí)行T1,T2,T3的序列SEQB,在該序列中在T1循環(huán)中使用第二常數(shù)表TC1,及對(duì)于T2及T3循環(huán)使用第一常數(shù)表TC0。輸出參數(shù)L3’,R3’(它們具有不正確值)被存儲(chǔ)在標(biāo)記為CONTEXT2的暫存區(qū)中。
如果FR不等于1,它被置于0,則從CONTEXTO中撿索出輸入數(shù)據(jù),及使RND1的值取補(bǔ)數(shù)。在該例中,得到RND1等于0。這時(shí)將執(zhí)行T1,T2,T3的另一序列SEQA,其中在這三循環(huán)T1,T2及T3中使用第一常數(shù)表。將輸出參數(shù)(正確值)存儲(chǔ)在標(biāo)記為CONTEXT1的暫存區(qū)中。
如果FR為1,兩個(gè)序列均被執(zhí)行。這時(shí)撿索出CONTEXT1,以便在下一循環(huán)中提供具有正確值的中間結(jié)果。
如果FR等于0,則程序開(kāi)始于T1(TC0),T2(TC0),T3(TC0)及結(jié)束于T1(TC1),T2(TC0),T3(TC0)。
在達(dá)到循環(huán)T13結(jié)束時(shí),由該循環(huán)T13提供的參數(shù)L13,R13B被存儲(chǔ)在暫存區(qū)CONTEXTO中,及以與第一循環(huán)相似的方式進(jìn)行剩余的循環(huán)T14,T15及T16。
在所有情況下,指令的數(shù)目必需精確地相同,而不管計(jì)算路徑如何。這就是為什么,尤其在所述應(yīng)用例中要考慮也將不正確的值(L3’,R3’,或L16’,R16’)存儲(chǔ)在暫存區(qū)CONTEXT2中。
實(shí)際上,如果在兩個(gè)可能路徑之間存在任何差別,就具有DPA侵襲成功的可能性。
根據(jù)本發(fā)明的對(duì)抗方法不限制在參照DES算法描述的具體實(shí)施例上。它可以應(yīng)用于任何密鑰加密算法。一般地,對(duì)于包括使用第一裝置根據(jù)輸入數(shù)據(jù)提供輸出數(shù)據(jù)、由關(guān)鍵指令操作輸出數(shù)據(jù)和/或?qū)С龅臄?shù)據(jù)的任何算法的實(shí)施,根據(jù)本發(fā)明的對(duì)抗方法還包括使用使用另外的裝置,以使得輸出數(shù)據(jù)及導(dǎo)出的數(shù)據(jù)成為不可被預(yù)計(jì)的。
使用的各個(gè)裝置,例如使用的第一裝置及使用的另外裝置,是根據(jù)二分之一概率統(tǒng)計(jì)規(guī)律進(jìn)行管理的。
另外裝置可包括多個(gè)不同的裝置。它們是這樣的,即它們使其數(shù)據(jù)的補(bǔ)數(shù)與第一裝置的輸入及輸出數(shù)據(jù)中的一個(gè)或另一個(gè)相對(duì)應(yīng),在以上具體描述的用于DES的對(duì)抗方法實(shí)施形式中,第一裝置由第一常數(shù)表TC0組成。另外的裝置在DES開(kāi)始時(shí)由第二常數(shù)表TC1組成。在DES結(jié)束時(shí),在此例中它們由兩個(gè)不同的常數(shù)表TC1及TC2組成。
為了將根據(jù)本發(fā)明的對(duì)抗方法用于一個(gè)給定的密鑰加密算法,因此必需首先確定該算法所有可被預(yù)計(jì)的數(shù)據(jù),及操作這些數(shù)據(jù)或?qū)С龅臄?shù)據(jù)的所有在DPA侵襲的意義上關(guān)鍵的指令。然后應(yīng)該在該算法中鑒別在本發(fā)明意義上的第一裝置及另外裝置,以使得由關(guān)鍵指令操作的所有數(shù)據(jù)不可被預(yù)計(jì)。對(duì)于DES算法,第一裝置是常數(shù)表TC0。另外的裝置譬如為另外的常數(shù)表。這些裝置對(duì)于另外的算法可能有不同的操作。對(duì)于同一算法,這些裝置可根據(jù)鑒別的關(guān)鍵指令由不同的操作組成。
在一種密鑰加密算法中使用這種對(duì)抗方法的電子組件1典型地包括一個(gè)微處理器μP,一個(gè)程序存儲(chǔ)器2及一個(gè)工作存儲(chǔ)器3,如圖12中所示。為了能管理根據(jù)本發(fā)明的各個(gè)裝置的使用,在所述例中這些裝置是存儲(chǔ)在程序存儲(chǔ)器中的各個(gè)常數(shù)表,設(shè)置了裝置4,用于產(chǎn)生隨機(jī)數(shù)值0或1,參照?qǐng)D11,當(dāng)DES每次執(zhí)行時(shí)它提供RND1的值。這種組件可具體地用在芯片卡中改善其防侵襲性能。
權(quán)利要求
1.在電子組件中使用具有密鑰(K)的密碼算法的對(duì)抗方法,使用的算法包括使用第一裝置(TC0),以便根據(jù)輸入數(shù)據(jù)(E)提供輸出數(shù)據(jù)(S),由關(guān)鍵指令操作該輸出數(shù)據(jù)和/或?qū)С龅臄?shù)據(jù),其特征在于所述對(duì)抗方法規(guī)定使用另外裝置(TC1),以使得輸出數(shù)據(jù)及導(dǎo)出的數(shù)據(jù)不能被預(yù)計(jì)。
2.根據(jù)權(quán)利要求1的對(duì)抗方法,其特征在于使用的各個(gè)裝置(TC0,TC1)受到二分之一概率規(guī)律的管理。
3.根據(jù)權(quán)利要求2的對(duì)抗方法,其特征在于使用的算法包括16循環(huán)(T1,…,T16)計(jì)算,其特征在于所述對(duì)抗方法包括執(zhí)行第一序列(SEQA)及第二序列(SEQB),每個(gè)序列至少由頭三循環(huán)(T1,T2,T3)組成,這些序列被執(zhí)行的次序是二分之一概率統(tǒng)計(jì)規(guī)律的函數(shù),第一序列(SEQA)在每循環(huán)中使用第一裝置(TC0),及第二序列(SEQB)在至少第一循環(huán)(T1)中使用另一裝置(TC1)。
4.根據(jù)權(quán)利要求3的對(duì)抗方法,其特征在于第一及第二序列中的每個(gè)序列是由頭三循環(huán)(T1,T2,T3)組成。
5.根據(jù)權(quán)利要求3或4的對(duì)抗方法,其特征在于另外的裝置由第二裝置(TC1)組成,以便對(duì)于相同的輸入數(shù)據(jù)(E),它提供第一裝置(TC0)的輸出數(shù)據(jù)(S)的補(bǔ)數(shù)(/S)作為輸出。
6.根據(jù)權(quán)利要求2的對(duì)抗方法,使用的算法包括16循環(huán)(T1,…,T16)計(jì)算,其特征在于所述對(duì)抗方法包括執(zhí)行第一序列(SEQA’)及第二序列(SEQB’),每個(gè)序列至少由最后三循環(huán)(T14,T15,T16)組成,這些序列被執(zhí)行的次序是二分之一概率統(tǒng)計(jì)規(guī)律的函數(shù),第一序列(SEQA’)在每循環(huán)中使用第一裝置(TC0),及第二序列(SEQB’)使用另外的裝置(TC1,TC2)。
7.根據(jù)權(quán)利要求2的對(duì)抗方法,其特征在于第一及第二序列中的每個(gè)序列是由最后三循環(huán)組成;及在第二序列中使用的另外裝置包括第二裝置(TC1)及第三裝置(TC2)。
8.根據(jù)權(quán)利要求6或7的對(duì)抗方法,其特征在于第二裝置(TC1)是這樣的,即對(duì)于相同的輸入數(shù)據(jù)(E),它提供第一裝置(TC0)的輸出數(shù)據(jù)(S)的補(bǔ)數(shù)(/S)作為輸出;及在第二序列(SEQB’)中對(duì)于第14循環(huán)(T14)使用第二裝置。
9.根據(jù)權(quán)利要求8的對(duì)抗方法,其特征在于第三裝置(TC2)是這樣的,即對(duì)于輸入數(shù)據(jù)(E)的補(bǔ)數(shù),它提供第一裝置(TC0)的輸出數(shù)據(jù)(S)的補(bǔ)數(shù)(/S)作為輸出及它被使用在第二序列中用于第15循環(huán)及第16循環(huán)(T15,T16)。
10.根據(jù)以上權(quán)利要求中任一項(xiàng)的對(duì)抗方法,其特征在于各個(gè)裝置是常數(shù)表。
11.使用根據(jù)以上權(quán)利要求中任一項(xiàng)的對(duì)抗方法的電子組件,其特征在于在所述組件的程序存儲(chǔ)器中固定有各個(gè)裝置(TC0,TC1,TC2),用于根據(jù)輸入數(shù)據(jù)提供輸出數(shù)據(jù);及所述組件包括產(chǎn)生0或1的隨機(jī)值(RND1)的裝置,用于管理所述各個(gè)裝置的使用。
12.包括根據(jù)權(quán)利要求11的電子組件的芯片卡。
全文摘要
在電子組件中使用具有密鑰(K)的密碼算法,使用的算法包括使用第一裝置(TC
文檔編號(hào)H04L9/10GK1323476SQ9981224
公開(kāi)日2001年11月21日 申請(qǐng)日期1999年9月13日 優(yōu)先權(quán)日1998年10月16日
發(fā)明者C·克拉維爾, O·貝諾伊特 申請(qǐng)人:格姆普拉斯公司