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

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

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

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

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

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

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

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

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

  差分故障攻擊已經(jīng)成為密碼芯片的嚴(yán)重威脅,本文分析了DFA攻擊原理,對(duì)攻擊過(guò)程和攻擊算法進(jìn)行了描述。針對(duì)DFA對(duì)AES密碼芯片的攻擊特點(diǎn),設(shè)計(jì)了抗DFA的防護(hù)電路。在AES架構(gòu)的中間數(shù)據(jù)寄存器處,增加了基于TRC校驗(yàn)器的抵抗差分故障攻擊的模塊。仿真結(jié)果表明,該防護(hù)電路能夠達(dá)到防御DFA攻擊的目的,增強(qiáng)了AES芯片抗故障攻擊的能力。此外,這種基于TRC校驗(yàn)器的防護(hù)電路的設(shè)計(jì)思想也可以運(yùn)用到其他需要防護(hù)DFA攻擊的密碼芯片中。
參考文獻(xiàn)
[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. 密碼編碼學(xué)與網(wǎng)絡(luò)安全[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設(shè)計(jì)[C].第十九屆電路與系統(tǒng)學(xué)術(shù)年會(huì).安徽合肥中國(guó)科學(xué)技術(shù)大學(xué),2005.
 

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