《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > 抗差分故障攻擊的AES密碼芯片設計
抗差分故障攻擊的AES密碼芯片設計
付小兵, 嚴迎建, 朱巍巍
解放軍信息工程大學 電子技術(shù)學院, 河南 鄭州 450004
摘要: 針對AES的差分故障攻擊(DFA)過程,總結(jié)出對AES的DFA攻擊算法與攻擊模型的特點,在此基礎上為AES密碼芯片設計了一種基于TRC校驗的防護電路,并對其抗差分故障攻擊的可行性進行了仿真驗證。結(jié)果表明,該防護電路能夠快速準確地檢測出導入錯誤,增強了AES芯片抗DFA攻擊的能力。
Abstract:
Key words :

摘  要: 針對AES差分故障攻擊(DFA)過程,總結(jié)出對AES的DFA攻擊算法與攻擊模型的特點,在此基礎上為AES密碼芯片設計了一種基于TRC校驗的防護電路,并對其抗差分故障攻擊的可行性進行了仿真驗證。結(jié)果表明,該防護電路能夠快速準確地檢測出導入錯誤,增強了AES芯片抗DFA攻擊的能力。
關(guān)鍵詞: 差分故障攻擊; AES; 攻擊模型; TRC; 防護電路

  故障攻擊是旁道攻擊的一種,是一種通過旁道信息的密碼攻擊方法,利用隨機硬件錯誤對RSA公鑰密碼體制進行攻擊(最早由Boneh等人提出[1])。1997年,Biham和Shamir等將此種攻擊方法應用到對稱密碼體制的旁道攻擊中,并首次提出了“差分故障攻擊”DFA(Differential Fault Attack)的概念[2]。他們設計了差分故障攻擊的模型,成功破解了DES密碼芯片的密鑰。由此,差分故障攻擊方法被應用到幾乎所有公開文獻中提出的密碼系統(tǒng)中。但是,對基于代換置換網(wǎng)絡SPN(Substitution-Permutation Network)架構(gòu)的AES密碼芯片來說,差分故障攻擊方法并不能直接對其進行攻擊,因為AES不是Feistel架構(gòu)的。
  目前,高級數(shù)據(jù)加密標準AES已經(jīng)取代數(shù)據(jù)加密標準DES,廣泛應用于IPsec協(xié)議、SSL、無線局域網(wǎng)及ATM等多個領域。與此同時,針對AES硬件實現(xiàn)密碼芯片的攻擊方法也在不斷更新,旁道攻擊中的故障攻擊已經(jīng)成為其嚴重威脅。本文描述了針對AES-128的差分故障攻擊過程,并給出對AES的差分故障攻擊的攻擊算法,在此基礎上總結(jié)了多種攻擊模型的特點。針對差分故障攻擊的弱點,在AES硬件實現(xiàn)中增加了抵抗DFA攻擊的防護電路,并對其防護能力進行了仿真與驗證。
1 差分故障攻擊
  差分故障攻擊(DFA)的基本原理是將密碼芯片置于強磁場中,或者改變芯片的電源電壓、工作頻率、溫度等,使密碼芯片中的寄存器、存儲器在加解密過程中產(chǎn)生隨機錯誤,某些輸出bit從原來的0變成1或1變成0。通過對正確密文輸出和錯誤密文輸出的差分比較,經(jīng)過理論分析,就可得到芯片內(nèi)部的秘密數(shù)據(jù)信息。
