專利名稱:在電子組件中使用密鑰密碼算法的對抗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在電子組件中使用密鑰密碼算法的對抗方法。這些電子組件使用在對服務(wù)或數(shù)據(jù)的訪問受到嚴(yán)格控制的應(yīng)用中。它們具有形成在微處理器及存儲器周圍的結(jié)構(gòu),其中一個程序存儲器包含密鑰。
這些組件主要使用在芯片卡中,用于它們的一些應(yīng)用。例如,它們?yōu)樵L問某些數(shù)據(jù)庫的應(yīng)用;銀行業(yè)務(wù)的應(yīng)用;遠(yuǎn)程付費(fèi)的應(yīng)用,如用于電視,配給汽油,或通過高速公路的交費(fèi)站。
因此這些組件或這些卡要使用密鑰密碼算法,其中最著名的是DES算法(英美語Data Encryption Standard的縮寫)也具有另外的密鑰密碼,如RC5算法或COMP128算法。當(dāng)然,這種列舉沒有窮盡。
總地并簡要地,這些算法的功能是根據(jù)由主系統(tǒng)(服務(wù)器,銀行自動取款機(jī)…)在輸入端(對卡)提供的信息及根據(jù)包含在卡中的密鑰計(jì)算加密信息,及將該加密信息送回到主系統(tǒng),由此,允許譬如主系統(tǒng)認(rèn)證該組件或卡,允許交換數(shù)據(jù)…。
但是,顯然這些組件或卡易于受到侵襲,這種侵襲在于對消耗電流的差分分析并使心懷叵測的第三者能找出密鑰。這種侵襲被稱為DPA侵襲,為英語Differential Power Analysis的縮寫。
該DPA侵襲的原理是基于這樣的事實(shí),即微處理器執(zhí)行指令的電流損耗將根據(jù)被操作數(shù)據(jù)而變化。
尤其是,操作一個數(shù)據(jù)位的微處理器的指令將根據(jù)該位為值“1”還是“0”產(chǎn)生出兩種電流幅值。典型地,如果指令操作“0”,則在執(zhí)行時(shí)刻得到消耗電流的第一幅值,及如果指令操作“1”則得到不同于第一幅值消耗電流的第二幅值。
密碼算法的特征是公知的執(zhí)行計(jì)算,及使用參數(shù)。唯一未知的是包含在程序存儲器中的密鑰。密鑰不能僅從知道施加在輸入端的信息及返回的編碼信息來推導(dǎo)出。
但是,在密碼算法中,某些計(jì)算數(shù)據(jù)項(xiàng)僅依賴于以明碼施加在卡輸入端的信息及卡中所包含的密鑰。在程序中計(jì)算的其它數(shù)據(jù)也可僅根據(jù)編碼信息(通常以明碼在卡的輸出端向主系統(tǒng)提供)及分組含在卡中的密鑰來重計(jì)算。更確切地,這些具體數(shù)據(jù)的每個位可根據(jù)輸入端或輸出端的信息及密鑰有限的具體位數(shù)來確定。
因此,具體數(shù)據(jù)的每個位相應(yīng)于由密鑰位的具體組形成的子鑰。
這些具體數(shù)據(jù)的位可被預(yù)計(jì)及在以下被稱為“目標(biāo)位”。
DPA侵襲的基本思想是,使用依賴其操作的是“1”還是“0”的指令所消耗電流幅值的差別,及使用根據(jù)已知輸入及輸出信息及對相應(yīng)子鑰的假定由算法指令計(jì)算目標(biāo)位的可能性。
因此,DPA侵襲的原理是,通過對大量電流測量曲線應(yīng)用選擇布爾函數(shù)來檢驗(yàn)給出的子鑰假定,每個電流測量曲線相應(yīng)于侵襲者已知的輸入數(shù)據(jù),其選擇布爾函數(shù)為子鑰假定函數(shù)并對于每個曲線由對目標(biāo)位的預(yù)計(jì)值來確定。
在對相關(guān)的子鑰作出假定時(shí),實(shí)際上對于一個給定的輸入或輸出信息可以預(yù)計(jì)目標(biāo)位將取得的值“0”或“1”。
作為選擇布爾函數(shù),可應(yīng)用對于相關(guān)子鑰的假定由目標(biāo)位取得的值“0”或“1”來將這些曲線分為兩個分組第一分組將觀察到目標(biāo)位操作在“0”上的曲線集中起來,及第二分組將觀察到根據(jù)子鑰假定目標(biāo)位的操作在“1”上的曲線集中起來。通過對每個分組中的消耗電流取平均值,可獲得第一分組的平均耗電曲線M0(t)及第二分組的平均耗電曲線M1(t)。
如果子鑰的假定是正確的,則第一分組正確地將N個曲線中觀察到目標(biāo)位操作在“0”上的所有曲線集中起來,及第二分組正確地將N個曲線中觀察到目標(biāo)位的操作在“1”上的曲線集中起來。第一分組的平均耗電曲線M0(t)在任何地方均具有平均耗電值,但在執(zhí)行關(guān)鍵指令(critical instruction)的時(shí)刻除外,以及具有目標(biāo)位操作在“0”上的電流耗電屬性特征(profile0)。換言之,對于所有曲線,所有被操作位具有值為“0”與值為“1”的相同機(jī)會,但總是為“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即M1(t)=[Vmt]t≠tci+[profile1]tci可以看到,這兩個屬性profile0及profile1不相等。曲線M0(t)及M1(t)的差則給出一個信號DPA(t),它的幅值在執(zhí)行操作該位的關(guān)鍵指令的關(guān)鍵時(shí)刻、即在
圖1所示的例子中的點(diǎn)tc0至tc6上等于profile0-profile1,而在關(guān)鍵時(shí)刻以外的地方其幅值等于零。
如果子鑰的假定不正確,則分組也是不真實(shí)的。從統(tǒng)計(jì)上看,這時(shí)在每個分組中,觀察到目標(biāo)位操作在“0”上的曲線真正與觀察到目標(biāo)位的操作在“1”上的曲線同樣多。這時(shí)所產(chǎn)生的平均曲線M0(t)位于由(profile0+profile1)/2=Vm給出的平均值周圍,因?yàn)閷τ诿總€曲線所有被操作位、分組括目標(biāo)位在內(nèi)具有值為“0”與值為“1”的相同機(jī)會。
同樣的原因使第二分組導(dǎo)致為平均耗電曲線M1(t),它的幅值位于由(profile0+profile1)/2=Vm給出的平均值周圍。
在此情況下,被差值M0(t)-M1(t)提供的信號DPA(t)實(shí)質(zhì)上等于零。在子鑰假定不正確的情況下的信號DPA(t)表示在圖2中。
因此,DPA侵襲使用了當(dāng)根據(jù)被操作位的值執(zhí)行指令時(shí)消耗電流幅值的差,以基于給定子鑰的選擇布爾函數(shù)執(zhí)行消耗電流曲線的分組。通過產(chǎn)生的兩個曲線分組之間的平均耗電的差分分析,可以獲得信息信號DPA(t)。
因而侵襲DPA的全部過程在于a-抽取N個隨機(jī)信息(例如N等于1000);b-對于N個隨機(jī)信息的每個由卡執(zhí)行算法,并每次記錄電流消耗曲線(在組件的電源端子上測量);c-對子鑰作出假定;d-對于每個隨機(jī)信息預(yù)計(jì)由一個目標(biāo)位取得的值,其值僅依賴于(輸入或輸出)信息的位及作為假定所取的子鑰,以便獲得布爾選擇函數(shù);e-根據(jù)該布爾選擇函數(shù)(即對于每個曲線在子鑰假定下根據(jù)對目標(biāo)位預(yù)計(jì)的值“0”或“1”)對曲線分組;f-在每個分組中計(jì)算由平均消耗電流產(chǎn)生的曲線;g-確定這些平均曲線的差值,以獲得信號DPA(t)。
如果子鑰的假定正確,該布爾選擇函數(shù)則正確,及第一分組的曲線將真正對應(yīng)于在卡中在輸入端或輸出端上提供的信息所給出的目標(biāo)位為“0”的曲線,以及第二分組的曲線將真正對應(yīng)于在卡中在輸入端或輸出端上提供的信息所給出的目標(biāo)位為“1”的曲線。
這是在圖1中所示的情況信號DPA(t)于是在相應(yīng)于執(zhí)行關(guān)鍵指令(即操作目標(biāo)位的指令)的時(shí)刻tc0至tc6上不為零。
應(yīng)指出,侵襲者并不需要精確知道這些關(guān)鍵時(shí)刻。對侵襲者只要有測量周期中的至少一個關(guān)鍵時(shí)刻就夠了。
如果子鑰的假定不正確,則分組不符合實(shí)際情況,及在每個分組中實(shí)際上相應(yīng)于目標(biāo)位為“0”的曲線與相應(yīng)于目標(biāo)位為“1”的曲線同樣地多。DPA(t)信號實(shí)質(zhì)上到處為零(圖2中所示的情況)。這時(shí)必需返回到步驟c及對子鑰作出新的假定。
如果假定被證明是正確的,將可以繼續(xù)進(jìn)行其它子鑰的假定,直到最大限度地重組密鑰為止。例如,對于DES算法使用64位密鑰,其中僅有56位是有效的。對于DPA侵襲,可以至少重組這56個有效位中的48位。
本發(fā)明的目的是在電子組件中使用一種對抗方法,該方法甚至在子鑰的預(yù)計(jì)正確時(shí)也導(dǎo)致信號DPA(t)為零。
以此方式,就根本不可能將子鑰假定正確的情況與子鑰假定不正確的情況區(qū)別開來。借助該對抗策略,電子組件受到保護(hù)以免DPA侵襲。
但是在本發(fā)明中理解到,采取步驟使信號DPA(t)相對給定目標(biāo)位為零是不夠的。
這是因?yàn)?,如果考慮由相同數(shù)據(jù)項(xiàng)的多個目標(biāo)位取得的值由關(guān)鍵指令操作,將需要將曲線不是分成兩個分組,而是分成多個分組。它將不是二進(jìn)制選擇函數(shù)??梢钥闯觯又鴮⑦@些分組以一種或另一種方式再分組時(shí),可能在正確子鑰假定的情況下獲得非零的信號DPA(t),而如果根據(jù)基于單個目標(biāo)位的二進(jìn)制選擇函數(shù)分類時(shí)它應(yīng)為零。
舉一個相同數(shù)據(jù)項(xiàng)的兩目標(biāo)位的例子,這兩個目標(biāo)位可取以下22的值“00”,“01”,“10”及“11”。
通過對檢測的N=1000個電流消耗曲線施加選擇函數(shù),獲得了四個曲線分組。如果分類正確,接近有250個曲線的第一分組相應(yīng)于值“00”,接近有250個曲線的第二分組相應(yīng)于值“01”,接近有250個曲線的第三分組相應(yīng)于值“10”及接近有250個曲線的第四分組相應(yīng)于值“11”。
如果將第一及第四分組分在第一組中及將第二及第三分組分在第二組中,則獲得了不相同的兩個組。
在第一組中,兩個位具有等于“00”與等于“11”相同的機(jī)會。在該組所有耗電曲線的臨界情況下的平均值可被寫為M1(tci)=[耗電(“00”)+耗電(“11”)]/2在第二組中,兩個位具有等于“01”與等于“10”相同的機(jī)會。在該組所有耗電曲線的臨界情況下的平均值可被寫為M2(tci)=[耗電(“01”)+耗電(“10”)]/2如果在這兩個平均值之間產(chǎn)生了差別,則獲得了非零信號DPA(t)。換言之,其平均耗電可比較的兩個組不具有相同的內(nèi)容。
在本發(fā)明中,因此力求阻止獲得DPA侵襲意義上的任何重要信號。不管所取的目標(biāo)位數(shù)目如何,不管用作進(jìn)行平均耗電比較的分組的組合如何,該信號DPA(t)將總是零。因此必需獲得等效的分組,而不管所考慮的目標(biāo)位數(shù)目如何。
這些不同技術(shù)問題的一個解決方案被發(fā)現(xiàn)在于,用在該算法中使用的裝置的輸入及輸出中的一個或另一個或兩者進(jìn)行的異或操作中使用一個隨機(jī)值。
通過使用根據(jù)本發(fā)明的該隨機(jī)值,由關(guān)鍵指令操作的數(shù)據(jù)變?yōu)椴豢杀活A(yù)料,而在該算法的輸出上具有正確結(jié)果。
因此,作為其特征,本發(fā)明涉及一種在電子組件中使用密鑰密碼算法的對抗方法,算法的實(shí)施包括使用第一裝置,以根據(jù)輸入數(shù)據(jù)、輸出數(shù)據(jù)和/或由關(guān)鍵指令操作得到的數(shù)據(jù)項(xiàng)提供輸出數(shù)據(jù)項(xiàng)。根據(jù)本發(fā)明,該對抗方法還考慮使用其它裝置,以使得輸出數(shù)據(jù)項(xiàng)及推導(dǎo)出的數(shù)據(jù)是不可預(yù)計(jì)的,這些其它裝置由所述第一裝置通過與一個隨機(jī)值或與由所述第一裝置的輸入及輸出數(shù)據(jù)中的一個或另一個或兩者得到的隨機(jī)值的異或(exclusive OR)操作來獲得。
在以下的說明中以非限制說明的方式并借助附圖來詳細(xì)地描述本發(fā)明的其它特征及優(yōu)點(diǎn),附圖為-圖1及2已被描述,表示根據(jù)DPA侵襲作為密鑰K的子鑰假定的函數(shù)獲得的信號DPA(t);-圖3及4是執(zhí)行第一輪及最后一輪DES算法的流程圖;一圖5是用于DES算法中的SBOX操作的框圖;-圖6表示用于SBOX操作的具有輸入及輸出的基本常數(shù)表的一個例子;-圖7表示使用根據(jù)本發(fā)明對抗方法執(zhí)行DES算法的流程圖的第一例子;-圖8是相應(yīng)的DES算法第一輪的流程圖;-圖9及10分另表示根據(jù)本發(fā)明的對抗方法的第二實(shí)施方式中執(zhí)行DES算法的流程圖及及第一輪的詳細(xì)流程圖;-圖11及12相應(yīng)于根據(jù)本發(fā)明對抗方法的第三實(shí)施方式;-圖13表示第三實(shí)施方式的一個變型中執(zhí)行DES算法的流程圖;-圖14表示包括使用了根據(jù)本發(fā)明的對抗方法的電子組件的一個芯片卡的簡化框圖。
DES密碼算法(以下簡稱為DES或DES算法)包括16輪計(jì)算,表示為T1至T16,如圖3及4中所示。
DES開始于對輸入信息M的初始排列IP(圖3)。輸入信息是一個64位的字f。在排列后,獲得一個64位的字e,它被切成兩部分,以形成第一輪(T1)的輸入?yún)?shù)L0至R0。L0是包括字e的32個最高位的32位字d。R0是包括字e的32個最低位的32位字h。
密鑰K是一個64位的字q,它本身受到排列及壓縮,以提供一個56位的字r。
第一輪包括對參數(shù)R0的操作EXP PERM,該操作包括一次擴(kuò)展及一次排列,以提供48位的字1。
該字1在一個表示為XOR的異或型操作中與參數(shù)K1組合,以提供一個48位的字b。參數(shù)K1是一個48位的字m,它由字r移位一個位置(圖3及4中表示為SHIFT的操作)接著一次排列及一次壓縮(表示為COMP PERM)的操作。
字b被施加稱為SBOX的操作,在其輸出上獲得一個32位的字a。對于該特殊操作還要參照附圖5及6更詳細(xì)地說明。
字a受到一次排列P PERM,在其輸出上得到一個32位的字c。
該字c在一個表示為XOR的異或型操作中與第一輪T1的輸入?yún)?shù)L0組合,作為輸出提供一個32位的字g。
第一輪的字h(=R0)提供下一輪(T2)的輸入?yún)?shù)L1,及第一輪的字g提供下一輪的輸入?yún)?shù)R1。第一輪的字p提供下一輪的輸入?yún)?shù)r。
另外的輪T2至T16以類似方式進(jìn)行,但涉及移位的操作SHIFT除外,它將根據(jù)相關(guān)的輪在一個或兩個位置上進(jìn)行。
于是每輪Ti作為輸入接收參數(shù)Li-1,Ri-1,及r及作為輸出提供參數(shù)Li,Ri及r,用于下一輪Ti+1。
在DES算法結(jié)束時(shí)(圖4),將根據(jù)最后一輪T16提供的參數(shù)L16及R16計(jì)算編碼信息。
實(shí)際上,編碼信息C包括以下操作-通過使字L16及R16位置的倒置及然后連接形成64位字e;及-執(zhí)行排列IP-1,它為DES開始時(shí)排列的倒置,以便獲得形成編碼信息C的64位字f。
SBOX操作被詳細(xì)地表示在圖5及6中。它包括一個常數(shù)表TC0,用于提供作為輸入數(shù)據(jù)b函數(shù)的輸出數(shù)據(jù)a。
實(shí)際上,該常數(shù)袁TC0以8個基本常數(shù)表TC01至TC08的形式表示,每個表作為輸入僅接收字b的6位,以便在輸出上僅提供字a的4位。
因此,圖6上所示的基本常數(shù)袁TC01作為輸入數(shù)據(jù)接收字b的位b1至b6及作為輸出數(shù)據(jù)提供字a的位a1至a4。
實(shí)際上,這8個基本常數(shù)表TC01至TC08被存儲在電子組件的程序存儲器中。
在第一輪T1的SBOX操作中,常數(shù)表TC0的輸出數(shù)據(jù)a的具體位僅取決于在輸入上施加的數(shù)據(jù)b的6個位,即僅是密鑰K及輸入信息(M)的6位。
在最后一輪T16的SBOX操作中,常數(shù)表TC0的輸出數(shù)據(jù)a的具體位可根據(jù)密鑰K及編碼信息(C)的僅6位再計(jì)算。
但如果回顧DPA侵襲的原理,假如目標(biāo)位被選擇為輸出數(shù)據(jù)a的一個位,對于給定輸入信息(M)或輸出信息(C)預(yù)計(jì)一個目標(biāo)位的值來說,在密鑰K的6位上作出假定就夠了。換言之,對于DPA,在6位子鑰上作出假定就夠了。
在對于由給定基本常數(shù)表給出的一個給定目標(biāo)位組基于這種算法的DPA侵襲中,因此必需在64個可能性中鑒別出一個正確的子鑰假定。
因此,由8個基本常數(shù)表TC01至TC08的輸出位通過對相應(yīng)目標(biāo)位作出DPA侵襲,就可以一直發(fā)現(xiàn)到密鑰的6×8=48位。
在DES中,在該算法的開始及結(jié)束時(shí)由此可找出關(guān)于DPA侵襲的關(guān)鍵指令。
在DES算法開始時(shí),根據(jù)輸入信息M及子鑰假定可被預(yù)計(jì)的數(shù)據(jù)是在第一輪(T1)中計(jì)算的數(shù)據(jù)a及g。
第一輪T1中的數(shù)據(jù)(圖3)是相關(guān)輪中SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a通過排列(P PERM)及與輸入?yún)?shù)LO的異或(OUEXCLUSIF)操作被計(jì)算的。
事實(shí)上,而第一輪的數(shù)據(jù)c是由第一輪的數(shù)據(jù)a導(dǎo)出的數(shù)據(jù)。導(dǎo)出的數(shù)據(jù)c相應(yīng)于數(shù)據(jù)a的位的簡單重排列。
第一輪的數(shù)據(jù)1是由第一輪的數(shù)據(jù)g導(dǎo)出的數(shù)據(jù),因?yàn)樗鄳?yīng)于字g的位的重排列,字g的某些位還是被復(fù)制了。
已知了a及g,就可以知道這些可導(dǎo)出的數(shù)據(jù)。
該算法開始時(shí)的關(guān)鍵指令是操作可預(yù)計(jì)的數(shù)據(jù)、如第一輪的數(shù)據(jù)或?qū)С龅臄?shù)據(jù)a或數(shù)據(jù)g的關(guān)鍵指令。
于是操作第一輪T1的數(shù)據(jù)a或?qū)С龅臄?shù)據(jù)c的關(guān)鍵指令是SBOX操作結(jié)束時(shí)的指令,P PERM操作的指令及第一輪T1的XOR操作開始時(shí)的指令。
操作數(shù)據(jù)g或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是從第一輪T1結(jié)束時(shí)的操作XOR結(jié)束的指令到第二輪T2的SBOX操作開始的指令中的所有指令,及第三輪T3結(jié)束時(shí)的操作XOR開始的指令(L2=h(T2)=g(T1))。
在DES算法結(jié)束時(shí),根據(jù)編碼信息C及子鑰假定可被預(yù)計(jì)的數(shù)據(jù)是第16輪T16的數(shù)據(jù)a及等于第14輪T14的字h的數(shù)據(jù)L15。
操作第16輪T16的數(shù)據(jù)a或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是用于第16輪操作SBOX結(jié)束、排列操作P PERM及XOR操作開始的指令。
對于數(shù)據(jù)L15,操作該數(shù)據(jù)或?qū)С龅臄?shù)據(jù)的關(guān)鍵指令是從第14輪T14的操作XOR結(jié)束的指令到第15輪T15的SBOX操作開始的指令中的所有指令,及第16輪T16結(jié)束時(shí)的操作XOR開始的指令。
根據(jù)本發(fā)明應(yīng)用于該DES算法的對抗方法在于,使由關(guān)鍵指令操作的每個數(shù)據(jù)變?yōu)椴豢深A(yù)料。因此,不管所使用的一個或多個目標(biāo)位如何,信號DPA(t)將總為零。
當(dāng)本發(fā)明的對抗方法應(yīng)用于DES算法時(shí),因此必需對DES開始時(shí)的關(guān)鍵指令及對DES結(jié)束時(shí)的關(guān)鍵指令施加對抗措施,以便完全受到保護(hù)。
在DES中,被關(guān)鍵指令操作的所有數(shù)據(jù)為輸出數(shù)據(jù)或從SBOX操作的輸出數(shù)據(jù)中導(dǎo)出的數(shù)據(jù)。
實(shí)際上,在DES開始時(shí),可被預(yù)計(jì)的數(shù)據(jù)是第一輪T1的數(shù)據(jù)a及g。數(shù)據(jù)a是第一輪SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a計(jì)算的數(shù)據(jù),因?yàn)間=P PERM(a)XORLO。因此g是從第一輪的SBOX操作的輸出數(shù)據(jù)a導(dǎo)出的數(shù)據(jù)。于是,被DES開始的關(guān)鍵指令操作的所有數(shù)據(jù)將直接或間接地由第一輪的SBOX操作的輸出數(shù)據(jù)來產(chǎn)生。
對于DES結(jié)束時(shí),可被預(yù)計(jì)的數(shù)據(jù)是第16輪T16的數(shù)據(jù)a及第14輪T14的數(shù)據(jù)g,g等于L15。
數(shù)據(jù)a是第16輪116的SBOX操作的輸出數(shù)據(jù)。
對于數(shù)據(jù)L15,在DES算法常規(guī)執(zhí)行時(shí),可根據(jù)第14輪T14的SBOX操作的數(shù)據(jù)a來計(jì)算L15=P PERM(a)XOR L14。
如果具體SBOX操作的輸出數(shù)據(jù)a變得不可預(yù)計(jì),所有導(dǎo)出的數(shù)據(jù)也變得不可預(yù)計(jì)因此由DES算法的關(guān)鍵指令操作的所有數(shù)據(jù)變得不可預(yù)計(jì)。如果考慮這些SBOX操作組成第一裝置,以根據(jù)輸入數(shù)據(jù)E=b提供輸出數(shù)據(jù)S=a,該施加于DES算法的對抗方法還在于使用使輸出數(shù)據(jù)變得不可預(yù)料的另外裝置,以使得這些輸出數(shù)據(jù)和/或由關(guān)鍵指令操作的導(dǎo)出數(shù)據(jù)被全部變得不可預(yù)計(jì)的。
這些另外裝置可包括不同的裝置。它們由所述第一裝置通過與一個隨機(jī)值或與由所述第一裝置的輸入及輸出數(shù)據(jù)中的一個或另一個或兩者得到的隨機(jī)值的異或操作來獲得。
該隨機(jī)值的使用是這樣的所產(chǎn)生的輸出、即編碼信息保持正確。
圖7表示本發(fā)明的第一實(shí)施例。在該實(shí)施例中,DES算法的16輪被分為每組4個相繼輪的四個組G1至G4。因此組G1包括輪T1至T4,組G2分組括輪T5至T8,組G3分組括輪T9至T12及組G4分組括輪T13至T16。
在DES算法的傳統(tǒng)執(zhí)行時(shí),可以看到,每輪分組括在SBOX操作中使用第一裝置TC0。
在該對抗方法的第一應(yīng)用方式中,另外裝置是通過與一個隨機(jī)值u和/或與由所述第一裝置TC0的輸入及輸出數(shù)據(jù)中的一個或另一個或兩者推導(dǎo)出的值e(p(u))的異或(OU EXCLUSIF)操作來計(jì)算的。然后將一個相同的執(zhí)行序列SEQA施加給每個組,該序列在于使用這些另外的計(jì)算出的裝置。
根據(jù)本發(fā)明,使用了一個隨機(jī)值u,它是一個32位的數(shù)據(jù)。例如可以抽取一個32位的隨機(jī)值,或抽取一個4位的隨機(jī)值并復(fù)制它8次以獲得一個32位的隨機(jī)值u。
然后計(jì)算等于e(p(u))的要導(dǎo)出的變量,其中p(u)相應(yīng)于給值u施加P PERM操作的結(jié)果,及e(p(u))是給值p(u)施加EXP PERM操作的結(jié)果。
然后可以計(jì)算在本發(fā)明中使用的另外裝置。
在參照圖7所述的例中,這些另外裝置包括第二裝置TC2及第三裝置TC1。
第二裝置TC2被使用在每組的第二輪及倒第二輪中;即使用在G1的T2,T3;G2的T6,T7;G3的T10,T11及G4的T14,T15中。
第二裝置TC2是通過用求得的隨機(jī)變量e(p(u))對第一裝置TC0的輸入數(shù)據(jù)E施加異或操作及通過用隨機(jī)值u對第一裝置TC0的輸出數(shù)據(jù)S施加異或操作來計(jì)算,它可被寫為TC2=(Ee(p(u)),Su)。
第三裝置TC1被使用在每組的第一輪及最后一輪中;即使用在G1的T1,T4;G2的T5,T8;G3的T9,T12及G4的T13,T16中。
第三裝置TC1是通過用隨機(jī)值u對第一裝置TC0的輸出數(shù)據(jù)S施加異或(OU EXCLUSIF)操作來計(jì)算,它可被寫為TC1=(E,Su)。
計(jì)算程序則在于在算法執(zhí)行開始時(shí),抽取一個隨機(jī)值u,在該例中為4位,計(jì)算導(dǎo)出的隨機(jī)變量e(p(u)),及然后計(jì)算在執(zhí)行序列SEQA中使用的不同裝置。在該例中必需計(jì)算第二及第三裝置TC2及TC1。
在每組的輸出上獲得了輸出參數(shù)的正確結(jié)果。于是,第一組G1的輸出參數(shù)L4及R4,第二組G2的輸出參數(shù)L8及R8,第三組G3的輸出參數(shù)L12及R12,第四組G4的輸出參數(shù)L16及R16均是正確的,而不管抽取的隨機(jī)變量是怎樣的。
當(dāng)所有輪被執(zhí)行時(shí),獲得了正確參數(shù)L16及R16,它們允許計(jì)算正確的編碼信息C。
另一方面,在各組中,根據(jù)所使用的序列某些中間結(jié)果不具有相同值,但具有與用隨機(jī)值u或用導(dǎo)出的隨機(jī)值e(p(u))執(zhí)行異或操作相應(yīng)的值,正如參照圖3及8可看到的。
圖8表示在根據(jù)本發(fā)明的執(zhí)行序列SEQA中第一組G1的四輪T1,T2,T3及T4的詳細(xì)流程圖。
在該序列中,輪T1使用了第三裝置TC1。在操作SBOX的輸出上,由此獲得了隨機(jī)修改數(shù)據(jù)au(圖8),而不是根據(jù)DES的常規(guī)序列的數(shù)據(jù),即沒有對抗措施的數(shù)據(jù)(圖3)。
借助根據(jù)本發(fā)明的執(zhí)行序列SEQA,作為簡單排列的第一輪的PPERM操作也將提供作為輸出的一個隨機(jī)修改數(shù)據(jù),它等于cp(u)。
通過數(shù)據(jù)cp(u)及數(shù)據(jù)L0之間的XOR操作獲得的數(shù)據(jù)也將提供作為輸出的一個隨機(jī)修改數(shù)據(jù)gp(u)。施加給EXP PERM操作的該數(shù)據(jù)將提供作為輸出的一個隨機(jī)修改數(shù)據(jù)1p(u)。
因此,借助輪T1的第三裝置TC1獲得了以下所有的隨機(jī)修改數(shù)據(jù)-在輪T1中au,cp(u),gp(u);-在輪T2中R1p(u),hp(u),le(p(u),be(p(u);-在輪T3中L2p(u)。
然后獲得在輪T2中使用的第二裝置TC2。根據(jù)它的定義Ee(p(u)),Su,通過在其輸入施加隨機(jī)修改數(shù)據(jù)be(p(u),在其輸出上得到隨機(jī)修改數(shù)據(jù)au。通過將該推導(dǎo)一直進(jìn)行到輪T4的結(jié)束,及通過注出p(u)p(u)=0,在輪T4的輸出上獲得了非修改數(shù)據(jù)L4,R4。
此外發(fā)現(xiàn),對于所有用于DES開始的關(guān)鍵指令,這些關(guān)鍵指令將操作以隨機(jī)方式修改的數(shù)據(jù)。
對于該對抗方法,在DES開始時(shí)必需提供抽取的隨機(jī)值u及用于執(zhí)行序列SEQA的裝置計(jì)算。這些在DES每個執(zhí)行時(shí)計(jì)算的裝置在執(zhí)行時(shí)間中被存儲工作存儲器中,用于計(jì)算的第一裝置TC0其本身則存儲在程序存儲器中。
再回到圖7,可以看出,在中間組G2及G3不需要對抗措施,因?yàn)樗鼈儾话ㄔ贒PA侵襲的意義上的關(guān)鍵指令。因此可以將該對抗方法的執(zhí)行序列SEQA僅施加給第一僅最后組G1及G4。然后在組G2及G3中使用第一裝置(TC0)就夠了。
但是,將該對抗方法施加給使用組可達(dá)到整體的連貫性。
因此將序列SEQA施加給組G1至G4中的每個。該對抗方法的第二實(shí)施方式被描述在圖9上。實(shí)際上該第二實(shí)施方式是第一實(shí)施方式的變型。
該變型的一個優(yōu)點(diǎn)在于,作為在序列SEQA中的另外裝置僅使用第二裝置TC2。這是因?yàn)?,可以看出?shí)際上各個裝置TC0,TC1,TC2相應(yīng)于各分組括8個基本常數(shù)表的常數(shù)表,在DES每次新執(zhí)行時(shí)對裝置TC1,TC2必需重新計(jì)算,并保存在工作存儲器中。
因此該變型在于在序列SEQA中僅使用第二裝置TC2。為此,在計(jì)算每組第一及第二輪的程序中,設(shè)置了用導(dǎo)出的隨機(jī)變量e(p(u))的附加異或(OU EXCLUSIF)操作CP,以便在第二裝置的輸入上獲得數(shù)據(jù)be(p(u))。該操作在附圖中被記為CP(e(p(u))。如果參照圖10,該圖表示執(zhí)行第一組G1的四輪T1至T4的序列SEQA的詳細(xì)流程圖,因此它涉及在輪T1及T4的SBOX操作的輸入上施加一個變量be(p(u))。附加操作CP加上第二裝置TC2等同于在本發(fā)明第一實(shí)施方式中使用的第三裝置TC1。
這里節(jié)省了計(jì)算時(shí)間,因?yàn)樵谝粋€組中操作CP僅被執(zhí)行兩次,這就是說,對于四個組的一個完整的SEQA序列為8次,而一個表的計(jì)算需要對該表的所有輸入數(shù)據(jù)作出該操作be(p(u))。
應(yīng)該指出,用變量e(p(u))的附加異或操作可被置于第一及最后輪的各個位置上,即可在EXP PERM操作及XOR操作之間或XOR操作及SBOX操作之間。
還應(yīng)該指出,可使用導(dǎo)出的隨機(jī)變量p(u)的附加異或操作,即將該附加操作CP(p(u)置于EXP PERM前面。在輸出上獲得le(p(u)),因此下一個將是be(p(u))。
在所有這些圖示情況下,在SBOX操作的輸入上將獲得數(shù)據(jù)be(p(u))。
圖11表示根據(jù)本發(fā)明的對抗方法的第三實(shí)施方式。
在該實(shí)施方式中,第一組G1由頭三輪T1,T2,T3組成,及另一組G4由最后三輪T14,T15,T16組成。在至少某些輪上使用另外裝置對該每組施加執(zhí)行序列SEQA。
對于未包括在這些組中的另外輪,即對于輪T4至T13使用第一裝置TC0。
在每組G1,G4的輸出上,在輸出L3,R3及L16,R16上獲得了正確的結(jié)果,而不管抽取的隨機(jī)變量是怎樣的。
在該例中,另外裝置是參照第一實(shí)施方式已看到的第三裝置TC1及第四裝置TC3。
該第四裝置相對第一裝置TC0是用導(dǎo)出的隨機(jī)變量e(p(u))對輸出裝置E施加異或(OU EXCLUSIF)操作計(jì)算出的。
因此,在抽取隨機(jī)變量u及計(jì)算了導(dǎo)出的隨機(jī)變量后,將計(jì)算用于執(zhí)行序列SEQA中的各個裝置。然后將該執(zhí)行序列SEQA施加給第一組。作為輸出獲得了參數(shù)L3,R3。用第一裝置TC0執(zhí)行所有隨后的輪T4至T13。在輪T13結(jié)束時(shí)將序列SEQA施加給組G4。將獲得參數(shù)L16,R16,它們用于計(jì)算編碼信息C。
圖12是相應(yīng)的詳細(xì)流程圖。
在該流程圖中可清楚地看到,對于這些輪的所有關(guān)鍵指令獲得了隨機(jī)修改的數(shù)據(jù)。第三輪輸出的數(shù)據(jù)L3及R3是不能修改的,它允許繼續(xù)執(zhí)行該算法,將其進(jìn)行到T4,在該輪上將根據(jù)該算法的常規(guī)執(zhí)行使用第一裝置TC0。
在該圖中可以看到,在第三輪T3的SBOX操作中,通過在SBOX操作的輸出上設(shè)置附加異或操作CP,將可以使用第一裝置TC0來代替第三計(jì)算裝置TC1,以便用隨機(jī)變量u執(zhí)行輸出的異或操作,并在XOR操作的輸出上獲得數(shù)據(jù)au。這是一個等效的方案。
圖13表示使用該變型的執(zhí)行流程圖。對于兩個組G1及G4中的第三輪,在執(zhí)行序列SEQA中在使用變量u的附加異或指令輸出的隨后使用第一裝置TC0,它被記為T3(TC0,CP(U))。
一般地,在根據(jù)本發(fā)明的對抗方法中,在執(zhí)行序列SEQA中及對于一個或多個輪,因此可在根據(jù)情況使用變量u或?qū)С龅碾S機(jī)變量p(u)或e(p(u))的裝置的輸入或輸出上設(shè)置一個附加的異或指令CP。
本發(fā)明應(yīng)用于DES密鑰密碼算法,對于它已描述了多個非限制性的實(shí)施例。它可普遍地應(yīng)用于具有16個計(jì)算輪的密鑰密碼算法,它們的關(guān)鍵指令應(yīng)位于頭三輪或最后三輪的指令中。
在DES密鑰密碼算法中實(shí)施根據(jù)本發(fā)明的對抗方法的電子組件1典型地包括一個微處理器μP,一個程序存儲器2及一個工作存儲器3,如圖10中所示。為了能管理根據(jù)本發(fā)明的各個裝置TC0,TC1,TC2的使用,實(shí)際上這些裝置是存儲在程序存儲器中的各個常數(shù)表,設(shè)置了裝置4,用于產(chǎn)生隨機(jī)數(shù)值0或1,如果參照圖7及11的流程圖,當(dāng)DES每次執(zhí)行時(shí)它提供隨機(jī)值u。這種組件可具體地用在芯片卡5中,用來改善其防侵襲性能。
權(quán)利要求
1.在電子組件中使用具有密鑰(K)的密碼算法的對抗方法,使用的算法包括使用第一裝置(TC0),以便根據(jù)輸入數(shù)據(jù)(E)提供輸出數(shù)據(jù)項(xiàng)(S),由關(guān)鍵指令操作該輸出數(shù)據(jù)項(xiàng)和/或?qū)С龅臄?shù)據(jù),其特征在于該對抗方法規(guī)定使用另外裝置(TC1),以使得輸出數(shù)據(jù)項(xiàng)及導(dǎo)出的數(shù)據(jù)不能被預(yù)計(jì),這些其它裝置由所述第一裝置通過與一個隨機(jī)值(u)或與用所述第一裝置的輸入及輸出數(shù)據(jù)中的一個或另一個或兩者得到的隨機(jī)值e(p(u))的異或(exclusive OR)操作來獲得。
2.根據(jù)權(quán)利要求1的對抗方法,其特征在于使用的算法包括16輪(T1,…,T16)計(jì)算,每輪使用第一裝置(TC0),用于根據(jù)輸入數(shù)據(jù)項(xiàng)提供輸出數(shù)據(jù)項(xiàng),在頭三輪(T1,T2,T3)及最后三輪(T14,T15,T16)中由關(guān)鍵指令操作該輸出數(shù)據(jù)項(xiàng)和/或?qū)С龅臄?shù)據(jù),其特征在于形成一個至少包括頭三輪的組(G1)及另一個至少包括最后三輪的組(G4);一個執(zhí)行序列(SEQA)與第一組(G1)及最后組(G4)相關(guān),該執(zhí)行序列在至少某些輪中使用另外裝置(TC1,TC2)。
3.根據(jù)權(quán)利要求2的對抗方法,其特征在于四個組(G1,…G4)各由四個相繼的輪(T1,…T4)組成;及所述執(zhí)行序列(SEQA)至少施加給第一組(G1)及最后組(G4)。
4.根據(jù)權(quán)利要求3的對抗方法,其特征在于在每個組(G1,…G4)中執(zhí)行所述序列(SEQA)。
5.根據(jù)權(quán)利要求2的對抗方法,其特征在于所述執(zhí)行序列(SEQA)施加給由頭三輪(T1,T2,T3)組成的第一組(G1)及由最后三輪(T14,T15,T16)組成的最后組(G4)。
6.根據(jù)以上權(quán)利要求中任一項(xiàng)的對抗方法,其特征在于算法的每次執(zhí)行包括抽取隨機(jī)值(u),及計(jì)算另外裝置。
7.根據(jù)以上權(quán)利要求中任一項(xiàng)的對抗方法,其特征在于各個裝置為常數(shù)表。
8.根據(jù)以上權(quán)利要求中任一項(xiàng)的對抗方法,其特征在于各個裝置用于與使用隨機(jī)值或?qū)С鲋?p(u),e(p(u)))的附加異或操作(CP)相組合。
9.使用根據(jù)以上權(quán)利要求中任一項(xiàng)的對抗方法的電子保安組件,其特征在于用于根據(jù)輸入數(shù)據(jù)提供輸出數(shù)據(jù)的第一裝置(TC0)被固定在所述組件的程序存儲器(1)中,另外裝置(TC1,TC2),在該算法每次新執(zhí)行時(shí)被計(jì)算及存儲在工作存儲器(3)中;及它包括產(chǎn)生隨機(jī)值(u)的裝置,用于計(jì)算所述另外裝置。
10.包括根據(jù)權(quán)利要求9的電子保安組件的芯片卡。
全文摘要
在電子組件中使用具有密鑰K的密碼算法,該算法操作包括使用第一裝置(TC
文檔編號G09C1/00GK1331873SQ99814758
公開日2002年1月16日 申請日期1999年10月29日 優(yōu)先權(quán)日1998年10月29日
發(fā)明者C·克拉維爾, J·-S·科倫 申請人:格姆普拉斯公司