世俱杯规则-虎牙直播-比利亚vs西班牙人-德国杯|www.cnyhmy.com

深度學(xué)習(xí)在ARX,分組密碼差分分析的應(yīng)用*

時間:2023-07-16 18:55:02 來源:網(wǎng)友投稿

楊小雪, 陳 杰,, 韓立東

1. 西安電子科技大學(xué) 通信工程學(xué)院, 西安 710071

2. 杭州師范大學(xué) 浙江省密碼技術(shù)重點實驗室, 杭州 311121

神經(jīng)網(wǎng)絡(luò)是實現(xiàn)深度學(xué)習(xí)的主要方式, 而深度學(xué)習(xí)屬于機器學(xué)習(xí)的一個分支, 它利用算法來處理數(shù)據(jù)、提取特征、模擬人類思維或者進行開發(fā). 深度學(xué)習(xí)的歷史可以追溯到1943 年, 當(dāng)時Walter Pitts 和Warren McCulloch 創(chuàng)建了一個基于人腦神經(jīng)網(wǎng)絡(luò)的計算機模型. 隨著計算機處理數(shù)據(jù)速度的加快, 如今深度學(xué)習(xí)在很多領(lǐng)域都有廣泛的應(yīng)用[1–4], 比如圖像識別、自動駕駛、AI 機器人等.

1991 年, Ronald Rivest 首次將深度學(xué)習(xí)和密碼分析聯(lián)系起來, 在文獻[5] 中提出了關(guān)于密碼學(xué)和機器學(xué)習(xí)兩個領(lǐng)域的主題調(diào)查. 然而, 由于早期計算機硬件的運算能力有限, 深度學(xué)習(xí)的發(fā)展受到限制, 因此它在密碼學(xué)領(lǐng)域的應(yīng)用成果并不多, 主要集中在側(cè)信道攻擊[6,7]上. 但側(cè)信道攻擊屬于物理攻擊, 并不屬于真正意義上的密碼分析. 此后, 隨著GPU (圖形處理單元) 技術(shù)的不斷發(fā)展和深度學(xué)習(xí)一些新算法的提出, 機器學(xué)習(xí)在密碼分析上的應(yīng)用越來越廣泛. 2008 年, Bafghi 等人利用蟻群算法開發(fā)了一個模型,將Sperpent 分組密碼差分特征空間用一個加權(quán)有向圖表示, 再利用遞歸神經(jīng)網(wǎng)絡(luò)找到其中的最小權(quán)重多分支路徑, 從而得到最佳差分路徑[8]. 2009 年, Soos 等人將SAT 求解器引入到密碼問題中[9], 并取得顯著效果. 自此, 自動搜索技術(shù)得到廣泛應(yīng)用, 在發(fā)現(xiàn)分組密碼特征上比機器學(xué)習(xí)更有優(yōu)勢. 由于機器學(xué)習(xí)在發(fā)現(xiàn)分組密碼特征上的競爭力不夠, 學(xué)者們開始關(guān)注其他方面的應(yīng)用, 比如利用機器學(xué)習(xí)算法來對加密流量和密碼算法進行分類. 2015 年, 文獻[10] 使用了三種基于機器學(xué)習(xí)的分類方法來對加密數(shù)據(jù)進行分類, 均在實際藥物數(shù)據(jù)集上運行時有效地執(zhí)行分類. 2017 年, Liu 等人提出利用無監(jiān)督學(xué)習(xí)來對無標(biāo)記數(shù)據(jù)進行分類, 并展示了如何應(yīng)用該方法來分析Caesar 密碼[11]. 2018 年, De Mello 等人利用六種學(xué)習(xí)算法識別在EBC 和CBC 工作模式下的七種加密算法[12], 在EBC 模式下的識別成功率非常高, 在有些算法下甚至收斂到100%. 原本CBC 模式對區(qū)分攻擊不敏感, 而在文獻[12] 中, 在CBC 模式下成功識別密碼算法的范圍為40—50%. 然而以上工作都沒有對現(xiàn)代密碼算法進行實際的攻擊和**, 因此學(xué)者們開始進行一些新的研究, 他們利用機器學(xué)習(xí)尋找明文、密文和密鑰的映射關(guān)系. 2018 年, Hu 等人開發(fā)了一個反向傳播(BP) 前饋神經(jīng)網(wǎng)絡(luò)模型來攻擊AES 算法[13], 以超過40% 的概率恢復(fù)明文的整個字節(jié), 以超過89% 的概率恢復(fù)明文的一半以上的字節(jié), 一定程度上可為暴力攻擊降低計算復(fù)雜度. 2019 年,Gohr 首次將基于深度學(xué)習(xí)的差分密碼分析與傳統(tǒng)差分密碼分析進行對比[14], 提出了利用深度學(xué)習(xí)對減輪的SPECK32/64[15]的差分攻擊. 文獻[14] 表明, 神經(jīng)網(wǎng)絡(luò)可以用來產(chǎn)生與公開的現(xiàn)有技術(shù)水平相當(dāng)?shù)墓? 對抗現(xiàn)代分組密碼的簡化版本. 文獻[14] 利用神經(jīng)網(wǎng)絡(luò)訓(xùn)練了SPECK 的5—8 輪差分區(qū)分器, 且區(qū)分準(zhǔn)確率高于傳統(tǒng)差分區(qū)分器. 同時, 文獻[14] 在此基礎(chǔ)上結(jié)合貝葉斯優(yōu)化算法提出一種新的密鑰搜索策略, 并結(jié)合該策略對11 輪的SPECK 進行密鑰恢復(fù)攻擊, 且計算復(fù)雜度低于傳統(tǒng)分析手段. 這一成果一經(jīng)發(fā)布就引起了密碼學(xué)界對深度學(xué)習(xí)技術(shù)的研究熱潮. 2020 年, So 等人開發(fā)了一個基于深度學(xué)習(xí)的通用自動密碼分析模型[16], 并成功**了基于純文本密鑰的SIMON32/64 和SPECK32/64[15]. 然而, 文獻[16] 中的模型只能**密鑰空間有限的密碼, 通用性較差. 在密碼分析上, 結(jié)合深度學(xué)習(xí)技術(shù)和傳統(tǒng)密碼分析理念的工作并不多. 2021 年, Benamira 等人在EUROCRYPT 發(fā)表了對文獻[14] 的工作的深入解釋和一些改進, 提出了結(jié)合傳統(tǒng)機器學(xué)習(xí)算法和差分分布表的替代策略[17].