故障攻擊是一套方法的集合,參考文獻[2]對DES的差分故障攻擊進行了詳細的分析。通過故障長度、故障位置和故障導入時間3個待定參數(shù)對差分故障攻擊進行分類。故障長度是指在芯片內(nèi)部導入錯誤時,影響數(shù)據(jù)位數(shù),主要分為2種:單位錯誤和多位錯誤。單位錯誤導入是指僅僅能導入到密碼系統(tǒng)中1位錯誤,多位錯誤導入是指能導入到密碼系統(tǒng)中多位錯誤。故障位置是把錯誤導入到目標密碼設備中的具體位置,方便進行差錯分析。故障導入時間是指導入錯誤使其有效的時間,同時表明攻擊者能控制設備的能力,主要分為瞬時故障和永久故障2種模式。瞬時故障是指在設備中導入錯誤,在不穩(wěn)定的同時很容易在錯誤態(tài)和正常態(tài)之間跳轉(zhuǎn)。在需要導入單位錯誤時,可以考慮這種故障模式。永久故障是指錯誤導入能使攻擊者在他需要的時間內(nèi)一直保持故障狀態(tài)。比如,希望設備的某一位置一直為1或0,本文所述的模擬攻擊過程就是使用單bit錯誤瞬時故障模式。
2 針對AES的DFA
2.1高級數(shù)據(jù)加密標準AES
  AES是一種分組密碼算法,其分組長度為128 bit,密鑰長度為128 bit,192 bit或256 bit。本文以AES-128為例進行分析,其輸入分組和解密算法的輸出分組均為128 bit,并且分組是用以字節(jié)為單位的正方形矩陣描述。其結(jié)構(gòu)的一個顯著特征是每一輪都使用代換和混淆、并行處理整個數(shù)據(jù)分組的SPN架構(gòu),而不是Feistel結(jié)構(gòu)。AES架構(gòu)由輪函數(shù)通過10輪迭代實現(xiàn),每一輪由4個不同的部分組成,包括一個混淆和3個代換,其中字節(jié)代換是用S盒完成分組中的按字節(jié)的代換;行移位是一個簡單的置換;列混淆是利用在域GF(28)上的算術(shù)特性的代換,在最后一輪中沒有列混淆;輪密鑰加是利用當前分組和擴展密鑰的一部分進行按位XOR,每一輪加解密需要1個輪密鑰,輪密鑰是由初始密鑰通過固定的密鑰調(diào)度算法產(chǎn)生的[3]。圖1給出了AES最后二輪的加密流程。  

   其中,SB(Substitute Byte)是按字節(jié)的替換,SR(Shift Row)是按不同的位移量進行行移位,MC(Mix Columns)是每列并行應用線性變換GF(28)到GF(28)的列混淆,ADK(And Key)是“異或”密鑰Key,Mi是中間加密數(shù)據(jù)寄存器,C是輸出密文。
2.2 DFA攻擊過程
  針對AES-128的差分故障攻擊已經(jīng)有很多文獻進行了研究[4-6],本文對其進行DFA攻擊過程的分析。AES-128的明文與密鑰都是4×4的矩陣,其最后一輪的3個變換都是字節(jié)到字節(jié)的變換,即最后一輪的輸入中改變1個字節(jié),相應的輸出密文只有1個字節(jié)的變化,變換過程如圖2所示。

  由圖2可知,G是輸入的某一字節(jié),經(jīng)過字節(jié)代換后就被S[G]代換,行移位變換把S[G]循環(huán)右移到另外一個位置,接著通過密鑰“異或”運算得到了密文C。由DFA原理可知,完成對AES的攻擊,需要進行2次加密運算過程,一是在正常工作狀態(tài)下的加密流程,這樣可以得到正確的密文C。另一個是通過改變系統(tǒng)工作的外部環(huán)境,在最后一輪的當前輸入(如圖2所示)中導入故障,而后進行加密得到故障密文C′。對正確密文C與故障密文C′進行差分分析,計算它們之間的差值(記為D),其關(guān)系式如下:

