李瑋,汪夢(mèng)林,谷大武,李嘉耀,蔡天培,徐光偉
(1.東華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620;2.上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系,上海 200204;3.上海交通大學(xué)上海市可擴(kuò)展計(jì)算與系統(tǒng)重點(diǎn)實(shí)驗(yàn)室,上海 200204;4.上海交通大學(xué)上海市信息安全綜合管理技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,上海 200093)
物聯(lián)網(wǎng)是一種物與物進(jìn)行信息交換和通信的網(wǎng)絡(luò)。它通過(guò)智能設(shè)備和機(jī)器感知收集有關(guān)數(shù)據(jù),提取數(shù)據(jù)中有用的信息并提供方便快捷的服務(wù)。物聯(lián)網(wǎng)的發(fā)展促進(jìn)了大量新興領(lǐng)域的發(fā)展,例如智能家居、智慧醫(yī)療、精準(zhǔn)農(nóng)業(yè)、智慧交通等[1-4]。由于物聯(lián)網(wǎng)中的智能設(shè)備及傳感器的處理、存儲(chǔ)資源有限,在收集、傳送和處理網(wǎng)絡(luò)中的大量數(shù)據(jù)時(shí),傳統(tǒng)的密碼算法較難有效地保證信息的機(jī)密性、完整性和認(rèn)證性,因此,運(yùn)行效率高、吞吐量小和安全性高的輕量級(jí)密碼算法適用于物聯(lián)網(wǎng)中的安全數(shù)據(jù)處理[5-7]。
TWINE 是2012 年在SAC(selected areas in cryptography)會(huì)議上提出的一種具有廣義Feistel結(jié)構(gòu)的輕量級(jí)分組密碼,旨在保護(hù)資源受限的終端設(shè)備的數(shù)據(jù)安全[8]。現(xiàn)有的TWINE 的傳統(tǒng)密碼分析包括不可能差分故障分析、飽和分析、Biclique分析、零相關(guān)線性分析、中間相遇分析等[8-11]。但是,在物聯(lián)網(wǎng)環(huán)境中,攻擊者可以通過(guò)激光照射、異常時(shí)鐘、渦流磁場(chǎng)等方式注入故障,干擾密碼的加密過(guò)程,這些故障會(huì)使中間狀態(tài)的計(jì)算產(chǎn)生偏差,通過(guò)分析或者統(tǒng)計(jì)錯(cuò)誤中間狀態(tài)即可恢復(fù)密鑰并破譯密碼,這種攻擊方法稱(chēng)為故障分析(FA,fault analysis)。
故障分析是在1997 年由Boneh 等[12]提出的一種密碼分析方法,它通過(guò)在密碼設(shè)備運(yùn)行過(guò)程中注入隨機(jī)的故障,干擾正常運(yùn)行過(guò)程,從而恢復(fù)出密鑰并破譯密碼。后來(lái),故障分析衍生出差分故障分析(DFA,differential fault analysis)、不可能差分故障分析(IDFA,impossible differential fault analysis)、中間相遇故障分析(MFA,meet-in-the-middle fault analysis)、統(tǒng)計(jì)故障分析(SFA,statistical fault analysis)和唯密文故障分析(CFA,ciphertext-only fault analysis)等[13-17]。這些分析方法是輕量級(jí)安全密碼實(shí)現(xiàn)的重要實(shí)際威脅之一。
根據(jù)攻擊能力的強(qiáng)弱,密碼分析方法的攻擊假設(shè)可以分為選擇明文攻擊(CPA,chosen-plaintext attack)、已知明文攻擊(KPA,known-plaintext attack)和唯密文攻擊(COA,ciphertext-only attack)等。針對(duì)TWINE 的傳統(tǒng)密碼分析、現(xiàn)有故障分析的攻擊假設(shè)主要集中在已知明文攻擊和選擇明文攻擊,即攻擊者需要獲取當(dāng)前密鑰下的一些明文密文對(duì),或特定明文對(duì)應(yīng)的密文,這對(duì)攻擊者的能力要求較強(qiáng)。在資源受限的物聯(lián)網(wǎng)環(huán)境中,唯密文攻擊對(duì)攻擊者的能力要求最弱,攻擊者僅需獲取密文,因此容易在實(shí)際中應(yīng)用,并可以有效地檢測(cè)密碼算法的實(shí)現(xiàn)安全性。
基于唯密文攻擊的攻擊假設(shè),唯密文故障分析通過(guò)密碼設(shè)備運(yùn)行過(guò)程中注入隨機(jī)故障,利用錯(cuò)誤密文推導(dǎo)出的中間狀態(tài),分析相關(guān)的統(tǒng)計(jì)信息,在僅獲得錯(cuò)誤密文的情況下即可破譯密碼。TWINE作為廣義Feistel 結(jié)構(gòu)的典型密碼之一,目前國(guó)內(nèi)外都沒(méi)有針對(duì)該密碼的唯密文故障分析的相關(guān)研究,本文提出了針對(duì)TWINE 的新型唯密文故障分析方法,設(shè)計(jì)并實(shí)現(xiàn)了3 種新型區(qū)分器,從而降低了攻擊代價(jià),有效地提高了攻擊效率。該方法的提出對(duì)于分析輕量級(jí)密碼算法的安全性具有參考價(jià)值,同時(shí)對(duì)于增強(qiáng)物聯(lián)網(wǎng)中信息的保護(hù)具有現(xiàn)實(shí)意義。
密碼分析是評(píng)測(cè)密碼算法安全性的重要手段,國(guó)內(nèi)外學(xué)者使用多種密碼分析技術(shù)對(duì)TWINE 進(jìn)行了安全性分析。在傳統(tǒng)密碼分析方面,TWINE 的設(shè)計(jì)者分別利用不可能差分分析、飽和分析等對(duì)TWINE 的安全性進(jìn)行評(píng)估[8]。2012 年,?oban 等[9]使用Biclique 構(gòu)造和中間相遇分析搜索密鑰,對(duì)TWINE 進(jìn)行了Biclique 分析。2014 年,Wang 等[10]使用改進(jìn)的零相關(guān)線性分析檢驗(yàn)TWINE 的安全性,利用密鑰編排方法的弱點(diǎn)并使用部分壓縮技術(shù)降低了零相關(guān)線性分析的計(jì)算復(fù)雜度。2016 年,Tolba 等[11]利用廣義中間相遇攻擊,通過(guò)允許將密鑰劃分為3 個(gè)子集來(lái)消除中間相遇攻擊的限制,實(shí)現(xiàn)對(duì)TWINE 的全密碼攻擊。以上攻擊的假設(shè)均為選擇明文攻擊或者已知明文攻擊。
在故障分析方面,2013 年,Yoshikawa 等[18]提出了差分故障分析,利用與同一明文相對(duì)應(yīng)的一個(gè)正確密文和不同輪注入故障產(chǎn)生的錯(cuò)誤密文,恢復(fù)了TWINE 的80 bit 主密鑰。2015 年,Li 等[19]對(duì)TWINE 進(jìn)行了差分故障分析,在31 輪利用故障模型“與”導(dǎo)入半字節(jié)故障,分別利用8 個(gè)和18 個(gè)故障恢復(fù)了TWINE 的80 bit 和128 bit 主密鑰。2017 年,高楊等[20]利用S 盒的差分分布特性進(jìn)行差分故障分析,采用隨機(jī)半字節(jié)模型,在33 輪、34 輪、35 輪平均注入9 個(gè)故障,即可恢復(fù)TWINE 的80 bit 主密鑰。此外,Nozaki 等[16]使用統(tǒng)計(jì)故障分析,通過(guò)在時(shí)鐘中插入毛刺產(chǎn)生故障,統(tǒng)計(jì)40 對(duì)正確密文和錯(cuò)誤密文對(duì)應(yīng)的中間狀態(tài)的漢明權(quán)重最小平均值,恢復(fù)了TWINE 的80 bit主密鑰?,F(xiàn)有的故障分析方法都是選擇明文攻擊的假設(shè)。
本文結(jié)合唯密文攻擊的假設(shè),對(duì)TWINE 密碼進(jìn)行了唯密文故障分析。此時(shí)攻擊者僅依賴(lài)錯(cuò)誤密文,攻擊能力最弱,因此,唯密文故障分析的分析方案在現(xiàn)實(shí)的操作環(huán)境中具有更加靈活的應(yīng)用前景。TWINE-80 和TWINE-128 的安全性分析對(duì)比如表1 所示。
表1 TWINE-80 和TWINE-128 的安全性分析對(duì)比
在唯密文故障分析方面,2013 年,F(xiàn)uhr 等[17]針對(duì)AES(advanced encryption standard)進(jìn)行了唯密文故障分析,利用“與”故障模型,誘導(dǎo)隨機(jī)字節(jié)故障生成錯(cuò)誤密文,接著推導(dǎo)出對(duì)應(yīng)的錯(cuò)誤中間狀態(tài),利用平方歐氏距離(SEI,square Euclidean distance)、極大似然估計(jì)(MLE,maximum likelihood estimate)和漢明權(quán)重(HW,Hamming weight)等區(qū)分器篩選密鑰候選值。實(shí)驗(yàn)結(jié)果表明,對(duì)于區(qū)分器SEI、MLE 和HW,分別導(dǎo)入320、224 和288 個(gè)隨機(jī)字節(jié)故障就可以恢復(fù)AES 的子密鑰。2016 年,Dobraunig 等[21]提出,攻擊者可以在基于AES 的認(rèn)證加密算法中注入故障進(jìn)行破譯。文獻(xiàn)[22-24]采用唯密文故障分析的方法分別對(duì)輕量級(jí)密碼算法LED(light encryption device)、SIMON 和MIBS等進(jìn)行安全性分析,擴(kuò)展了唯密文故障分析的范圍。然而,對(duì)于具有廣義Feistel 結(jié)構(gòu)的TWINE能否抵御唯密文故障分析,國(guó)內(nèi)外尚無(wú)文獻(xiàn)發(fā)表。
本文給出了TWINE 的新型唯密文故障分析,提出了新型區(qū)分器極大似然估計(jì)-直方圖估計(jì)(MLE-HE,maximum likelihood estimate-histogram estimate)、漢明權(quán)重-直方圖估計(jì)(HW-HE,Hamming weight-histogram estimate)和漢明權(quán)重-極大似然估計(jì)-直方圖估計(jì)(HW-MLE-HE,maximum likelihood estimate-hamming weighthistogram estimate)等區(qū)分器,不僅減少了故障數(shù),而且提高了分析效率。唯密文故障分析破譯AES、LED、SIMON、MIBS 和TWINE 子密鑰的結(jié)果對(duì)比如表2 所示。
記X∈({0,1}4)16為明文,Y∈({0,1}4)16為正確密文,∈{0,1}4表示第i輪中輸入的第j個(gè)半字節(jié),其中,i∈[1,36]且j∈[0,15]。
記K為主密鑰,k l為主密鑰的第l個(gè)半字節(jié),z表示主密鑰半字節(jié)個(gè)數(shù),∈{0,1}4表示第i輪子密鑰的第t個(gè)半字節(jié),為第i輪密鑰編排時(shí)的輪常數(shù),其中,H 表示高4 位,L表示低4 位,z∈{19,31},l∈[0,z],i∈[1,36]且t∈[0,7]。
記F為輪函數(shù),S為混淆層,π為擴(kuò)散層。
記~為導(dǎo)入故障后的錯(cuò)誤值,<<<為循環(huán)左移,||為級(jí)聯(lián)。
TWINE的分組長(zhǎng)度為64 bit,主密鑰長(zhǎng)度為80 bit或 128 bit,分別表示為 TWINE-80 版本和TWINE-128 版本,迭代輪數(shù)為36 輪,TWINE 結(jié)構(gòu)如圖1 所示。加密部分和解密部分的結(jié)構(gòu)相同,子密鑰的使用順序相反。算法1~算法3 分別給出了TWINE 的加密算法和不同版本的密鑰編排方案。
表2 唯密文故障分析破譯AES、LED、SIMON、MIBS 和TWINE 子密鑰的結(jié)果對(duì)比
算法1TWINE 的加密算法
唯密文故障分析的基本假設(shè)是唯密文攻擊,此時(shí),攻擊者可以使用相同主密鑰對(duì)隨機(jī)明文進(jìn)行加密,運(yùn)行過(guò)程中導(dǎo)入隨機(jī)故障獲取相應(yīng)的錯(cuò)誤密文;再利用故障導(dǎo)入前后對(duì)應(yīng)的中間狀態(tài)分布的偏離,從而破譯密碼。根據(jù)TWINE 的數(shù)據(jù)單元,本文采用了隨機(jī)半字節(jié)的“與”故障模型,即
其中,表示第i輪的第j個(gè)半字節(jié)中間狀態(tài)值,i∈[1,36]且j∈[0,15],表示對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)值,e表示隨機(jī)半字節(jié)故障且e∈[0,15],&表示按位“與”操作。半字節(jié)被影響后的分布規(guī)律如圖2所示。在具體實(shí)現(xiàn)時(shí),軟件通過(guò)結(jié)合中間狀態(tài)與隨機(jī)半字節(jié)故障,進(jìn)行“與”代碼操作實(shí)現(xiàn),硬件通過(guò)外部時(shí)鐘信號(hào)注入毛刺實(shí)現(xiàn)[25]。
圖1 TWINE 結(jié)構(gòu)
圖2 半字節(jié)被影響后的分布規(guī)律
針對(duì)TWINE 密碼的唯密文故障分析包括以下3 個(gè)步驟。
步驟1故障注入。攻擊者使用相同主密鑰對(duì)隨機(jī)明文進(jìn)行加密,在加密運(yùn)行過(guò)程中注入指定輪的隨機(jī)半字節(jié)故障,并獲取相應(yīng)的錯(cuò)誤密文。圖3給出了半字節(jié)故障注入第33 輪隨機(jī)位置時(shí)的故障擴(kuò)散路徑,以故障位置在首個(gè)半字節(jié)為例。
圖3 半字節(jié)故障注入第33 輪隨機(jī)位置時(shí)的故障擴(kuò)散路徑
步驟3破譯主密鑰。利用RK36解密最后一輪,獲得第35 輪的輸出,將故障注入第32 輪,同理可恢復(fù)出倒數(shù)第二輪子密鑰RK35。依次類(lèi)推,破譯TWINE-80 版本主密鑰K,最少需要3 輪子密鑰RK36、RK35和RK34,過(guò)程如下。
破譯TWINE-128 版本主密鑰K,最少需要5 輪子密鑰RK36、RK35、RK34、RK33和RK32,過(guò)程如下。
4.3.1 已有區(qū)分器
1) SEI
SEI 由Fuhr 等[17]提出,用于計(jì)算實(shí)際分布與均勻分布之間的距離。在錯(cuò)誤中間狀態(tài)呈現(xiàn)不均勻分布時(shí),若密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)的SEI值越大,則錯(cuò)誤中間狀態(tài)的實(shí)際分布與均勻分布距離越大。此時(shí),SEI 最大值對(duì)應(yīng)于正確的子密鑰。SEI 表示為
其中,T表示半字節(jié)所有可能取值的個(gè)數(shù),N表示與密鑰候選值相對(duì)應(yīng)的一組錯(cuò)誤中間狀態(tài)個(gè)數(shù),ρ(ε)表示錯(cuò)誤中間狀態(tài)值為ε的個(gè)數(shù),T=24且ε∈[0,15]。
2) MLE
MLE 由Fuhr 等[17]提出,適用于已知錯(cuò)誤中間狀態(tài)的理論分布率的情況,如圖2 所示。將每個(gè)錯(cuò)誤中間狀態(tài)的理論分布率相乘,計(jì)算與密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)發(fā)生的概率。此時(shí),MLE 值越大,表示錯(cuò)誤中間狀態(tài)實(shí)際分布滿足理論分布的可能性越大,即MLE 最大值對(duì)應(yīng)于正確的子密鑰。MLE 表示為
其中,P()表示錯(cuò)誤中間狀態(tài)值的理論概率,N表示與密鑰候選值相對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)個(gè)數(shù)。
3) HW
HW 由Fuhr 等[17]提出,用于計(jì)算錯(cuò)誤中間狀態(tài)與相同長(zhǎng)度的零字符串之間的漢明距離,其值等于錯(cuò)誤中間狀態(tài)的非零個(gè)數(shù)。密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)的HW 值越小,表示錯(cuò)誤中間狀態(tài)的零個(gè)數(shù)越多。此時(shí),HW 最小值對(duì)應(yīng)于正確的子密鑰。HW 表示為
4) GF GF 用于測(cè)量實(shí)際分布與理論分布之間的擬合度[22]。密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)的GF 值越小,表示錯(cuò)誤中間狀態(tài)實(shí)際分布與理論分布之間的差異越小,即擬合度越大。此時(shí),GF 的最小值對(duì)應(yīng)于正確的子密鑰。GF 表示為
其中,T表示半字節(jié)所有可能取值的個(gè)數(shù),ρ(ε)表示錯(cuò)誤中間狀態(tài)值為ε的個(gè)數(shù),γ(ε)表示理論上錯(cuò)誤中間狀態(tài)值為ε的個(gè)數(shù),T=24且ε∈[0,15]。
5) GF-SEI
GF-SEI 結(jié)合了GF 和SEI[22]。首先,攻擊者使用GF 過(guò)濾掉不符合理論分布的密鑰候選值,滿足
其中,表示從χ2分布上側(cè)分位數(shù)表中查找的具有確定精度α的GF 臨界值,λ表示篩選后的密鑰候選值。然后,攻擊者使用SEI 過(guò)濾保留的密鑰候選值λ,滿足
對(duì)于GF-SEI,正確的子密鑰所對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)具有最小的GF 值和最大的SEI 值。
6) GF-MLE
GF-MLE 是由GF 和MLE 組合的雙重區(qū)分器[23]。攻擊者首先利用GF 區(qū)分器篩選出與密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài),保留符合理論分布的錯(cuò)誤中間狀態(tài),滿足
然后,攻擊者使用MLE 選擇使似然函數(shù)最大化的錯(cuò)誤中間狀態(tài)所對(duì)應(yīng)的密鑰候選值,滿足
對(duì)于GF-MLE,正確的子密鑰所對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)具有最小的GF 值和最大的MLE 值。
7) Parzen-HW
Parzen-HW 結(jié)合了Parzen 和HW 的優(yōu)點(diǎn)[24]。首先,使用Parzen 進(jìn)行無(wú)參估計(jì),縮小密鑰候選值的搜索空間。Parzen 的值越大,表示區(qū)域內(nèi)樣本數(shù)越多即對(duì)應(yīng)可能的密鑰候選值。Parzen 滿足
其中,f(u)是窗函數(shù),表示以為中心,窗寬為h的區(qū)域內(nèi)樣本數(shù)量,N表示與密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)個(gè)數(shù)。然后,攻擊者使用HW 對(duì)可能的密鑰候選值進(jìn)行篩選,滿足
對(duì)于Parzen-HW,正確的子密鑰所對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)具有最大的Parzen 值和最小的HW 值。
4.3.2 新型區(qū)分器
1) MLE-HE
直方圖估計(jì)(HE,histogram estimate)以直方圖法作為基礎(chǔ)來(lái)計(jì)算密鑰候選值的概率密度。由圖2 可知,值較小的半字節(jié)出現(xiàn)概率較高,因此錯(cuò)誤中間狀態(tài)值的理論個(gè)數(shù)累加和占比越大,表示其出現(xiàn)較小半字節(jié)的次數(shù)越多,即對(duì)應(yīng)正確的子密鑰,HE 表達(dá)式為
其中,N表示與密鑰候選值相對(duì)應(yīng)的錯(cuò)誤中間狀態(tài)個(gè)數(shù),M表示所有密鑰候選值的個(gè)數(shù),h()表示錯(cuò)誤中間狀態(tài)的理論個(gè)數(shù)。
MLE-HE 結(jié)合了MLE 和HE 這2 種統(tǒng)計(jì)方法。首先,攻擊者使用MLE 統(tǒng)計(jì)錯(cuò)誤中間狀態(tài),篩選出部分可能的密鑰候選值,滿足
然后,攻擊者使用HE 進(jìn)一步篩選。對(duì)于MLE-HE,當(dāng)錯(cuò)誤中間狀態(tài)同時(shí)具有最大的MLE值和HE 值,即該錯(cuò)誤中間狀態(tài)的分布滿足理論分布且具有最大的概率密度時(shí),則對(duì)應(yīng)正確子密鑰。
2) HW-HE
HW-HE 結(jié)合了HW 和HE 的優(yōu)點(diǎn),能夠提高唯密文故障分析的效率。首先,攻擊者使用HW 篩選出具有較小漢明距離的錯(cuò)誤中間狀態(tài),滿足
然后,攻擊者使用HE 進(jìn)一步篩選,概率密度最大的一組中間狀態(tài)對(duì)應(yīng)正確的子密鑰,滿足
對(duì)于HW-HE,基于按位“與”操作,半字節(jié)中出現(xiàn)0、1 的比例為3:1。當(dāng)一組錯(cuò)誤中間狀態(tài)同時(shí)具有最小的HW 值和最大的HE 值時(shí),則這組錯(cuò)誤中間狀態(tài)的0 和1 比例最大,因而最接近圖2 的理論分布,那么該錯(cuò)誤中間狀態(tài)對(duì)應(yīng)正確子密鑰。
3) HW-MLE-HE
HW-MLE-HE 是在MLE-HE 和HW-HE 基礎(chǔ)上的改進(jìn)。首先,攻擊者使用HW 縮小密鑰候選值的搜索空間,滿足
然后,攻擊者利用MLE 進(jìn)一步統(tǒng)計(jì)密鑰候選值對(duì)應(yīng)的錯(cuò)誤中間狀態(tài),選擇似然函數(shù)值較大的錯(cuò)誤中間狀態(tài),滿足
最后,攻擊者使用HE 在剩余的密鑰候選值中進(jìn)行篩選、驗(yàn)證,確定唯一正確的子密鑰。滿足
對(duì)于HW-MLE-HE,在篩選過(guò)程中,攻擊者選擇漢明權(quán)重較小的若干組錯(cuò)誤中間狀態(tài),再比較各組錯(cuò)誤中間狀態(tài)的極大似然估計(jì)值,保留具有最大值的錯(cuò)誤中間狀態(tài),其對(duì)應(yīng)的密鑰候選值中可能包含正確子密鑰。為了保證所篩選的密鑰的正確性和唯一性,利用HE 比較各組錯(cuò)誤中間狀態(tài)的概率密度,具有最大值的錯(cuò)誤中間狀態(tài)與圖2 的理論分布最接近,即對(duì)應(yīng)正確子密鑰。所有區(qū)分器的對(duì)比如表3 所示。
本實(shí)驗(yàn)采用Java 語(yǔ)言編程,利用計(jì)算機(jī)軟件來(lái)模擬故障產(chǎn)生和注入,在密碼算法運(yùn)行過(guò)程中注入半字節(jié)故障。以TWINE-128 版本為例,唯密文故障分析每次恢復(fù)子密鑰的16 bit,重復(fù)4 次,即可恢復(fù)最后一輪子密鑰,依次類(lèi)推,恢復(fù)最后5 輪子密鑰,即可推導(dǎo)出128 bit 主密鑰。在故障數(shù)、準(zhǔn)確度、耗時(shí)和復(fù)雜度指標(biāo)上,恢復(fù)TWINE 各版本的主密鑰與恢復(fù)子密鑰的16 bit 具有固定的比例關(guān)系。本節(jié)以恢復(fù)子密鑰的16 bit 的實(shí)驗(yàn)數(shù)據(jù)為單元,計(jì)算衡量各區(qū)分器分析TWINE 各版本的效果。附錄1 給出了所有實(shí)驗(yàn)數(shù)據(jù)。
故障數(shù)指破譯密碼主密鑰或子密鑰時(shí),所需要注入的故障個(gè)數(shù)。在相同的成功率下,破譯密碼所需要的故障數(shù)越少,表明攻擊代價(jià)越少。圖4 給出了不同區(qū)分器恢復(fù)TWINE 子密鑰的16 bit 的故障數(shù)與成功率之間的關(guān)系。其中,橫坐標(biāo)表示故障數(shù),縱坐標(biāo)表示成功率,不同曲線表示不同區(qū)分器唯密文故障分析的結(jié)果。以TWINE-128 版本為例,利用區(qū)分器SEI、MLE、HW、GF、GF-SEI、GF-MLE、Parzen-HW、MLE-HE、HW-HE 和HW-MLE-HE以至少99%的成功率恢復(fù)子密鑰,最少需要注入的故障數(shù)為236、144、148、224、216、216、180、132、128 和124。與已有區(qū)分器相比,本文提出的 3 種新型區(qū)分器 MLE-HE、HW-HE 和HW-MLE-HE 需要的故障數(shù)較少,攻擊效率高。此時(shí),HW-MLE-HE 具有最少故障數(shù)。
表3 區(qū)分器對(duì)比
圖4 不同區(qū)分器恢復(fù)TWINE 子密鑰的16 bit 故障數(shù)與的成功率的關(guān)系
準(zhǔn)確度用于衡量各區(qū)分器篩選出的密鑰候選值個(gè)數(shù)與理論值個(gè)數(shù)之間的差距。本節(jié)使用平均絕對(duì)誤差(MAE,mean absolute error)來(lái)衡量各個(gè)區(qū)分器的準(zhǔn)確度。MAE 表示為
其中,V=1000表示實(shí)驗(yàn)次數(shù),Q v表示第v次實(shí)驗(yàn)篩選出的候選值個(gè)數(shù),第v次實(shí)驗(yàn)理論候選值個(gè)數(shù)為1。MAE 值越小,表示實(shí)驗(yàn)準(zhǔn)確度越高。圖5 給出了不同區(qū)分器恢復(fù)TWINE 子密鑰的16 bit 的故障數(shù)與MAE 的關(guān)系。在相同故障數(shù)下,MLE-HE、HW-HE 和HW-MLE-HE 的MAE 值小于已有區(qū)分器的MAE 值,且快速逼近于0,此時(shí),HW-MLE-HE具有最小MAE 值。
耗時(shí)是指恢復(fù)密鑰所花費(fèi)的時(shí)間,包括導(dǎo)入故障、遍歷候選密鑰和統(tǒng)計(jì)中間狀態(tài)所消耗的時(shí)間。圖6 給出了不同區(qū)分器恢復(fù)TWINE 子密鑰的16 bit的故障數(shù)與耗時(shí)之間的關(guān)系,其中橫坐標(biāo)表示故障數(shù),縱坐標(biāo)表示耗時(shí),不同的曲線表示不同區(qū)分器。以TWINE-128 版本為例,利用區(qū)分器SEI、MLE、HW、GF、GF-SEI、GF-MLE、Parzen-HW、MLE-HE、HW-HE 和HW-MLE-HE 恢復(fù)子密鑰最少需要的時(shí)間分別為11.6 s、14 s、7.2 s、14 s、13.6 s、16.8 s、9.6 s、14.4 s、7.2 s 和8.4 s。此時(shí),HW 和HW-HE 耗時(shí)最少,HW-MLE-HE 次之。
圖5 各區(qū)分器恢復(fù)TWINE 子密鑰的16 bit 的故障數(shù)與MAE 的關(guān)系
圖6 各區(qū)分器恢復(fù)TWINE 子密鑰的16 bit 的故障數(shù)與耗時(shí)的關(guān)系
時(shí)間復(fù)雜度和數(shù)據(jù)復(fù)雜度用于衡量破譯密碼時(shí)所需要的時(shí)間量和數(shù)據(jù)量。表4 給出了不同區(qū)分器恢復(fù)TWINE 子密鑰的時(shí)間復(fù)雜度和數(shù)據(jù)復(fù)雜度。新型區(qū)分器MLE-HE、HW-HE 和HW-MLE-HE的復(fù)雜度均小于現(xiàn)有區(qū)分器的復(fù)雜度,其中HW-MLE-HE 的復(fù)雜度最小。
本節(jié)采用故障數(shù)、準(zhǔn)確度、耗時(shí)和復(fù)雜度等指標(biāo)衡量各個(gè)區(qū)分器對(duì)TWINE 密碼進(jìn)行唯密文故障分析的效果。從圖4~圖6 和表4 可以看出,新型區(qū)分器MLE-HE、HW-HE 和HW-MLE-HE均有效減少了故障數(shù),成功率達(dá)到99%及以上,其中,HW-MLE-HE 所需要的故障數(shù)較少、準(zhǔn)確度較高、復(fù)雜度較?。籋W-HE 和HW-MLE-HE耗時(shí)較少。一般情況下,故障數(shù)是衡量唯密文故障攻擊的首要標(biāo)準(zhǔn)。因此,在資源受限的物聯(lián)網(wǎng)環(huán)境下,建議采用HW-MLE-HE 對(duì)TWINE 密碼進(jìn)行唯密文故障分析,可以達(dá)到相對(duì)較好的攻擊效果。
表4 不同區(qū)分器恢復(fù)TWINE 子密鑰的復(fù)雜度
本文針對(duì)TWINE 密碼抵抗唯密文故障分析的安全性進(jìn)行了研究,提出的新型區(qū)分器MLE-HE、HW-HE 和HW-MLE-HE,均可以減少攻擊所需的故障數(shù),并提高攻擊效率。研究表明,TWINE 密碼易受到唯密文故障分析的威脅,在物聯(lián)網(wǎng)中使用該密碼時(shí),設(shè)計(jì)人員需采取有效措施用于抵御唯密文故障分析的攻擊。
附錄1 實(shí)驗(yàn)數(shù)據(jù)
明文:隨機(jī)生成
TWINE-80 版本主密鑰:00112233445566778899
TWINE-128 版本主密鑰:00112233445566778899AABBCCDDEEFF
本文中所有實(shí)驗(yàn)數(shù)據(jù)如表5~表7 所示。
表5 各區(qū)分器恢復(fù)TWINE-80 和TWINE-128 子密鑰的16 bit 的MAE 值
表6 各區(qū)分器恢復(fù)TWINE-80 和TWINE-128 子密鑰的16 bit 的成功概率
(續(xù)表6)
表7 各區(qū)分器恢復(fù)TWINE-80 和TWINE-128 子密鑰的16 bit 的時(shí)間
(續(xù)表7)