對于已經(jīng)成為研究熱點的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器模型, 我們發(fā)現(xiàn)兩個未得到充分研究和解決的問題: 一是神經(jīng)網(wǎng)絡(luò)差分區(qū)分器面對密碼算法本身不同的運算部件的表現(xiàn)如何; 二是對于同一種密碼, 什么因素會影響神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率. 對此本文進行了以下三項工作, 并得到相應(yīng)的結(jié)果:

(1) 構(gòu)造了Speckey[18]和LAX32[19]兩類密碼的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器, 并基于密碼算法的線性運算部件進行對比分析. 其中Speckey 的有效區(qū)分器最高為7 輪, 準(zhǔn)確率為0.69; LAX32 的有效區(qū)分器最高為4 輪, 準(zhǔn)確率為0.55.

(2) 以SIMON32/64 為例, 測試并總結(jié)了輸入數(shù)據(jù)所含信息量對神經(jīng)網(wǎng)絡(luò)差分區(qū)分器準(zhǔn)確率的影響.實驗結(jié)果表明在一定范圍內(nèi)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的信息越多, 其區(qū)分準(zhǔn)確率也會提高, 差距最高可達(dá)0.18. 當(dāng)提供給神經(jīng)網(wǎng)絡(luò)的信息增多到一定程度, 神經(jīng)網(wǎng)絡(luò)將不能繼續(xù)利用更多的信息來提高區(qū)分準(zhǔn)確率.

(3) 對11 輪的SIMON32/64 進行最后一輪子密鑰恢復(fù)攻擊. 在選擇明密文對數(shù)為28時, 在1000 次攻擊中的成功率為95.6%.

傳統(tǒng)差分區(qū)分器的構(gòu)造就是找到一條高概率的差分. 在輸入差分確定的情況下, 通過觀察一對密文的差分是否符合輸出差分, 來判斷這是真實密文對還是隨機數(shù)據(jù). 利用神經(jīng)網(wǎng)絡(luò)訓(xùn)練差分區(qū)分器實際要達(dá)到的效果也是類似的, 只是方法有所不同. 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的訓(xùn)練是一個挖掘和提取明密文數(shù)據(jù)特征并進行分類的過程, 所以需要事先生成訓(xùn)練數(shù)據(jù). 本文構(gòu)造區(qū)分器所采用的是深度殘差神經(jīng)網(wǎng)絡(luò)[20], 相比其他網(wǎng)絡(luò)結(jié)構(gòu), 殘差網(wǎng)絡(luò)在提高網(wǎng)絡(luò)深度和特征提取上都具備比較大的優(yōu)勢. 文獻[16] 中提出了一種基于殘差塊的神經(jīng)網(wǎng)絡(luò)區(qū)分器, 并應(yīng)用于減輪的SPECK 密碼. 同樣地, 本文也是基于深度殘差網(wǎng)絡(luò)建立神經(jīng)網(wǎng)絡(luò)差分區(qū)分器模型, 下面介紹具體結(jié)構(gòu)和數(shù)據(jù)生成過程.

2.1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)

本文的網(wǎng)絡(luò)包括3 個部分, 共5+2i(1≤i ≤10) 層, 由輸入部分、特征提取部分和分類部分組成,網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示.

(1) 輸入部分. 輸入部分包括輸入層和初始卷積層. 因為訓(xùn)練面向16 比特的字結(jié)構(gòu), 輸入層的輸入數(shù)據(jù)格式為16i×1 (i為正整數(shù), 可根據(jù)輸入信息的長度來調(diào)整). 之后將輸入數(shù)據(jù)整形(Reshape)為i×16 的格式, 并連接到初始卷積層, 即位片層. 該層由一個內(nèi)核大小(kernel size) 為1 的1D-CNN (一維卷積神經(jīng)網(wǎng)絡(luò)), 一個批量歸一化(batch normalization) 和一個ReLU (線性整流單元) 激活函數(shù)組成. 其中1D-CNN 包括32 個濾波器, 初始卷積層的輸出為32×16 的矩陣, 這也是之后殘差層所需的輸入數(shù)據(jù)格式. 具體結(jié)構(gòu)如圖1(a) 所示.

