一種針對DES密碼芯片的CPA攻擊仿真設(shè)計(jì)方案
隨著Interne的迅猛發(fā)展,智能卡、掌上電腦和移動(dòng)電話的不斷普及應(yīng)用,不犯罪分子就利用網(wǎng)絡(luò)對別人進(jìn)行信息的偷盜,人們需要對一些信息隱私進(jìn)行保護(hù),因此信息安全問題日益突出。近年來,出現(xiàn)了一種新的攻擊方法,通常被稱為旁道攻擊。它是根據(jù)密碼芯片在加解密時(shí)所泄漏的一些微弱的旁道信息,如功耗、時(shí)間、電磁輻射及差錯(cuò)信息等進(jìn)行攻擊。攻擊者利用旁道泄漏信息,結(jié)合統(tǒng)計(jì)學(xué)等學(xué)科的知識(shí),能夠在短時(shí)間內(nèi)成功破解一些密碼算法的密鑰。以下本文的分析結(jié)果。
在旁道攻擊方法中,功耗分析方法應(yīng)用得最為廣泛和成熟,因?yàn)楣男畔⒆钊菀诇y量和分析。研究針對密碼芯片的功耗分析方法是為了檢驗(yàn)芯片是否具有抗功耗分析能力或是檢驗(yàn)密碼芯片抗功耗分析攻擊能力的大小。相關(guān)性功耗分析是功耗分析中一種,相關(guān)性功耗分析每次考慮的相關(guān)位比傳統(tǒng)的差分功耗分析多,所以更具有威脅性。
1 DES密碼算法的硬件結(jié)構(gòu)及功耗泄漏模型
數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA)是一種對稱加密算法,很可能是使用最廣泛的密鑰系統(tǒng),特別是在保護(hù)金融數(shù)據(jù)的安全中,最初開發(fā)的DEA是嵌入硬件中的。DES 使用一個(gè) 56 位的密鑰以及附加的 8 位奇偶校驗(yàn)位,產(chǎn)生最大 64 位的分組大小。這是一個(gè)迭代的分組密碼,使用稱為 Feistel 的技術(shù),其中將加密的文本塊分成兩半。使用子密鑰對其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交換這兩半,這一過程會(huì)繼續(xù)下去,但最后一個(gè)循環(huán)不交換。DES 使用 16 個(gè)循環(huán),使用異或,置換,代換,移位操作四種基本運(yùn)算。
1.1 DES密碼算法的硬件結(jié)構(gòu)
DES密碼算法是分組加密算法,能夠?qū)潭ㄩL度的一組明文進(jìn)行加解密,如果采用ASIC方式實(shí)現(xiàn),固定長度意味著運(yùn)算時(shí)的中間結(jié)果所需要的存儲(chǔ)寬度是相同的。DES密碼算法的輪結(jié)構(gòu)也是相同的,每輪運(yùn)算可以共用一個(gè)硬件結(jié)構(gòu)體,所不同的是每輪運(yùn)算時(shí)所用的子密鑰是不同的。DES算法的結(jié)構(gòu)特點(diǎn)適合ASIC方式實(shí)現(xiàn),其通用的硬件結(jié)構(gòu)如圖1所示。
在ASIC方式實(shí)現(xiàn)的硬件電路中,攻擊者經(jīng)常針對寄存器進(jìn)行攻擊。之所以選擇寄存器攻擊主要原因有:
(1)寄存器在ASIC中通常被用來做存儲(chǔ)器,包括暫存一些與密鑰相關(guān)的關(guān)鍵數(shù)據(jù)。
?。?)與反相器、“與非門”等非時(shí)序邏輯相比較,寄存器的功耗大一些。
?。?)寄存器是時(shí)鐘沿觸發(fā)電路,易于在時(shí)序上定位。
1.2 功耗泄漏模型
目前絕大多數(shù)密碼芯片都是基于CMOS工藝,CMOS邏輯電路的動(dòng)態(tài)功耗取決于邏輯門的翻轉(zhuǎn)率。單個(gè)邏輯門的功耗可以表示為:
式中, f表示邏輯門最大變化率,P0→1表示0→1轉(zhuǎn)換的概率,CL是邏輯門的負(fù)載電容,VDD是電源電壓。功耗分析正是以式?。?)中動(dòng)態(tài)功耗對數(shù)據(jù)的依賴性為理論基礎(chǔ)的。整個(gè)電路硬件內(nèi)部結(jié)構(gòu)非常復(fù)雜,動(dòng)態(tài)功耗取決于整個(gè)邏輯電路的整體翻轉(zhuǎn)率的統(tǒng)計(jì)特性和電路所采用的工藝。為簡單起見,可以簡化地認(rèn)為電路的總功耗與整體翻轉(zhuǎn)率成一定的正比關(guān)系?;谶@種相關(guān)性建立起來的功耗模型能夠反映出當(dāng)前密碼算法電路所處理的數(shù)據(jù)引起的瞬時(shí)功耗的變化情況。功耗分析攻擊是通過對多次測量得到的功耗曲線,進(jìn)行統(tǒng)計(jì)分析出電路中相應(yīng)數(shù)據(jù)位的變化來破解密鑰的。
功耗泄漏模型一般是在寄存器級建立。攻擊者經(jīng)常把攻擊點(diǎn)選在DES密碼算法首輪或最后一輪的寄存器輸出處,記輸出時(shí)刻為t,則瞬時(shí)能耗T(t1)如下:
式中,D0(t0)代表寄存器中在前1個(gè)時(shí)刻t0所存儲(chǔ)的二進(jìn)制序列, D0(t1)代表寄存器中在下1個(gè)時(shí)刻t1所存儲(chǔ)的二進(jìn)制序列,δ代表轉(zhuǎn)換時(shí)的1個(gè)因子。通過比較前后時(shí)刻相應(yīng)碼字的變化,當(dāng)碼字由0→1時(shí),總模擬功耗值加1;當(dāng)碼字由1→0時(shí),總模擬功耗值加1×(1-δ)。δ的大小根據(jù)算法實(shí)現(xiàn)的平臺(tái)統(tǒng)計(jì)分析得到,對于一般的CMOS邏輯電路,δ通常取值為0.17。
2 CPA攻擊原理
功耗模型一般是基于所處理數(shù)據(jù)的線性漢明距建立。如1.2節(jié)所述的瞬時(shí)功耗為:
式中所示的相關(guān)系數(shù)說明部分密鑰位猜測正確時(shí),中間計(jì)算結(jié)果與加密器件的瞬時(shí)功耗在被攻擊時(shí)刻能夠關(guān)聯(lián)起來,對應(yīng)時(shí)刻的相關(guān)系數(shù)也是最大的。而用錯(cuò)誤的猜測密鑰計(jì)算出來的中間結(jié)果與功耗之間不具有相關(guān)性或僅有弱相關(guān)性,其相關(guān)系數(shù)很小。根據(jù)這一原理,可以用仿真的方法對密碼算法電路進(jìn)行攻擊,根據(jù)攻擊的難度可以判斷抗功耗分析性能。
3 功耗分析仿真平臺(tái)
在系統(tǒng)的設(shè)計(jì)階段,人們大多利用計(jì)算機(jī)進(jìn)行數(shù)學(xué)仿真實(shí)驗(yàn),因?yàn)樾薷?、變換模型比較方便和經(jīng)濟(jì)。在部件研制階段,可用已研制的實(shí)際部件或子系統(tǒng)去代替部分計(jì)算機(jī)仿真模型進(jìn)行半實(shí)物仿真實(shí)驗(yàn),以提高仿真實(shí)驗(yàn)的可信度。在個(gè)別情況下,可進(jìn)行全物理的仿真實(shí)驗(yàn),這時(shí)計(jì)算機(jī)仿真模型全部被物理模型或?qū)嵨锼妗?/P>
建立的仿真平臺(tái)如圖2所示。仿真平臺(tái)主要由邏輯模擬器、功耗估算器和功耗分析模塊組成??驁D中應(yīng)用Mentor公司提供的ModelSim作為邏輯模擬器,邏輯模擬器輸入有:所設(shè)計(jì)密碼電路的硬件語言描述代碼、電路的激勵(lì)文件和一些反標(biāo)延遲信息等。輸出的密碼電路的功耗仿真結(jié)果是以vcd格式存儲(chǔ)的文本文件,這個(gè)vcd文件包含了所有的信號模擬變化以及相應(yīng)的仿真時(shí)刻標(biāo)簽,然后用VisualC++對vcd文本文件進(jìn)行處理,得到模擬功耗數(shù)據(jù),最后用MatLab對模擬功耗數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,推測密鑰信息。
要統(tǒng)計(jì)DES密碼芯片中每個(gè)時(shí)鐘周期的模擬功耗值,可以通過統(tǒng)計(jì)關(guān)鍵寄存器中在相鄰時(shí)鐘周期內(nèi)0、1的變化情況。根據(jù)式(2)所示已經(jīng)建立的功耗模型,將電路所處理的數(shù)據(jù)變化轉(zhuǎn)換為模擬功耗變化即可。
4 DES算法的CPA攻擊仿真及結(jié)果分析
基于所建立的功耗分析仿真平臺(tái),結(jié)合分組密碼算法DES算法進(jìn)行功耗分析攻擊實(shí)驗(yàn)。下面是CPA攻擊的詳細(xì)步驟及結(jié)果分析。
?。?)用仿真的方法進(jìn)行攻擊的第1步是產(chǎn)生1個(gè)仿真功耗文件
任意選擇1 000個(gè)隨機(jī)明文和1個(gè)固定但隨機(jī)的密鑰。每輪加密之后,記錄下寄存器中數(shù)據(jù)二進(jìn)制序列的變化情況,根據(jù)建立的功耗泄漏模型,統(tǒng)計(jì)模擬功耗值。這樣仿真器就產(chǎn)生1個(gè)包含N×16的矩陣M1。
?。?)選擇寄存器中M個(gè)最高位,用與步驟(1)相同的明文及密鑰進(jìn)行仿真實(shí)驗(yàn)
仿真器統(tǒng)計(jì)寄存器中位的變化數(shù)目,結(jié)果存儲(chǔ)在矩陣1 000×1的矩陣M2中,在這個(gè)驗(yàn)證實(shí)驗(yàn)中,選擇M為8,然后計(jì)算M1的所有列和M2的相關(guān)系數(shù),如下:
ci=C(M1(1:1000,1),M2) ?。?)
式中,i=1,…10, M1(1:1000), i代表矩陣M1的第i列向量。步驟(1)和步驟(2)都用了同樣的明文的密鑰,所不同的是它們考慮的位變化的數(shù)目不同。第(2)步產(chǎn)生的值是第(1)步初始化密鑰加操作計(jì)算值的預(yù)測。如果計(jì)算是正確的,M2和M1的第一列的相關(guān)系數(shù)比其他列要高得多。圖3為預(yù)測的情況。
(3)重復(fù)步驟(2),但使用一個(gè)不同的密鑰
這時(shí)產(chǎn)生1個(gè)功耗文件矩陣M3。與第(2)步一樣計(jì)算M3和M1所有列的相關(guān)系數(shù):
式中,i=1,…10。由于實(shí)驗(yàn)中使用了一個(gè)不同的密鑰產(chǎn)生M3,所以M3和M1所有列的相關(guān)系數(shù)將是很小的(或者說是沒有相關(guān)性),包括第1列。通過計(jì)算得出如圖4所示的相關(guān)系數(shù)圖,圖中的曲線表明其結(jié)果和預(yù)測的相同。
(4)對所有8 bit密鑰組合進(jìn)行實(shí)驗(yàn)
對這個(gè)實(shí)驗(yàn)進(jìn)行拓展,對密鑰的最高L=8比特所有可能性進(jìn)行猜測,也就是對這8 bit進(jìn)行強(qiáng)力攻擊,這樣就能產(chǎn)生1個(gè)1 000×2L的矩陣M4。8 bit密鑰組合中必有一個(gè)是正確的密鑰,而且只有這個(gè)密鑰計(jì)算出的第1輪功耗變化與第1輪是統(tǒng)計(jì)相關(guān)的(相關(guān)系數(shù)比較大),由此可以通過這種方法推測出密鑰。圖5為M1的第1列和M4的所有列之間的相關(guān)系數(shù)。從圖中可以看出,所猜測的密鑰只有1Ahex=30dec時(shí)具有較高的相關(guān)性,所以正確的密鑰是(30)dec。
式中,i=0,…2L-1。
通過功耗仿真的方法可以對DES密碼芯片進(jìn)行成功的攻擊,根據(jù)攻擊的難度大小,也就是所得到的相關(guān)系數(shù)的大小,可以判斷一個(gè)密碼芯片抗功耗分析攻擊能力的大小,這樣就能夠在設(shè)計(jì)階段評估密碼芯片的抗功耗分析攻擊的能力大小,為密碼芯片設(shè)計(jì)者提供參考,以便及時(shí)添加相應(yīng)的抗功耗分析的防御措施。
抗功耗分析性能的評估標(biāo)準(zhǔn)在很多文獻(xiàn)中只是簡單提到過,且沒有統(tǒng)一的標(biāo)準(zhǔn)。本文中采用了KrisTri所用的評估標(biāo)準(zhǔn)MTD(Measurements To Disclosure),也就是對于某個(gè)密碼芯片來說,能夠破解1 bit密鑰所需要的隨機(jī)明文數(shù)目。本文模擬攻擊過程也可以用這種標(biāo)準(zhǔn)來衡量密碼芯片的抗功耗分析性能。
為研究密碼芯片的抗功耗分析性能,搭建了功耗分析仿真平臺(tái),并結(jié)合DES分組加密算法進(jìn)行了相關(guān)性功耗分析攻擊實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,搭建的仿真平臺(tái)是有效的,且說明未經(jīng)過防御的DES算法容易受到相關(guān)性功耗分析的威脅。
評論