3 抗DFA的防護電路設計
3.1 DFA攻擊模型分析
  參考文獻[5-6]都對AES密碼芯片進行了攻擊實驗,對AES的差分故障攻擊模型的特點分析如下:
  (1)控制AES密碼系統(tǒng)設備,可以完成對已知信息的加解密。
  (2) 通過外部環(huán)境的改變控制密碼系統(tǒng)的工作,能在系統(tǒng)工作過程中導入隨機故障。
  (3) 密碼系統(tǒng)在發(fā)生故障時,在同一時間只能發(fā)生1種故障,由1變成0或由0變成1,此故障稱為單向故障。
  通過分析故障攻擊模型,可以發(fā)現(xiàn),攻擊者主要是通過外部環(huán)境的改變,導致芯片內(nèi)部產(chǎn)生隨機的故障,而且故障的類型主要是bit錯誤。這樣在模擬攻擊防護時,設定導入bit錯誤,以此來檢驗本文設計的防護電路的可行性。
3.2 防護電路設計
  根據(jù)對DFA研究可知,差分故障攻擊成功的基礎是在芯片內(nèi)部引入錯誤,使其在故障模式下能夠繼續(xù)工作,通過分析芯片在故障模式與正確模式下產(chǎn)生的數(shù)據(jù),獲取內(nèi)部密鑰等重要信息。為此,本文在設計抵抗差分故障攻擊電路時,可以從兩個層面進行防護:一種是檢測錯誤誘導的條件,例如檢測外部工作環(huán)境,防止錯誤導入。另一種是在芯片運算過程中,設計能夠檢測到錯誤產(chǎn)生的故障檢測電路,在運算層面進行防護。由于在進行DFA攻擊過程中,需要對芯片導入錯誤,所以本文沒有考慮檢測誘導條件的措施。故在設計模擬引入故障情況下,從密碼芯片運算檢測的角度對差分故障攻擊進行防護。
  針對DFA攻擊的特點及抵抗其攻擊的基礎,只要使密碼芯片在產(chǎn)生故障情況下停止工作,攻擊者就無法得到錯誤的輸出數(shù)據(jù),從而使DFA失效。按照防護位置與檢測技術(shù)的要求,在AES架構(gòu)容易受到攻擊的位置,設計基于TRC校驗器抵抗DFA的防護電路?!?br />   TRC校驗器是鑒別差分信號的電路結(jié)構(gòu)[8],如圖3所示,具有4輸入2輸出,如果輸入信號a0、a1和b0、b1剛好是差分的,則輸出z0、z1也是差分的,所以這種TRC電路很容易擴展成多bit的TRC校驗器。對于加密過程的中間數(shù)據(jù)寄存器,沒有直接采用TRC檢測模塊,這是因為需要檢測的數(shù)據(jù)是128 bit,無法忍受直接使用TRC校驗器帶來的傳輸延時,故在檢驗前加入了計數(shù)器模塊。

  根據(jù)AES密碼算法的特點及前文對差分故障攻擊過程的分析可知,要抵抗DFA攻擊,需在其中間數(shù)據(jù)寄存器上安裝檢測電路。如果錯誤導入,則輸出錯誤產(chǎn)生反饋信號,這樣才能防止攻擊成功。因為AES的明文與密鑰都是128 bit的,中間數(shù)據(jù)寄存器也是128 bit的,故在錯誤檢驗前給檢測電路加上1個0計數(shù)器模塊,這樣就可以只通過8 bit的TRC差分校驗器來實現(xiàn)檢測功能。
  如圖4所示,設計的抗差分故障攻擊電路模塊EDN主要由3個模塊組成,128 bit的計數(shù)器模塊0_CT、8 bit反相器模塊以及8 bit TRC校驗器模塊TRC。每一輪運算的初始階段,128 bit中間加密信息位C傳輸?shù)?計數(shù)器模塊0_CT,產(chǎn)生8 bit檢驗位,并通過反相器傳輸?shù)絋RC校驗器模塊。同時128_reg寄存器輸出數(shù)據(jù),通過錯誤檢測網(wǎng)絡(EDN)的0計數(shù)器0_CT產(chǎn)生8 bit檢驗位,兩組校驗位進行TRC差分比較,輸出結(jié)果Z0、Z1。