(2) 特征提取部分. 輸入數(shù)據(jù)已經(jīng)整理好以后, 神經(jīng)網(wǎng)絡(luò)就要從中提取數(shù)據(jù)特征, 特征提取主要由殘差網(wǎng)絡(luò)來實現(xiàn). 殘差網(wǎng)絡(luò)(residual network), 簡稱Resnet, 由一個或多個殘差塊組成. 此處使用的殘差塊包括兩層卷積網(wǎng)絡(luò)和一個連接輸入輸出的旁路(shortcut). 旁路的出現(xiàn)實際上是使用一般意義上的有參層來直接學(xué)習(xí)殘差, 這比直接學(xué)習(xí)輸入、輸出間映射要容易得多, 也有效得多. 其中卷積層采用的是內(nèi)核大小為3 的1D-CNN, 同時后面連接一個批量歸一化和一個ReLU 激活函數(shù). 該部分最終將得到一個32×16 的特征張量, 這一部分的殘差塊個數(shù)可取1 到10, 一個殘差塊的具體結(jié)構(gòu)如圖1(b) 所示.

圖1 經(jīng)網(wǎng)絡(luò)差神分區(qū)分器模型Figure 1 Neural network differential partition divider model

(3) 分類部分. 分類部分包括兩層全連接網(wǎng)絡(luò)和一個輸出單元, 這三者都屬于感知機結(jié)構(gòu). 感知機是神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)模型, 用于線性二分類, 其輸入是分類對象的特征向量, 輸出則是輸入的加權(quán)和. 對第二部分提取出來的數(shù)據(jù)特征, 要進行分類. 特征提取得到的數(shù)據(jù)格式為32×16 的矩陣,Reshape 為512×1 的向量輸入到第一層全連接網(wǎng)絡(luò)(512 to 64), 得到64×1 的向量, 再輸入到第二層全連接網(wǎng)絡(luò)(64 to 64), 得到64×1 的向量. 每層全連接層都要經(jīng)過批量歸一化和ReLU激活函數(shù). 最后得到的64×1 的向量被一個輸入為64, 輸出為1 的感知器接收并進行評估. 該感知機的輸出經(jīng)過激活函數(shù)—Sigmoid 函數(shù), 得到最后的分?jǐn)?shù), 該分?jǐn)?shù)位于(0,1) 區(qū)間, 把分?jǐn)?shù)大于0.5 的對象判為真實密文對, 小于等于0.5 則判為隨機數(shù)據(jù). 具體結(jié)構(gòu)如圖1(c) 所示.

2.2 數(shù)據(jù)生成

神經(jīng)網(wǎng)絡(luò)模型的產(chǎn)生需要訓(xùn)練數(shù)據(jù)和驗證數(shù)據(jù), 這兩類數(shù)據(jù)都是由隨機數(shù)生成器產(chǎn)生的, 其中驗證數(shù)據(jù)是用來防止訓(xùn)練過擬合. 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器和傳統(tǒng)差分區(qū)分器一樣, 要先確定輸入差分, 再得到完整的區(qū)分器. 神經(jīng)網(wǎng)絡(luò)區(qū)分器所需要的數(shù)據(jù)是給定輸入差分的密文對和隨機密文對以及對應(yīng)的標(biāo)簽, 這樣做的目的是讓神經(jīng)網(wǎng)絡(luò)區(qū)分器對這兩類密文進行區(qū)分, 達(dá)到差分區(qū)分器的效果.

數(shù)據(jù)生成過程中, 首先, 生成n個隨機明文對Pi和初始密鑰Ki以及對應(yīng)的標(biāo)Yi(Yi= 1 或0); 其次, 對于Yi= 1 的數(shù)據(jù), 明文對的差分為固定差分Δ. 對于Yi= 0 的數(shù)據(jù), 明文對的差分隨機; 然后, 用Ki對所有的明文對進行加密, 得到密文對Ci和對應(yīng)的標(biāo)簽Yi; 最后, 對Ci進行一些不同的操作并二進制化得到最后的Xi和Yi作為輸入數(shù)據(jù).

2.1 節(jié)介紹的神經(jīng)網(wǎng)絡(luò)模型最開始應(yīng)用于SPECK 密碼, 而對其他密碼的攻擊效果目前還有待研究.考慮到Speckey 和LAX 這兩類密碼的線性運算具有極大相似性, 并且缺乏對其相關(guān)的分析結(jié)果, 我們選擇對Speckey 和LAX 密碼進行神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的訓(xùn)練. 本文所用到的符號解釋見表1.

表1 符號說明Table 1 Symbol description

3.1 Speckey 和LAX 簡介

Speckey 密碼[18]是Alex 等人在2016 年提出的一類ARX 密碼, 它相當(dāng)于SPECK 密碼算法的一個變體. 更準(zhǔn)確地說, Speckey 是改變了子密鑰異或運算過程的SPECK32, 分組大小為32 bit. 其一輪加密包括循環(huán)移位、按位異或運算和模加運算等三類運算. 設(shè)第i輪的輸入為(Li-1,Ri-1), 輪密鑰為Ki-1的Speckey 密碼的一輪加密過程如圖2 所示.

圖2 Speckey 輪函數(shù)Figure 2 Speckey round function

LAX 密碼[19]則是Dinu 等人在研究可證明安全性的ARX 設(shè)計策略時提出的, 它是一類只使用模2加法和GF(2) 仿射函數(shù)的密碼, 是一種具有2n比特分組大小的分組密碼結(jié)構(gòu), 實驗采用的是分組大小為32 bit 的密碼LAX32. 事實上, LAX 是根據(jù)Speckey 的結(jié)構(gòu)來設(shè)計的, 它將Speckey 的所有線性運算替換為更一般的線性置換. 因此, 兩者唯一的區(qū)別在于線性部件不同. LAX 第i輪的輪函數(shù)如圖3 所示, 其中仿射變換是n比特的向量與n×n的矩陣L相乘, 可表示為:L(x)=L·x.

