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