亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        輕量級分組密碼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é)廣西無線寬帶通信與信號處理重點(diǎn)實(shí)驗(yàn)室, 桂林541004

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

        1 引言

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

        1997年Biham 和Shamir 針對DES 密碼算法提出了差分故障攻擊[14], 其核心思想是在密碼設(shè)備正常運(yùn)行時(shí)通過外部物理攻擊得到錯誤密文, 運(yùn)用差分攻擊的原理, 結(jié)合錯誤密文與正確密文獲取密鑰.關(guān)于差分故障攻擊的研究已經(jīng)成為密碼學(xué)研究熱點(diǎn)之一.目前, 差分故障攻擊已經(jīng)應(yīng)用到一些輕量級密碼算法的分析中, 如MIDORI[15]、PRIDE[16]、PRESENT[17,18]等.以PRESENT 算法為例, 文獻(xiàn)[17]能夠通過在非線性層注入18 個單比特故障恢復(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)算前注入錯誤故障, 利用差分密碼分析的基本原理, 分析錯誤故障導(dǎo)致的S 盒輸入差分與輸出差分,進(jìn)而獲取內(nèi)部狀態(tài)的信息.針對GIFT 算法的輪結(jié)構(gòu), 根據(jù)其置換層的變換規(guī)律, 尋找出故障在每一輪的傳播特點(diǎn), 再根據(jù)其傳播特點(diǎn)選擇錯誤故障注入的位置, 設(shè)計(jì)出故障模型.本文所提出的兩種差分故障攻擊方法, 每一種攻擊方法都是注入單比特的錯誤故障, 使S 盒的輸入差分控制為1 比特.通過S 盒輸出差分的值對差分分布表進(jìn)行搜索, 獲取S 盒輸入值的一組候選值, 通過多組候選值能夠篩選出S 盒的輸入信息.研究結(jié)果表明, 第一種攻擊方法分別在第28、27、26、25 輪S 盒運(yùn)算前注入錯誤故障, 理論上平均192 個錯誤密文能夠恢復(fù)全部的密鑰信息; 第二種攻擊方法在第一種攻擊方法的基礎(chǔ)上做出了改進(jìn), 分別在第26、25、24、23 輪S 盒運(yùn)算前注入錯誤故障, 理論上平均32 個錯誤密文能夠恢復(fù)全部的密鑰信息.由于實(shí)驗(yàn)的樣本空間有限, 在實(shí)驗(yàn)中需要錯誤密文數(shù)比理論值稍多, 但也能在1 秒內(nèi), 平均通過44 個錯誤密文恢復(fù)密鑰信息.因此, 在不加防護(hù)的條件下, 本文所提出的方法能夠有效地攻擊GIFT 算法.

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

        2 預(yù)備知識

        2.1 符號說明

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

        P: 明文;

        K: 密鑰;

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

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

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

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

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

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

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

        C: 正確密文;

        D: 錯誤密文.

        2.2 GIFT 算法簡介

        GIFT 算法是一種基于SPN 結(jié)構(gòu)的輕量級分組密碼算法, 該算法分為兩種版本, 一種是GIFT-64-128, 它的分組長度為64 比特, 密鑰長度為128 比特, 輪數(shù)為28 輪; 另一種是GIFT-128-128, 它的分組長度為128 比特, 密鑰長度為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 個并行的S 盒構(gòu)成, 每一個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 分成兩個部分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 比特的密鑰放入一個4×32 的矩陣中, 即

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

        輪常數(shù)編排: 首先將6 比特的輪常數(shù)置為0, (c5||c4||c3||c2||c1||c0)=(0||0||0|0||0||0), 然后左循環(huán)移動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 個連續(xù)的S 盒劃分成一個組, 則每一個S 盒的輸入來自同一組不同的4 個S 盒的輸出, 每一個S 盒的輸出會去往不同組的4 個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án)移位, 因此, 得到4 輪連續(xù)的輪密鑰就能求解唯一的主密鑰.

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

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

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

        4.1 基本假設(shè)

        假設(shè)滿足下列攻擊條件: (1)每一次攻擊, 攻擊者能夠注入任意比特的錯誤; (2)每一次攻擊, 攻擊者能夠選擇在S 盒前或者在S 盒后注入錯誤; (3)攻擊者能夠選定任意的明文, 在加密過程中, 能夠?qū)?輪注入錯誤, 并且能夠獲得相應(yīng)的正確密文與錯誤密文.本文所提出的攻擊方法的關(guān)鍵是通過搜索S 盒的差分分布表來尋找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 算法非線性層的錯誤傳播規(guī)律, 在第28 輪的S 盒運(yùn)算前, 注入1 比特的錯誤故障, 這個錯誤會進(jìn)入到B28Nj中, 錯誤比特位可能為我們假設(shè)S 盒的輸入差分為?IN′, 則?IN′= B28Nj⊕B28?Nj∈(0001,0010,0100,1000).通過正確密文C與錯誤密文D 的信息, 我們能夠獲得S 盒的輸出差分?OUT′.利用GIFT-64-128 算法S 盒的差分分布表, 結(jié)合輸出差分?OUT′, 可以列出一組B28Nj的候選值如表4 所示, 接著我們進(jìn)一步分析整理表4,可以得到每一個S 盒的輸入所對應(yīng)的所有可能出現(xiàn)的輸出差分, 如表5.通過多組候選值, 我們能夠篩選出唯一的B28Nj, 進(jìn)而恢復(fù)密鑰信息K.

        表4 GIFT-64-128 中S 盒每一個輸出差分可能的輸入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)算前注入錯誤故障, 得到相應(yīng)的錯誤密文D1;

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

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

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

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

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

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

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

        (10)重復(fù)(7)–(9), 直到得到唯一的一個正確的第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獲取唯一的一個主密鑰.

        4.2.3 攻擊方法1 分析

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

        4.3 攻擊方法2

        4.3.1 攻擊方法2 的故障模型

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

        通過進(jìn)一步分析GIFT-64-128 算法置換規(guī)律, 我們得出一個結(jié)論, 在第26 輪的S 盒運(yùn)算前注入1 比特的故障, 能夠讓故障在第28 輪的擴(kuò)散效果達(dá)到最大, 并且在第28 輪, 每個被影響的S 盒的輸入也只有1 比特, 即?IN′∈(0001,0010,0100,1000).接著我們再運(yùn)用攻擊方法1 的基本思想去求解密鑰, 這樣可以大量減少所需錯誤密文數(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)算并得到錯誤密文D1.將正確密文C 與錯誤密文D1進(jìn)行異或, 得到密文的輸出差分?D1.根據(jù)逆推輪函數(shù)的方法, 對密文的輸出差分?D1反序變換, 得到第28 輪多個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 的候選值的個數(shù), 直到只剩下唯一的一個.此時(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ù)加密得到錯誤密文D2.逆推輪函數(shù), 將正確密文C 反序變換, 結(jié)合密鑰K28, 計(jì)算出第27 輪的S27N ⊕K27.S27N ⊕K27= P ?layer?1(S ?layer?1(P ?layer?1(C ⊕K28))); 再將錯誤密文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 的候選值的個數(shù), 直到只剩下唯一的一個.此時(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), 得到錯誤密文D3.逆推輪函數(shù), 分別將正確密文C 和錯誤密文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), 得到錯誤密文D4.通過與上述(2)–(4)類似的方法恢復(fù)第25 輪的密鑰K25.

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

        4.3.3 攻擊方法2 分析

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

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

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

        本文使用一臺普通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é)果

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

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

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

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

        6 總結(jié)

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

        附錄: 用基本DFA 方法得到B28Nj 簡例

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

        密文C: xxx8xxx0xxx0xxx1;

        第一個錯誤密文D1: xxx8xxx0xxx2xxx0;

        第二個錯誤密文D2: xxx0xxx0xxx0xxx0;

        第三個錯誤密文D3: xxx0xxx4xxx0xxx1;

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

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

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

        猜你喜歡
        密文比特差分
        一種針對格基后量子密碼的能量側(cè)信道分析框架
        一種支持動態(tài)更新的可排名密文搜索方案
        基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯恢復(fù)
        數(shù)列與差分
        比特幣還能投資嗎
        海峽姐妹(2017年10期)2017-12-19 12:26:20
        比特幣分裂
        比特幣一年漲135%重回5530元
        銀行家(2017年1期)2017-02-15 20:27:20
        基于差分隱私的大數(shù)據(jù)隱私保護(hù)
        云存儲中支持詞頻和用戶喜好的密文模糊檢索
        相對差分單項(xiàng)測距△DOR
        太空探索(2014年1期)2014-07-10 13:41:50
        在线观看亚洲视频一区二区| 国产成人精品无码播放| 国产污污视频| 青青久在线视频免费观看| 热久久这里只有| 男子把美女裙子脱了摸她内裤| 国产综合开心激情五月| 日本一区二区三区免费精品| 久久偷看各类wc女厕嘘嘘偷窃| 亚洲精品无码乱码成人| 久久久精品免费观看国产| 久草视频在线这里只有精品| 午夜在线观看一区二区三区四区| 国产自拍视频在线观看免费| 色与欲影视天天看综合网| 色婷婷五月综合久久| 又污又黄又无遮挡的网站| AV无码专区亚洲AVL在线观看| 中文字幕中文字幕777| 东北女人啪啪对白| 亚洲热妇无码av在线播放 | 国产亚洲精品高清视频| 久久午夜精品人妻一区二区三区| 国产丝袜在线精品丝袜| 国产成人免费一区二区三区| 国产精品视频一区二区久久| 开心久久综合婷婷九月| 国产又a又黄又潮娇喘视频| 国产91精选在线观看麻豆| 精品女同一区二区三区免费播放| 久久综合噜噜激激的五月天| 国产精品久久久久av福利动漫| 成年女人在线观看毛片| 国产精品亚洲综合久久| 麻豆av一区二区三区| 五月天丁香久久| 国产高清不卡在线视频| 乱子轮熟睡1区| 亚洲国产精品久久久久婷婷老年 | 国产精品一区二区黄色| 天堂aⅴ无码一区二区三区|