圖3 LAX 輪函數(shù)Figure 3 LAX round function

3.2 構(gòu)造Speckey 和LAX32 神經(jīng)區(qū)分器

尚未有公開文獻對Speckey 和LAX32 進行基于神經(jīng)網(wǎng)絡(luò)的差分分析, 我們訓(xùn)練了這兩種密碼的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器并測試其區(qū)分真實密文對和隨機數(shù)據(jù)的準(zhǔn)確率. 選擇這兩種密碼的主要原因是這兩個密碼在運算部件上的區(qū)別僅存在于線性運算. 除了線性運算部件, 它們的輪密鑰加運算是相同的, 非線性運算也都是發(fā)生在輪密鑰加之后的模216加運算. 這樣, 通過對比兩者的訓(xùn)練結(jié)果, 可以推出密碼的線性運算部件對抵抗神經(jīng)網(wǎng)絡(luò)差分分析的影響. 同時, 我們設(shè)計了一個簡單的實驗來對比神經(jīng)網(wǎng)絡(luò)差分區(qū)分器和傳統(tǒng)差分區(qū)分器在區(qū)分Speckey 和LAX32 時的不同表現(xiàn).

3.2.1 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的構(gòu)造

選擇輸入差分為Δ = 0x0040/0000, 加密生成107bit 的訓(xùn)練數(shù)據(jù)集和106bit 的驗證數(shù)據(jù)集以及106bit 的測試數(shù)據(jù)集. 此外, 神經(jīng)網(wǎng)絡(luò)模型的參數(shù)選擇如表2 所示.

表2 模型參數(shù)Table 2 Model parameter

對于Speckey 密碼, 訓(xùn)練了其5—8 輪的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器. 對于LAX32, 訓(xùn)練了其3—5 輪的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器. 若輸入數(shù)據(jù)經(jīng)過神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的輸出大于0.5, 則將輸入數(shù)據(jù)判斷為真實密文對,否則判斷為隨機數(shù)據(jù). 用107bit 的訓(xùn)練數(shù)據(jù)集和106bit 的驗證數(shù)據(jù)集來進行訓(xùn)練, 所有數(shù)據(jù)遍歷一次稱為一個epoch, 共進行100 個epoch 的訓(xùn)練, 記錄下每一個epoch 的準(zhǔn)確率和損失函數(shù)值. 其中訓(xùn)練5 輪Speckey 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率和損失函數(shù)隨epoch 變化分別如圖4 和圖5 所示, 訓(xùn)練3 輪LAX32 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率和損失函數(shù)隨epoch 變化分別如圖6 和圖7 所示.

圖4 準(zhǔn)確率變化(5 輪Speckey)Figure 4 Change of accuracy (5 rounds Speckey)

圖5 損失函數(shù)變化(5 輪Speckey)Figure 5 Change of loss function value(5 rounds Speckey)

圖6 準(zhǔn)確率變化(3 輪LAX32)Figure 6 Change of accuracy (3 rounds LAX32)

圖7 損失函數(shù)變化(3 輪LAX32)Figure 7 Change of loss function value (3 rounds LAX32)

以上是對訓(xùn)練過程的一個描述和記錄, 對于訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器, 則用106bit 的測試數(shù)據(jù)集來測試其準(zhǔn)確率. Speckey 和LAX32 的測試結(jié)果如表3 所示.

表3 Speckey 和LAX32 的測試準(zhǔn)確率Table 3 Test accuracy of Speckey and LAX32

3.2.2 基于實驗的傳統(tǒng)差分區(qū)分器的構(gòu)造

為了對比神經(jīng)網(wǎng)絡(luò)差分區(qū)分器和傳統(tǒng)差分區(qū)分器的區(qū)分效果, 我們針對5 輪Speckey 和3 輪LAX32設(shè)計了簡單的對比實驗, 構(gòu)造了5 輪Speckey 和3 輪LAX32 基于實驗的傳統(tǒng)差分區(qū)分器. 主要分為以下兩個步驟:

(1) 搜索高概率差分. 由于傳統(tǒng)差分區(qū)分器的構(gòu)造大多是理論上的, 并且其區(qū)分效果的評估指標(biāo)是差分概率, 無法與神經(jīng)網(wǎng)絡(luò)區(qū)分器的測試準(zhǔn)確率進行橫向?qū)Ρ? 因此, 我們通過實際實驗來選取高概率的差分. 選擇輸入差分為Δ = 0x0040/0000 的n個明文對P1,P2,··· ,Pn, 加密r輪(對Speckey 加密5 輪, 對LAX32 加密3 輪) 得到密文對C1,C2,··· ,Cn, 再獲得密文對的截斷差分值(分別獲取左半部分密文分組和右半部分密文分組的差分)ΔC1,ΔC2,··· ,ΔCn, 分別保存其中出現(xiàn)次數(shù)最多的100 個輸出差分. 最后將上述過程迭代t次, 再從所有保存的差分中選擇頻率最高的100 個差分作為該傳統(tǒng)區(qū)分器的輸出差分, 這是借鑒了多重差分分析[21]和截斷差分[22]的思想.

