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