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