(2) 測試傳統(tǒng)差分區(qū)分器的區(qū)分準(zhǔn)確率. 以輸入差分Δ = 0x0040/0000 生成帶標(biāo)簽的測試數(shù)據(jù), 將傳統(tǒng)差分區(qū)分器的判定結(jié)果與標(biāo)簽進行對比得到測試準(zhǔn)確率. 其中5 輪Speckey 和3 輪LAX32測試的都是由左半部分密文差分作為輸出的截斷差分區(qū)分器, 因為搜索得出左半部分密文差分出現(xiàn)的最高頻次大于右半部分密文差分出現(xiàn)的最高頻次.

當(dāng)選擇n= 107,t= 5 以及測試數(shù)據(jù)量為106bit 時, 基于實驗的傳統(tǒng)差分區(qū)分器測試結(jié)果和相應(yīng)的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的對比結(jié)果如表4 所示. 值得一提的是, 每一次迭代得到的100 個差分重復(fù)率極高,頻次最高的差分一直不變, 并且出現(xiàn)次數(shù)明顯高于頻次第二高的差分. 也就是說, 最后保存的100 個差分至少包含一個最高概率差分和其他多個較高概率差分.

表4 Speckey 和LAX32 的傳統(tǒng)區(qū)分器和神經(jīng)網(wǎng)絡(luò)區(qū)分器對比Table 4 Comparison of conventional and neural network discriminators with Speckey and LAX32

3.3 實驗結(jié)果分析

首先, 從神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率可以看到, 對于5—7 輪Speckey 和3—4 輪LAX32, 其區(qū)分器的準(zhǔn)確率都明顯高于0.5. 也就是說, 相應(yīng)區(qū)分器都是有區(qū)分效果的, 并且區(qū)分效果是非常顯著的, 5 輪Speckey 密碼的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器準(zhǔn)確率甚至達(dá)到了0.95. 因而, 神經(jīng)網(wǎng)絡(luò)模型在訓(xùn)練過程中可以成功提取這兩種密碼的密文數(shù)據(jù)特征并實現(xiàn)正確分類. 而對于8 輪Speckey 和5 輪LAX32, 其神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率都低于0.5, 按照本文的定義是不具備區(qū)分效果的.

其次, 從表3 的結(jié)果可以看到, Speckey 的有效的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器最多可達(dá)8 輪, 而且LAX32 最多可達(dá)5 輪. 當(dāng)兩類密碼的輪數(shù)相同時, 即對于5 輪神經(jīng)網(wǎng)絡(luò)區(qū)分器, Speckey 的區(qū)分準(zhǔn)確率明顯高于LAX32. 可見, 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器對Speckey 的區(qū)分效果明顯高于LAX32. 這兩類密碼的分組大小都是32 bit, 加密中的唯一非線性運算都是模216加運算, 輪密鑰加的位置也相同, 最大的不同就是線性運算部件. 結(jié)合實驗結(jié)果, 可以看出輪數(shù)較低時, 在抵抗基于神經(jīng)網(wǎng)絡(luò)的差分攻擊方面, 一般的線性仿射要比循環(huán)移位效果更好. 這是因為在加密過程中線性仿射的擴散效果要更好一些, 而這一點在傳統(tǒng)差分分析中也有相同的表現(xiàn)[18,19].

文獻[18]和文獻[19]給出了Speckey 和LAX32 的最佳減輪差分搜索結(jié)果,此處列舉3—5 輪Speckey和LAX32 的自動搜索結(jié)果并與3.2 節(jié)測試結(jié)果進行對比分析, 具體數(shù)據(jù)如表5 所示.

表5 3—5 輪Speckey 和LAX32 的自動搜索結(jié)果和測試準(zhǔn)確率對比Table 5 Comparison between 3–5 round Speckey and LAX32 automatic search results and test accuracy

在輪數(shù)為5 時, Speckey 的最佳差分概率為2-9, 而LAX32 的最佳差分概率為2-11. 此外, 我們發(fā)現(xiàn)4 輪LAX32 的最佳差分概率和5 輪Speckey 的最佳差分概率是相同的, 都是2-9. 但5 輪Speckey的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器準(zhǔn)確率大約為4 輪LAX32 的準(zhǔn)確率的2 倍. 由此說明, 擴散效果對神經(jīng)網(wǎng)絡(luò)差分區(qū)分器準(zhǔn)確率的影響比傳統(tǒng)差分概率要更明顯, 但擴散效果越好, 安全性越高這一整體趨勢是相同的. 設(shè)計者在設(shè)計密碼時, 需要針對現(xiàn)有的各種攻擊進行安全性分析. 當(dāng)進行對基于深度學(xué)習(xí)的差分攻擊的安全性分析時, 本文的實驗結(jié)果對線性部件的設(shè)計可提供參考價值.

另外, 表4 的結(jié)果展示的是在利用相同的數(shù)據(jù)量時傳統(tǒng)區(qū)分器和神經(jīng)網(wǎng)絡(luò)區(qū)分器的簡單對比. 由于神經(jīng)網(wǎng)絡(luò)區(qū)分器所能利用的信息更多, 而我們構(gòu)造的基于實驗的傳統(tǒng)差分區(qū)分器只能利用差分信息, 所以神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率更高. 這一結(jié)果是不難理解的, 而這也正是神經(jīng)網(wǎng)絡(luò)區(qū)分器的優(yōu)勢所在, 可以從密文數(shù)據(jù)中學(xué)習(xí)到除差分以外的其他信息來提升區(qū)分效果. 傳統(tǒng)差分區(qū)分器想要達(dá)到類似的區(qū)分準(zhǔn)確率則要收集大量的差分信息并存儲為一個差分分布表, 比如文獻[14] 給出的Speck32/64 的最佳差分分布表的存儲需要35 GB 的讀寫空間, 而一個神經(jīng)網(wǎng)絡(luò)的權(quán)重文件大約為600 KB.

