国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在電子元件中采用密鑰加密算法的對抗方法

      文檔序號:6419200閱讀:234來源:國知局
      專利名稱:在電子元件中采用密鑰加密算法的對抗方法
      技術領域
      本發(fā)明涉及一種在采用密鑰加密算法(秘密關鍵字密碼算法)的電子元(部)件中的對抗方法。這類方法都是用在嚴格加以控制的服務存取或數(shù)據(jù)存取的應用方面。它們具有在微處理機(器)和存儲器周圍所形成的體系結構,其程序存儲包含秘密密鑰。
      這些電子元件尤其是用在智能卡(芯片卡)方面某些應用。例如某些銀行數(shù)據(jù)存取應用,銀行業(yè)務應用,遠程支付應用,例如電視,汽油配給或者高速公路通行付款。
      因此這些元件或這些智能卡要使用密鑰算法,其公知的是DES(英文文獻中的Data Encryption Standard)。其它的現(xiàn)有密鑰算法如RC5算法或COMP128算法。當然所列舉的并非是全部。
      一般地或簡單扼要地說,這些算法的功能就是根據(jù)由主系統(tǒng)(服務人員、銀行分發(fā)員……)以輸入的形式加在卡上的信息及含在卡中的密鑰來計算密碼信息,并且可把該密碼信息返回給主系統(tǒng),例如這就可允許主系統(tǒng)認證電子元件或智能卡,也可改變數(shù)據(jù)……。
      然而,可以看出,這些元件或這些卡都容易受到包括電流功耗示差分析在內的侵擾,而且可以使不懷好意的第三者發(fā)現(xiàn)密鑰。這類侵擾被稱作DPA侵擾,DPA是英文Differential Power Analysis的縮寫。
      這些DPA侵擾的起因是基于執(zhí)行指令的微處理機的電流功耗可按照操作數(shù)據(jù)而變化。
      特別是,處理一個比特數(shù)據(jù)的微處理機指令根據(jù)該比特為“1”或“0”而產(chǎn)生兩種不同電流的曲線。典型地說,如果指令控制(操縱“0”,則在此執(zhí)行瞬間有第一個功耗電流振幅,而如果指令操作“1”,則有與第一個不同的第二個功耗電流振幅。
      密碼算法的特征是公知的有效計算所用參數(shù)。唯一不知的是存儲程序所含的密鑰。它不能從單獨知道外加輸入信息及返回提供的密碼信息而推斷出來。
      可是,在密碼算法中,所計算的某些數(shù)據(jù)僅僅取決于以明碼施加在卡輸入端的信息及存在卡中的密鑰。在算法中所計算的其它數(shù)據(jù)也可以單獨由密碼信息(通常以明碼在卡輸出端向主系統(tǒng)提供)及存在卡中的密鑰重新計算。更確切地說,這些特殊數(shù)據(jù)的每個比特都可以由輸入或輸出信息以及密鑰特定比特位組的限定數(shù)所確定。
      因此,由一組特定的密鑰比特形成的于密鑰對應特定數(shù)據(jù)的每個比特。
      這些可預測特定數(shù)據(jù)的比特(信息位)后面稱為目標比特位。
      DPA侵擾的基本要領就是按照其操縱“1”或“0”來利用一個指令的電流功耗曲線差,并且盡可能根據(jù)已知輸入或輸出信息及按相應子密鑰的假設通過算法指令計算目標比特。
      因而侵擾DPA的原理就是檢驗給出的子密鑰假設,同時要對大量的電流曲線應用布爾選擇函數(shù),隨著子密鑰的假設而變化,每個測量曲線都與一個已知的侵擾者輸入信息有關,而且對于每個曲線它(假設)是由一個目標比特預測值所確定的。
      在對相關的子密鑰進行假設的同時,事實上人們就能夠預測該目標比特對于給定的輸入或輸出信息所要選取的值“0”或“1”。
      那么作為布爾(booléenne)選擇函數(shù)可以應用對于所考慮的子密鑰假設的目標比特所預測的值“0”或“1”,以便把這些曲線分類排序成兩個信息包第一個信息包匯集了那些已看出目標比特控制到“0”的曲線,而第二個信息包匯集了那些已看出按照子密鑰假設目標比特控制到“1”的曲線。求出在每個信息包中平均電流功耗的同時,就得到了第一個信息包的平均功耗曲線M0(t)及第二個信息包的平均功耗曲線M1(t)。
      如果子密鑰的假設是準確的,第一個信息包實際上匯集了N個曲線中已看出目標比特控制到“0”的所有曲線,而第二個信息包則匯集了N個曲線中已顯出目標比特“1”控制的所有曲線。第一信息包的平均功耗曲線M0(t)那時除了在執(zhí)行關鍵指令時以外,處處都將具有平均功耗,并呈現(xiàn)“0”目標控制的特征電流功耗曲線外形(profilo)。換句話說,對于所有這些曲線來說,所有受控比特等于“0”和等于“1”的機會是一樣的,除非目標比特總是為“0”值。這可寫成M0(t)=[(profilo+profil1)/2]t≠tci+[profil0]tci或M0(t)=[Vmt]t≠tci+[profil0]tci
      其中tci表示臨界時刻,在該時刻執(zhí)行了一種關鍵指令。
      同樣,第二信息包的平均功耗曲線M1(t)處處對應一種平均功耗,除執(zhí)行關鍵指令時刻外,具有“1”目標比特控制的特征電流功耗曲線外形profil0,可寫成M1(t)=[(profil0+profil1)/2]t≠tci+[profil1]tci或者M1(t)=[Vmt]t≠tci+[profil1]tci人們已看到兩條曲線profil0和profil1不是相等的。曲線M0(t)和M1(t)差那時產(chǎn)生一種信號DPA(t)其振幅在執(zhí)行關鍵指令的臨界時刻tci等于profil0-profil1此關鍵指令可控制該比特,也就是說,在

      圖1上所表示的實例中,在tc0至tc6的地方,其振幅在臨界時刻之外差不多等于零。
      如果子密鑰的假設是錯誤的,分類(篩分)就不對應現(xiàn)實性。統(tǒng)計地說,那時在每個信息包中有相同數(shù)量的曲線實際看出了“0”目標比特控制以及相同數(shù)量的曲線看出了“1”目標比特的控制。那么所得出的平均曲線M0(t)處在由(profil0+profil1)/2=Vm所給出的平均值周圍,因為對于每條曲線,所有的受控比特,其中包括目標比特,等于“0”和等于“1”的機會可能性幾率是一樣的。
      對第二信息包的相同推理可導致平均電流功耗曲線M1(t)其振幅處在由(profilo+profil1/2=Vm年給出的平均值周圍。
      由M0(t)-M1(t)差所提供的信號DPA(t)在此情況下幾乎等于零。在錯誤子密鑰假設情況下的信號DPA(t)表示在圖2上了。
      因此侵擾DPA利用了在按照受控比特值執(zhí)行指令過程中電功耗曲線差,以便根據(jù)針對給出的子密鑰假設的布爾選擇函數(shù)進行分類(選擇)電流功耗曲線。進行所得曲線兩個信息包之間平均電流功耗的示差分析時,就可得到一個DPA(t)信息信號。
      侵把DPA的進程那時總的說來就在于a—取出N個隨機信息(例如N等于1000);b—對N個隨機信息中的每一個都要利用卡執(zhí)行算法,同時每一次都要統(tǒng)計電流功耗曲線(在元件供電端子上測量的);c—對子密鑰進行假設;d—對每個隨機信息預測由其中一個目標比特所選取的值,只值依賴于信息比特(輸入的或輸出的)及按假設所選取的子密鑰,以便得到布爾選擇函數(shù);e—根據(jù)該布爾選擇函數(shù)對這些曲線進行分類排序(也就是說根據(jù)對于該目標比特為每個曲線按子密鑰假設所預測的值“0”或“1”分類);f—在每個信息包中計算由平均電流功耗所得到的曲線;g—求出這些平均曲線的差,以便得到信號DPA(t)。
      如果對于子密鑰的假設是準確的,布爾選擇函數(shù)是正確的并且第一信息包的曲線直正對應了這樣一些曲線,即,對于這些曲線來說在輸入或輸出所加的信息給出了卡中“0”目標比特而第二信息包的曲線實際對應了這樣一些曲線,即,對于這些曲線來說,輸入或輸出所加的信息給出了卡中“1”目標比特。
      在圖1的情況下是信號DPA(t)在對應執(zhí)行關鍵指令的時刻tc0至tc6不為零(這些指令控制目標比特)。在目標顯示搜索周期中至少有一個臨界時刻就夠了。
      要指出的是侵擾(攻擊)者不需要精確地知道臨界時刻,如果子密鑰的假設不準確,選擇分類不對應現(xiàn)實性并且在那種情況下每個信息包中所具有的實際對應“0”目標比特的曲線與對應“1”目標比特的曲線一樣多。信號DPA(t)差不多處處為零(圖2上所示的情況)。必需返回到步驟C-并且對于子密鑰進行新的假設。
      如果假設被證實是正確的,就可以進行其它子密鑰的佑算,直到最大限度地重設關鍵碼。例如,采用DES算法,可使用64比特的關鍵碼,其中僅56比特是有效的。利用侵擾DPA,人們能夠至少重設56個有效比特中的48個比特。
      本發(fā)明的目的就是在電子元件中采用可引起零信號DPA(t)的對抗方法,甚至在子密鑰假設是正確的情況下。
      由此可見,什么都不可以從錯誤關鍵碼的假設情況識別出正確的關鍵碼的假設情況。利用這種對抗,電子元件防止了DPA侵擾。
      根據(jù)本發(fā)明,對抗方法可以使目標比特不能預料,也就是說由關鍵指令控制的數(shù)據(jù)不能預料。
      事實上,因為對抗,對于每個從輸入所加的信息來說,由關鍵指令所控制的一個目標比特能以相同的幾率選取值0或1。侵擾者在給定的子密鑰的假設下所作的每個曲線信息包中,借助他要計算的布爾選擇函數(shù),就會有一樣多的實際上可控制“0”目標比特的曲線和可實際上控制“1”目標比特的曲線。不管子密鑰的假設正確或不正確,DPA(t)將總是為零。
      在本發(fā)明中,特別對密碼算法DES感興趣。
      這種算法包括16個相同的計算循環(huán)。
      在這種算法中,可以明白顯示的是,由侵擾者所預料的數(shù)據(jù)處在第一個循環(huán)和最后一個循環(huán),而且在侵擾DPA方面,關鍵指令處在前三個循環(huán)及最后三個循環(huán)中。
      在本發(fā)明中,更具體地找到了一種方法使得由這些前三個循環(huán)和后三個循環(huán)的關鍵指令所控制的數(shù)據(jù)是不能預料的,同時得到了校正的輸出密碼信息。
      因而本發(fā)明的一個目的就是使得由關鍵指令所控制的數(shù)據(jù)不可預料,同時還得到了校正的最終結果(密碼信息C)。
      這些不同技術問題的解決方法是在編成組(G1)和另一個組(G4)中找到的,組(G1)至少包括前三個循環(huán),而組(G4)至少包括后三個循環(huán),并且使用這些裝置組為的是可使由含在這些循環(huán)中的關鍵指令所控制的數(shù)據(jù)不可預料。
      根據(jù)本發(fā)明,每組的輸出結果都是正確的。
      正象特征描述的那樣,本發(fā)明涉及的是在電子元件中的對抗方法,使用密鑰加密算法由輸入信息計算密碼信息,運用的算法包括16個計算循環(huán),每個循環(huán)都利用第一個裝置根據(jù)輸入數(shù)據(jù)而提供輸出數(shù)據(jù),輸出數(shù)據(jù)和/或分接引出數(shù)據(jù)都由前三個循環(huán)和后三個循環(huán)中的關鍵指令控制。根據(jù)本發(fā)明,人們可編成一個至少含有前三個循環(huán)的組和另一個至少含有后三個循環(huán)的組,并且可把在每個循環(huán)中利用第一個裝置的第一序列及在至少某些循環(huán)中利用其它裝置的第二序列與其中每一組相關聯(lián),所述第一和第二序列是這樣的,即,它們對于同一個指定的輸入信息在輸出端由每一組最后一個循環(huán)可提供相同輸出結果,在有關的組中選擇要執(zhí)行的序列隨1/2概率統(tǒng)計規(guī)律而變化,以便使得由上述關鍵指令所控制的所有數(shù)據(jù)都是不可預料的。
      在一種實施方式中,可編成四個組,每個組有連續(xù)的4個循環(huán)。
      在另一種實施方式中,可編成分別含有前三個循環(huán)和后三個循環(huán)的兩個組。
      本發(fā)明的其它一些特征和優(yōu)點在后面以非限定性的說明實例所作的描述中就更加詳細了,還參照了一些附圖,圖中有—已經(jīng)描述過的圖1和2表示出信號DPA(t),此信號能夠按照侵擾DPA,根據(jù)對密鑰K的分(次)關鍵碼所作的假設而得到;—圖3和4是表示算法DES最初循環(huán)和最后循環(huán)的程序方框圖;—圖5是算法DES中所使用的SBOX操作方框圖;—圖6給出了在SBOX操作中使用的輸出及輸入基本常數(shù)表的實例;—圖7表示的是采用本發(fā)明對抗方法的DES執(zhí)行程序方框圖的第一個實例;—圖8是按照圖7上所示第一個實例根據(jù)對抗方法的第二序列,DES最初循環(huán)的程序方框圖;—圖9和10分別表示本發(fā)明中所使用的第二個和第三個基本常數(shù)表;—圖11表示出采用本發(fā)明對抗方法,DES執(zhí)行程序方框圖的第二個實例;—圖12和13是分別按照圖11所示第二個實例根據(jù)對抗方法的第二序列和第一序列的DES最初循環(huán)程序方框圖;—圖14和15是關于本發(fā)明對抗方法第三種應用方式的程序方框圖;—圖16表示出本發(fā)明第四種應用方式中所用的第三個基本常數(shù)表;—圖17表示出根據(jù)本發(fā)明對抗方法第三種應用方式的一種變型的DES執(zhí)行程序方框圖;以及—圖18表示出一種帶有電子元件的智能卡簡化方框示意圖,在該電子元件中使用了本發(fā)明對抗方法。
      DES密鑰加密算法(后面將比較簡要地談到DES或DES算法)包括16個計算循環(huán),標注為T1至T16,如圖3和4上所示。
      DES對于輸入信息M從初始排列IP開始(圖3)。輸入信息M是64比特的字碼f。排列之后,得到64比特的字碼e,將其分成兩部分以便形成第一循環(huán)(T1)的輸入?yún)?shù)L0和R0。L0是32比特的字碼d,它含有字碼e的32個最高有效位比特。R0是32比特的字碼h,它含有字碼e的最低有效位32比特。
      密鑰K是64比特的字碼q,它本身要進行排列和壓縮以便提供56比特的字碼r。
      第一循環(huán)包括對參數(shù)R0的操作EXP PERM,包括擴展和排列,以便輸出48比特的字碼1。
      該字碼1在標為XOR的異或(0U exclusif)操作中與參數(shù)K1相組合,以便提供48比特的字碼b。參數(shù)K1是48比特的字碼m,它是利用移位(在圖3和4上標注為SHIFT的操作)從字碼r得到的,接著進行排列和壓縮(標注為COMP PERM的操作)。
      字碼b進行標注為SBOX的操作,操作輸出得到32比特的字碼a。這種特殊的操作將聯(lián)系圖5和6作更詳細的說明。
      字碼a要進行P PERM排列,輸出32比特的字碼c。
      該字碼c,在標注為XOR的異或(exclusive OR)邏輯操作中與第一循環(huán)T1的輸入?yún)?shù)L0相組合,輸出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)的輸入r。
      其它的循環(huán)T2至T16都以類似的方式進行,除了有關根據(jù)所考慮的循環(huán)對一個或兩個位置所實現(xiàn)的SHIFT移位操作。
      因此每個循環(huán)Ti按輸入方式接收參數(shù)Li-1,Ri-1和r并且以輸出方式為后一個循環(huán)Ti+1提供參數(shù)Li及Ri和r。
      DES算法結束(圖4),密碼信息根據(jù)由最后一個循環(huán)T16所提供的參數(shù)L16和R16進行計算。
      密碼信息C的這種計算實際上包括如下的操作—在轉換字碼L16和R16的位置,然后又把它們連結起來時形成64比特的字碼e’;—應用與DES初始排列相反的排列IP-1,以便得到可形成密碼信息C的64比特字碼f’。
      在圖5和圖6上詳細描述了SBOX操作。它包括TCo常數(shù)表用于提供與輸入數(shù)據(jù)b有關的輸出數(shù)據(jù)a。
      實際上,這種TCo常數(shù)表具有8個基本常數(shù)表TCo1至TCo8,每個表僅輸入接收字碼b的6個比特,以便僅僅輸出字碼a的4個比特。
      因此,圖6上所示基本常數(shù)表TCo1接收了字碼b的b1至b6比特作為輸入數(shù)據(jù)而輸出字碼a的a1至a4比特作為輸出數(shù)據(jù)。
      其實,這8個基本常數(shù)表TCo1至TCo8都被存儲在電子元件的程序存儲器中。
      在第一循環(huán)T1的SBOX操作中,常數(shù)表TCo的輸出數(shù)據(jù)a的一個特定比特僅僅取決于輸入所加的數(shù)據(jù)b的6個比特,也就是說只與密鑰K的6個比特及輸入信息(M)有關。
      在最后循環(huán)T16的SBOX操作中,常數(shù)表TCo輸出數(shù)據(jù)a的一個特定比特可僅僅根據(jù)密鑰K的6個比特及密碼信息(C)重新計算。
      然而如果重復DPA侵擾原理,如果選擇輸出數(shù)據(jù)a的一個比特作為目標比特,則為了預測給定的輸入信息(M)或輸出信息(C)的一個目標比特值只對密鑰K的6個比特進行假設就足夠了。換句話說,對于DES,對6比特的子密鑰進行假設就夠了。
      在這種針對給定目標比特算法的DPA侵擾中,則要在64種可能之中鑒別一個正確的子密鑰假設。
      因此,在僅僅選取字碼a的8個比特作為目標比特時(從基本常數(shù)Tco1至Tco8表選用的輸出比特),就可發(fā)現(xiàn)一直到6×8=48個密鑰比特,同時對這些目標比特中的每一個進行侵擾DPA。
      在DES中,因而找到了在算法開始和結束時侵擾DPA意義上的關鍵指令。
      DES算法開始時,可以根據(jù)輸入信息M及子密鑰假設所預測的那些數(shù)據(jù)都是在第一循環(huán)(T1)中所計算的數(shù)據(jù)a和g。
      第一循環(huán)T1的數(shù)據(jù)a(圖3)是所考慮循環(huán)SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a,通過排列(PPERM)以及采用輸入?yún)?shù)L0的異或操作而計算的。
      事實上,第一循環(huán)的數(shù)據(jù)C是從第一循環(huán)數(shù)據(jù)a導出的一個數(shù)據(jù)。導出數(shù)據(jù)C對應數(shù)據(jù)a的比特單一排列。
      第二循環(huán)的數(shù)據(jù)1是從第一循環(huán)數(shù)據(jù)g導出的一個數(shù)據(jù),因為它對應字碼g比特的一種排列,此外,字碼g的某些比特還是復制的。
      知道了a和g,也就能知道這些導出數(shù)據(jù)。
      算法開始的關鍵指令是這樣一些關鍵指令,它們或者控制人們能預測的數(shù)據(jù),如第一循環(huán)的數(shù)據(jù)a,或控制一種導出數(shù)據(jù)。
      可控制第一循環(huán)T1數(shù)據(jù)a或導出數(shù)據(jù)c的那些關鍵指令就是一些SBOX操作結束、PPERM操作結束及第一循環(huán)T1的XOR操作開始的指令。
      可控制數(shù)據(jù)g或導出數(shù)據(jù)的那些關鍵指令是所有的那些第一循環(huán)T1結束時操作XOR停止的指令直到第二循環(huán)T2的SBOX操作開始指令以及第三循環(huán)T3結束時XOR操作開始的指令(L2=h(T2)=g(T1))。
      DES算法結束,可以根據(jù)密碼信息C及子密鑰假設預測的數(shù)據(jù)是第16循環(huán)T16的數(shù)據(jù)a及等于第14循環(huán)T14字碼h的數(shù)據(jù)L15。
      可控制第16循環(huán)數(shù)據(jù)a或導出數(shù)據(jù)的關鍵指令是那些SBOX操作結束的第16循環(huán)、PPERM排列操作及XOR操作開始的指令。
      對于數(shù)據(jù)L15來說,可控制這個數(shù)據(jù)或導出數(shù)據(jù)的關鍵指令是所有那些第14循環(huán)XOR操作結束的指令直到第15循環(huán)SBOX操作開始的指令以及第16循環(huán)XOR操作開始的指令。
      應用到這種DES算法的本發(fā)明對抗方法主要在于,對每個關鍵指令來說,關鍵指令控制數(shù)據(jù)及控制其補碼都有同樣多的可能性。因此,不管目標比特如何,針對該目標比特的侵擾DPA都可以實現(xiàn),控制該比特的關鍵指令以同樣的可能性控制“1”或“0”。
      實際上,對于每個潛在的目標比特來說,這一點是確實的換句話說侵擾者可在幾個可能的侵擾之間,也就是在幾個可能的布爾選擇函數(shù)之間進行選擇以便針對一個給定的子密鑰假設進行曲線的分類篩選,本發(fā)明對抗方法的使用應該依附于這種情況,即,由每個關鍵指令所控制的那些數(shù)據(jù)按二分之一的機會對一個值或其補碼進行隨機選取。關于本發(fā)明對抗方法在DES算法上的應用,必須把對抗用到DES開始的關鍵指令及DES結束的關鍵指令,以便完全受到保護。
      在DES中,由關鍵指令所控制的所有數(shù)據(jù)是一種輸出數(shù)據(jù)或SBOX操作輸出數(shù)據(jù)的導出數(shù)據(jù)。
      事實上,在DES開始時,可以預測的數(shù)據(jù)都是第一循環(huán)T1的數(shù)據(jù)a和g。數(shù)據(jù)a是第一循環(huán)SBOX操作的輸出數(shù)據(jù)。數(shù)據(jù)g是根據(jù)數(shù)據(jù)a計算的,因為g=P PERM(a)XOR LO。因而g是由第一循環(huán)SBOX操作的輸出數(shù)據(jù)a導出的數(shù)據(jù)。因此,所有的由DES開始時關鍵指令所控制的數(shù)據(jù)都直接或間接地由第一循環(huán)SBOX操作的輸出數(shù)據(jù)a引出。
      關于DES的結束,可預測的那些數(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ù)。
      至于數(shù)據(jù)L15,它是在正常執(zhí)行DES算法中根據(jù)第14循環(huán)T14的SBOX操作的輸出數(shù)據(jù)a而計算的L15=PPERM(a)XORL14。
      如果能夠使這些特殊SBOX操作的輸出數(shù)據(jù)a是不可預料的,也就能使得所有的導出數(shù)據(jù)是不可預料的因而使得由DES算法的關鍵指令所控制的所有數(shù)據(jù)都是不可預料的。如果考慮到這些SBOX操作構成了第一個裝置用于根據(jù)輸入數(shù)據(jù)E=b得出輸出數(shù)據(jù)S=a,則用到DES算法的對抗方法主要就在于利用其它裝置使輸出數(shù)據(jù)是不可預料的,以致于這種輸出數(shù)據(jù)和/或由關鍵指令控制的導出數(shù)據(jù)都是不可預料的。
      根據(jù)本發(fā)明,人們編成兩組,一組是由至少前三個循環(huán)組成的;另一組是由至少后三個循環(huán)組成的。因而這兩組包括了所有的含關鍵指令的循環(huán)。
      把可以使用適于所有循環(huán)的第一種裝置的第一序列以及可使用至少適于某些循環(huán)的其它裝置的第二序列與這兩個組相關聯(lián)。
      在其它不屬于這兩組的循環(huán)中,可以繼續(xù)使用第一種裝置。
      這些其它裝置的使用是這樣的,即,輸出結果,也就是密碼信息可保持是正確的。
      這些其它裝置可包括幾種不同的裝置,它們可以使補碼數(shù)據(jù)與第一種裝置的輸入及輸出數(shù)據(jù)中的一個和/或另一個數(shù)據(jù)相對應。
      因此,考慮到大量的執(zhí)行,各個組將按平均為二分之一的機會使用第一序列,它是算法的正常序列,而另一半機會使用另一個序列。在這些組中由關鍵指令所控制的數(shù)據(jù),對應某些中間結果,因而將會平均以二分之一的機會進行補碼。因而根據(jù)大量的曲線,給定的目標比特為1或0將會統(tǒng)計性地具有一樣多的可能性。
      圖7表示出了本發(fā)明的第一個實施方式。
      在這種實施方式中,把DES算法的16個循環(huán)分成各帶有4個連續(xù)循環(huán)的4個組G1至G4,因此組G1包括循環(huán)T1至T4,組G2包括循環(huán)T5至T8,組G3包括循環(huán)T9至T12而組G4包括循環(huán)T13至T16。
      使兩個序列與每個組相關聯(lián)第一個序列SEQA主要在于使用適于每個循環(huán)的第一種裝置TC0。第二個序列SEQB使用至少適于某些循環(huán)的另外的裝置。
      在所介紹的實例中,這些另外的裝置包括第二種裝置TC2和第三種裝置TC1。
      第二種裝置TC2被用在每一組的第二個循環(huán)和前-后循環(huán)中也就是說被用在G1的T2、T3中;G2的T6、T7中;G3的T10、T11中以及G4的T14和T15中。
      第三種裝置TC1被用在每個組中的第一個循環(huán)和最后一個循環(huán)中。也就是說被用在G1的T1、T4中,G2的T5、T8中,G3的T9、T12以及G4的T13、T16中。
      實際上,這些不同的裝置就是一些常數(shù)表。第一種裝置對應第一個常數(shù)表TC0,它對應DES的正常執(zhí)行。另外的裝置TC1和TC2相對于該第一個常數(shù)表TC0以補碼方式確定。
      第二種裝置TC2是,對于輸入數(shù)據(jù)E的補碼/E來說,它們提供了第一種裝置TC0輸出數(shù)據(jù)S的補碼。對應于第一個基本常數(shù)表TC01的第二個基本常數(shù)表的實例表示在圖9上了。要指出的是在文中所用的補碼/E的符號(標記)對應圖上補碼數(shù)據(jù)上面帶有橫杠的符號標記。
      第三種裝置是對于輸入數(shù)據(jù)E來說,它們提供第一種裝置TC0輸出數(shù)據(jù)S的補碼/S。對應第一個基本常數(shù)表TC01的第三個基本常數(shù)表TC01的實例表示在圖10上了。
      執(zhí)行算法開始時,計算程序主要在于抽取一個等于0或1的隨機值RND1,然后檢驗該RND1值。在實例中,如果RND1為1就在對G1至G4的每一組使用第二序列SEQB時進行計算。
      如果RND1為0,就在對每一組使用第一序列的同時進行計算。
      不管使用第一或第二序列,都可在每組的輸出得到輸出參數(shù)的正確結果。因此,第一組G1的輸出參數(shù)L4和R4,第二組G2的輸出參數(shù)L8和R8,第三組G3的輸出參數(shù)L12和R12,第四組G4的輸出參數(shù)L16和R16,不管使用的序列如何都是正確的。
      當完成了所有的循環(huán)時,就得到正確參數(shù)L16和R16,它們將可以計算正確的密碼信息C。
      相反地,在各組內,某些中間結果根據(jù)所用的序列都不具有相同的值,而是一些互補值,正如參照圖3和8所指出的那樣。
      已經(jīng)描述過的圖3事實上對應的是在第一序列SEQA中第一組G1的4個循環(huán)T1、T2、T3及T4的計算程序方框圖。
      圖8指出了在第二序列SEQB中第一組G1的4個循環(huán)T1、T2、T3及T4的詳細程序方框圖。
      在該第二個序列中,循環(huán)T1使用第三種裝置TC1。在SBOX操作輸出得到了數(shù)據(jù)/a(圖8),不是采用第一序列SEQA的數(shù)據(jù)a(圖3)。
      因而屬于單一排列的循環(huán)T1的P PERM操作也將在輸出提供一個相對于序列SEQA的補碼信息/C。
      數(shù)據(jù)g是利用在補碼數(shù)據(jù)/C與非補碼數(shù)據(jù)L0之間的異或方式得到的,它也能以輸出方式提供一個補碼數(shù)據(jù)/g。
      因此,利用循環(huán)T1的第三種裝置,可得到所有下面相對采用序列SEQA所得數(shù)據(jù)的補碼數(shù)據(jù)—在循環(huán)T1中/a、/c、/g;—在循環(huán)T2中/R1、/h、/l、/b;—在循環(huán)T3中/L2那時就到達循環(huán)T2中所使用的第二種裝置TC2。按照其定義,在應用補碼數(shù)據(jù)/b的同時,就可在輸出得到補碼數(shù)據(jù)/a。在把該推理一直引伸到循環(huán)T4結束時,同時要注意到在兩個補碼數(shù)據(jù)之間的異或產(chǎn)生一個非補碼結果(例如在循環(huán)T4中/L3XOR/C=g),就可在循環(huán)T4輸出得到非補碼數(shù)據(jù)L4、R4。
      此外,大家可觀察到對于DES開始的所有關鍵指令來說,關鍵指令將以隨機方式根據(jù)RND1數(shù)據(jù)來控制數(shù)據(jù)或其補碼,這要依照所執(zhí)行的序列是第一序列SEQA或是第二序列SWQB而定。
      因而在該第一種實施方式中對抗方法是非常引人注目的。在DES的計算程序中只需兩種補充性的操作,它們是隨機值抽樣及該值的檢測。程序存儲本身應包括三種不同的所用裝置,也就是三個常數(shù)表TC0、TC1、TC2。
      再回到圖7,將要指出的是在中間組G2和G3中不需要對抗,因為這兩組不含有DPA侵擾意義上的關鍵指令。因而將只把采用其兩個序列SEQA及SEQB的對抗方法應用到第一組G1和最后一組G4。只需有步驟地把第一序列SEQA應用到組G2及G3就夠了。
      但是,由于把對抗方法應用到所有各組而使整體系統(tǒng)具有一致性。
      因此,最好把兩個序列SEQA及SEQB與組G1至G4中的每一組相關聯(lián)。
      本發(fā)明對抗方法的第二種實施方式表示在圖11上了。該第二種實施方式實際上是第一種實施方式的變型。這種變型的好處是只使用第二種裝置TC2作為序列SEQB中的其它裝置。其實,人們已看到不同的裝置TC0、TC1、TC2實際上對應的是那些常數(shù)表,每個表又含有8個基本常數(shù)表,這就占用了不可忽略的程序存儲空間。
      因而這種變型主要在于只單獨使用序列SEQB中的第二種裝置TC2。為此,在每組的最前和最后循環(huán)的計算程序中設計了一種補充操作CP以便對輸?shù)降诙N裝置的輸入數(shù)據(jù)進行補碼。這種補充操作CP實際上是采用1邏輯的輸入數(shù)據(jù)的一種異或。如果參照圖12,該圖表示出第一組G1中4個循環(huán)T1到T4的第二個計算序列SEQB的詳細程序方框圖,這涉及到對數(shù)據(jù)b的補碼,是在循環(huán)T1和T4的SBOX操作輸入應用該數(shù)據(jù)之前進行的補碼。因為第二種裝置TC2可對輸入進行補碼,所以求補操作CP加之第二種裝置TC2就相當于在本發(fā)明第一個實施方式中所使用的第三個裝置TC1,也就是說等效于輸出一個未補碼的數(shù)據(jù)。
      但是為了使第二個實施方式的對抗方法是有效的,必須要指令數(shù)本身是準確的,不管所用的計算序列如何。事實證明,如果在兩個可能的序列SEQA及SEQB之間存在任何一種差異,那就將會出現(xiàn)有成效的DPA侵擾的可能性。
      正因為如此,并且如同圖13上所表示的那樣,在第一序列SEQA的循環(huán)T1和T4中設計一個相同復制操作ID,它主要包括SBOX操作輸入采用0邏輯的一種異或,為的是在應用與補充操作CP相同的指令時不改變輸入數(shù)據(jù)。
      這樣,就會在兩個序列中有相同的指令數(shù)。
      圖14表示本發(fā)明對抗方法的第三個實施方式。
      在該實施方式中,編成含有前三個循環(huán)T1、T1、T3的第一組G1和含有后三個循環(huán)T14、T15、T16的另一組G4。把第一序列SEQA和第二序列每個組相關聯(lián),該第一序列可使用適于每個循環(huán)的第一種裝置TC0,而第二序列可使用至少適于某些循環(huán)的其它裝置。
      每個組G1、G4的輸出可得到正確的輸出結果L3、R3及L16、R16,不管所用序列SEQA或SEQB如何。
      在實例中其它裝置是與第一個實施方式有聯(lián)系的已參看過的第三種裝置TC1以及第四種裝置TC3。
      該第四種裝置TC3是相對第一種裝置TC0確定的,如同使輸出數(shù)據(jù)S與輸入數(shù)據(jù)E的補碼/E相對應。相應的基本常數(shù)表TC31表示在圖16上。
      對于其它未包括在各組中的循環(huán),也就是說,對于循環(huán)T4至T13,可應用第一種裝置TC0。
      因此,在抽取隨機值RND1以后,就檢驗該值以便確定要應用到第一組的序列,利用計算過的參數(shù)L3、R3繼續(xù)輸出,同時利用第一種裝置TC0執(zhí)行后面的循環(huán)。循環(huán)T13結束,把由隨機值RND1所確定的序列應用到組G4。得到參數(shù)L16、R16將用于計算密碼信息C。
      圖15是適于第二序列SEQB的詳細的相應程序方框圖。
      該程序方框圖上可清楚地看出得到了對于這些循環(huán)所有關鍵指令的補碼數(shù)據(jù)(補碼是用數(shù)據(jù)上的橫杠標記的)。第三個循環(huán)的輸出數(shù)據(jù)L3和R3未補碼。可繼續(xù)執(zhí)行算法,同時達到循環(huán)T4,根據(jù)正常執(zhí)行算法把第一種裝置TC0應用到該循環(huán)。
      在這個圖上,人們可注意到在第三個循環(huán)T3的SBOX操作中,將能夠使用第一個裝置TC0代替第三個裝置TC1,同時在SBOX操作輸出端設計一個補碼的補充操作CP。這是一種等效的解決辦法。
      那時必須使得在序列SEQA中相同復制的補充操作與序列SEQB中補碼的補充操作相對應。
      圖17表示可利用該變型的執(zhí)行程序方框圖。對于兩個組G1和G4的第三個循環(huán)來說,在第一序列SEQA中使用了接連復制補充操作ID的第一個裝置TC0,這標注為T3(TC0,ID)。在第二序列SEQB中,對于第三個循環(huán)使用了第一個裝置,它在輸出處接連補碼的補充操作CP,這標注為T3(TC0,CP)。
      因此,第二個實施方式和第三個實施方式的這種變型表明了不同裝置的輸入或輸出補充操作的使用。即,所用裝置的輸入或輸出。在第一序列SEQA中相同復制ID的補充操作那時對應第二序列中每個補碼的補充操作CP。
      本發(fā)明適合DES密鑰加密算法,描述了該算法的幾種非限定性的實施例。這種算法通常都是按照16個計算循環(huán)的密鑰加密算法實施的,其關鍵指令處在前三個循環(huán)或后三個循環(huán)的指令之中。
      電子元件1可采用本發(fā)明按DES密鑰加密算法的對抗法,它典型地如圖18所示包括一個微處理機μP,一個程序存儲器2及一個工作存儲器3。為了能夠管理本發(fā)明不同裝置TC0、TC1、TC2的使用,這些裝置實際上是一些程序存儲器存儲的常數(shù)表,設計了0與1之間的隨機值生成裝置4,如果聯(lián)系到圖7和11的程序方框圖,可看出此裝置在每次執(zhí)行DES時能提供RND1值。這種電子元件可具體地用到智能卡5中,以便提高其不可侵犯性。
      權利要求
      1.采用密鑰(K)加密算法的電子元(部)件中的對抗方法,該算法用于根據(jù)輸入信息(M)來計算密碼信息(C),算法的運用包括16個計算循環(huán)(T1……,T16),每個循環(huán)都使用第一個裝置(TC0)以便根據(jù)一個輸入數(shù)據(jù)而提供一個輸出數(shù)據(jù),輸出數(shù)據(jù)和/或導出數(shù)據(jù)由前三個循環(huán)(T1、T2、T3)和后三個循環(huán)(T14、T15、T16)中的關鍵指令控制,其特征在于編成一個組(G1)至少含有前三個循環(huán)和另一個組(G4)至少含有后三個循環(huán),其特征還在于把第一個序列(SEQA)及第二個序列(SEQB)與這兩個組(G1和G4)中的每一個組相關聯(lián),第一個序列在每個循環(huán)中都使用第一個裝置TC0,而第二個序列在至少某些循環(huán)中使用另外的裝置(TC1、TC2、TC3),所述的第一和第二序列是這樣的,即,它們對于同一個給定的輸入信息(M)在輸出端由每個組最后循環(huán)可提供相同輸出結果,選擇在相關組中要執(zhí)行的序列要隨著一半幾率的統(tǒng)計規(guī)律而變化,使得由上述關鍵指令所控制的所有數(shù)據(jù)都是不可預料的。
      2.根據(jù)權利要求1所述的對抗方法,其特征在于其它的裝置是要能夠對第一個裝置的輸入數(shù)據(jù)(E)和/或輸出數(shù)據(jù)(S)中的一個和/或另一個或兩個進行補碼。
      3.根據(jù)權利要求2所述的對抗方式,其特征在于第二個序列(SEQB)對于一個或幾個循環(huán)來說都包括一種在所用裝置輸入或輸出端上的補碼的補充操作(CP),其特征還在于在第一個序列(SEQA)中相同復制(ID)的補充操作與第二個序列中的每一個補碼補充操作相對應。
      4.根據(jù)上述權利要求中任一權利要求所述的對抗裝置,其特征在于編成四個組(G1……,G4),每組有四個連續(xù)的循環(huán)(T1……,T4),特征還在于,把第一序列(SEQA)與每個組相關聯(lián),特征再在于把第二序列(SEQB)至少與第一組(G1)和最后一個組(G4)相關聯(lián)。
      5.根據(jù)權利要求4所述的對抗方法,其特征在于,第二序列(SEQB)與每個組(G1……,G4)相關聯(lián)。
      6.根據(jù)權利要求1至3中任一權利要求所述的對抗方法,其特征在于第一組(G1)是由前三個循環(huán)(T1、T2、T3)形成的,特征還在于最后一組是由后三個循環(huán)(T14、T15、T16)形成的。
      7.根據(jù)上述權利要求中任一權利要求所述的對抗方法,其特征在于選擇要執(zhí)行的序列是在開始執(zhí)行算法時通過一個隨機值(RND1)的抽樣而完成的,被選擇的序列可用在每個有關的組中。
      8.根據(jù)上述權利要求中任一權利要求所述的對抗方法,其特征在于不同的裝置是些常數(shù)表。
      9.采用根據(jù)上述任一權利要求所述對抗方法的安全可靠的電子元件,其特征在于可利用輸入數(shù)據(jù)提供輸出數(shù)據(jù)的各種裝置(TC0、TC1、TC2)是按所述電子元件的程序存儲而固定的,其特征還在于它包括0或1隨機值(RND1)的生成裝置(4)用于管理所述不同裝置的使用。
      10.含有根據(jù)權利要求9所述安全可靠電子元件的智能卡。
      全文摘要
      本發(fā)明涉及一種采用密鑰K加密算法的電子元(部)件中的對抗方法,該算法有16個計算循環(huán),由輸入信息(M)提供輸出一個密碼信息(C),每個循環(huán)都使用第一個裝置以便由一個輸入信息得到一個輸出信息,所述方法主要在于選擇一個利用第一個裝置的序列或利用其它裝置TC
      文檔編號G06F21/06GK1328733SQ99812248
      公開日2001年12月26日 申請日期1999年9月15日 優(yōu)先權日1998年10月16日
      發(fā)明者克里斯多弗·克拉維爾, 奧利維爾·本諾伊特 申請人:格姆普拉斯公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1