4 防護電路仿真與驗證
  為了檢測設計的防護電路的可行性與性能,采用Verilog硬件語言,選用Altera 的EP2C35F672C8器件,使用QuartusII軟件對設計電路進行了綜合與仿真驗證。在不加錯誤檢測電路與加入錯誤檢測電路的情況下,對AES進行綜合分析,結(jié)果如表1所示。

  其中EDN是指錯誤檢測電路模塊。從表中可以看出,防護電路占用資源比較少,只有709個邏輯單元,整個AES密碼芯片的功耗只增加了18.22 mW,資源冗余增加不到整體資源的10 %,在設計抗故障攻擊的電路時可以接受這樣的防護電路。
  仿真驗證的過程中,為了更好地模擬故障攻擊過程,對AES的中間存儲頂層模塊進行修改,引進了2個新的信號:change_en和ERROR。change_en代表對寄存器進行某些位的修改,當其為高電平時有效,即寄存器的某些位發(fā)生翻轉(zhuǎn)。ERROR信號代表錯誤的產(chǎn)生,ERROR=~,當其為高電平時,表明寄存器產(chǎn)生了錯誤,低電平時表明寄存器正常工作。
  從電路仿真結(jié)果圖5中可以看到,輸入正常的情況下(80 ns~150 ns)產(chǎn)生差分的Z0、Z1,ERROR信號為0,代表芯片正常工作,在模擬引入隨機錯誤(155 ns時,change_en=1)之后,輸入數(shù)據(jù)的最高位發(fā)生了變化,系統(tǒng)輸出了差錯信息,Z0、Z1不再是差分的,ERROR信號也變?yōu)楦唠娖???梢?此電路能正確檢測出中間數(shù)據(jù)寄存器是否有錯誤產(chǎn)生,能夠快速準確地檢測出差分故障攻擊導入的錯誤,提高了系統(tǒng)的安全性。仿真結(jié)果顯示達到了設計的要求。 

  差分故障攻擊已經(jīng)成為密碼芯片的嚴重威脅,本文分析了DFA攻擊原理,對攻擊過程和攻擊算法進行了描述。針對DFA對AES密碼芯片的攻擊特點,設計了抗DFA的防護電路。在AES架構(gòu)的中間數(shù)據(jù)寄存器處,增加了基于TRC校驗器的抵抗差分故障攻擊的模塊。仿真結(jié)果表明,該防護電路能夠達到防御DFA攻擊的目的,增強了AES芯片抗故障攻擊的能力。此外,這種基于TRC校驗器的防護電路的設計思想也可以運用到其他需要防護DFA攻擊的密碼芯片中。
參考文獻
[1]  BONEH MILLO D, LIPTON. On the importance of checking cry-ptographic protocols for faults[C]. In proceedings  of  EUROCRYPT′97,LNCS,1997:37-51.
[2]  BIHAM E, SHAMIR A. Differential fault analysis of secret  key cryptosystems[C]. In:Proceedings of Crypto′97,1997,1294:513-52.
[3]  STALLINGS W. 密碼編碼學與網(wǎng)絡安全[M].北京:北京電子工業(yè)出版社,2006.
[4]  CIET M, JOYE M. Elliptic curve cryptosystems in the presence of permanent and transient faults[J]. In designs,Codes and Cryptography,2004.
[5]  PEACHAM D, THOMAS B. A DFA attack against the AES key schedule[J]. Siventure,October 2006.
[6]  DUSART P,LETOURNEUX G, VILOLO O, et al. Fault  analysis on AES[C]. Lecture Notes in Computer Science,2003,2846:293-306.
[7]  MORADI A, MOHAMMAD T, SHALMA M,et al. A generalized method  of differential fault  attack against AES  cryptosystem[C]. CHES 2006,2006: 91-100.
[8]  范益波,曾曉洋. 安全芯片中防御差分故障分析模塊的VLSI設計[C].第十九屆電路與系統(tǒng)學術(shù)年會.安徽合肥中國科學技術(shù)大學,2005.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。