經(jīng)過對Speckey 密碼和LAX 密碼的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的構(gòu)造, 我們繼續(xù)利用神經(jīng)網(wǎng)絡(luò)模型對SIMON 密碼進行分析. 在分析過程中, 我們結(jié)合文獻[17] 的工作和SIMON 密碼算法的輪函數(shù)發(fā)現(xiàn): 可以通過改變輸入數(shù)據(jù)的格式來改變傳遞給神經(jīng)網(wǎng)絡(luò)的有關(guān)密文數(shù)據(jù)的信息量, 以此探究輸入數(shù)據(jù)包含的信息量對神經(jīng)網(wǎng)絡(luò)區(qū)分器準(zhǔn)確率的影響. 此外, 我們在此基礎(chǔ)上對11 輪SIMON 密碼進行最后一輪子密鑰恢復(fù)攻擊, 得到1000 次攻擊的成功率.

4.1 SIMON 密碼算法簡介

SIMON 密碼[15]是一類輕量級分組密碼, 在2013 年由美國國家安全局提出, 在發(fā)布之后受到廣泛關(guān)注和分析. SIMON 密碼是典型的Feistel 結(jié)構(gòu), 一輪加密包括循環(huán)移位、按位異或運算和按位與運算等三類運算. 因此, 它也屬于廣義的ARX 結(jié)構(gòu). SIMON 密碼族作為一類分組密碼, 其分組大小可表示為2n,單位是比特,n的值可以為16、24、32、48 和64, 對應(yīng)的密鑰長度為mn比特. 因此, 一個分組大小為2n, 密鑰長度為mn的SIMON 密碼可用SIMON2n/mn來表示. 設(shè)第i輪的輸入為(Li-1,Ri-1), 輪密鑰為Ki-1的SIMON 密碼的一輪加密過程如圖8 所示.

圖8 SIMON 密碼輪函數(shù)Figure 8 Round function of SIMON

4.2 輸入信息量對神經(jīng)區(qū)分器準(zhǔn)確率的影響

在密碼分析中, 差分攻擊是分析分組密碼最有效的方法之一. 本實驗基于傳統(tǒng)差分分析方法, 分別構(gòu)造了SIMON32/64 的7—10 輪的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器并測試其準(zhǔn)確率. 訓(xùn)練該區(qū)分器采用的輸入差分為Δ= (0x0000/0040), 該差分可以確定性地傳遞到第二輪輸入差分0x0040/0000[23]. 由此生成的訓(xùn)練數(shù)據(jù)量為107bit, 驗證和測試數(shù)據(jù)量為106bit. 此外, 模型的參數(shù)選擇為: 訓(xùn)練期數(shù)(Epochs) 為100, 批次(Batch Size) 為5000, 優(yōu)化算法(Optimizer) 選擇了Adam 算法, 損失函數(shù)(Loss Function) 為MSE. 訓(xùn)練過程與3.2 節(jié)類似, 測試結(jié)果如表6 所示.

表6 SIMON32/64 的測試結(jié)果Table 6 Test result of SIMON32/64

上述實驗中的輸入數(shù)據(jù)為密文對的實際值, 若用C0,C1表示密文對, 用C0l,C0r,C1l,C1r分別表示C0,C1的左半部分和右半部分. 輸入數(shù)據(jù)可表示為(C0l,C0r,C1l,C1r), 長度為16× 4. 這一輸入是文獻[14] 采用的, 而文獻[17] 中采用了另一種輸入, 并在SIMON32/64 的區(qū)分器上達(dá)到了更好的效果. 因此, 我們想進一步研究并系統(tǒng)分析輸入信息量對神經(jīng)網(wǎng)絡(luò)區(qū)分器的影響, 于是采用四種信息量不同的輸入數(shù)據(jù)對SIMON32/64 的7 到10 輪差分區(qū)分器進行訓(xùn)練. 四類數(shù)據(jù)分別為(C0l ⊕C1l,C0r ⊕C1r),(C0l,C0r,C1l,C1r),(C0l ⊕C1l,C0r ⊕C1r,t0⊕t1) 和(C0l,C0r,C1l,C1r,t0⊕t1), 其中t0和t1可由式(1)和(2)表示.

根據(jù)SIMON 的輪函數(shù), 可以看到t0和t1包含了倒數(shù)第二輪的除密鑰以外的信息.

4.3 部分密鑰恢復(fù)攻擊

在4.2 節(jié)的實驗基礎(chǔ)上, 進一步對11 輪SIMON32/64 進行部分密鑰恢復(fù)攻擊. 由于第一個子密鑰異或發(fā)生在SIMON 首次進行非線性運算之后, 進行選擇明文攻擊的攻擊者可以很容易地使他們選擇的明文差分出現(xiàn)在第一輪SIMON 的輸出中. 因此, 在進行密鑰恢復(fù)攻擊的時候, 可以很容易地把所有區(qū)分器再擴展一輪. 本文對11 輪SIMON 的最后一輪子密鑰攻擊過程如下:

