陳 浩,王 韜,周 平,周 林,馬云飛,王曉晗
1(解放軍軍械工程學院 信息工程系,石家莊 050003) 2(車船軍代局駐長沙地區軍代室,長沙 410101)
故障攻擊是一種利用密碼實現所依附的物理設備平臺在外界強電流、高電壓、強輻射等手段干擾下可能出現的寄存器故障或運算錯誤來恢復密鑰的攻擊方法,最早由Boneh等[1]于1996年提出,并成功用于基于CRT實現的RSA簽名算法.隨后,Biham和Shamir[2]將故障攻擊和差分分析的思想相結合,提出差分故障分析,并成功地攻擊了DES算法.此后研究者將攻擊對象擴展至ECC等[3]其他公鑰密碼,LED[4],PRESENT[5]等分組密碼,MICKEY[6],Trivium[7]等序列密碼.然而,傳統的差分故障分析方法在某些攻擊場景下存在一些不足,當故障傳播特征復雜、故障差分不易確定、分析的密碼算法采用復雜非線性部件時,傳統的差分故障分析依賴手工故障傳播分析,難度較大.如果能將分析過程轉化為某類問題并將其自動化實現,則有望彌補傳統差分故障分析的不足[8].
在eSmart 2010會議上,N.Courtois等首次將代數攻擊和故障攻擊相結合起來,提出了代數故障分析方法,將分析過程轉化為代數方程組的自動構建和求解問題,并成功用于DES,僅需窮舉24位密鑰并在加密13輪注入1bit故障即可恢復全部密鑰信息.此后攻擊對象趨于多樣化,已擴展至LED[9],PRESENT[10],Piccolo[11]等分組密碼,Trivium[12]等序列密碼.同傳統差分故障分析相比,代數故障攻擊能夠充分利用故障攻擊中泄露出來的故障信息,具有攻擊通用性強、方程可自動化求解的優點,為密碼分析提供了一種新的自動化、通用化分析手段.
HIGHT算法[13]是一種典型的輕量級分組密碼,設計時采用ARX結構(是一種由模2n加運算、循環移位運算、異或運算按照一定順序組成的密碼結構),執行效率高,非常適合在微型設備中使用,其安全性研究具有重要意義,自2006年提出以來密碼界對其安全性開展了一系列研究.
文獻[14]采用面向字節的故障模型,對HIGHT密碼提出一種差分故障攻擊方法,通過窮舉4字節白化密鑰,并分別在密碼倒數第3輪和倒數第4輪共注入約32個故障可恢復HIGHT 全部128 bit 密鑰信息.但由于文獻[14]采用的是傳統故障分析方法,分析過程繁瑣,故障信息利用率低,所需故障樣本量較大,導致攻擊方法有效性和通用性不強.文獻[15]對HIGHT密碼提出一種代數故障分析方法,將文獻[14]的手工分析方法轉化代數方程組自動構建和求解問題,成功將攻擊擴展至加密倒數第6輪,將攻擊所需故障次數由32次減小為15次(最好情況下僅需9次).利用不同變量注入故障所產生的故障密文不同來確定故障位置,但當故障注入深度大于6時,注入到中間變量xr,2m的故障均會使所有的密文輸出產生錯誤,此時文獻[15]確定故障具體位置的方法失效.
本文對HIGHT密碼提出一種改進的代數故障分析方法,將攻擊成功擴展至密碼加密第25輪,并從理論角度分析且給出了攻擊所需故障注入次數和成功率.在密碼第25輪加密注入單字節隨機故障下,5次故障注入可在143.70s內恢復全部主密鑰信息,最好情況下僅需4次即能以成功率90%,在551.26s內恢復全部主密鑰信息.此外,本文還對密碼加密26輪、27輪和加密進行了攻擊,恢復全部主密鑰信息的故障注入次數分別為7次、11次和23次,實際成功率分別為90.86%,89.83%和87.48%,與理論分析基本一致.與現有HIGHT故障攻擊相比,文中所需的故障注入次數是最小的.

