楊小東 李鍇彬 杜小妮 梁麗芳 賈美純
①(西北師范大學計算機科學與工程學院 蘭州 730070)
②(桂林電子科技大學廣西密碼學與信息安全重點實驗室 桂林 541004)
③(西北師范大學數(shù)學與統(tǒng)計學院 蘭州 730070)
④(西北師范大學密碼技術與數(shù)據(jù)分析重點實驗室 蘭州 730070)
近年來,伴隨無線傳感器網(wǎng)絡以及射頻識別技術(Radio Frequency IDentification,RFID)的發(fā)展和廣泛應用,對資源受限的設備進行數(shù)據(jù)加密需要使用輕量級分組密碼算法。然而輕量級分組密碼算法追求低功耗與高效率并存,這一矛盾會導致算法的安全性無法得到保證,針對這一問題目前還沒有較好的解決方案,因此有必要對這些輕量級分組密碼算法的安全性做進一步分析。
輕量級分組密碼安全性分析的關鍵在于構造一個有效的區(qū)分器,即按照算法的結構或其部件的特征將密碼算法和隨機數(shù)據(jù)區(qū)分開。Biham等人[1]提出的差分區(qū)分器是對分組密碼攻擊最有效的工具之一。近年來,隨著云計算和大數(shù)據(jù)的快速發(fā)展,深度學習技術在語音識別、自然語言處理和生物特征提取等領域具有廣泛的應用。該技術在對固定微弱特征的發(fā)現(xiàn)識別中具有較強的能力,因此密碼研究人員嘗試將深度學習技術應用到分組密碼的安全性分析中。2011年,Hospodar等人[2]通過深度學習技術對高級加密標準(Advanced Encryption Standard,AES)[3]進行側信道攻擊,該攻擊的效果很大程度取決于模型超參數(shù)的選取。2012年,針對DES和T rip le-DES,A lani[4]提出了基于神經(jīng)網(wǎng)絡的已知明文攻擊,該攻擊可以直接從密文中恢復出明文。2018年,Hu等人[5]使用反向傳播網(wǎng)絡對AES進行密碼分析,該網(wǎng)絡在密鑰未知的情況下可以從密文中還原出明文,試圖達到全局推演的效果。隨后在2019年的美密會上,Gohr[6]提出了基于深度學習的減輪Speck32/64改進差分攻擊,通過訓練卷積神經(jīng)網(wǎng)絡來區(qū)分固定輸入差分的密碼算法和隨機數(shù)據(jù),展示了將深度學習技術用于分組密碼分析的可行性。2021年Benam ira等人[7]在歐密會上,對Gohr區(qū)分器的構造原理做了進一步研究,并為機器學習輔助分組密碼的安全性分析開辟了一個新方向。同年Su等人[8,9]采用PU學習(Positive-Unlabeled learn ing)對減輪Speck32/64構造了5輪和6輪的區(qū)分器,與Goh r構造的區(qū)分器相比具有更高的精度。Hou等人[10]受Benam ira等人的啟發(fā),將輸出差分拼接到矩陣上進行區(qū)分器的訓練,提高了區(qū)分器的識別輪數(shù)和精度。Chen等人[11]提出了用于密碼分析的神經(jīng)網(wǎng)絡輔助統(tǒng)計攻擊方式,該攻擊方式將區(qū)分器的應用范圍首次從實際攻擊擴展到了理論攻擊,從而有效提高了區(qū)分器的精度。2022年,Baksi[12]等人將區(qū)分器的構造問題轉化為神經(jīng)網(wǎng)絡的分類問題,以便神經(jīng)網(wǎng)絡對數(shù)據(jù)進行有效管理,并將神經(jīng)網(wǎng)絡應用于流密碼,擴展了深度學習技術在密碼技術的適用范圍。
LB lock算法[13]是在2011年ANCS(A rchitectures for Networking and Comm unications System s)會議上提出的一種Feistel結構的輕量級分組密碼,具有優(yōu)良的軟硬件實現(xiàn)效率。該算法能夠滿足RFID設備低功耗高性能的需求,且適用于物聯(lián)網(wǎng)(Internet O f Things,IOT)設備的安全性,可在16 bit處理器上高效執(zhí)行。算法提出以來受到了國內外學者的廣泛關注,先前研究者針對LBlock算法的安全性分析主要致力于傳統(tǒng)密碼分析,包括相關密鑰不可能差分分析[14]、相關密鑰線性分析[15]零相關線性分析、積分分析和側信道立方分析等多種密碼分析方法,現(xiàn)有的研究結果表明,LBlock算法具有很好的安全性。雖然針對該算法的攻擊方法很多,但大多都是理論攻擊。針對LB lock算法,文獻[14,15]給出了實際的密鑰恢復攻擊結果,但數(shù)據(jù)復雜度和時間復雜度較高,且實現(xiàn)步驟較為復雜。
受Gohr[6]方法的啟發(fā),本文通過固定不同的輸入差分,構造了基于深度學習的減輪LBlock差分區(qū)分器,并利用該區(qū)分器進行了密鑰恢復攻擊。本文的主要貢獻包括2個方面:
(1)基于殘差網(wǎng)絡,構造了基于深度學習的減輪LBlock差分區(qū)分器,其中7輪和8輪區(qū)分器模型的精度分別是0.999和0.946。這是對LB lock算法安全性分析的全新思路,與傳統(tǒng)區(qū)分器相比具有更好的普適性和可實現(xiàn)性。
(2)數(shù)據(jù)復雜度和時間復雜度是衡量攻擊實現(xiàn)效率的重要指標,其值越小實現(xiàn)效率越高。本文利用9輪區(qū)分器對11輪的LBlock進行了密鑰恢復攻擊,該方案大幅降低了所需的數(shù)據(jù)復雜度和時間復雜度,分別為223.41和 229.03,且實現(xiàn)效率更高,表1給出了該方案與已有攻擊方案的對比。同時,該攻擊方案可以將正確子密鑰限定在較小范圍內,結果更準確。相比傳統(tǒng)方案,在構建密鑰恢復攻擊所需的r-1輪區(qū)分器時流程簡單,且易于使用。
本文第2節(jié)簡要介紹了LB lock密碼算法、差分區(qū)分器和殘差網(wǎng)絡等基礎知識;第3節(jié)給出了基于殘差網(wǎng)絡構建的減輪LBlock差分區(qū)分器,并給出了區(qū)分器的訓練結果;第4節(jié)提出了基于神經(jīng)網(wǎng)絡區(qū)分器的密鑰恢復攻擊方案,并對減輪LBlock算法進行了密鑰恢復攻擊實驗;第5節(jié)總結了本文的工作,并對后續(xù)的研究進行展望。
輕量級分組密碼LBlock為兩路Feistel結構,分組長度為64 bit,密鑰長度為80 bit,加密輪數(shù)為32輪,加密結構如圖1(a)所示。輪函數(shù)F包括輪密鑰加、S盒變換和擴散變換P,F(xiàn)的結構如圖1(b)所示。LB lock算法在S盒變換中使用了8個完全不同的4 bitS盒,擴散變換P為4 bit塊之間的位置變換。設明文M=X0||X1,當1≤i≤31時,第i輪的輸入記為(X i-1,X i),其中X i+1=F(X i,K i)⊕(X i-1<<<8),(X i,X i+1)為 第i輪 的輸出,當i=32時,(X32,X33)為第32輪輸出。算法各個模塊部分定義如下,其中S盒的真值表與密鑰擴展算法的詳細流程見參考文獻[13]。
圖1 LB lock分組密碼算法
(1)輪函數(shù)F,結構如圖1(b)所示
(3)擴散變換P
對{0,1}n上的隨機置換π,任意給定差分(α,β),α=0,β=0,則差分概率約為1/2n。如果找到一條r-1 輪差分概率大于1/2n的差分特征,就可以將r-1輪密碼算法與隨機置換區(qū)分開。構建差分區(qū)分器的本質是尋找一條高概率的差分特征。
2015年,He等人[16]在2015年的Im ageNet大規(guī)模視覺識別競賽(Im agenet Large Scale Visual Recognition Challenge,ILSVRC)上提出殘差網(wǎng)絡。與卷積神經(jīng)網(wǎng)絡不同,殘差網(wǎng)絡加入了捷徑連接來形成殘差單元。它可將其中一層的激活值繞道傳給更深層的網(wǎng)絡,不但簡化了學習目標,而且保護了信息的完整性。進一步殘差網(wǎng)絡也較好地解決了由網(wǎng)絡層數(shù)增多引起的誤差增高和梯度消失問題,從而加快了模型的訓練速度,提高了訓練效果。
深度學習技術能夠很好地揭示數(shù)據(jù)中的隱含特征。利用尋找差分特征的思想將其轉化為深度學習的二分類問題。本節(jié)的主要工作是基于殘差網(wǎng)絡來構建神經(jīng)網(wǎng)絡區(qū)分器,并給出了區(qū)分器的訓練結果。
本部分將給出神經(jīng)網(wǎng)絡區(qū)分器的構造方法,并分別對區(qū)分器的數(shù)據(jù)集的生成過程、網(wǎng)絡模型和激活參數(shù)等進行設置。
(1)數(shù)據(jù)集的生成過程:訓練數(shù)據(jù)和驗證數(shù)據(jù)均用L inux隨機數(shù)生成器生成。從6組輸入差分Δx(0x0/0xd,0x0/0x2 ,0x0/0x4,0x0/0x8 ,0×0/0×40 ,0x0/0x80)中選取1組,將隨機生成的明文對記作(P0,P1),在隨機密鑰情況下,用LB lock加密得到相應的密文對(C0,C1),將上述過程生成的密文對設標簽為0,記為負樣本。將(P0,P1)與Δx進行異或運算得到,同樣地通過LB lock加密得到密文對,將上述過程生成的密文對設標簽為1,記為正樣本。將負樣本與正樣本中的密文對合成為一個行向量,作為訓練集和驗證集的數(shù)據(jù)部分,記為,密文對與明文對(P0,P1),相 對應,并用Y表示標簽的值。密文對左半部分和右半部分都可以寫成4個16 bit的字(w0,w1,w2,w3),反映了LBlock算法面向字結構的特點。在神經(jīng)網(wǎng)絡區(qū)分器的訓練過程中,w i解釋為128 bit的行向量。將wi通過Reshape函數(shù)轉化為4×32的矩陣作為神經(jīng)網(wǎng)絡輸入層的輸入。訓練集大小為 102,驗證集大小為1 05,數(shù)據(jù)集選取5000作為一個批次訓練。數(shù)據(jù)集中正負樣本數(shù)量相等,呈均勻分布。
(2)網(wǎng)絡模型:本文選擇殘差網(wǎng)絡來訓練神經(jīng)網(wǎng)絡區(qū)分器。網(wǎng)絡模型包括3個主要部分:輸入層、隱藏層和輸出層,如圖2所示。首先,由4 ×16 bit的訓練數(shù)據(jù)構成的矩陣行向量作為網(wǎng)絡的輸入。其次在隱藏層中使用5個殘差塊的堆疊進行數(shù)據(jù)建模。每個殘差塊中,設置了兩個卷積層,每個卷積層連接1個批量歸一化層和1個激活函數(shù)。最后將隱藏層的數(shù)據(jù)展平后發(fā)送到一個全連接層得到輸出結果,其中全連接層由隱藏層和輸出單元組成。
圖2 殘差網(wǎng)絡區(qū)分器模型
隱藏層由殘差塊構成,其中第1個卷積層的內核大小為1,第2個卷積層的內核大小為3。此外,每個卷積層中的filter數(shù)量為64。最后基于L2權重正則化訓練網(wǎng)絡,以避免過度擬合,正則化參數(shù)為10-4。
(3)激活函數(shù):sigm oid函數(shù)也稱為Logistic函數(shù),它可以將一個實數(shù)映射到(0,1)區(qū)間。本文神經(jīng)網(wǎng)絡的預測頭中只有1個輸出單元,所以,將該激活函數(shù)應用于輸出層,其表達式為
(4)其他參數(shù)設置:使用Adam算法和Keras中的默認參數(shù)。將均方誤差函數(shù)(Mean Square Error,MSE)作為損失函數(shù)。模型訓練中調用ModelChenkpoint回調函數(shù)保存最佳模型。神經(jīng)網(wǎng)絡區(qū)分器的構造算法如算法1所示。
實驗平臺的硬件環(huán)境為處理器:AMD EPYC 7302,內存:64 GB,顯卡:NVIDIA GeForce RTX 3090,操作系統(tǒng):Linux。深度學習庫:Tensorflowgpu 2.5,前端Keras,采用GPU進行并行計算。
實驗表明,采用算法1進行神經(jīng)網(wǎng)絡區(qū)分器的訓練時,輸入差分的漢明重量越大,密文對的非隨機特征越弱。故本文選取6組漢明重量均為1的輸入差分進行訓練。圖3、圖4和圖5分別給出了7~9輪中區(qū)分器性能最優(yōu)的一組訓練情況。其中橫軸表示訓練輪數(shù)(epoch),縱軸表示區(qū)分器的精度或損失率。精度表示區(qū)分器正確分類的樣本數(shù)與總樣本數(shù)之比,該指標衡量了區(qū)分器的分類能力。由這3組圖可以看出由于初始學習率值較大,損失率下降較快。隨著算法迭代輪數(shù)增大,模型的學習率得到調整,精度增加,損失曲線也趨于穩(wěn)定。特別地圖3(a)中精度的變化反映出該模型能夠選擇出更多的密文對,從而尋找高概率差分對的能力也越強。同時在第7個epoch后精度接近1,這說明是一個近乎完美的7輪區(qū)分器。
圖3 Δ x=0x0/0x4的7輪LB lock神經(jīng)網(wǎng)絡區(qū)分器的性能度量
圖4 Δ x=0x0/0x2的8輪LBlock神經(jīng)網(wǎng)絡區(qū)分器的性能度量
圖5 Δ x=0x0/0x1的9輪LBlock神經(jīng)網(wǎng)絡區(qū)分器的性能度量
表2給出了LBlock 7~9輪神經(jīng)網(wǎng)絡區(qū)分器的精度、損失率和訓練時間等性能指標。從表2可以看出隨著密碼迭代輪數(shù)和epoch的加大,模型的訓練時間顯著上升。隨著密碼迭代輪數(shù)的增加,精度下降,同時明密文之間的統(tǒng)計信息越弱,導致正負樣本的相似性提高,使得深度學習難以進行有效的特征選擇。通過延長epoch,8輪和9輪區(qū)分器的性能指標均出現(xiàn)了不同程度的上升。需要說明的是,在區(qū)分器的訓練中通過調用EarlyStopping函數(shù),使模型提早結束了訓練,從而減少了模型的訓練時間。該函數(shù)通過計算模型在驗證集上的性能表現(xiàn)來適時結束訓練,當驗證集上的性能表現(xiàn)開始下降時停止訓練,從而避免模型的過擬合。
算法1 神經(jīng)網(wǎng)絡區(qū)分器的構造
表2 LBlock 7~9輪區(qū)分器模型的性能指標
本節(jié)給出了利用神經(jīng)網(wǎng)絡區(qū)分器進行密鑰恢復攻擊的方案,并給出了基于訓練得到的9輪神經(jīng)網(wǎng)絡區(qū)分器對LBlock進行11輪密鑰恢復攻擊的結果。
采用算法1得到針對LB lock的r-1輪局部最優(yōu)神經(jīng)網(wǎng)絡區(qū)分器,基于該區(qū)分器的密鑰恢復攻擊方案如算法2所示。
(1)隨機生成明文(P0,P1),固定輸入差分Δx,使得=(P0,P1)⊕Δx。通過相同子密鑰,使用LB lock加密得到密文對。隨機生成131071個候選密鑰,用于猜測密鑰。其中輸入差分Δx、訓練集驗證集的大小和訓練批次的大小與算法1相同。
(2)使用所有候選密鑰,對生成的密文對進行1輪解密,將得到的結果記為(X0,X1)。
(3)步驟(2)的輸出(X0,X1)輸 入到r-1輪區(qū)分器,得到每個候選密鑰Key的概率,按概率將所有候選密鑰降序排列。
根據(jù)LB lock的結構特點,將Δx=0x0/0x2的9輪區(qū)分器無損失地向上擴展1輪,再通過正確密鑰加密1輪至11輪。利用算法2對11輪LBlock算法的所有候選密鑰進行篩選。采樣點值ωi=model(X0,X1),其中(X0,X1)為通過末輪密鑰解密得到的密文對。差分為Δ的錯誤密鑰均值分布如圖6所示,其中橫軸表示密鑰數(shù)量,縱軸表示區(qū)分器輸出的錯誤密鑰均值,概率在49.68%~58.20%。訓練集包含1 07個樣本,驗證集包含1 05個樣本,故訓練每個區(qū)分器共需加密1 07+105=107.04次。采用4 096個選擇明密文對,該攻擊的時間復雜度為107.04+212×217≈229.03。
圖6 LB lock11輪密鑰恢復攻擊錯誤密鑰均值分布
Zhou等人[17]采用混合整數(shù)線性規(guī)劃(M ixed-Integer Linear Programm ing,M ILP)給出了LB lock的16輪差分軌跡,其中9~11輪的差分傳播概率分別為2-28,2-36和2-44,所需的數(shù)據(jù)復雜度分別為228, 236和 244。而利用本文區(qū)分器進行11輪攻擊,所需數(shù)據(jù)復雜度僅為107+106+212+217=223.41。本文分別采用文獻[14,15]方案與本文方案對11輪LBlock進行了密鑰恢復攻擊,數(shù)據(jù)復雜度和時間復雜度的對比如表1所示,可以看出本文方案的以上性能指標均優(yōu)于傳統(tǒng)方案。但隨著密碼算法迭代輪數(shù)的上升,神經(jīng)網(wǎng)絡難以從數(shù)據(jù)中提取到有效特征,相比傳統(tǒng)方案在算法攻擊輪數(shù)上仍有差距。
本文基于殘差網(wǎng)絡,構建了針對減輪LBlock算法的神經(jīng)網(wǎng)絡區(qū)分器,并利用該區(qū)分器進行了密鑰恢復攻擊。實驗結果表明,對于7輪和8輪的LBlock算法,通過固定不同的輸入差分可得到較高精度的區(qū)分器,其中通過調用EarlyStopping函數(shù)得到的7輪區(qū)分器近乎完美,并有效防止過擬合現(xiàn)象的出現(xiàn)。與傳統(tǒng)密鑰恢復攻擊方案相比,基于神經(jīng)網(wǎng)絡區(qū)分器的方案在數(shù)據(jù)復雜度和時間復雜度上均有效降低。而且將神經(jīng)網(wǎng)絡和傳統(tǒng)差分密碼分析相結合的思路,對其他減輪輕量級分組密碼的安全性分析具有潛在優(yōu)勢。不可否認,影響神經(jīng)區(qū)分器性能的因素有很多,比如本文討論的數(shù)據(jù)格式、網(wǎng)絡結構、模型訓練方法等。將來的工作將探索從多個維度提高神經(jīng)網(wǎng)絡區(qū)分器性能的方法對LBlock算法的更高輪數(shù)進行攻擊。此外,能否利用深度學習的其他算法構建性能更優(yōu)的區(qū)分器仍需進一步研究。