(4) 保存高分密鑰. 將所有的密鑰值k按照其分?jǐn)?shù)Vk進行降序排列, 留下分?jǐn)?shù)最高的密鑰值kmax作為候選正確密鑰.

(5) 測試成功率. 將以上攻擊過程實施1000 次, 若保存的候選密鑰等于正確密鑰則判為一次成功的攻擊. 對于不同的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器, 測試其成功率.

4.4 實驗結(jié)果及分析

4.4.1 輸入信息量不同的神經(jīng)網(wǎng)絡(luò)區(qū)分器測試結(jié)果及分析

4.2 節(jié)采用的分析方法屬于選擇明文攻擊, 而這四種數(shù)據(jù)包括了該類攻擊中神經(jīng)網(wǎng)絡(luò)能利用信息的所有具備代表性的組合. 將輸入數(shù)據(jù)類型不同的神經(jīng)網(wǎng)絡(luò)區(qū)分器依次表示為Na, Nb, Nc, Nd. 4.2 節(jié)的測試結(jié)果如圖9 所示.

圖9 不同輸入數(shù)據(jù)格式下SIMON32/64 的準(zhǔn)確率測試結(jié)果Figure 9 Test results of accuracy for SIMON32/64 under different input data format

從圖9 可以看到, 四種神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率隨著輸入數(shù)據(jù)的改變而發(fā)生變化. 這四種輸入數(shù)據(jù)包含的神經(jīng)網(wǎng)絡(luò)所能利用的密碼先驗知識是不同的. (C0l ⊕C1l,C0r ⊕C1r) 只包含選擇密文對的差分值信息, (C0l,C0r,C1l,C1r) 包含密文對的差分值和實際值, (C0l ⊕C1l,C0r ⊕C1r,t0⊕t1) 包含密文對的差分值和倒數(shù)第二輪的部分差分信息, (C0l,C0r,C1l,C1r,t0⊕t1) 則包含密文對的差分值和實際值以及倒數(shù)第二輪的部分差分信息. 可見, 輸入數(shù)據(jù)的信息量是遞增的. 根據(jù)實驗結(jié)果, 當(dāng)可利用的信息量越多, 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器Na, Nb, Nc 的準(zhǔn)確率是遞增的, 但Nd 的準(zhǔn)確率卻沒有比Nc 的準(zhǔn)確率更高. 前三個區(qū)分器的準(zhǔn)確率的遞增很好理解, 輸入數(shù)據(jù)的信息含量越多, 神經(jīng)網(wǎng)絡(luò)能學(xué)習(xí)到關(guān)于密碼的知識更多, 對真實密文對和隨機數(shù)據(jù)的區(qū)分能力就更強. 這也再一次印證了Ghor 在文獻[14] 中對神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的準(zhǔn)確率比傳統(tǒng)差分區(qū)分器高的原因解釋, 神經(jīng)網(wǎng)絡(luò)能從密文對中學(xué)到除了差分信息以外的密碼知識.但對于最后一類輸入數(shù)據(jù)格式, 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器準(zhǔn)確率并沒有繼續(xù)升高, 我們推測原因是最后一類輸入數(shù)據(jù)提供的數(shù)據(jù)特征太多, 該神經(jīng)網(wǎng)絡(luò)在這樣一個結(jié)構(gòu)下無法很好地整合這些特征. 這一點可以理解為:該神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在接受過多的數(shù)據(jù)信息后, 判斷密文對是真實或隨機的限制條件過多, 導(dǎo)致神經(jīng)網(wǎng)絡(luò)對所有輸入數(shù)據(jù)的評分偏低, 出現(xiàn)一定的分類誤差. 因此, 在神經(jīng)網(wǎng)絡(luò)模型的超參數(shù)確定的情況下, 研究合適的輸入數(shù)據(jù)格式對于得到區(qū)分效果較好的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器是十分有必要的.

在利用本文最好的輸入數(shù)據(jù)格式, 即(C0l,C0r,C1l,C1r,t0⊕t1) 時, 本文和文獻[14]、文獻[17] 的對比結(jié)果如表7 所示.

表7 SIMON32/64 最佳分析結(jié)果對比Table 7 Comparison of best analysis results for SIMON32/64

從表7 可以看到: 對于SIMON32/64, 應(yīng)用文獻[14] 的方法訓(xùn)練的7—10 輪差分區(qū)分器的測試準(zhǔn)確率均比本文的最佳測試結(jié)果低, 其中8 輪區(qū)分器的準(zhǔn)確率相差5%. 同時, 應(yīng)用文獻[14] 訓(xùn)練的10輪SIMON32/64 的測試準(zhǔn)確率是0.5, 該準(zhǔn)確率對于二分類問題是無效的, 所以應(yīng)用文獻[14] 訓(xùn)練的SIMON32/64 有效區(qū)分器最高可達(dá)9 輪, 而本文訓(xùn)練的有效區(qū)分器可達(dá)10 輪. 文獻[17] 應(yīng)用Ghor 的模型[14]訓(xùn)練了SIMON32/64 的8 輪差分區(qū)分器并得到了0.834 的準(zhǔn)確率, 但只給出了一個測試結(jié)果, 沒有進行深入的研究, 缺少對比文獻[14] 準(zhǔn)確率高的原因分析, 也沒有給出SIMON32/64 有效區(qū)分器的輪數(shù)上限. 而我們訓(xùn)練了7—10 輪的SIMON32/64 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器, 其中8 輪的結(jié)果與文獻[17] 的結(jié)果相當(dāng), 準(zhǔn)確率為0.837. 同時, 分析了相對文獻[14] 準(zhǔn)確率提高的原因, 還給出了通過本文方法所訓(xùn)練的有效的SIMON32/64 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器的最高輪數(shù), 即10 輪.

