專利名稱:在使用一種密鑰動(dòng)態(tài)加密算法的電子元件中的對(duì)抗方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在一個(gè)使用一種密鑰加密算法的電子元件中的一種對(duì)抗方法。這種元件在嚴(yán)格控制對(duì)服務(wù)或數(shù)據(jù)的訪問的應(yīng)用中使用。它們具有一個(gè)在微處理器和存儲(chǔ)器附近形成的、包含一個(gè)具有密鑰的程序存儲(chǔ)器的體系結(jié)構(gòu)。
這些元件特別使用在智能卡中,用于其中的某些應(yīng)用。舉例來說,涉及訪問某些數(shù)據(jù)庫的應(yīng)用、金融應(yīng)用、或例如用于電視、汽油分配或高速公路通行費(fèi)的遠(yuǎn)程支付應(yīng)用。
這些元件或卡因此使用一種密鑰加密算法,其中最公知的一種算法是DES(在英國(guó)和美國(guó)文獻(xiàn)中,意思是數(shù)據(jù)加密標(biāo)準(zhǔn))算法。還存在其它的密鑰算法,諸如RC5算法或COMP128算法。當(dāng)然這個(gè)列表沒有窮舉。
概括和簡(jiǎn)潔地來說,這些算法的作用是從用作一主機(jī)系統(tǒng)(服務(wù)器、銀行分配器等等)的一個(gè)(到該卡的)輸入的一個(gè)信息和包含在該卡中的密鑰計(jì)算一個(gè)加密信息,并接下來將這個(gè)加密信息提供給該主機(jī)系統(tǒng),例如該加密信息使得該主機(jī)系統(tǒng)能夠驗(yàn)證該元件或卡、交換數(shù)據(jù)等等。
然而,很清楚這些元件或卡容易受到包含對(duì)電流消耗的一個(gè)差值分析的攻擊,這使有不良企圖的第三方能夠發(fā)現(xiàn)該密鑰。這些攻擊被稱為DPA攻擊,是差值能力分析的英語縮寫。
這些DPA攻擊的原理基于以下事實(shí)微處理器執(zhí)行指令的電流消耗依據(jù)正被操作的數(shù)據(jù)而變化。
特別地,微處理器操作一個(gè)數(shù)據(jù)位的一條指令,取決于該位是等于“1”或“0”而產(chǎn)生兩個(gè)不同的電流特征。通常,如果該指令正操作一個(gè)“0”,則在執(zhí)行的這個(gè)時(shí)刻消耗電流的第一數(shù)值,而且如果該指令正操作一個(gè)“1”,則消耗該電流的不同于第一數(shù)值的第二數(shù)值。
已知這些加密算法的如下特征進(jìn)行的計(jì)算、使用的參數(shù)。唯一未知的是包含在該程序存儲(chǔ)器中的密鑰。這不能完全從對(duì)用作一個(gè)輸入的該信息和反過來提供的該加密信息的認(rèn)識(shí)中推導(dǎo)出。
然而,在一個(gè)加密算法中,某些計(jì)算的數(shù)據(jù)完全依賴于在該卡的輸入端以明碼形式應(yīng)用的信息以及包含在該卡中的該密鑰。在該算法中計(jì)算的其它數(shù)據(jù)因此能完全從該加密信息(通常在從該卡到該主機(jī)系統(tǒng)的輸出端上以明碼形式提供)和包含在該卡中的該密鑰再計(jì)算出來。更確切地說,這些特定數(shù)據(jù)的每一位能夠從輸入或輸出信息、以及該密鑰有限數(shù)目的特定位中確定。
因此,一個(gè)特定數(shù)據(jù)項(xiàng)的每一位對(duì)應(yīng)于由該密鑰的一組特定位形成的一個(gè)子密鑰。
能夠被推算的這些特定數(shù)據(jù)位以下簡(jiǎn)稱為目標(biāo)位。
因此,DPA攻擊的基本思想是取決于它正操作的是“1”還是“0”、以及從一個(gè)已知的輸入或輸出信息和在相應(yīng)子密鑰上的一個(gè)假設(shè)通過該算法的指令計(jì)算一個(gè)目標(biāo)位的可能性,使用在一條指令的電流消耗特征中的差值。
因此,DPA攻擊的原則是測(cè)試一個(gè)給定的、應(yīng)用于大量電流測(cè)定曲線的子密鑰假設(shè)、和一個(gè)布爾選擇函數(shù),其中每一電流測(cè)定曲線都與攻擊者的一個(gè)已知輸入信息有關(guān),且該布爾選擇函數(shù)是依據(jù)該子密鑰假設(shè),使用為一個(gè)目標(biāo)位而推算的值為每一曲線定義的。
通過在有關(guān)的子密鑰上形成一個(gè)假設(shè),推算這個(gè)目標(biāo)位將為一個(gè)給定的輸入或輸出信息而使用的值為“0”或“1”在實(shí)際上是可能的。
然后,就有可能作為一個(gè)布爾選擇函數(shù),為所討論的該子密鑰假設(shè)應(yīng)用該目標(biāo)位預(yù)測(cè)的值“0”或“1”,以便將這些曲線分類形成以下兩個(gè)信息包依據(jù)該子密鑰假設(shè),第一個(gè)信息包包含已經(jīng)知道在“0”上對(duì)該目標(biāo)位進(jìn)行操作的曲線,而第二個(gè)信息包包含已經(jīng)知道在“1”上對(duì)該目標(biāo)位進(jìn)行操作的曲線。通過在每個(gè)信息包中采用平均電流消耗,就獲得了一個(gè)用于第一個(gè)信息包的平均消耗曲線M0(t)以及一個(gè)用于第二個(gè)信息包的平均消耗曲線M1(t)。
如果該子密鑰假設(shè)是正確的,則第一個(gè)信息包實(shí)際上包含了在N個(gè)曲線當(dāng)中已經(jīng)知道在“0”上對(duì)該目標(biāo)位進(jìn)行操作的所有曲線,且第二個(gè)信息包實(shí)際上包含了在這N個(gè)曲線當(dāng)中已經(jīng)知道在“1”上對(duì)該目標(biāo)位進(jìn)行操作的所有曲線。于是第一個(gè)信息包的平均消耗曲線M0(t)除了在執(zhí)行關(guān)鍵性指令時(shí)之外將處處具有一個(gè)平均消耗,和一個(gè)在“0”上對(duì)該目標(biāo)位進(jìn)行操作的電流消耗分布特性曲線(profile0)。換句話說,就所有這些曲線來說,除了總有值為“0”的該目標(biāo)位之外,所有這些操作的位等于“1”的機(jī)會(huì)與等于“0”的機(jī)會(huì)相同。這能夠被寫為M0(t)=[(profile0+profile1)/2]ttci1+[profile0]tci]]>即M0(t)=[Vmt]ttci1=[profile0]tci]]>其中tci表示關(guān)鍵時(shí)刻,在此時(shí)已經(jīng)執(zhí)行了一條關(guān)鍵性指令。
同樣地,第二個(gè)信息包的平均消耗曲線M1(t)除了在執(zhí)行關(guān)鍵性指令時(shí)之外將處處對(duì)應(yīng)于一個(gè)平均消耗,和一個(gè)在“1”上對(duì)該目標(biāo)位進(jìn)行操作的電流消耗分布特性曲線(profile1)。它可能被寫為M1(t)=[(profile0+profile1)/2]ttci1+[profile1]tci]]>即M1(t)=[Vmt]ttci1+[profile1]tci]]>可以看出兩個(gè)分布圖profile0和profile1不相等。然后,在曲線M0(t)和M1(t)之間的差值給出一個(gè)其數(shù)值等于在執(zhí)行這些操作該位的關(guān)鍵性指令的關(guān)鍵時(shí)刻tci的profile0-profile1的信號(hào)DPA(t),即在
圖1描繪的實(shí)例中,在點(diǎn)tc0到tc6,除了這些關(guān)鍵時(shí)刻外其數(shù)值近似等于零。
如果該子密鑰假設(shè)是錯(cuò)誤的,則該分類未對(duì)應(yīng)于實(shí)際。從統(tǒng)計(jì)上來說,在每個(gè)信息包中實(shí)際上已經(jīng)知道在“0”上對(duì)該目標(biāo)位進(jìn)行操作的曲線與已經(jīng)知道在“1”上對(duì)該目標(biāo)位進(jìn)行操作的曲線同樣多。由于對(duì)每一曲線來說,所有操作的位、包括該目標(biāo)位其等于“0”的機(jī)會(huì)和等于“1”的機(jī)會(huì)相同,因此結(jié)果的平均曲線M0(t)位于由(profile0+profile1)/2=Vm給出的一個(gè)平均值附近。
相同的原因?qū)е略诘诙€(gè)信息包上的一個(gè)平均電流消費(fèi)曲線M1(t),其數(shù)值位于由(profile0+profile1)/2=Vm給出的一個(gè)平均值附近。
在這種情況下由M0(t)-M1(t)的差值提供的信號(hào)DPA(t)實(shí)質(zhì)上等于零。在一個(gè)錯(cuò)誤子密鑰假設(shè)的情況下信號(hào)DPA(t)如圖2所示。因此DPA攻擊依據(jù)被操作位的值,利用在一條指令執(zhí)行期間電流消耗分布圖中的差值,以便依據(jù)用于一個(gè)給定子密鑰假設(shè)的一個(gè)布爾選擇函數(shù)完成對(duì)電流消耗曲線的分類。通過在獲得的兩個(gè)信息包曲線之間的平均電流消耗上施加差值分析,以獲得一個(gè)信息信號(hào)DPA(t)。
然后一個(gè)DPA攻擊的執(zhí)行總體上包含a—生成N個(gè)隨機(jī)信息(例如N等于1000);b—使該卡為這N個(gè)隨機(jī)信息中的每一個(gè)執(zhí)行算法,在每個(gè)時(shí)刻讀取電流消耗曲線(在該元件的供應(yīng)終端上測(cè)量);c—形成一個(gè)有關(guān)一個(gè)子密鑰的假設(shè);d—為這些隨機(jī)信息中的每一個(gè),由目標(biāo)位中的一個(gè)推算被采用的值,以便獲得布爾選擇函數(shù),其中的這些目標(biāo)位的值僅僅依賴于該信息(輸入或輸出)的這些位和作為一個(gè)假設(shè)的該子密鑰;e—依據(jù)這個(gè)布爾選擇函數(shù)(即依據(jù)在該子密鑰假設(shè)下分別為每一曲線推算的,用于這個(gè)目標(biāo)位的值“1”或“0”)將這些曲線進(jìn)行分類;f—在每個(gè)信息包中計(jì)算產(chǎn)生的平均電流消耗曲線;g—進(jìn)行這些平均曲線的差值,以便獲得該信號(hào)DPA(t)。
如果有關(guān)該子密鑰的假設(shè)是正確的,則該布爾選擇函數(shù)是正確的,第一個(gè)信息包的曲線實(shí)際上相當(dāng)于那些用作一個(gè)輸入或輸出的信息在該卡中已經(jīng)給出了一個(gè)目標(biāo)位為0的曲線,且第二個(gè)信息包的曲線實(shí)際上相當(dāng)于那些用作一個(gè)輸入或輸出的信息在該卡中已經(jīng)給出了一個(gè)目標(biāo)位為1的曲線。
在圖1中的情況適用于信號(hào)DPA(t)在對(duì)應(yīng)于這些關(guān)鍵性指令(那些操作該目標(biāo)位的指令)執(zhí)行的tc0到tc6時(shí)刻不為零。在采集期間至少有一個(gè)關(guān)鍵性時(shí)刻就足夠了。
應(yīng)當(dāng)注意到攻擊者不需要精確地知道這些關(guān)鍵性時(shí)刻。
如果該子密鑰假設(shè)不正確,則該分類與實(shí)際不符,因此在每個(gè)信息包中實(shí)際上對(duì)應(yīng)于一個(gè)目標(biāo)位為“0”的曲線與對(duì)應(yīng)于一個(gè)目標(biāo)位為“1”的曲線同樣多。該信號(hào)DPA(t)實(shí)質(zhì)上在整個(gè)期間為空(在圖2描繪的情況中)。這就必須返回到步驟c,并形成一個(gè)有關(guān)該子密鑰的新假設(shè)。
如果該假設(shè)證明是正確的,則能夠轉(zhuǎn)到其它子密鑰的評(píng)定上,直至已經(jīng)最大可能地重新構(gòu)成該密鑰為止。舉例來說,利用一種DES算法,使用了一個(gè)64位密鑰,其中只有56位是有用位。就一個(gè)DPA攻擊來說,有可能重新構(gòu)成該56個(gè)有用位中的至少48位。
本發(fā)明的目的是在一個(gè)電子元件中使用一種不允許攻擊者產(chǎn)生該信號(hào)DPA(t)的對(duì)抗方法。這通過動(dòng)態(tài)地改變?cè)撁荑€來實(shí)現(xiàn)。
本發(fā)明假定在相互通信的兩個(gè)電子元件之間共享一個(gè)公共的秘密。在下文中這些元件將在圖7和8中用標(biāo)記C(一個(gè)卡)和T(一個(gè)終端)表示,但是顯然對(duì)專家來說它們能夠采用其它不同的形式。在這兩個(gè)元件當(dāng)中,假定C可能易遭受DPA。通過本發(fā)明的對(duì)抗,電子元件C被保護(hù)以防DPA攻擊。
依據(jù)本發(fā)明,該對(duì)抗方法允許T和C以一種同步方式計(jì)算不為外界所知的一個(gè)會(huì)話密鑰,并在一個(gè)加密、驗(yàn)證或MAC密碼協(xié)議或其它任何要求一種密鑰算法的加密函數(shù)中使用這個(gè)密鑰。
為了使在C和T之間共享的秘密數(shù)據(jù)項(xiàng)暴露最小,這個(gè)秘密數(shù)據(jù)項(xiàng)將僅僅間接地暴露,并將隨時(shí)間變化,在會(huì)話i使用的密鑰是前一會(huì)話的密鑰(在會(huì)話i-1中使用的)的一個(gè)函數(shù)。每個(gè)會(huì)話密鑰用K[i]表示,將最多被操作兩次-當(dāng)它從該密鑰ki-1創(chuàng)造時(shí);-當(dāng)它在應(yīng)用中使用時(shí)。
在本發(fā)明中,將關(guān)心一種DES類型的算法。這個(gè)DES算法包含十六個(gè)同樣的計(jì)算循環(huán);在這個(gè)算法中,已經(jīng)表明了能夠由一個(gè)攻擊者推算的數(shù)據(jù)位于第一個(gè)循環(huán)和最后一個(gè)循環(huán),而就DPA攻擊而言那些關(guān)鍵性指令位于最初的三個(gè)循環(huán)和最后的三個(gè)循環(huán)中。
因此,本發(fā)明的一個(gè)目的是通過確保這些數(shù)據(jù)從該算法的應(yīng)用到另一應(yīng)用改變而使由關(guān)鍵性指令操作的數(shù)據(jù)不可見。作為特征,本發(fā)明因此涉及在一個(gè)使用一個(gè)具有長(zhǎng)度k的密鑰k
的加密算法A的電子元件C中的一種對(duì)抗方法,以便從一個(gè)輸入信息中計(jì)算一個(gè)加密信息。依據(jù)本發(fā)明,當(dāng)以一種非機(jī)密方式提供給終端T該索引i時(shí),一個(gè)會(huì)話密鑰k[i]由前一會(huì)話密鑰k[i-1]形成。具有k
和I,該終端T能夠計(jì)算k[i]而不必計(jì)算所有中間密鑰k[1]、k[2]、……、K[i-1]。
實(shí)現(xiàn)該對(duì)抗方法的特征在于在A的連續(xù)使用之間在K[i]方面的變化使用以下規(guī)則進(jìn)行計(jì)算,其中i是算法A的執(zhí)行次數(shù)K[i]=f(K[i-1]),f是取一個(gè)密鑰用作一個(gè)輸入并返回一個(gè)密鑰作為一個(gè)輸出的函數(shù)。
在一個(gè)實(shí)施例中,密鑰k[i]是由密鑰k[i-1]的平方對(duì)一個(gè)質(zhì)數(shù)求模形成的,其中該質(zhì)數(shù)的長(zhǎng)度為該密鑰的長(zhǎng)度。
函數(shù)f(x)如下所示,其中x為一個(gè)變量f(x)=x^2 mod z,其中z為一個(gè)常數(shù)以便使由T使用的計(jì)算簡(jiǎn)化是通過公式K[i]=K
^(2^i)mod z計(jì)算得到,其中數(shù)2^i是計(jì)算的模phi(z)。應(yīng)當(dāng)注意到除了2之外的一個(gè)整數(shù)冪(數(shù)字e)能夠被用在本發(fā)明的方法中;舉例來說,也可能定義為f(x)=x^3 mod z然后相應(yīng)的計(jì)算簡(jiǎn)化是K[i]=K
^(3^i)mod z。其中數(shù)3^i是計(jì)算的模phi(z)。
在另一個(gè)實(shí)施例中,密鑰k[i]是由密鑰k[i-1]乘以一個(gè)常數(shù)c后對(duì)一個(gè)質(zhì)數(shù)求模形成的,其中該質(zhì)數(shù)的長(zhǎng)度為該密鑰的長(zhǎng)度。
函數(shù)f(x)如下所示,其中x為一個(gè)變量f(x)=x*c mod z,其中z和c是常數(shù),從而使由T使用的計(jì)算簡(jiǎn)化為K[i]=K
*c^imod z。
優(yōu)先地,z為小于2^k的最大質(zhì)數(shù)。
依據(jù)本發(fā)明的另一個(gè)實(shí)施例,后者也涉及在和第二個(gè)電子元件(T)進(jìn)行通信、并使用一個(gè)加密算法B的第一個(gè)電子元件(C)中的一種對(duì)抗方法,其中該加密算法B使用如上所述的方法,在該方法中密鑰包含一連串的字節(jié),本發(fā)明的方法將這些字節(jié)用一個(gè)小質(zhì)數(shù)進(jìn)行求模,密鑰K[i-1]包含一連串的L字節(jié),使用在連續(xù)使用B[i-1]之間的K[i-1]的對(duì)抗方法使用如下規(guī)則進(jìn)行計(jì)算,其中i為該算法B的執(zhí)行次數(shù)K[i-1]={B[1,i-1],……,B[L,i-1]},上述規(guī)則通過對(duì)范圍從1到L的t進(jìn)行變換變成K[i]B[t,i]=B[t,i-1]^2 mod U其中U為一個(gè)字節(jié)的質(zhì)數(shù),例如251,密鑰K[i]使用對(duì)范圍從1到L的t計(jì)算簡(jiǎn)化進(jìn)行計(jì)算;B[t,i]=B[t,i-1]^(2^i)mod U其中數(shù)2^i為計(jì)算的模phi(U)。
優(yōu)先地,這個(gè)第二實(shí)施例涉及的一種對(duì)抗方法中,密鑰K[i-1]包含一連串的字節(jié),本發(fā)明的方法將這些字節(jié)對(duì)一個(gè)小質(zhì)數(shù)求模,其特征在于該密鑰K[i-1]包含一連串的L字節(jié)K[i-1]={B[1,i-1],……,B[L,i-1]},然后通過對(duì)范圍從1到L的t進(jìn)行變換變成K[i]B[t,i]=B[t,i-1]*c[t]mod U其中U為一個(gè)字節(jié)的質(zhì)數(shù),例如251,然后密鑰K[i]使用對(duì)范圍從1到L的t計(jì)算簡(jiǎn)化進(jìn)行計(jì)算B[t,i]=B[t,i-1]*c[t]^i mod U。
就這個(gè)特定實(shí)施例來說,還有更可取的是該終端和卡在多于密鑰加密算法所必需的字節(jié)數(shù)目上執(zhí)行會(huì)話密鑰K[i]的計(jì)算,在該密鑰加密算法中應(yīng)該使用這個(gè)密鑰,然后將所產(chǎn)生的密鑰中斷,以便獲得為該密鑰加密算法所必需的字節(jié)數(shù)。這是為了補(bǔ)償在由使用小于數(shù)字256的模U所引起的平均信息量中的損失。
優(yōu)先地,該數(shù)U為一、二、三、四、五或六個(gè)字節(jié)。
當(dāng)然,本發(fā)明也涉及用于這個(gè)最后特定實(shí)施例的一種智能卡和一種電子終端。
本發(fā)明的其它特性和優(yōu)點(diǎn)將在下面作為指示而決不是限制、并結(jié)合附圖所給出的描述中進(jìn)行更加詳細(xì)地描述,其中-圖1和2,已經(jīng)描述過了,說明了能夠依據(jù)一個(gè)DPA攻擊,根據(jù)在該密鑰K的一個(gè)子密鑰上的一個(gè)假設(shè)獲得的信號(hào)DPA(t);-圖3和4是表示該DES算法的第一個(gè)循環(huán)和最后一個(gè)循環(huán)的流程圖;-圖5是在該DES算法中使用的操作SBOX的方框圖;-圖6顯示了在該操作SBOX中使用的一個(gè)輸入一個(gè)輸出的一個(gè)基本常數(shù)表的實(shí)例;-圖7說明了用于執(zhí)行具有根據(jù)本發(fā)明的一種對(duì)抗方法的DES的一個(gè)流程圖的第一實(shí)例;-圖8說明了用于執(zhí)行具有根據(jù)本發(fā)明的一種對(duì)抗方法的DES的一個(gè)流程圖的第二實(shí)例。
盡管以下的描述選擇了DES,但是本發(fā)明的對(duì)抗不特指DES,而且能夠同樣地應(yīng)用到其它密鑰算法(諸如DES、IDEA、AES、FEAL、三元DES、BlowFish、SAFER、SHA-MAC、RIPEMD、DFC、RC5、RC6或SEAL)中;在本公開的剩余部分中,通常情況將因此被視為一種算法A(M,K)(最初易受DPA影響的),其中K是一個(gè)具有長(zhǎng)度k的密鑰,M為該信息。
該DES密鑰加密算法(在下文中術(shù)語DES將更簡(jiǎn)單地用于表示DES算法)包含16個(gè)計(jì)算循環(huán),用T1到T16表示,如圖3和4中所示。
該DES從在該輸入信息M上的一個(gè)初始置換IP開始(圖3)。輸入信息M是一個(gè)64位的字f。在置換之后,獲得一個(gè)64位的字e,它被分成兩個(gè)以便形成第一循環(huán)(T1)的輸入?yún)?shù)L0和R0。L0是一個(gè)32位的字d,包含該字e的最高32個(gè)有效位。R0是一個(gè)32位的字h,包含該字e的最低32個(gè)有效位。
密鑰K是一個(gè)64位的字q,本身進(jìn)行一個(gè)置換和壓縮以便提供一個(gè)56位的字r。
第一個(gè)循環(huán)包含一個(gè)在參數(shù)R0上、包含一個(gè)擴(kuò)充和一個(gè)置換的操作EXP PERM,以便提供一個(gè)48位的字1作為一個(gè)輸出。
這個(gè)字1與一個(gè)參數(shù)K1在一個(gè)表示XOR的異或類型的操作中結(jié)合,以便提供一個(gè)48位的字b。這個(gè)參數(shù)K1是一個(gè)48位的字m,是從字r處通過移位一個(gè)位置(在圖3和4中用SHIFT表示的操作)、繼之以一個(gè)置換和壓縮(用COMP PERM表示的操作)而獲得的。
字b被用于一個(gè)表示為SBOX的操作,在其輸出端獲得一個(gè)32位的字a。這個(gè)特定操作將就圖5和6進(jìn)行更詳細(xì)地說明。
字a進(jìn)行一個(gè)置換P PERM,產(chǎn)生32位的字c作為一個(gè)輸出。
這個(gè)字c在一個(gè)XOR表示的異或類型的邏輯運(yùn)算中與第一個(gè)循環(huán)T1的輸入?yún)?shù)L0結(jié)合,該邏輯運(yùn)算提供了32位的字g作為一個(gè)輸出。
第一個(gè)循環(huán)的字h(=R0)提供了隨后循環(huán)(T2)的輸入?yún)?shù)L1,且第一個(gè)循環(huán)的字g提供了隨后循環(huán)的輸入?yún)?shù)R1。第一個(gè)循環(huán)的字p提供了隨后循環(huán)的輸入r。
除有關(guān)根據(jù)所討論的這些循環(huán)在一個(gè)或兩個(gè)位置上進(jìn)行的轉(zhuǎn)移操作SHIFT之外,其它循環(huán)T2到T16以相似的方式進(jìn)行。
這樣每一循環(huán)Ti接受參數(shù)Li-1、Ri-1和r作為一個(gè)輸入,并提供參數(shù)Li、Ri和r作為一個(gè)輸出用于隨后的循環(huán)Ti+1。
在DES算法的末端(圖4),加密信息從由最后一個(gè)循環(huán)T16提供的參數(shù)L16和R16計(jì)算出來。
該加密信息C的這個(gè)計(jì)算實(shí)際上包含以下操作-通過將字L16和r16的位置反向、然后連接它們形成一個(gè)64位字e’;-應(yīng)用與該DES開始置換可逆的置換IP-1,以便獲得形成該加密信息C的64位字f’。
在圖5和6中詳細(xì)介紹了操作SBOX。它包含一個(gè)常數(shù)表TC0以便提供一個(gè)輸出數(shù)據(jù)項(xiàng)a作為一個(gè)輸入數(shù)據(jù)項(xiàng)b的函數(shù)。
實(shí)際上,這個(gè)常數(shù)表TCo是基本常數(shù)TC01到TC08的八個(gè)表形式,其中每個(gè)僅接收該字b的6位作為一個(gè)輸入,以便僅僅提供該字a的4位作為一個(gè)輸出。
因此在圖6中描繪的基本常數(shù)TC01的表接收字b的位b1到b6作為一個(gè)輸入數(shù)據(jù)項(xiàng),并提供字a的位a1到a4作為一個(gè)輸出數(shù)據(jù)項(xiàng)。
實(shí)際上,基本常數(shù)TC01到TC08的這八個(gè)表被保存在該電子元件的程序存儲(chǔ)器中。
在第一個(gè)循環(huán)T1的操作SBOX中,從該常數(shù)表TC0輸出的數(shù)據(jù)項(xiàng)a的一個(gè)特定位僅僅取決于用作一個(gè)輸入數(shù)據(jù)項(xiàng)b的6位,即僅僅取決于該密鑰K的6位和輸入信息(M)。
在最后一個(gè)循環(huán)T16的操作SBOX中,從常數(shù)表TC0輸出的數(shù)據(jù)項(xiàng)a的一個(gè)特定位能夠僅僅從該密鑰K的6位和該加密信息(C)中重新計(jì)算。
然而,如果該DPA攻擊的原則被再次接受時(shí),如果該輸出數(shù)據(jù)項(xiàng)a的一位被選擇用作一個(gè)目標(biāo)位,則它足以在該密鑰K的6位上形成一個(gè)假設(shè),以便推算用于一個(gè)給定輸入信息(M)或輸出信息(C)的一個(gè)目標(biāo)位的值。換句話說,就DES來說,它足以形成在一個(gè)6位子密鑰上的一個(gè)假設(shè)。
在一個(gè)DPA攻擊中就這樣一個(gè)用于一個(gè)給定目標(biāo)位的算法來說,因此在64個(gè)可能的子密鑰當(dāng)中僅僅需要判定一個(gè)子密鑰假設(shè)。
因此,通過使用僅僅字a的八位作為目標(biāo)位(基本常數(shù)TC01到TC08的每個(gè)表一個(gè)輸出位),就有可能通過在這些目標(biāo)位中的每一個(gè)上進(jìn)行DPA攻擊發(fā)現(xiàn)該密鑰的高達(dá)6×8=48位。
在DES中,因此可在該算法開始和結(jié)束時(shí)發(fā)現(xiàn)在DPA攻擊環(huán)境內(nèi)關(guān)鍵性的指令。
在該DES算法開始時(shí),能夠從一個(gè)輸入信息M和一個(gè)子密鑰假設(shè)中推算的數(shù)據(jù)是在第一個(gè)循環(huán)(T1)中計(jì)算的數(shù)據(jù)a和g。
第一個(gè)循環(huán)T1(圖3)的數(shù)據(jù)項(xiàng)a是所討論循環(huán)的操作SBOX的輸出數(shù)據(jù)項(xiàng)。數(shù)據(jù)項(xiàng)g是通過置換(P PERM)以及和輸入?yún)?shù)L0的異或操作從數(shù)據(jù)項(xiàng)a中計(jì)算得到的。
事實(shí)上,第一個(gè)循環(huán)的數(shù)據(jù)項(xiàng)c是從第一個(gè)循環(huán)的數(shù)據(jù)項(xiàng)a導(dǎo)出的一個(gè)數(shù)據(jù)項(xiàng)。導(dǎo)出的數(shù)據(jù)項(xiàng)c相當(dāng)于數(shù)據(jù)項(xiàng)a的位的一個(gè)簡(jiǎn)單置換。
第二個(gè)循環(huán)的數(shù)據(jù)項(xiàng)1是從第一個(gè)循環(huán)的數(shù)據(jù)項(xiàng)g導(dǎo)出的一個(gè)數(shù)據(jù)項(xiàng),是由于它相當(dāng)于g的位的一個(gè)置換,字g的某些位也被復(fù)制了。
已知a和g,就也可能已知這些導(dǎo)出的數(shù)據(jù)了。
該算法開始的關(guān)鍵性指令是操作能夠被推算的數(shù)據(jù)項(xiàng)、諸如第一個(gè)循環(huán)的數(shù)據(jù)項(xiàng)a或是一個(gè)導(dǎo)出的數(shù)據(jù)項(xiàng)等的那些關(guān)鍵性指令。
操作第一個(gè)循環(huán)T1的數(shù)據(jù)項(xiàng)a或?qū)С鰯?shù)據(jù)項(xiàng)c的關(guān)鍵性指令因此是操作SBOX、操作P PERM的結(jié)尾處以及第一個(gè)循環(huán)T1的操作XOR開始處的指令。
操作數(shù)據(jù)項(xiàng)g或?qū)С鰯?shù)據(jù)的關(guān)鍵性指令是所有第一個(gè)循環(huán)T1結(jié)尾處XOR操作結(jié)尾的指令直至第二個(gè)循環(huán)T2操作SBOX開始處的指令、以及在第三個(gè)循環(huán)T3末端XOR操作開始處的指令(L2=h(T2)=g(T1))。
在該DES算法的結(jié)尾,能夠從一個(gè)加密信息C和一個(gè)子密鑰假設(shè)中推算的數(shù)據(jù)是第16個(gè)循環(huán)T16的數(shù)據(jù)項(xiàng)a和等于第14個(gè)循環(huán)T14的字h的數(shù)據(jù)項(xiàng)L15。
操作第16個(gè)循環(huán)的數(shù)據(jù)項(xiàng)a或?qū)С鰯?shù)據(jù)的關(guān)鍵性指令是SBOX操作、置換操作P PERM的結(jié)尾處和XOR操作開始處的第16個(gè)循環(huán)的指令。
就數(shù)據(jù)項(xiàng)L15來說,操作這個(gè)數(shù)據(jù)項(xiàng)或?qū)С鰯?shù)據(jù)的關(guān)鍵性指令是所有在第14個(gè)循環(huán)T14的XOR操作結(jié)尾處指令之后、直至第15個(gè)循環(huán)T15的SBOX操作開始處的指令,加上用于開始第16個(gè)循環(huán)T16XOR操作的指令。
應(yīng)用于這個(gè)DES算法的依據(jù)本發(fā)明的對(duì)抗方法在于對(duì)每條關(guān)鍵性指令來說,該關(guān)鍵性指令操作一個(gè)數(shù)據(jù)項(xiàng)和它的反碼具有同樣多的可能性。因此,無論可以在其上進(jìn)行DPA攻擊的目標(biāo)位如何,就操作這個(gè)位的關(guān)鍵性指令來說,操作一個(gè)“1”或“0”具有同樣多的可能性。
實(shí)際上,這對(duì)每一個(gè)可能的目標(biāo)位來說必須是正確的換句話說,攻擊者在幾個(gè)可能的攻擊之間、即在幾個(gè)可能的用于完成他的曲線分類的布爾選擇函數(shù)之間做出選擇,就一個(gè)給定的子密鑰假設(shè)來說,依據(jù)本發(fā)明的對(duì)抗方法的實(shí)現(xiàn)必須力圖確保由每一條關(guān)鍵性指令操作的數(shù)據(jù)隨機(jī)地在兩次中一次采用一個(gè)值或它的反碼。關(guān)于依據(jù)本發(fā)明的對(duì)抗方法在DES算法中的應(yīng)用,因此需要將對(duì)抗施加到DES指令的關(guān)鍵性開始和DES指令的關(guān)鍵性結(jié)尾上,以便被完全地保護(hù)。
在DES中,所有由關(guān)鍵性指令操作的數(shù)據(jù)是一個(gè)輸出數(shù)據(jù)項(xiàng)或是從操作SBOX的一個(gè)輸出數(shù)據(jù)項(xiàng)導(dǎo)出的數(shù)據(jù)。
事實(shí)上,在DES開始時(shí),能夠被推算的數(shù)據(jù)是第一個(gè)循環(huán)T1的數(shù)據(jù)a和g。數(shù)據(jù)項(xiàng)a是第一個(gè)循環(huán)中SBOX操作的輸出數(shù)據(jù)項(xiàng)。數(shù)據(jù)項(xiàng)g是從數(shù)據(jù)項(xiàng)a計(jì)算得到的,這是由于g=P PERM(a)XOR L0。因此g是從第一個(gè)循環(huán)中SBOX操作的輸出數(shù)據(jù)項(xiàng)a導(dǎo)出的一個(gè)數(shù)據(jù)項(xiàng)。因此所有由DES指令關(guān)鍵性開始操作的數(shù)據(jù)直接或間接地起源于第一個(gè)循環(huán)中SBOX操作的輸出數(shù)據(jù)項(xiàng)a。
就DES的結(jié)尾來說,能夠被推算的數(shù)據(jù)是第16個(gè)循環(huán)T16的數(shù)據(jù)項(xiàng)a和第14個(gè)循環(huán)T14的數(shù)據(jù)項(xiàng)g,其中g(shù)等于L15。
數(shù)據(jù)項(xiàng)a是第16個(gè)循環(huán)T16中SBOX操作的輸出數(shù)據(jù)項(xiàng)。
就數(shù)據(jù)項(xiàng)L15而論,這是在DES算法正常執(zhí)行中從第14個(gè)循環(huán)T14中SBOX操作的輸出數(shù)據(jù)項(xiàng)a計(jì)算得到的L15=P PERM(a)XOR L14。
如果這些特定操作SBOX的輸出數(shù)據(jù)a是不可推算的,則所有導(dǎo)出的數(shù)據(jù)也是不可推算的所有由該DES算法的關(guān)鍵性指令操作的數(shù)據(jù)因此也是不可推算的。如果認(rèn)為這些SBOX操作構(gòu)成了用于從一個(gè)輸入數(shù)據(jù)項(xiàng)E=b提供一個(gè)輸出數(shù)據(jù)項(xiàng)S=a的第一裝置,則應(yīng)用于DES算法的對(duì)抗方法包含了使用其它用于使輸出數(shù)據(jù)項(xiàng)不可推算的裝置,從而使由關(guān)鍵性指令操作的這個(gè)輸出數(shù)據(jù)項(xiàng)和/或?qū)С龅臄?shù)據(jù)都是不可推算的。
依據(jù)本發(fā)明,形成了由至少最初3個(gè)循環(huán)形成的一組和由至少最后3個(gè)循環(huán)形成的另一組。這些組因此包含了所有包含關(guān)鍵性指令的循環(huán)。
在所有循環(huán)中使用第一裝置的第一序列和在至少某些循環(huán)中使用其它裝置的第二序列與這兩個(gè)組有關(guān)。
在其它不在這些組中的循環(huán)中,有可能繼續(xù)使用第一裝置。
這樣使用這些其它裝置以使輸出的結(jié)果即加密信息保持正確。
這些其它裝置能夠包含幾個(gè)不同的裝置。它們是使反碼的數(shù)據(jù)項(xiàng)相應(yīng)于在第一裝置的輸入和輸出數(shù)據(jù)當(dāng)中的一個(gè)或其它數(shù)據(jù)項(xiàng)的那些裝置。
因此,考慮到大數(shù)量的執(zhí)行,這些組將平均在兩次中一次使用第一序列,一次使用另一個(gè)序列,其中第一序列是該算法的正常序列。對(duì)應(yīng)于某些中間結(jié)果,由這些組中的關(guān)鍵性指令操作的數(shù)據(jù)因此將平均在兩次中有一次是反碼。因此就大量曲線從統(tǒng)計(jì)上來說一個(gè)給定目標(biāo)位為1或0有同樣多的可能性。
依據(jù)圖7,它描繪了用于執(zhí)行利用依據(jù)本發(fā)明的對(duì)抗方法的DES的流程圖的第一實(shí)例,元件T(終端)和C(卡)的通信取決于依據(jù)如下所述的步驟1到6的信號(hào)交換1.C在它的非易失性存儲(chǔ)器(例如EEPROM)中遞增i;2.C產(chǎn)生會(huì)話密鑰K[i]=K[i-1]^2 mod z;3.C從它的非易失性存儲(chǔ)器(例如EEPROM)中清除密鑰K[i-1],并在它的位置輸入K[i];4.C傳遞i到T;5.T計(jì)算K[i]=K
^(2^i)mod z,其中數(shù)2^i是計(jì)算的模phi(z);6.C和T使用K[i]開始一個(gè)加密計(jì)算。
或者是,依據(jù)圖8,它描繪了用于執(zhí)行利用依據(jù)本發(fā)明的一種對(duì)抗方法的DES的流程圖的第二實(shí)例,在C和T之間的通信取決于依據(jù)如下所述的步驟1到6的信號(hào)交換1.C在它的非易失性存儲(chǔ)器(例如EEPROM)中遞增i;2.C產(chǎn)生會(huì)話密鑰K[i]=K[i-1]*c mod z;3.C從它的非易失性存儲(chǔ)器(例如EEPROM)中清除密鑰K[i-1],并在它的位置輸入K[i];4.C傳遞i到T;5.T計(jì)算K[i]=K
*(c^i)mod z;6.C和T使用K[i]開始一個(gè)加密計(jì)算。
用于數(shù)z的最優(yōu)選擇是具有長(zhǎng)度k的最小質(zhì)數(shù)。尤其是
權(quán)利要求
1.在和第二電子元件(T)進(jìn)行通信、并使用具有長(zhǎng)度k的密鑰K
一種加密算法A的第一電子元件(C)中的一種對(duì)抗方法,使用該對(duì)抗方法的特征在于在A的連續(xù)使用之間K[i]中的變化使用以下規(guī)則,其中i是算法A的執(zhí)行次數(shù)K[i]=f[(k[i-1]),其中f是取一個(gè)密鑰用作一個(gè)輸入并返回一個(gè)密鑰作為一個(gè)輸出的函數(shù)。
2.如權(quán)利要求1所述的對(duì)抗方法,其特征在于i由所述第二電子元件(C)提供給所述第一電子元件(T)。
3.如權(quán)利要求2所述的對(duì)抗方法,其特征在于所述電子元件(T)具有一個(gè)計(jì)算簡(jiǎn)化使它從K
計(jì)算K[i]而不必在K
和K[i]之間產(chǎn)生i-1個(gè)密鑰K[1]、……K[i-1]。
4.如在前權(quán)利要求中任何一個(gè)所述的對(duì)抗方法,其特征在于函數(shù)f(x)如下所示,其中x為一個(gè)變量f(x)=x^e mod z,其中z是一個(gè)常數(shù)從而使由T使用的該計(jì)算簡(jiǎn)化為公式K[i]=K
^(e^i)mod z,其中e是一個(gè)整數(shù),e^i的計(jì)算被理解為模phi(z)。
5.如在前權(quán)利要求中任何一個(gè)所述的對(duì)抗方法,其特征在于函數(shù)f(x)如下所示,其中x為一個(gè)變量f(x)=x*c mod z其中z和c是常數(shù),從而使由T使用的計(jì)算簡(jiǎn)化為K[i]=K
*c^imod z。
6.如權(quán)利要求4或5所述的對(duì)抗方法,其特征在于z為小于2^k的最大質(zhì)數(shù)。
7.如在前權(quán)利要求中任何一個(gè)所述的對(duì)抗方法,其中算法A是DES、IDEA、AES、FEAL、三元DES、BlowFish、SAFER、SHA-MAC、RIPEMD、DFC、RC5、RC6或SEAL。
8.一種智能卡,其特征在于它構(gòu)成了第一電子元件(C),并實(shí)現(xiàn)了權(quán)利要求1到7中的任何一個(gè)。
9.一種電子終端,其特征在于它構(gòu)成了第二電子元件(T),并實(shí)現(xiàn)了權(quán)利要求1到7中的任何一個(gè)。
10.如權(quán)利要求1到7的、在和第二電子元件(T)通信并使用一種加密算法B的第一電子元件(C)中的對(duì)抗方法,其中密鑰包含一連串的字節(jié),本發(fā)明的方法將這些字節(jié)對(duì)一個(gè)小的質(zhì)數(shù)求模,密鑰K[i-1]包含一連串的L字節(jié),實(shí)現(xiàn)該對(duì)抗方法的特征在于在連續(xù)使用B[i-1]之間的K[i-1]中的變化使用如下規(guī)則,其中i是該算法B的執(zhí)行次數(shù)K[i-1]={B[1,i-1],……,B[L,i-1]},上述規(guī)則通過對(duì)范圍從1到L的t進(jìn)行變換變成K[i]B[t,i]=B[t,i-1]^2 mod U,其中U為一個(gè)字節(jié)的質(zhì)數(shù),例如251,密鑰K[i]使用對(duì)范圍從1到L的t計(jì)算簡(jiǎn)化進(jìn)行計(jì)算B[t,i]=B[t,i-1]^(2^i)mod U,其中數(shù)2^i是計(jì)算的模phi(U)。
11.如權(quán)利要求1到9中的一個(gè)所述的對(duì)抗方法,其中密鑰K[i-1]包含一連串的字節(jié),本發(fā)明的方法將這些字節(jié)對(duì)一個(gè)小的質(zhì)數(shù)求模,其特征在于該密鑰K[i-1]包含一連串的L字節(jié)K[i-1]={B[1,i-1],……,B[L,i-1]},然后通過對(duì)范圍從1到L的t進(jìn)行變換變成K[i]B[t,i]=B[t,i-1]*c[t]mod U,其中U為一個(gè)字節(jié)的質(zhì)數(shù),例如251,然后密鑰K[i]使用對(duì)范圍從1到L的t計(jì)算簡(jiǎn)化進(jìn)行計(jì)算B[t,i]=B[t,i-1]*c[t]^i mod U。
12.如權(quán)利要求10或11所述的對(duì)抗方法,其中終端和卡在多于密碼加密算法所必需的字節(jié)數(shù)上執(zhí)行會(huì)話密鑰K[i]的計(jì)算,在該密鑰加密算法中使用這個(gè)密鑰,然后將產(chǎn)生的密鑰中斷,以便獲得該密鑰加密算法所必需的字節(jié)數(shù),從而補(bǔ)償在由使用小于數(shù)256的模U引起的平均信息量中的損失。
13.如權(quán)利要求12所述的對(duì)抗方法,其中數(shù)U為一、二、三、四、五或六個(gè)字節(jié)。
14.一種智能卡,它構(gòu)成了第一電子元件(C),其特征在于其實(shí)現(xiàn)了權(quán)利要求10到13中的任何一個(gè)。
15.一種電子終端,它構(gòu)成了第二電子元件(T),其特征在于其實(shí)現(xiàn)了權(quán)利要求10到13中的任何一個(gè)。
全文摘要
本發(fā)明涉及在一個(gè)使用一個(gè)尺寸為k的密鑰K
加密算法A,并和一個(gè)第二電子元件(T)通信的第一電子元件(C)中的一種對(duì)抗方法。該對(duì)抗方法的特征在于:通過一個(gè)函數(shù)K[i]=f[(k[i-1])、傳輸i到元件(T)、以及允許元件(T)從K
計(jì)算K[i]而不用產(chǎn)生在K
到K[i]之間從k[1]到k[i-1]這i-1個(gè)密鑰的計(jì)算簡(jiǎn)化來系統(tǒng)化和有規(guī)則地計(jì)算K[i]。
文檔編號(hào)G06F21/55GK1360715SQ00810258
公開日2002年7月24日 申請(qǐng)日期2000年5月11日 優(yōu)先權(quán)日1999年5月11日
發(fā)明者D·納卡徹 申請(qǐng)人:格姆普拉斯公司