-⊕,A<< -′:注入故障之后密碼的內部狀態或輸出; -#S:有限集合S的勢; -P,C:64比特明文和密文; -MK=MK15‖…MK1‖MK0:16字節主密鑰; -WKi:白化密鑰WKi,0≤i≤7; -SKk:輪子密鑰,0≤k≤127; -Xr=xr,7‖…xr,1‖xr,0:密碼第r加密的80比特輸入變量,1≤r≤32; 本節對HIGHT算法進行簡單介紹,其完整描述可參見文獻[13].HIGHT是一個32輪迭代輕量級分組密碼算法,其分組長度和密鑰長度分別為64 和128 位,設計時采用廣義Feistel結構,輪函數沒有使用S盒,只采用ARX操作.HIGHT密碼算法由密鑰擴展、初始變換、輪加密、末輪變換4個子過程構成: 密鑰擴展.密鑰擴展算法使用主密鑰MK按照式(1)和式(2)生成初始變換和末變換使用的8字節的白化密鑰WKi(0≤i≤7)和每輪加密使用的4字節子密鑰SKi(0≤i≤127): WKi=MKi+12(i= 0,1,2,3) (1) WKi=MKi-4(i= 4,5,6,7) (2) (3) (4) 初始變換.明文P根據式(5)(6),經初始變換成加密首輪的輸入X0: X0,4=P4?WK2;X0,5=P5; (5) X0,6=P6⊕WK3;X0,7=P7 (6) 輪加密函數.算法執行32輪加密運算,將第i(0≤i≤31)輪輸出Xi按照式(7)~(14)轉換成第i+1輪輸入Xi+1. (7) Xi+1,1=Xi,0 (8) (9) Xi+1,3=Xi,2 (10) (11) Xi+1,5=Xi,4 (12) (13) Xi+1,7=Xi,6 (14) 每輪加密使用兩個線性函數F0和F1,如式(15)(16)所示: F0(x)=x<<<1⊕x<<<2⊕x<<<7 (15) F1(x)=x<<<3⊕x<<<4⊕x<<<6 (16) 末輪變換.算法在執行完32輪加密運算后,將X32根據式(17)經末變換轉換成密文C: (17) 本節采用面向單字節的隨機故障模型,如圖1所示,其基本假設如下: 攻擊者能夠借助低成本故障注入技術(如,時鐘毛刺,虧電效應、電壓峰值等[16])向HIGHT算法加密r(0≤r≤32)輪加密注入單字節隨機故障,但故障的具體值和具體位置均未知.此外,攻擊者能夠選擇被加密的明文,并且獲取同一個密鑰作用下的正確密文和錯誤密文.由下頁圖1可知,當攻擊者向HIGHT第25輪加密注入單字節隨機故障時,故障傳播特征非常復雜,很難應用傳統差分分析方法進行密鑰分析.同時,由于產生的密文輸出全部發生錯誤,很難利用文獻[15]中的方法對故障位置和差分信息進行確定和表示. 性質1.假設攻擊者向密碼r輪第α個中間變量注入隨機單字節故障,定義集合: 為故障傳播過程中第n輪受影響的中間變量,則有下列結論成立,其中0≤m≤3: 1)#Φ(r,α)r=1; 圖1 故障模型Fig.1 Fault model 證明:對于結論①,由圖1可知,顯然成立. 對于結論②,不失一般性,假設攻擊者向密碼r輪xr,α注入一個單字節故障,則有: i)當α=2m時,如圖2所示,可知下一輪故障將向xr+1,2(m+1)和xr+1,2m+1兩個中間狀態變量擴散,所以有#Φ(r,2m)r+1=#Φ(r,2m)r+1. 圖2 故障位置為xr,2mFig.2 Faultwasinjectedinxr,2m圖3 故障位置為xr,2m+1Fig.3 Faultwasinjectedinxr,2m+1 ii)當α=2m+1時,如圖3所示,可知下一輪故障將僅向xr,2(m+1)一個中間狀態變量擴散,所以有#Φ(r,2m+1)r+1=#Φ(r,2m+1)r. 對于結論③,由結論②證明過程可知,故障位置為xr,2m的故障在下一輪傳播過程中會擴散到xr+1,2(m+1)和xr+1,2m+1,故障位置為xr,2m+1的故障在下一輪擴散中會擴散到xr+1,2(m+1),因此當故障沒有影響第n輪全部8字節中間變量時,如圖1所示,顯然有#Φ(r,α)n+1=#Φ(r,α)n+1,n>r.反之,則有#Φ(r,α)n+1=#Φ(r,α)n=8,所以結論③成立.證畢. 由性質1證明過程可知,當故障注入輪r=25時,注入到xr,2m的故障會導致所有的密文輸出產生錯誤,注入到xr,2m+1的故障會使8字節密文輸出中的7個字節密文輸出產生錯誤,此時如果按照文獻[15]的方法很難確定故障的具體位置,但根據錯誤密文輸出個數顯然可以區分故障是注入在xr,2m還是xr,2m+1,根據這個特點利用性質1,可以將故障信息表示成代數方程組(構造方法和詳細過程見4.3節),并且在構造代數方程組時僅需知道故障是注入在xr,2m還是xr,2m+1,而無需知道故障的具體位置,因此與文獻[15]相比較,改進之后的新方法可將攻擊輪擴展至r=25. 此外,由于改進之后的新方法在故障信息表示過程中,不依賴于故障具體傳播路徑,因此改進之后的新方法具有更強的通用性. HIGHT改進的代數故障攻擊步驟如下: 1)密碼算法等效代數方程組構建.首先選擇明文P和初始密鑰K,運行HIGHT密碼算法得到正確的密文輸出C,并構建密碼等效代數方程組; 2)故障注入及利用.保持(P,K)不變,運行實現密碼算法的密碼芯片并設定故障注入樣本,利用低成本故障注入技術向密碼芯片注入故障,產生錯誤的密文輸出C,并將故障和錯誤密文表示成代數方程組; 3)代數方程組求解.使用解析器CryptoMinisat解析器對上面兩步構建代數方程組進行求解恢復密鑰信息; HIGHT密碼等效代數方程組構建過程中,關鍵是構造ARX、F0(·)、F1(·)、密鑰擴散、輪函數、末變換等線性和非線性組件在比特層面的等效代數方程組,下面具體給出構建方法. 4.1.1 模2n加運算代數方程組構建 定義X,Y,Z∈GF(2n),X=(xn-1,xn-2,…,x0),Y=(yn-1,yn-2,…,y0),Z=(zn-1,zn-2,…,z0),x0,y0,z0分別表示X,Y,Z的最低位,則GF(2n)上的模2n加運算可表示為: (18) 4.1.2F0(·)和F1(·)運算代數方程組構建 定義X=(x7,x6,…,x0),Y=(y7,y6,…,y0) 分別為函數F0(·) 和F1(·)的輸入及輸出,則F0(·) 和F1(·) 分別可表示成GF(2)域上的代數方程數(*) and (*′): (19) 4.1.3 密鑰擴展方案代數方程組構建 HIGHT密鑰擴展方案可以表示成如下代數方程組,其中Cj和Dj,0≤j≤8,均為8比特變量. for(i=0;i<7;i++) for(j=0;j<7;j++) for(k=0;k<8;k++) end end for(j=0;j<7;j++) (20) for(k=0;k<8;k++) end end end 4.1.4 輪函數代數方程組構建 HIGHT算法 32 輪加密可以表示成如下GF(2)域上的代數方程組,其中Ei,Fi,Gi,Hi,0≤i≤8,均為8比特變量: for(i=0;i<31;i++) for(k=0;k<8;k++) end end for(i=31;i<32;i++) for(k=0;k<8;k++) end end (21) 4.1.5 末輪變化代數方程組構建 for(k=0;k<8;k++) end (22) 本節將提出一種新的故障信息表示方法,該方法適用于故障具體位置未知場景,并能夠將攻擊方法擴展至密碼第25輪加密. Zr=Zr,7‖…Zr,1‖Zr,0,1≤r≤32 (23) (24) 其中μk=0 表示Zi,k為故障注入字節. 此外,使用HW(μ),0≤HW(μ)≤8,來表示變量μ的漢明重.為將故障差分信息表示為代數方程組,引入一個四比特變量Y=(y3…y0)來表征HW(μ),計算關系式如下: (25) 由上述分析,假設攻擊者向密碼r輪第α個中間變量注入一個隨機故障,由2.3節故障傳播特性性質1可知: i)當注入故障索引α=2m時,有下列等式成立: HW(μ)n=n-r+1,r≤n≤32 (26) ii)當故障索引α=2m+1時,有下列等式成立: (27) 因此在這種情況下,可以使用n-r個代數方程組來表示故障信息. 本文選取CryptoMinisat解析器對構建的代數方程組進行求解.該解析器采用基于可滿足性問題SAT的代數方程組求解策略,具有高效、不受方程組次數約束的特點,能夠較好的解決代數方程組構建過程中的布爾切割問題.在實際攻擊中需首先將HIGHT密碼和故障信息表示成布爾代數方程組并將代數方程組線性化,然后將線性化的代數方程組轉化為符合CryptoMinisat輸入格式的文本文件,以命令行方式調用crypt.exe進行自動求解,有關CryptoMinisat解析器的使用方法可見參看文獻[15]. 由于本文提出的改進代數故障攻擊的復雜度主要由故障注入次數構成,因此本節主要從理論角度對故障注入次數N進行評估. 本質上,故障分析方法主要利用密碼算法正確/錯誤密文輸出同故障傳播過程中涉及到的相關密鑰關系進行密鑰破解[8].因此,當且僅當注入的故障在傳播過程中涉及到全部的主密鑰信息MK時,攻擊者才能恢復所有主密鑰信息MK. 為了敘述方便,使用下列表達式 (28) 表示由A通過關系式(*)推導出B.定義集合Ωr,i表示中間變量xr,i能夠推導出的主密鑰集合: Ωr,i={MKω|xr,i→MKω,1≤r≤32,0≤ω≤15,0≤i≤7} 顯然,由HIGHT密碼末變換可知,有下列推斷成立: (29) 由密碼密鑰擴展方案可知,有下列推斷成立: (30) (31) (32) 由式(29)~式(32)可得: (33) 此外,由輪加密函數可知,對每個64比特的中間變量 Xr=xr,7‖…xr,1‖xr,0,1≤r≤31,有: (34) 由式(34)可推斷得到: Ω25,2m=MK,0≤m≤3 Ω25,2m+1MK,0≤m≤3 所以攻擊者對HIGHT密碼第25輪加密進行攻擊時,注入的隨機故障中只要有一個位于xr,2m,故障在傳播中將會涉及全部主密鑰信息.由于故障注入過程是完全隨機的,故障注入到xr,2m和xr,2m+1的概率Pr(α=2m)= Pr(α=2m+1)=1/2,因此注入的故障在傳播過程中覆蓋所有密鑰信息的概率Pr(Ω=MK)可計算為: 所以理論上,當故障注入總數N=5時,Pr(Ω=MK)→1攻擊者可以恢復全部主密鑰信息MK.此外,當攻擊者對加密第26輪,27輪和28輪進行攻擊時,由文獻[15]可知,恢復全部密鑰信息MK故障所需的故障注入總數分別為N=7,N=11和N=23時(如表1所示). 本節首先給出故障碰撞的定義. 定義1.如圖4所示,假設攻擊者同時向中間變量xr,2m和xr,2m+2注入單字節隨機故障β1和β2.當故障傳播至加密第r+2輪時,故障值Δ3和Δ2同時作用于中間變量xr+2,2m+3,且有HW(Δxr+2,2m+3)=φ,則將故障傳播過程中多個故障值同時作用于某個中間變量的現象稱為故障碰撞. 圖4 故障碰撞示意圖Fig.4 Schematic diagram of fault collision 由故障碰撞定義可知,當φ=0時,Δxr+2,2m+3=0,故障值Δ3和Δ2相互抵消,產生的概率為: 當故障相互抵消時,會導致HW(μ)n的值發生變化,從而導致表示故障信息的代數方程組在構建過程中出現錯誤,最終導致攻擊失敗. 假設攻擊者向密碼r輪中間變量注入單字節隨機故障,故障注入位置為α,攻擊設定的故障樣本為N,其中發生在奇數索引(α=2m+1,0≤m≤3)和偶數索引(α=2m)的故障在傳播過程中發生故障碰撞的次數分別為s和w,則注入一個故障時攻擊的成功率為: Pr[n=1]=Pr[α=2m](1-Pr(φ=0))s+Pr[α=2m+1] (35) 因為攻擊設定的故障樣本為N,則攻擊的成功率為: Pr[n=N]=(Pr[n=1])N (36) 此外,分析圖2可知,當攻擊者對密碼第25輪加密進行攻擊,且故障注入位置為x25,2m(0≤m≤3)時,故障碰撞次數為9次,當{①,②,③,④,⑤,⑥,⑦,⑧,⑨},但由于①和②,②和③,③和⑥,⑤和⑦,⑥和⑧均不同發生,因此故障碰撞之后相互抵消的可能項數為5次.同理,當故障注入位置為x25,2m+1時,故障碰撞點為6個,故障碰撞之后相互抵消的可能次數為4次,因此根據公式(36)可得攻擊成功率為Pr(N=5)=91.6%,同理可分析對26輪,27輪和28輪攻擊的成功率如表1所示. 表1 攻擊所需故障注入總數和成功率 攻擊輪理論故障注入個數理論攻擊成功率25591.6%26790.86%271189.83%282387.48% 在普通PC上(CPU為Intel(R),Core(TM) i7-4790 3.20GHz,內存4G,Windows 7 32位操作系統),使用C++編程語言軟件模擬實現隨機單字節故障注入過程,使用CryptoMinisat 4.4解析器進行求解(詳細使用方法見文獻[15]).為規范攻擊成功率,當解析器求解方程時間大于3600s、輸出多個解或“UNSATISFIABLE”,視為攻擊失敗. 下面以攻擊加密第25輪攻擊為例,給出HIGHT改進代數故障攻擊實例: 1)隨機產生明文P=0x0F1416050A00070C,并使用主密鑰MK=0x00112233445566778899AABBCCDDEEFF對明文進行加密,產生密文C=0x00F418AED94F03F2,并使用4.1節的方法構建正確加密時密碼完整的等效代數方程組; 2)向HIGHT密碼第25輪加密任意位置注入單字節的隨機故障,并設定故障樣本數N=5.在分析故障傳播特征的基礎上,利用4.2節方法將故障信息用代數方程組表示出來; 3)將構建密碼和故障信息的代數方程組并轉化SAT字句,使用CryptoMinisat 4.4解析器對構建的代數方程組進行求解,求解結果為K=(1111111111101110110111011100110 010111011101010101001100110001000011101110110011001010 1010100010000110011001000100001000100000000)2,轉化為16進制與MK相同,攻擊成功,耗時25.14 s. 攻擊中,我們一共進行了100組攻擊仿真實驗,分別隨機生成了100組不同的三元組(Pn,MKn,Cn)(1≤n≤100),且均設定故障樣本量為N=5,攻擊實驗具體結果如圖5所示.由圖5可知,在100組攻擊樣本中,成功樣本為91個,失敗樣本9個(其中求解時間超過3600s的樣本為0個,解析器輸出“UNSATISFIABLE”的樣本為9個),所以攻擊實際成功率為91%,略低于4.5節理論值.在91個成功樣本中,解析器平均求解時間為143.70s. 圖5 攻擊輪為第25輪,故障樣本N=5的攻擊結果Fig.5 Result of the attack on 25-th round,N=5 本文針對密碼25輪加密,還在不同故障樣本量下進行了仿真實驗,對每個故障樣本N各進行100組仿真實驗,實驗結果如圖6所示.由圖可知,攻擊的實際成功率始終維持在91%左右,比理論值91.6%略小.當故障樣本小于等于3時,攻擊成功率為0%.當故障樣本N小于等于12時,解析器平均價求解時間基本趨于穩定,其值在4.84s上下浮動.最好情況下,僅需4個故障樣本即可恢復全部主密鑰信息MK,解析器平均求解時間為551.26s. 圖6 不同故障樣本量下,對密碼25輪攻擊結果Fig.6 Result of the attack on 25-th round under differ ent N 此外,本文還對密碼第26輪、第27輪、28輪加密各進行了100次攻擊實驗,設定的故障樣本分別為7、11和23,實驗結果如表2所示. 對上述實驗結果進行分析可以得出以下3個結論: 1)攻擊的實際成功率始終略小于理論分析值.可能的原因是,在攻擊實驗中的故障注入是通過軟件模擬實現的,很難實現故障位置完全等概率分布,因此在實際攻擊中故障注入次數應略大于理論注入次數,這就直接導致攻擊實際成功率略小于理論分析值; 表2 密碼26輪和27輪攻擊成功率 攻擊輪成功次數成功率268989%(≤理論值90.86%)278686%(≤理論值89.83%)288484%(≤理論值87.48%) 2)攻擊針對密碼同一輪加密進行攻擊時,故障樣本越大,解析器求解時間基本趨向減小.原因是故障樣本越多,構建的代數方程組包含密鑰信息和未知中間變量的信息就越多,解析器求解速度也就相對越小.由于CryptoMinisat解析器在求解代數方程組時的時間抖動性較大,雖然本文在進行實驗仿真時,進行大量重復實驗,對求解時間取平均值,但仍然無法完全消除求解時間的抖動性,這就解釋了為什么會出現故障樣本N越大,求解時間越小的個別現象. 3)與文獻[15]相比,本文提出的新方法能將攻擊延伸至密碼加密第25輪,且本文提出的方法在構建故障信息時不依賴故障具體的傳播路徑,通用性和有效性較好,與現有故障攻擊相比,所需的故障注入次數是最小的. 本文對HIGHT提出一種改進的代數故障攻擊,與文獻[15]相比,提出的新方法能夠將攻擊延伸至密碼加密第25輪,且方法具有較好的通用性.下一步研究的方向主要著眼于提高攻擊方法的有效性和實用性:一是,針對故障碰撞開展相應的容錯處理研究;二是,研究更加高效的故障信息表示方法,進一步提高攻擊的有效性和實用性. [1] Boneh D,DeMillo R A,Lipton R J.On the importance of checking cryptographic protocols for faults[C].Proceedings of the EUROCRYPT 1997,LNCS,1233,1997:37-51. [2] Biham E,Shamir A.Differential fault analysis of secret key cryptosystems[C].Proceedings of the CRYPTO 1997,LNCS,1997,1294:513-525. [3] Biehl I,Mwyer B,Muller V.Differential fault analysis on elliptic curve cryptosystems[C].Proceedings of the CRYPTO 2000,Santa Barbara,California,LNCS 1880,2000:131-146. [4] Li Wei,Gu Da-wu,Zhao Chen,et al.Security analysis of the LED lightweight cipher in the internet of things[J].Chinese Journal of Computers,2012,35(3):434-445. [5] Li Jun-ru,Gu Da-wu.Differential fault analysis on PRESENT[C].China CRYPT 2009,2009:3-13. [6] Banik S,Maitra S.A differential fault attack on MICKEY 2.0[EB/OL].Cryptology ePrint Archive,http://eprint.iacr.org/2013/166,2013. [7] Hu Yu-pu,Zhang Feng-rong,Zhang Yi-wei.Hard fault analysis of trivium[J].Des.Codes Cryptogr,2012,62(3):289-311. [8] Guo Shi-ze,Wang Tao,Zhao Xin-jie.Principles and methodologies of side-channel analysis in cryptography [M].Beijing:Science Press,2014. [9] Zhang Fan,Zhao Xin-jie,Guo Shi-ze,et al.Improved algebraic fault analysis:a case study on piccolo and applications to other lightweight block ciphers[C].Proceedings of COSADE 2013,LNCS,7864:62-79. [10] Wu Ke-hui,Zhao Xin-jie,Wang Tao,et al.Algebraic fault attack on PRESENT[J].Journal on Communications,2012,33(8):85-92. [11] Zhao Xin-jie,Guo Shi-ze,Wang Tao,et al.Research of algebraic fault analysis on Piccolo[J].Chinese Journal of Computer,2013,36(4):882-894. [12] Mohamed M S E,Bulygin S,Bchmann J.Using SAT solving to improve differential fault analysis of trivium[J].International Journal of Security and Its Applications,2012,6(1):29-38. [13] Hong D,Sung J,Hong S,et al.HIGHT:a new block cipher suitable for low-resource device[C].Proceedings of CHES,LNCS,4249,2006:46-59. [14] Fan Wei-jie,Wu Wen-ling,Zhang Lei.Differential fault analysis on HIGHT[J].Journal of Graduate University of Chinese Academy of Sciences,2012,29(2):271-276. [15] Chen Hao,Wang Tao,Zhang Fan,et al.Algebraic fault analysis of HIGHT[J].Journal of Shanghai Jiaotong University,2015,49(12):1817-1825. [16] Tunstall M.Fault analysis in cryptography[M].Beijing:Science Press,2015:239-253. 附中文參考文獻: [4] 李 瑋,谷大武,趙 辰,等.物聯網環境下LED輕量級密碼算法的安全性分析[J].計算機學報,2012,35(3):434-445. [5] 李卷孺,谷大武.PRESENT算法的差分故障攻擊[C].中國密碼學會2009年會,2009:3-13. [8] 郭世澤,王 韜,趙新杰.密碼旁路分析原理與方法[M].北京:科學出版社,2014. [10] 吳克輝,趙新杰,王 韜,等.PRESENT密碼代數故障攻擊[J].通信學報,2012,33(8):85-92. [11] 趙新杰,郭世澤,王 韜,等.Piccolo 密碼代數故障分析研究[J].計算機學報,2013,36(4):882-894. [14] 范偉杰,吳文玲,張 蕾.HIGHT算法的差分故障攻擊[J].中國科學院研究生院學報,2012,29(2):271-276. [15] 陳 浩,王 韜,張 帆,等.HIGHT密碼代數故障分析[J].上海交通大學學報(自然科學版),2015,49(12):1817-1825. [16] Marc J.密碼故障分析與防護[M].北京:科學出版社,2015:239-253.
2.2 HIGHT加密過程







3 HIGHT改進代數故障分析
3.1 故障模型設定
3.2 故障傳播特性分析




3.3 HIGHT改進代數故障分析思想
3.4 攻擊基本過程
4 HIGHT改進代數故障攻擊過程詳述
4.1 密碼等效代數方程組構建














4.2 故障信息表示




4.3 代數方程組求解
4.4 攻擊復雜度分析
4.5 攻擊成功率分析


Table 1 #fault injections and success rate of the attack
5 攻擊實驗及分析比較
5.1 HIGHT改進的代數故障攻擊實例


5.2 實驗結果分析
Table 2 Success rate of the attack on round 26 and round 27
6 結 語