4.4.2 部分密鑰恢復(fù)的結(jié)果展示及分析

4.3 節(jié)的攻擊采用的神經(jīng)網(wǎng)絡(luò)區(qū)分器包括Na, Nb, Nc, Nd, 也就是對于不同的輸入數(shù)據(jù)格式都進行了部分密鑰恢復(fù)實驗. 在此設(shè)置下, 選取不同的明文對數(shù)所得到的攻擊成功率如表8 所示. 當(dāng)明文對數(shù)為n,數(shù)據(jù)量為2n. 由于9 輪Na 的準(zhǔn)確率接近0.5, 不適合用來進行11 輪的密鑰恢復(fù)攻擊(實際攻擊結(jié)果顯示其對所有猜測密鑰的評分都相同, 不具備區(qū)分能力), 其攻擊成功率在數(shù)據(jù)量為29bit 時等于0, 所以其攻擊結(jié)果不予展示. 而Nb 在數(shù)據(jù)量為29bit 時的攻擊成功率接近0.1, 為了更好地比較Nb 和其他兩類區(qū)分器在相同數(shù)據(jù)量下的攻擊效果, 此處只展示利用Nb 的攻擊中正確子密鑰的分?jǐn)?shù)在所有猜測子密鑰分?jǐn)?shù)中的平均排序, 我們把這個值稱為krank. 在一次攻擊中, 若krank為0, 則該次攻擊是成功的,krank越大, 表示誤判的子密鑰數(shù)越多.

表8 不同區(qū)分器下的對SIMON32/64 攻擊結(jié)果Table 8 Attack results of SIMON32/64 under different discriminators

在每一種輸入格式下, 我們嘗試了不同數(shù)據(jù)復(fù)雜度下的攻擊. 從表8 可以看到: 最好的結(jié)果是在選擇明密文對數(shù)為28, 即數(shù)據(jù)量為29時, 使用Nd 對11 輪SIMON32/64 的最后一輪子密鑰進行1000 次攻擊, 成功率可達(dá)95.6%. 可見, 神經(jīng)網(wǎng)絡(luò)差分區(qū)分器在差分分析中表現(xiàn)不錯, 有較好的區(qū)分能力, 并且不需要存儲差分分布表, 空間復(fù)雜度降低.

我們基于深度學(xué)習(xí)在分組密碼差分分析方面進行研究. 首先, 構(gòu)造了Speckey 和LAX32 兩類密碼的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器, 并取得有效的結(jié)果. 我們訓(xùn)練了5—7 輪Speckey 和3—5 輪LAX32 的有效的神經(jīng)網(wǎng)絡(luò)差分區(qū)分器. 如果把測試準(zhǔn)確率在0.5 以上的區(qū)分器視為有效的區(qū)分器, Speckey 的有效區(qū)分器可達(dá)到7 輪, 且準(zhǔn)確率為0.69. LAX32 的有效區(qū)分器可達(dá)到4 輪, 且準(zhǔn)確率為0.55. 在經(jīng)過以上研究之后, 繼續(xù)對SIMON 密碼進行分析, 在分析過程中發(fā)現(xiàn)改變神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)形式會影響其差分區(qū)分器的準(zhǔn)確率. 當(dāng)輸入數(shù)據(jù)所含信息量不同時, 區(qū)分器的最高準(zhǔn)確率和最低準(zhǔn)確率相差18%. 在構(gòu)造完神經(jīng)網(wǎng)絡(luò)差分區(qū)分器后, 我們進一步對11 輪SIMON32/64 密碼進行最后一輪子密鑰恢復(fù)攻擊, 在選擇明密文對數(shù)為n=28時, 1000 次攻擊中捕捉到正確密鑰的成功率為95.6%.

猜你喜歡密文區(qū)分差分RLW-KdV方程的緊致有限差分格式數(shù)學(xué)雜志(2022年5期)2022-12-02一種支持動態(tài)更新的可排名密文搜索方案黑龍江大學(xué)自然科學(xué)學(xué)報(2022年1期)2022-03-29基于模糊數(shù)學(xué)的通信網(wǎng)絡(luò)密文信息差錯恢復(fù)計算機仿真(2021年10期)2021-11-19數(shù)列與差分新世紀(jì)智能(數(shù)學(xué)備考)(2021年5期)2021-07-28怎么區(qū)分天空中的“彩虹”奧秘(創(chuàng)新大賽)(2019年3期)2019-03-13教你區(qū)分功和功率中學(xué)生數(shù)理化·八年級物理人教版(2017年6期)2017-11-09一種基于密文分析的密碼識別技術(shù)*通信技術(shù)(2016年10期)2016-11-12一種基于密文分析的密碼識別技術(shù)*信息安全與通信保密(2016年10期)2016-11-11怎祥區(qū)分天空中的“彩虹”(一)百科探秘·航空航天(2016年5期)2016-11-07基于差分隱私的大數(shù)據(jù)隱私保護信息安全研究(2015年3期)2015-02-28

推薦訪問:分組 深度 密碼

最新推薦
猜你喜歡