文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)05-0050-03
0 引言
隨著計(jì)算機(jī)技術(shù)的發(fā)展、社會(huì)信息化程度的不斷提高,安全問題越來越受到人們的廣泛重現(xiàn),因此各種形式的專用密碼電路和密碼算法處理器被廣泛地應(yīng)用于各類產(chǎn)品中。分組密碼算法是一種最常用的加密手段,具有速度快、易于標(biāo)準(zhǔn)化和便于軟硬件實(shí)現(xiàn)等特點(diǎn)。目前比較流行的分組密碼算法有DES算法、AES算法等,其中DES[1]是目前使用非常廣泛的數(shù)據(jù)加密方法,它于1977年被美國國家標(biāo)準(zhǔn)局作為第46號(hào)聯(lián)邦信息處理標(biāo)準(zhǔn)而采用。
傳統(tǒng)的密碼分析方法是采用數(shù)學(xué)的分析手段。近年來隨著測量分析方法的進(jìn)步,各種分析攻擊方法也不斷發(fā)展,差分功耗攻擊和故障攻擊是具有代表性且對(duì)智能卡芯片威脅性較強(qiáng)的兩種攻擊方法。差分功耗攻擊是1998年由Paul Kocher等[2]提出,它利用了密碼設(shè)備運(yùn)行期間泄露的側(cè)信息與密碼算法的中間值有一定的相關(guān)性,通過多次測量側(cè)信息后進(jìn)行統(tǒng)計(jì)分析,進(jìn)而獲得密鑰信息。故障攻擊的基本原理是將密碼芯片置于強(qiáng)磁場中,或者改變芯片的電源電壓、工作頻率、溫度等,使密碼芯片中的寄存器、存儲(chǔ)器在加解密過程中產(chǎn)生隨機(jī)錯(cuò)誤,某些輸出比特從原來的0變成1或1變成0。通過對(duì)正確密文輸出和錯(cuò)誤密文輸出的比較,經(jīng)過理論分析得到芯片內(nèi)部的秘密數(shù)據(jù)信息。
國內(nèi)外對(duì)于差分功耗攻擊和故障攻擊防御方面的研究和技術(shù)方法也不斷涌現(xiàn),防御差分功耗攻擊的方法包括:隨機(jī)掩碼、動(dòng)態(tài)雙軌電路技術(shù)、隨機(jī)偽操作等,防御故障攻擊的方法主要包括對(duì)相同的數(shù)據(jù)計(jì)算多次后比較運(yùn)算結(jié)果是否一致。但有的防御方法往往會(huì)增加實(shí)現(xiàn)代價(jià),而計(jì)算多次比較運(yùn)算結(jié)果又會(huì)降低算法運(yùn)算效率。本文以DES算法為例,提出了分組密碼算法的一種有效防護(hù)方法,可以同時(shí)抵御差分功耗攻擊和故障攻擊。采用流水線技術(shù)同一時(shí)鐘周期內(nèi)有不同的輪運(yùn)算操作疊加,增加了正常加解密運(yùn)算的噪聲,可以抵抗側(cè)信道攻擊,同一明文依次進(jìn)入不同級(jí)的流水線進(jìn)行運(yùn)算,最后比較運(yùn)算結(jié)果是否一致,可以抗故障攻擊。通過對(duì)電路的仿真和分析,驗(yàn)證了其良好的抗攻擊性能。
1 DES差分功耗分析及故障攻擊
DES是一個(gè)分組算法,使用長度為56 bit的密鑰加密長度為64 bit的明文,獲得長度為64 bit的密文。它的加密過程如下:
(1)給定明文m,對(duì)m進(jìn)行一個(gè)固定的初始IP置換。
(2)然后進(jìn)行16輪完全相同的運(yùn)算,將數(shù)據(jù)與密鑰相結(jié)合。在16輪操作的每一輪中,DES都會(huì)進(jìn)行8次S盒查表操作。這S盒的輸入為6 bit的密鑰與E擴(kuò)展后的6 bit R寄存器的異或值,輸出為4 bit。32 bit的S盒輸出經(jīng)過P置換,然后與L寄存器的值進(jìn)行異或,接著將L和R的值進(jìn)行交換。
(3)進(jìn)行初始置換的逆置換,得到密文。具體過程如圖1所示。
1.1 差分功耗分析
目前絕大多數(shù)集成電路均采用CMOS工藝制作,CMOS門級(jí)電路的功耗模型[3]為:
Ptota1=Pswitch+Pshort_circuit+Pleakage
其中Pswitch為邏輯門翻轉(zhuǎn)引起負(fù)載電容充放電導(dǎo)致的功耗;Pshort_circuit為短路電流導(dǎo)致的功耗;Pleakage為泄漏電流導(dǎo)致的功耗。其中Pswitch是電路功耗的主要部分,功耗大小與邏輯門是否翻轉(zhuǎn)有密切關(guān)系,因此電路中運(yùn)算數(shù)據(jù)的0、1狀態(tài)與電路的功耗必然具有一定的相關(guān)性,這個(gè)特性是DPA攻擊的物理基礎(chǔ)。
以DES算法為例,DPA攻擊的主要步驟如下:
(1)隨機(jī)生成大量明文,加密這些明文并記錄下加密操作時(shí)的功耗曲線。
(2)關(guān)注第一輪第一個(gè)S盒輸出的第一比特b,猜測第一個(gè)S盒對(duì)應(yīng)的6 bit密鑰,并用其與相應(yīng)的明文計(jì)算出b。
(3)根據(jù)b的值,將能耗曲線按照b=0和b=1分為兩類。
(4)計(jì)算出這兩類的平均能耗曲線,并將二者相減求得差分能耗曲線。
(5)觀察步驟(4)生成的能量曲線。若密鑰猜測正確,則步驟(3)的分組就是正確的,差分能耗曲線中將出現(xiàn)明顯的峰值。因此攻擊者通過觀察峰值來判斷密鑰的猜測是否正確。
(6)重復(fù)步驟(2)~(5),得到其他的子密鑰。
這樣,通過差分跡中的尖峰,就可以確定出完整的48 bit密鑰信息。再使用窮舉搜索或繼續(xù)分析下一輪等方法,可以很容易地確定出剩下的8 bit密鑰。
1.2 故障攻擊
故障攻擊是通過將故障引入到芯片中,如改變芯片的工作頻率或工作電壓,使得芯片工作不正常,從而獲得芯片內(nèi)部關(guān)鍵信息。
Biham和Shamir提出了對(duì)DES算法的差分故障分析[4],該攻擊的基本方法如下:攻擊者對(duì)同一明文加密兩次,其中一次正常加密,另外一次在加密的第15輪運(yùn)算時(shí)引入故障,使得芯片輸出錯(cuò)誤運(yùn)算結(jié)果。攻擊者通過記錄正確加密結(jié)果和錯(cuò)誤結(jié)果并對(duì)這兩個(gè)結(jié)果進(jìn)行數(shù)學(xué)分析,即可獲得密鑰的相關(guān)信息。
如圖2所示,攻擊者在第15輪的f函數(shù)運(yùn)算期間注入故障,則有:
在該等式中只有K16是未知的,通過解方程即可獲得密鑰信息。
2 DES算法抗差分功耗攻擊和故障攻擊設(shè)計(jì)
流水線的概念在數(shù)字電路中應(yīng)用得很廣,它是加快數(shù)字電路的有效手段,在分組密碼算法中應(yīng)用得同樣很廣泛,如DES、AES等分組加密算法都有相關(guān)的流水線實(shí)現(xiàn)方案。
本文通過把流水線技術(shù)與抗差分功耗分析和故障攻擊相結(jié)合,同一明文進(jìn)入不同級(jí)的流水線進(jìn)行運(yùn)算,其他級(jí)流水線的輸入為隨機(jī)數(shù),這樣在同一時(shí)鐘周期內(nèi)有不同的運(yùn)算操作疊加,增加了正常運(yùn)算的噪聲,可以抵抗差分功耗攻擊;通過比較同一明文的運(yùn)算結(jié)果是否一致,來檢測運(yùn)算過程中是否有故障注入,可以抵抗故障攻擊。
如圖3所示,DES算法采用四級(jí)流水線,每級(jí)流水線進(jìn)行4輪運(yùn)算。圖中虛線部分表示隨機(jī)數(shù)參與該級(jí)流水線運(yùn)算。
首先產(chǎn)生所需的隨機(jī)數(shù),一個(gè)隨機(jī)數(shù)用于確定這四級(jí)流水線中哪兩級(jí)的輸入為真實(shí)的明文P,兩個(gè)隨機(jī)數(shù)作為隨機(jī)明文進(jìn)入另外兩級(jí)流水線,兩個(gè)隨機(jī)數(shù)分別作為密鑰用于為兩個(gè)隨機(jī)明文產(chǎn)生隨機(jī)輪密鑰。
這里不妨假設(shè)前兩級(jí)流水線的輸入為真實(shí)的明文,后兩級(jí)輸入為隨機(jī)數(shù)。待真實(shí)明文的兩級(jí)流水線運(yùn)算完成后對(duì)這兩個(gè)密文進(jìn)行比較,若一致則說明運(yùn)算過程中沒有注入故障,可輸出正確密文;否則返回錯(cuò)誤信息。
當(dāng)然,為增加抗攻擊能力,本文的方法可以與其他防護(hù)方法相結(jié)合,如每一級(jí)的流水線在實(shí)現(xiàn)時(shí)可以引入隨機(jī)掩碼,這樣抗差分功耗攻擊的效果會(huì)更好一些。
3 實(shí)驗(yàn)仿真及分析
以DES算法中輪輸出的寄存器為攻擊點(diǎn),采用漢明距離模型,通過仿真實(shí)驗(yàn)對(duì)本文防護(hù)方法的有效性進(jìn)行驗(yàn)證。
對(duì)標(biāo)準(zhǔn)的DES算法和本文的防護(hù)方法分別進(jìn)行VLSI設(shè)計(jì),采樣后采用Riscure公司的Inspector側(cè)信道分析平臺(tái)對(duì)其FPGA實(shí)現(xiàn)進(jìn)行分析,結(jié)果如圖4所示。對(duì)于標(biāo)準(zhǔn)的DES算法,分析第一輪中的第一個(gè)S盒,當(dāng)猜測到密鑰為0x00時(shí)會(huì)出現(xiàn)明顯的尖峰,這說明密鑰猜測正確;對(duì)于本文的防護(hù)方法,當(dāng)猜測到密鑰仍為0x00時(shí)沒有出現(xiàn)明顯的尖峰,說明本方法可以有效的抵抗功耗分析。
4 結(jié)論
本文以DES算法為例,給出了一種既可以抵抗差分功耗分析,又可以抵抗故障攻擊的分組密碼算法防護(hù)方法,采用流水線技術(shù)不僅增加了正常加解密運(yùn)算的噪聲,同一明文依次進(jìn)入不同級(jí)的流水線比較運(yùn)算結(jié)果是否一致,可以抗故障攻擊。通過實(shí)驗(yàn)驗(yàn)證,本方法可以有效地抵抗攻擊。
參考文獻(xiàn)
[1] FIPS PUB 4623,Data Encryption Standard,F(xiàn)ederal Information Processing Standards Publication Reaffirmed 1999 October 25,U.S.Department of Commerce/National Institute of Standards and Technology.
[2] KOCHER P,JAFFE J,JUN B.Differential power analysis[C].Proceeding of Advances in cryptography(CRYPTO’99),1999:388-397.
[3] 韓軍,曾曉洋,湯庭鰲.DES密碼電路的抗差分功耗分析設(shè)計(jì)[J].半導(dǎo)體學(xué)報(bào),2005,26(8):1646.
[4] BIHAME E,SHAMIR A.Differential fault analysis of secret key cryptosystems[C].Proceeding of Advances in Cryptology,1997,1294:513-525.
[5] 張麗娜,陳建華,張家宏,等.基于ASIC的有效DES/3DES流水線設(shè)計(jì)[J].計(jì)算機(jī)工程,2007,33(2).