• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      輕量級(jí)分組密碼GIFT 的差分故障攻擊*

      2019-07-16 06:31:14馮天耀韋永壯史佳利鄭彥斌
      密碼學(xué)報(bào) 2019年3期
      關(guān)鍵詞:密文比特差分

      馮天耀, 韋永壯, 史佳利, 叢 旌, 鄭彥斌

      1.桂林電子科技大學(xué)廣西密碼學(xué)與信息安全重點(diǎn)實(shí)驗(yàn)室, 桂林541004

      2.桂林電子科技大學(xué)廣西無(wú)線寬帶通信與信號(hào)處理重點(diǎn)實(shí)驗(yàn)室, 桂林541004

      3.桂林電子科技大學(xué)廣西高校云計(jì)算與復(fù)雜系統(tǒng)重點(diǎn)實(shí)驗(yàn)室, 桂林541004

      1 引言

      物聯(lián)網(wǎng)設(shè)備通常受到存儲(chǔ)資源、運(yùn)算資源、能耗資源等限制, 不能運(yùn)行高強(qiáng)度的密碼算法和協(xié)議.從而, 輕量級(jí)算法和協(xié)議應(yīng)運(yùn)而生[1–13], 旨在保證設(shè)備安全性的同時(shí), 節(jié)省資源的消耗.目前國(guó)內(nèi)外陸續(xù)提了許多輕量級(jí)密碼算法, 如GIFT[4]、PRESENT[5]、MIDORI[6]、PRINCE[7]、LBLOCK[8]、LED[9]、MIBS[10]、TWINE[11]等.其中GIFT 算法是Subhadeep Banik 等人于2017年提出的一種輕量級(jí)密碼算法[4], 其分組長(zhǎng)度支持64 比特或128 比特, 密鑰長(zhǎng)度為128 比特, 輪數(shù)分別為28 輪或40 輪.GIFT 密碼算法是PRESENT 算法的一種改進(jìn)算法, 不但節(jié)省了大量的資源消耗, 還提高了運(yùn)行速度, 與此同時(shí)還改進(jìn)了PRESENT 算法線性層的脆弱部分.GIFT 算法設(shè)計(jì)簡(jiǎn)單, 在資源消耗方面甚至優(yōu)于SIMON[12]、SKINNY[13]等算法, 成為當(dāng)前最具實(shí)現(xiàn)效率的算法之一.

      1997年Biham 和Shamir 針對(duì)DES 密碼算法提出了差分故障攻擊[14], 其核心思想是在密碼設(shè)備正常運(yùn)行時(shí)通過外部物理攻擊得到錯(cuò)誤密文, 運(yùn)用差分攻擊的原理, 結(jié)合錯(cuò)誤密文與正確密文獲取密鑰.關(guān)于差分故障攻擊的研究已經(jīng)成為密碼學(xué)研究熱點(diǎn)之一.目前, 差分故障攻擊已經(jīng)應(yīng)用到一些輕量級(jí)密碼算法的分析中, 如MIDORI[15]、PRIDE[16]、PRESENT[17,18]等.以PRESENT 算法為例, 文獻(xiàn)[17]能夠通過在非線性層注入18 個(gè)單比特故障恢復(fù)全部密鑰比特.文獻(xiàn)[15]能夠通過注入3 次隨機(jī)半字節(jié)、2次隨機(jī)字節(jié)故障, 分別獲取Midori64、Midori128 的密鑰信息.但是, 關(guān)于GIFT 算法能否抵抗差分故障攻擊, 目前沒有相關(guān)的研究進(jìn)展.

      本文通過利用GIFT 算法的內(nèi)部結(jié)構(gòu)提出了兩種通用、有效的差分故障攻擊方法.其核心思想是在S盒運(yùn)算前注入錯(cuò)誤故障, 利用差分密碼分析的基本原理, 分析錯(cuò)誤故障導(dǎo)致的S 盒輸入差分與輸出差分,進(jìn)而獲取內(nèi)部狀態(tài)的信息.針對(duì)GIFT 算法的輪結(jié)構(gòu), 根據(jù)其置換層的變換規(guī)律, 尋找出故障在每一輪的傳播特點(diǎn), 再根據(jù)其傳播特點(diǎn)選擇錯(cuò)誤故障注入的位置, 設(shè)計(jì)出故障模型.本文所提出的兩種差分故障攻擊方法, 每一種攻擊方法都是注入單比特的錯(cuò)誤故障, 使S 盒的輸入差分控制為1 比特.通過S 盒輸出差分的值對(duì)差分分布表進(jìn)行搜索, 獲取S 盒輸入值的一組候選值, 通過多組候選值能夠篩選出S 盒的輸入信息.研究結(jié)果表明, 第一種攻擊方法分別在第28、27、26、25 輪S 盒運(yùn)算前注入錯(cuò)誤故障, 理論上平均192 個(gè)錯(cuò)誤密文能夠恢復(fù)全部的密鑰信息; 第二種攻擊方法在第一種攻擊方法的基礎(chǔ)上做出了改進(jìn), 分別在第26、25、24、23 輪S 盒運(yùn)算前注入錯(cuò)誤故障, 理論上平均32 個(gè)錯(cuò)誤密文能夠恢復(fù)全部的密鑰信息.由于實(shí)驗(yàn)的樣本空間有限, 在實(shí)驗(yàn)中需要錯(cuò)誤密文數(shù)比理論值稍多, 但也能在1 秒內(nèi), 平均通過44 個(gè)錯(cuò)誤密文恢復(fù)密鑰信息.因此, 在不加防護(hù)的條件下, 本文所提出的方法能夠有效地攻擊GIFT 算法.

      本文第2 節(jié)給出了本文所用符號(hào)的說(shuō)明, 簡(jiǎn)述了GIFT 算法的密碼結(jié)構(gòu)和密鑰編排; 第3 節(jié)介紹了差分的基本思想, 對(duì)GIFT-64-128 算法的性質(zhì)進(jìn)行分析; 第4 節(jié)闡述了對(duì)GIFT-64-128 算法進(jìn)行差分故障攻擊的攻擊原理、攻擊方法及攻擊步驟; 第5 節(jié)給出了攻擊實(shí)驗(yàn)的基本配置和實(shí)驗(yàn)結(jié)果; 第6 節(jié)總結(jié).

      2 預(yù)備知識(shí)

      2.1 符號(hào)說(shuō)明

      具體的參數(shù)定義如下.

      P: 明文;

      K: 密鑰;

      Ki: 第i 輪的輪密鑰,表示Ki的第j 個(gè)比特;

      Bi: 在第i 輪, 沒有注入錯(cuò)誤的S 盒輸入,表示Bi的第j 個(gè)比特;

      Bi?: 在第i 輪, 注入了錯(cuò)誤的S 盒輸入;

      BiNj: 在第i 輪, 第j 個(gè)S 盒的正確輸入, Bi表示BiNj的第n 個(gè)比特;

      Si: 在第i 輪, 沒有注入錯(cuò)誤的S 盒輸出,表示Si的第j 個(gè)比特;

      Si?: 在第i 輪, 注入了錯(cuò)誤的S 盒輸出;

      SiNj: 在第i 輪, 第j 個(gè)S 盒的正確輸出, SiNjn表示SiNj的第n 個(gè)比特;

      C: 正確密文;

      D: 錯(cuò)誤密文.

      2.2 GIFT 算法簡(jiǎn)介

      GIFT 算法是一種基于SPN 結(jié)構(gòu)的輕量級(jí)分組密碼算法, 該算法分為兩種版本, 一種是GIFT-64-128, 它的分組長(zhǎng)度為64 比特, 密鑰長(zhǎng)度為128 比特, 輪數(shù)為28 輪; 另一種是GIFT-128-128, 它的分組長(zhǎng)度為128 比特, 密鑰長(zhǎng)度為128 比特, 輪數(shù)為40 輪.本文是以GIFT-64-128 為例進(jìn)行闡述.

      2.2.1 GIFT-64-128 的輪結(jié)構(gòu)

      GIFT-64-128 的輪結(jié)構(gòu)由非線性層、線性層以及異或密鑰與輪常數(shù)組成, 如圖1 所示.

      (1)非線性代換: GIFT-64-128 每一輪的非線性代換都是由16 個(gè)并行的S 盒構(gòu)成, 每一個(gè)S 盒都是4×4 的S 盒, S 盒代換表如表1 所示.

      (2)線性置換: GIFT-64-128 的置換層改變了S 盒輸出后比特位的次序, P 盒置換表如表2 所示.

      (3)異或密鑰與輪常數(shù): GIFT-64-128 算法的每一輪都從128 比特的密鑰集合中提取出32 比特進(jìn)行運(yùn)算.提取出的K 分成兩個(gè)部分j ∈(0,1,··· ,15).同時(shí),每一輪的第3、7、11、15、19、23 位都分別異或輪常數(shù)C =c0c1c2c3c4c5的一位,并且每一輪第63 位都與“1”異或.即S3=S3⊕c0,S7=S7⊕c1,S11=S11⊕c2,S15=S15⊕c3,S19=S19⊕c4, S23=S23⊕c5, S63=S63⊕1.

      表1 GIFT-64-128 的S 盒代換[4]Table 1 Specifications of GIFT-64-128 S-box [4]

      表2 GIFT-64-128 的P 盒置換[4]Table 2 Specifications of GIFT-64-128 bit permutation [4]

      2.2.2 GIFT-64-128 算法的密鑰編排與輪常數(shù)編排

      密鑰編排: 將128 比特的密鑰放入一個(gè)4×32 的矩陣中, 即

      每一輪取第一行的32 位密鑰比特進(jìn)入輪函數(shù), 之后進(jìn)行密鑰更新.首先, 將第一行的的密鑰比特分成兩個(gè)組, (k0||k1||···||k15)與(k16||k17||···||k31); 然后將第一組左循環(huán)移位12 位, 將第二組左循環(huán)移位2 位;最后將矩陣每一行向上循環(huán)移動(dòng)1 行.即:

      輪常數(shù)編排: 首先將6 比特的輪常數(shù)置為0, (c5||c4||c3||c2||c1||c0)=(0||0||0|0||0||0), 然后左循環(huán)移動(dòng)1 位, 并將c5進(jìn)行異或計(jì)算, 得到新的輪常數(shù), 即(c5||c4||c3||c2||c1||c0)→(c4||c3||c2||c1||c0||c5⊕c4⊕1).輪常數(shù)和密鑰不同, 密鑰是先進(jìn)入輪函數(shù)再更新, 輪常數(shù)是先更新再進(jìn)入輪函數(shù).

      3 GIFT-64-128 算法結(jié)構(gòu)分析

      3.1 GIFT-64-128 算法性質(zhì)1

      每4 個(gè)連續(xù)的S 盒劃分成一個(gè)組, 則每一個(gè)S 盒的輸入來(lái)自同一組不同的4 個(gè)S 盒的輸出, 每一個(gè)S 盒的輸出會(huì)去往不同組的4 個(gè)S 盒.具體傳播位置置換如圖2 所示.

      圖2 GIFT-64-128 的置換圖[4]Figure 2 Permutation of GIFT-64-128 [4]

      3.2 GIFT-64-128 算法性質(zhì)2

      GIFT-64-128 算法的主密鑰為128 比特, 分成4 組, 每一輪有1 組密鑰參與了運(yùn)算.在密鑰編排中,不同組的密鑰間不會(huì)互相影響, 同一組的密鑰之間也只是循環(huán)移位, 因此, 得到4 輪連續(xù)的輪密鑰就能求解唯一的主密鑰.

      3.3 GIFT-64-128 算法性質(zhì)3

      定義1 設(shè)IN 和IN?是S 盒中兩個(gè)不同的輸入, S(IN)和S(IN?)是它們對(duì)應(yīng)的兩個(gè)S 盒輸出, 稱?IN′= IN⊕IN?為S 盒的輸入差分, ?OUT′= S(IN)⊕S(IN?)為S 盒的輸出差分.每一對(duì)?IN′都可以得到一個(gè)相應(yīng)的?OUT′, ?IN′有24=16 種可能.對(duì)?IN′的每一對(duì), 可以計(jì)算出一個(gè)?OUT′, 共可計(jì)算出16 個(gè)?OUT′, 它們分布在24=16 個(gè)可能的值上, 這些分布的不均勻性是差分分布表的基礎(chǔ)[19].GIFT-64-128 算法S 盒的差分性如表3 所示.

      4 GIFT-64-128 算法差分故障分析

      4.1 基本假設(shè)

      假設(shè)滿足下列攻擊條件: (1)每一次攻擊, 攻擊者能夠注入任意比特的錯(cuò)誤; (2)每一次攻擊, 攻擊者能夠選擇在S 盒前或者在S 盒后注入錯(cuò)誤; (3)攻擊者能夠選定任意的明文, 在加密過程中, 能夠?qū)?輪注入錯(cuò)誤, 并且能夠獲得相應(yīng)的正確密文與錯(cuò)誤密文.本文所提出的攻擊方法的關(guān)鍵是通過搜索S 盒的差分分布表來(lái)尋找S 盒的輸入, 進(jìn)而恢復(fù)密鑰.

      表3 GIFT-64-128 中S 盒的差分分布表[4]Table 3 Differential distribution table of GIFT-64-128 S-box [4]

      4.2 攻擊方法1

      4.2.1 攻擊方法1 的故障模型

      如圖3 所示, 根據(jù)GIFT-64-128 算法非線性層的錯(cuò)誤傳播規(guī)律, 在第28 輪的S 盒運(yùn)算前, 注入1 比特的錯(cuò)誤故障, 這個(gè)錯(cuò)誤會(huì)進(jìn)入到B28Nj中, 錯(cuò)誤比特位可能為我們假設(shè)S 盒的輸入差分為?IN′, 則?IN′= B28Nj⊕B28?Nj∈(0001,0010,0100,1000).通過正確密文C與錯(cuò)誤密文D 的信息, 我們能夠獲得S 盒的輸出差分?OUT′.利用GIFT-64-128 算法S 盒的差分分布表, 結(jié)合輸出差分?OUT′, 可以列出一組B28Nj的候選值如表4 所示, 接著我們進(jìn)一步分析整理表4,可以得到每一個(gè)S 盒的輸入所對(duì)應(yīng)的所有可能出現(xiàn)的輸出差分, 如表5.通過多組候選值, 我們能夠篩選出唯一的B28Nj, 進(jìn)而恢復(fù)密鑰信息K.

      表4 GIFT-64-128 中S 盒每一個(gè)輸出差分可能的輸入Table 4 Possible inputs of each difference output of GIFT-64-128 S-box

      4.2.2 攻擊方法1 的具體步驟

      (1)選擇任意明文P, 在初始密鑰K 下進(jìn)行加密, 獲取正確明文C;

      (2)輸入同樣的明文P, 在第28 輪的S 盒運(yùn)算前注入錯(cuò)誤故障, 得到相應(yīng)的錯(cuò)誤密文D1;

      (3)通過正確密文和錯(cuò)誤密文, 找到故障的S 盒, 并求出輸出差分:=P ?layer?1(C ⊕D1);

      圖3 攻擊方法1 的故障模型Figure 3 Fault model of attack algorithm 1

      表5 GIFT-64-128 中S 盒輸入對(duì)應(yīng)的所有可能的輸出差分Table 5 All possible difference output for GIFT-64-128 S-box input

      (5)重復(fù)(2)–(4), 直到得到唯一的一個(gè)正確的S 盒輸入;

      (6)通過K28=P?layer (S?layer(B28))⊕C, 得到第28 輪的密鑰K28;

      (7)輸入同樣的明文P, 在第27 輪的S 盒運(yùn)算前注入錯(cuò)誤故障, 得到相應(yīng)的錯(cuò)誤密文D2;

      (8)通過正確密文和錯(cuò)誤密文,找到注入了故障的S 盒,并求出輸出差分:=P ?layer?1(S?layer?1(P ?layer?1(C ⊕K28))⊕S ?layer?1(P ?layer?1(D2⊕K28)));

      (10)重復(fù)(7)–(9), 直到得到唯一的一個(gè)正確的第27 輪S 盒輸入;

      (11)求解第27 輪密鑰K27, K27=P ?layer(S ?layer(B27))⊕S ?layer?1(P ?layer?1(C ⊕K28));

      (12)通過與上述步驟類似的方法依次恢復(fù)K26,K25;

      (13)通過K25,K26,K27,K28獲取唯一的一個(gè)主密鑰.

      4.2.3 攻擊方法1 分析

      在第28 輪S 盒運(yùn)算前注入1 比特的故障錯(cuò)誤, 能夠得到一個(gè)S28?Nj.根據(jù)表4 所示, 平均3 個(gè)不同的S28?Nj能夠搜索出唯一的正確B28Nj.因此, 平均48 個(gè)錯(cuò)誤故障可以確定唯一的正確B28.最后,已知B28以及正確密文C, 可以得到密鑰K28的值.

      4.3 攻擊方法2

      4.3.1 攻擊方法2 的故障模型

      盡管運(yùn)用攻擊方法1 的故障模型能夠得到GIFT-64-128 算法的全部主密鑰, 但是獲取每一輪的密鑰都需要48 個(gè)錯(cuò)誤故障, 恢復(fù)全部128 比特的主密鑰則需要48×4=192 個(gè)錯(cuò)誤密文.顯然, 所需要的錯(cuò)誤密文數(shù)量比較大, 在實(shí)際操作時(shí)需要占用大量的存儲(chǔ)資源和計(jì)算資源, 因此, 我們提出了一種改進(jìn)的DFA方案.

      通過進(jìn)一步分析GIFT-64-128 算法置換規(guī)律, 我們得出一個(gè)結(jié)論, 在第26 輪的S 盒運(yùn)算前注入1 比特的故障, 能夠讓故障在第28 輪的擴(kuò)散效果達(dá)到最大, 并且在第28 輪, 每個(gè)被影響的S 盒的輸入也只有1 比特, 即?IN′∈(0001,0010,0100,1000).接著我們?cè)龠\(yùn)用攻擊方法1 的基本思想去求解密鑰, 這樣可以大量減少所需錯(cuò)誤密文數(shù)量.攻擊方法2 的攻擊模型如圖4 所示.

      圖4 攻擊方法2 的故障模型Figure 4 Fault model of attack algorithm 2

      4.3.2 攻擊方法2 的具體步驟

      本節(jié)將具體地描述用攻擊方法2 攻擊GIFT-64-128 算法的過程.

      (1)固定明文P 和密鑰K.在密鑰K 的作用下, 明文P 通過加密模塊后, 得到正確密文C.

      (2)恢復(fù)最后一輪(第28 輪)的密鑰K28, 步驟如下.

      (a)在第26 輪輪函數(shù)運(yùn)行之前注入1 比特的隨機(jī)故障到寄存器B26Nj(0j16)中, 繼續(xù)進(jìn)行加密運(yùn)算并得到錯(cuò)誤密文D1.將正確密文C 與錯(cuò)誤密文D1進(jìn)行異或, 得到密文的輸出差分?D1.根據(jù)逆推輪函數(shù)的方法, 對(duì)密文的輸出差分?D1反序變換, 得到第28 輪多個(gè)S盒的輸出差分?S28Nj(0j16).?S28Nj=P ?layer?1?D1.

      (b)查找表4, 由第28 輪S 盒輸出差分?S28Nj(0j16)列出相應(yīng)S 盒正確輸入B28N 的候選值.

      (c)在第26 輪輪函數(shù)運(yùn)行之前, 多次注入1 比特的隨機(jī)故障, 重復(fù)步驟(a)和步驟(b), 不斷縮小S 盒正確輸入B28N 的候選值的個(gè)數(shù), 直到只剩下唯一的一個(gè).此時(shí)得到的就是正確的S盒輸入B28N.

      (d)正向計(jì)算輪函數(shù), 將正確的S 盒輸入B28N 代入輪函數(shù)中, 計(jì)算得到第28 輪的密鑰K28的值.K28=P ?layer(S ?layer(B28))⊕C.

      (3)恢復(fù)倒數(shù)第二輪(第27 輪)的密鑰K27, 步驟如下.

      (a)確定密鑰 K28的值后, 在第 25 輪輪函數(shù)運(yùn)行之前注入 1 比特的隨機(jī)故障到寄存器B25Nj(0j16)中, 繼續(xù)加密得到錯(cuò)誤密文D2.逆推輪函數(shù), 將正確密文C 反序變換, 結(jié)合密鑰K28, 計(jì)算出第27 輪的S27N ⊕K27.S27N ⊕K27= P ?layer?1(S ?layer?1(P ?layer?1(C ⊕K28))); 再將錯(cuò)誤密文D2反序變換, 結(jié)合密鑰K28, 可以計(jì)算出第27 輪的S27N?⊕K27.S27N?⊕K27=P ?layer?1(S ?layer?1(P ?layer?1(D2⊕K28))).進(jìn)一步可以得到第27 輪S 盒輸出差分?S27N.?S27N =S27N ⊕K27⊕S27N?⊕K27.

      (b)查找表4, 根據(jù)第27 輪S 盒輸出差分?S27Nj(0j16), 列出相應(yīng)第27 輪S 盒正確輸入B27N 的候選值.

      (c)在第25 輪輪函數(shù)運(yùn)行之前, 多次注入1 比特的隨機(jī)故障, 重復(fù)步驟(a)和步驟(b), 不斷縮小S 盒正確輸入B27N 的候選值的個(gè)數(shù), 直到只剩下唯一的一個(gè).此時(shí)得到的就是正確的S盒輸入B27N.

      (d)正向計(jì)算輪函數(shù), 將正確的S 盒輸入B27N 代入輪函數(shù)中, 計(jì)算得到第27 輪密鑰加之前的狀態(tài)P ?layer(S ?layer(B27)), 之后通過異或B28N, 得到第27 輪的密鑰值K27.K27=P ?layer(S ?layer(B27))⊕B28N.

      (4)恢復(fù)倒數(shù)第三輪(第26 輪)的密鑰K26, 步驟如下.

      (a)確定密鑰K27,K28的值后,在第24 輪輪函數(shù)運(yùn)行之前注入1 比特的隨機(jī)故障到B24Nj(0j16), 得到錯(cuò)誤密文D3.逆推輪函數(shù), 分別將正確密文C 和錯(cuò)誤密文D3反序變換, 結(jié)合密鑰K27、K28, 得到第26 輪S 盒輸出差分?S26N.

      (b)通過與(3)相類似的方法計(jì)算出第26 輪密鑰K26.

      (5)恢復(fù)倒數(shù)第四輪(第25 輪)的密鑰K25, 步驟如下.確定密鑰K26,K27,K28的值后, 在第23 輪輪函數(shù)運(yùn)行之前注入1 比特的隨機(jī)故障到B23Nj(0j16), 得到錯(cuò)誤密文D4.通過與上述(2)–(4)類似的方法恢復(fù)第25 輪的密鑰K25.

      (6)利用密鑰編排, 逆向計(jì)算K25,K26,K27,K28, 得到唯一的一個(gè)主密鑰.

      4.3.3 攻擊方法2 分析

      根據(jù)表4 所示, 注入1 比特的故障錯(cuò)誤, 經(jīng)過S 盒后到下一輪, 有的概率保持1 比特的故障錯(cuò)誤, 有的概率變成2 比特的故障錯(cuò)誤, 有的概率變成3 比特的故障錯(cuò)誤, 有的概率變成4 比特的故障錯(cuò)誤.顯而易見, 通常情況下, 在第26 輪S 盒運(yùn)算前注入1 比特的故障錯(cuò)誤, 在第28 輪能夠得到至少4 個(gè)注入故障錯(cuò)誤的B28Nj.在這種情況下, 我們恢復(fù)第28輪的密鑰K28所需要的錯(cuò)誤密文則減少到12 個(gè).由于我們是在第26 輪的S 盒運(yùn)算前注入的故障錯(cuò)誤,因此, 在我們恢復(fù)K28的同時(shí), 也可以得到第27 輪的24 個(gè)注入了錯(cuò)誤的B27Nj, 只需要在第25 輪的S盒運(yùn)算前, 再注入6 次錯(cuò)誤, 得到6 個(gè)錯(cuò)誤密文, 就可以恢復(fù)K27; 由此類推, 恢復(fù)K26需要在第24 輪的S 盒運(yùn)算前, 再注入6 次錯(cuò)誤; 恢復(fù)K25需要在第23 輪的S 盒運(yùn)算前再注入8 次錯(cuò)誤.綜上所述, 理論上利用攻擊方法2, 我們只需要32 個(gè)錯(cuò)誤密文就可以獲取GIFT-64-128 算法的全部主密鑰.

      5 攻擊實(shí)驗(yàn)和結(jié)果對(duì)比

      5.1 實(shí)驗(yàn)配置

      本文使用一臺(tái)普通PC 機(jī)進(jìn)行實(shí)驗(yàn), CPU 為Inter(R)Core(TM)i7-6700HQ, 主頻2.60 GHz; 內(nèi)存16 GB; 64 位操作系統(tǒng); 使用Microsoft Visual Studio 2010 編程.

      5.2 攻擊實(shí)驗(yàn)結(jié)果

      本文的故障注入是通過編程語(yǔ)言修改GIFT-64-128 算法的加密過程進(jìn)行實(shí)現(xiàn)的, 再通過C++ 程序?qū)⒆⑷腚S機(jī)故障所得到的錯(cuò)誤密文進(jìn)行處理, 最后記錄恢復(fù)主密鑰所需要的錯(cuò)誤密文、每一輪的錯(cuò)誤密文數(shù)量、程序運(yùn)行時(shí)間及輪密鑰等.我們進(jìn)行了多組實(shí)驗(yàn), 現(xiàn)僅列舉其中15 組如表6 所示.表7 列舉了序號(hào)1 的實(shí)驗(yàn)數(shù)據(jù).

      由于我們的樣本空間有限, 樣本的量不夠多, 因此所得到的結(jié)果與理論值有所差別.我們實(shí)驗(yàn)中所選擇的樣本空間在注入故障后能有效利用的故障傳播路徑比理論值略少, 即每個(gè)故障注入對(duì)S 盒輸入的影響比理論上略少, 要達(dá)到理論上的故障傳播效果就會(huì)需要更多的錯(cuò)誤密文, 因此, 所需要的實(shí)際錯(cuò)誤密文數(shù)量會(huì)略多于理論值, 但平均也只需要44 個(gè)錯(cuò)誤密文就能在1 秒內(nèi)恢復(fù)全部的密鑰信息.

      在序號(hào)1 實(shí)驗(yàn)中, 我們首先固定明文為FEDCBA9876543210, 密鑰為FEDCBA9876543210FEDC BA9876543210, 放入加密算法中進(jìn)行加密, 獲得密文C1B71F66160FF587.然后在第26 輪輪函數(shù)前, 注入故障錯(cuò)誤, 通過注入15 次故障錯(cuò)誤能夠計(jì)算出第28 輪的輪密鑰EDCF98BA;接著再依次在第25、24、23 輪輪函數(shù)前, 分別通過注入6 次、7 次、10 次的故障錯(cuò)誤, 能夠計(jì)算出第27 輪的輪密鑰65471032、第26 輪的輪密鑰EDCF98BA 及第25 輪的輪密鑰65471032.最后, 通過逆運(yùn)算密鑰編排能夠得出主密鑰為FEDCBA9876543210FEDCBA9876543210, 與原始密鑰一致, 驗(yàn)證了本文所提出方法的正確性, 并且通過實(shí)際分析證明, 只需較少的錯(cuò)誤密文數(shù)量就能夠恢復(fù)全部的密鑰信息.

      表6 差分故障攻擊GIFT-64-128 算法的實(shí)驗(yàn)結(jié)果Table 6 Experimental result of differential fault analysis on GIFT-64-128

      表7 差分故障攻擊GIFT-64-128 算法的一組實(shí)驗(yàn)結(jié)果數(shù)據(jù)Table 7 One of experimental result of differential fault analysis on GIFT-64-128

      本文所提出的方法還具有簡(jiǎn)單直觀、通用性強(qiáng)的特點(diǎn), 能夠應(yīng)用于其他輕量級(jí)密碼中, 尤其是拉線類型的密碼算法.盡管不同的輕量級(jí)密碼有不同的置換層, 但通過研究置換層的傳播規(guī)律, 找到能使錯(cuò)誤擴(kuò)散最多卻又不會(huì)影響同一個(gè)S 盒的輪數(shù), 就有可能利用本文所提出的方法恢復(fù)密鑰信息.

      6 總結(jié)

      在選擇明文攻擊下, 根據(jù)GIFT-64-128 算法的置換層傳播特性和S 盒的差分特性, 本文提出了兩種基于單比特錯(cuò)誤注入的差分故障攻擊方法.第一種攻擊方法, 理論上平均需要192 個(gè)錯(cuò)誤密文就能夠恢復(fù)全部的密鑰信息.第二種攻擊方法, 理論上平均需要32 個(gè)錯(cuò)誤密文就能夠恢復(fù)全部的密鑰信息, 在實(shí)際驗(yàn)證中, 所需的錯(cuò)誤密文數(shù)量比理論值略多, 但也僅需44 個(gè)錯(cuò)誤密文就能在1 秒內(nèi)恢復(fù)全部密鑰信息.GIFT 算法應(yīng)用在物聯(lián)網(wǎng)上時(shí)如果將算法的最后7 輪額外加上一個(gè)校驗(yàn)輪, 并檢測(cè)算法運(yùn)行情況, 則能夠提高抵抗故障攻擊的能力.下一步, 我們將會(huì)研究注入多比特錯(cuò)誤時(shí), 對(duì)S 盒造成疊加影響的內(nèi)在規(guī)律,進(jìn)一步減少錯(cuò)誤密文的數(shù)量; 同時(shí)我們也會(huì)嘗試運(yùn)用代數(shù)故障攻擊等方法對(duì)GIFT 算法進(jìn)行分析.

      附錄: 用基本DFA 方法得到B28Nj 簡(jiǎn)例

      每一個(gè)字符代表的都是16 進(jìn)制(例: 2 = (0010)2), x 表示任意的16 進(jìn)制的數(shù).

      密文C: xxx8xxx0xxx0xxx1;

      第一個(gè)錯(cuò)誤密文D1: xxx8xxx0xxx2xxx0;

      第二個(gè)錯(cuò)誤密文D2: xxx0xxx0xxx0xxx0;

      第三個(gè)錯(cuò)誤密文D3: xxx0xxx4xxx0xxx1;

      通過①②③, 我們可以得出, 注入故障的是B28N0, 同時(shí)我們可以得到3 個(gè)輸出差分:

      聯(lián)立④⑤⑥, B28N0=10, 換算成2 進(jìn)制B28N0=1010;

      通過公式K28= P ?layer(S ?layer(B28))⊕C, 可以得到K28第0 位密鑰為0, 第17 位密鑰為1.

      猜你喜歡
      密文比特差分
      一種針對(duì)格基后量子密碼的能量側(cè)信道分析框架
      一種支持動(dòng)態(tài)更新的可排名密文搜索方案
      基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯(cuò)恢復(fù)
      數(shù)列與差分
      比特幣還能投資嗎
      海峽姐妹(2017年10期)2017-12-19 12:26:20
      比特幣分裂
      比特幣一年漲135%重回5530元
      銀行家(2017年1期)2017-02-15 20:27:20
      基于差分隱私的大數(shù)據(jù)隱私保護(hù)
      云存儲(chǔ)中支持詞頻和用戶喜好的密文模糊檢索
      相對(duì)差分單項(xiàng)測(cè)距△DOR
      太空探索(2014年1期)2014-07-10 13:41:50
      永安市| 古丈县| 西和县| 南岸区| 普兰店市| 连山| 普陀区| 阳江市| 息烽县| 宾川县| 会同县| 新民市| 汨罗市| 永顺县| 左云县| 满城县| 普陀区| 陈巴尔虎旗| 容城县| 瑞安市| 武功县| 唐河县| 涿鹿县| 永新县| 昭觉县| 出国| 澜沧| 剑川县| 新田县| 宁远县| 萍乡市| 福建省| 朝阳市| 八宿县| 迭部县| 尼木县| 通辽市| 明光市| 万盛区| 定安县| 渝中区|