劉節(jié)威,王 鋼,顏培志,方一格,荊 浩
(1.內(nèi)蒙古工業(yè)大學(xué) 數(shù)據(jù)科學(xué)與應(yīng)用學(xué)院,內(nèi)蒙古 呼和浩特 010051;2.內(nèi)蒙古工業(yè)大學(xué) 信息化建設(shè)與管理中心,內(nèi)蒙古 呼和浩特 010051;3.內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,內(nèi)蒙古 呼和浩特 010051)
在商用密碼應(yīng)用安全性評(píng)估工作中,要求對(duì)采用商用密碼技術(shù)、產(chǎn)品和服務(wù)集成建設(shè)的網(wǎng)絡(luò)和信息系統(tǒng)密碼應(yīng)用的合規(guī)性與正確性進(jìn)行評(píng)估[1]。分析與識(shí)別安全系統(tǒng)所采用的密碼算法,對(duì)于評(píng)估信息系統(tǒng)安全性、密碼使用合規(guī)性與正確性、中間人攻擊等方面有著重要的現(xiàn)實(shí)意義。同時(shí),密碼算法識(shí)別是開展密碼分析的前提條件,也是密碼分析的一個(gè)重要組成部分。無論是對(duì)信息系統(tǒng)或網(wǎng)絡(luò)設(shè)備中商用密碼算法的應(yīng)用合規(guī)性進(jìn)行評(píng)估還是開展密碼分析工作,對(duì)密文進(jìn)行密碼算法識(shí)別都是至關(guān)重要的前提。目前對(duì)密碼算法的識(shí)別方向主要有兩個(gè):(1)逆向分析技術(shù)[2-4];(b)唯密文特征識(shí)別技術(shù)。在密評(píng)工作中,由于密碼算法應(yīng)用合規(guī)性檢測多采用逆向分析技術(shù),存在耗時(shí)和安全性等問題,利用唯密文特征識(shí)別密碼算法可以緩解上述問題的存在。同時(shí),唯密文方法是目前主流的研究方向,也是本文所采用的方法。
由于密碼輪函數(shù)、密鑰長度和加密結(jié)構(gòu)等加密條件的不同,明文經(jīng)過不同密碼算法加密而來的密文在空間分布上也會(huì)存在差異,且加密后的密文數(shù)據(jù)也并未達(dá)到真正的隨機(jī)性,彼此之間尚存微小差異。因此可通過提取密文數(shù)據(jù)隱藏的特征關(guān)系作為密碼算法識(shí)別的依據(jù)。雖然利用統(tǒng)計(jì)學(xué)的方法對(duì)古典密碼算法進(jìn)行識(shí)別取得了不錯(cuò)的成績,但對(duì)現(xiàn)代密碼算法識(shí)別工作卻收效甚微[5]。隨著機(jī)器學(xué)習(xí)在其他領(lǐng)域的成熟應(yīng)用發(fā)展,其逐漸被研究者引入密碼算法識(shí)別任務(wù)中。利用機(jī)器學(xué)習(xí)算法對(duì)唯密文開展密碼算法識(shí)別可以將其視為模式識(shí)別問題,通過某種方式對(duì)密文提取特征,并對(duì)提取到的密文特征進(jìn)行選擇和機(jī)器學(xué)習(xí)模型訓(xùn)練,最終識(shí)別出其所屬的密碼算法。當(dāng)前常見的密文特征提取方式有:(1)NIST隨機(jī)性測試返回p_value特征值[6-7];(2)特定字符、字節(jié)或比特的熵;(3)特定字符、字節(jié)或比特的概率;(4)將密文看成可變長的文檔向量[8];(5)以上幾種特征提取方式組合[9-10]。本文采用NIST隨機(jī)性測試方法提取密文特征,通過分析特征分布情況選擇合適的隨機(jī)性測試方法。
如今,將機(jī)器學(xué)習(xí)方式運(yùn)用到密碼算法識(shí)別領(lǐng)域的研究日漸增多。2010年,Kuncheva等人[11]對(duì)DES、IDEA、RC2、AES共4種分組密碼算法進(jìn)行識(shí)別,研究了8種機(jī)器學(xué)習(xí)模型在密碼算法識(shí)別中的效果。2011年,Manjula等人[12]基于決策樹算法,對(duì)11種加密算法進(jìn)行識(shí)別,識(shí)別的密碼體制包括分組密碼、公鑰密碼、序列密碼與古典密碼。2012年,Chou等人[13]設(shè)計(jì)了基于支持向量機(jī)的識(shí)別模型,對(duì)ECB模式與CBC模式下的AES、DES、RC4三種分組密碼算法生成的密文進(jìn)行加密算法識(shí)別。2015年,吳楊等人[6]基于NIST的隨機(jī)性測試方法,選取三種測試方法設(shè)計(jì)密文特征,對(duì)AES、DES、3DES、Camellia、SM4五種分組密碼算法使用K-mean聚類算法進(jìn)行兩兩聚類。2018年,黃良韜等人[9]綜合已有的密碼算法識(shí)別研究成果,給出了密碼算法識(shí)別系統(tǒng)的一個(gè)形式化定義,然后對(duì)古典密碼、流密碼、分組密碼、公鑰密碼四種體制,通過簇分和單分兩個(gè)階段劃分識(shí)別階段,然后基于隨機(jī)森林算法進(jìn)行分層識(shí)別。同年,趙志誠等人[14]結(jié)合隨機(jī)性測試方法、比特熵和不定長文本向量等方法,設(shè)計(jì)密文特征,將Grain-128密碼算法分別與11種其他對(duì)稱密碼算法進(jìn)行了兩兩區(qū)分。2019年,趙志誠等人[7]基于NIST隨機(jī)性測試標(biāo)準(zhǔn)重新設(shè)計(jì)密文特征提取方法,基于隨機(jī)森林算法完成對(duì)AES、DES、3DES、IDEA、Blowfish和Camellia六種分組密碼算法的兩兩區(qū)分實(shí)驗(yàn)。2021年,紀(jì)文桃等人[15]針對(duì)分組密碼算法進(jìn)行識(shí)別,利用三種隨機(jī)測試方法對(duì)密文提取特征,訓(xùn)練C4.5決策樹分類模型將商密SM4算法與國際主要標(biāo)準(zhǔn)分組密碼算法進(jìn)行兩兩識(shí)別。同年,曹莉茹[16]使用隨機(jī)性測試方法選擇密文特征,使用深度學(xué)習(xí)方法對(duì)密碼算法體制進(jìn)行識(shí)別,分別將BP神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)算法應(yīng)用于密碼算法識(shí)別任務(wù)中,確定了合適的網(wǎng)絡(luò)參數(shù),構(gòu)建相應(yīng)的密碼算法識(shí)別分類器,對(duì)8種密碼算法進(jìn)行識(shí)別。
分組密碼算法是現(xiàn)代密碼學(xué)中的一個(gè)重要研究分支,其誕生和發(fā)展有著廣泛的實(shí)用背景和重要的理論價(jià)值,同樣在眾多網(wǎng)絡(luò)設(shè)備和信息系統(tǒng)中廣泛應(yīng)用,針對(duì)國產(chǎn)商用分組密碼算法SM4開展識(shí)別研究,對(duì)密評(píng)工作也具有促進(jìn)作用。目前,在密碼算法識(shí)別領(lǐng)域很少有研究者主要針對(duì)國產(chǎn)商用密碼進(jìn)行識(shí)別研究,且研究選擇識(shí)別的加密算法沒有考慮密鑰長度等影響識(shí)別效果的變量信息。同時(shí),深度學(xué)習(xí)技術(shù)因其擁有處理和分析大量復(fù)雜數(shù)據(jù)的能力,在圖像、自然語言處理和加密流量識(shí)別等眾多領(lǐng)域取得顯著成果,其研究對(duì)人工智能技術(shù)的發(fā)展意義重大?;诖耍疚奶岢隽艘环N基于自動(dòng)編碼器(Autoencoder,AE)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)結(jié)合的分組密碼算法識(shí)別方案,利用NIST隨機(jī)性方法提取密文潛在的整體和局部特征,研究識(shí)別的密碼算法是在盡量控制密鑰長度一致的基礎(chǔ)上選擇,對(duì)商密SM4算法與AES、Camellia、DES、IDEA分組密碼算法進(jìn)行兩兩區(qū)分識(shí)別。
密碼算法識(shí)別首先要提取密文特征,然后通過各類密文特征之間的差異進(jìn)行分類。據(jù)此,本文首先使用NIST隨機(jī)性測試方法對(duì)密文數(shù)據(jù)提取特征,然后對(duì)特征進(jìn)行數(shù)據(jù)預(yù)處理生成規(guī)則的灰度圖,以便后續(xù)卷積神經(jīng)網(wǎng)絡(luò)完成分類識(shí)別任務(wù)。在特征提取階段,選擇組內(nèi)頻率測試、最長1游程測試和二元矩陣秩測試等9種方法體現(xiàn)密文數(shù)據(jù)整體特征,選擇非重疊模板匹配方法體現(xiàn)密文數(shù)據(jù)局部特征。由于局部特征維度與整體特征維度不匹配,使用自動(dòng)編碼器對(duì)局部特征降維,然后對(duì)整體特征和降維后的局部特征融合處理生成對(duì)應(yīng)的灰度特征圖,之后將它們輸入到卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練。該方法的結(jié)構(gòu)如圖1所示。
圖1 基于自動(dòng)編碼器和卷積神經(jīng)網(wǎng)絡(luò)的密碼算法識(shí)別模型
由于NIST隨機(jī)性測試眾多方法對(duì)序列的整體或局部隨機(jī)性均有針對(duì)性的測試,針對(duì)這一特性,本文將整體和局部特征融合共同作為密文特征來突出各種加密算法密文之間的差異性。同樣,選擇合適的隨機(jī)性測試方法反映密文整體特征也是至關(guān)重要的。通過對(duì)各類加密算法的密文文件進(jìn)行特征分布統(tǒng)計(jì)分析,選擇了9種隨機(jī)性測試方法反映密文整體特征,分別是頻率測試(Frequency test)、組內(nèi)頻率測試(Frequency test within a block)、游程測試(Runs test)、最長1游程測試(Longest run of ones test)、二元矩陣秩測試(Binary matrix rank test)、離散傅里葉變換測試(Discrete Fourier transform test)、序列測試(Serial test)、近似熵測試(Approximate entropy test)、累加和測試(Cumulative sums test)。而反映密文局部特征的方法選擇的則是非重疊模塊匹配測試(Non overlapping template matching test)。
在待提取特征的密文文件統(tǒng)一大小的基礎(chǔ)上,將密文文件分割為數(shù)份固定大小的二進(jìn)制密文塊,分別基于上述10種隨機(jī)性測試方法提取密文特征。密碼算法集合為M={m1,m2,m3,…,mk},其中k代表密碼算法的數(shù)量。每種密碼算法mi分別加密明文文件F得到密文文件C,每個(gè)密文文件Ci分割為一定數(shù)量等長的密文塊Cij。每個(gè)密文塊Cij基于反映密文文件整體特征的9種隨機(jī)性方法提取特征,可得特征向量Afeaij={Afeaij_1,Afeaij_2,…,Afeaij_d};基于反映密文局部特征的非重疊模塊匹配測試方法提取特征,可得特征向量Bfeaij={Bfeaij_1,Bfeaij_2,…,Bfeaij_q}。在對(duì)特征向量Afeaij和Bfeaij融合之前,首先需要對(duì)Bfeaij進(jìn)行數(shù)據(jù)降維處理。
自動(dòng)編碼器[17]是一種無監(jiān)督機(jī)器學(xué)習(xí)算法,其基本思想是直接使用一層或者多層的神經(jīng)網(wǎng)絡(luò)對(duì)輸入數(shù)據(jù)進(jìn)行關(guān)系映射,得到輸出向量作為從輸入數(shù)據(jù)中提取的特征。自動(dòng)編碼器廣泛用于數(shù)據(jù)降維[18]和特征學(xué)習(xí)[19],與主成分分析(PCA)算法相比,自動(dòng)編碼器具有更好的靈活性和處理非線性特征的能力。圖2所示為三層自動(dòng)編碼器模型,從圖中可以看出自動(dòng)編碼器分為三部分:輸入層、隱藏層和輸出層。其中輸入層向隱藏層的低維映射被稱為編碼器,得到輸入數(shù)據(jù)的高效表征;從隱藏層到輸出層的高維映射被稱為解碼器,對(duì)輸入數(shù)據(jù)進(jìn)行重構(gòu)。一般情況下隱藏層的維度比輸入層的維度要小,由于隱藏層抽取了輸入層的有效信息,因此自動(dòng)編碼器可用于數(shù)據(jù)降維[20]。由于2.1節(jié)中特征向量Bfeaij維度過高且Afeaij維度過低,如果未經(jīng)過任何降維處理直接融合特征向量,就會(huì)造成兩個(gè)特征向量維度不匹配的問題。在分類模型訓(xùn)練過程中,高維度特征向量會(huì)壓制低維度向量,導(dǎo)致訓(xùn)練效果不理想。
圖2 三層自動(dòng)編碼器模型
為了將密文整體和局部特征更高效地融合,使用自動(dòng)編碼器對(duì)特征向量Bfeaij降維。以處理16 KB密文塊為例,自動(dòng)編碼器模型包括1個(gè)輸入層、4個(gè)線性隱藏層+激活層、1個(gè)輸出層,如圖3所示。
圖3 自動(dòng)編碼器模型
卷積神經(jīng)網(wǎng)絡(luò)[21]由于善于提取數(shù)據(jù)局部特征和下采樣特性,相比其他機(jī)器學(xué)習(xí)模型更適合處理特征維度較高和具有空間特征的數(shù)據(jù),如圖像、文本和本文中使用的密文數(shù)據(jù)空間特征。不同結(jié)構(gòu)的加密算法生成的密文文件在空間分布上存在信息差異性,這種空間信息差異性很難用傳統(tǒng)機(jī)器學(xué)習(xí)算法分析,故本文使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)密碼算法展開識(shí)別研究。卷積神經(jīng)網(wǎng)絡(luò)識(shí)別模型如圖4所示,以16 KB密文塊為例,包括一個(gè)輸入層、三個(gè)卷積+最大池化連接層、兩個(gè)全連接層以及一個(gè)輸出層,其中輸入層為預(yù)處理過之后的灰度特征圖。
圖4 卷積神經(jīng)網(wǎng)絡(luò)識(shí)別模型
基于卷積神經(jīng)網(wǎng)絡(luò)模型的識(shí)別方案,具體流程如下:
(1)訓(xùn)練階段
①隨機(jī)抽取密碼算法已知的一組密文文件C1,C2,…,Cs,其中s為文件個(gè)數(shù);
②對(duì)每個(gè)密文文件Ci按固定大小分割為二進(jìn)制密文塊Ci1,Ci2,…,Cit,其中t為密文塊個(gè)數(shù);
③對(duì)密文塊Cij數(shù)據(jù)內(nèi)容進(jìn)行特征提取,得到兩組特征向量Afeaij和Bfeaij,對(duì)Bfeaij特征降維,然后融合特征向量Afeaij和Bfeaij得到feaij={feaij-1,feaij-2,…,feaij-d},其中d為特征維數(shù),其維數(shù)由具體選擇的采集方式確定;
④每個(gè)密文文件組成一個(gè)大小為t×d的特征矩陣,轉(zhuǎn)換為灰度特征圖;
⑤s個(gè)密文文件則構(gòu)成s個(gè)灰度特征圖且特征標(biāo)簽已知為Lab={lab1,lab2,…,labs},每個(gè)密文文件構(gòu)成二元組(feai,labi);
⑥將帶標(biāo)簽的數(shù)據(jù)(feai,labi)提交到神經(jīng)網(wǎng)絡(luò)分類算法,進(jìn)行分類模型的訓(xùn)練。
(2)測試階段
①從網(wǎng)絡(luò)設(shè)備或信息系統(tǒng)中獲取密文文件。對(duì)一個(gè)待識(shí)別的密文文件C按固定大小分割為二進(jìn)制密文塊,對(duì)每個(gè)密文塊進(jìn)行特征提取和特征降維,拼接每個(gè)密文塊的特征向量feai,得到一個(gè)二維矩陣并轉(zhuǎn)換為灰度特征圖。
②將灰度特征圖輸入到在訓(xùn)練階段訓(xùn)練好的分類器模型中,模型給出密碼算法識(shí)別結(jié)果,即密碼算法標(biāo)簽lab。
本文實(shí)驗(yàn)使用OpenSSL和GmSSL密碼庫工具中實(shí)現(xiàn)的SM4、AES、Camellia、DES和IDEA密碼算法加密明文文件,使用NIST隨機(jī)性測試工具包提取密文特征,以PyTorch深度學(xué)習(xí)框架和PyCharm軟件為模型訓(xùn)練環(huán)境,實(shí)驗(yàn)測試環(huán)境如表1所示。
表1 實(shí)驗(yàn)測試環(huán)境
明文數(shù)據(jù)來源于網(wǎng)上爬取的圖片,將所有圖片拼接成大小為1 024 MB的明文文件,再將其平均分割為2 000份小文件,每份大小均為512 KB。設(shè)置對(duì)應(yīng)的固定密鑰和分組密碼ECB工作模式,每份小文件經(jīng)過不同密碼算法加密后獲得對(duì)應(yīng)的密文文件共計(jì)10 000份。對(duì)實(shí)驗(yàn)數(shù)據(jù)灰度特征圖進(jìn)行隨機(jī)抽樣訓(xùn)練,隨機(jī)抽樣70%作為訓(xùn)練集,其余30%作為測試集,以10折重復(fù)隨機(jī)抽樣數(shù)據(jù)集的平均準(zhǔn)確率作為識(shí)別效果的度量值。后續(xù)模型訓(xùn)練階段和測試階段都是在此基礎(chǔ)上完成。有關(guān)各類密碼算法的設(shè)置情況和實(shí)現(xiàn)方式如表2所示。
表2 5種加密算法的具體參數(shù)列表
10種隨機(jī)性測試方法的參數(shù)設(shè)置對(duì)返回值p_value的大小和數(shù)量均有影響。表3為實(shí)驗(yàn)所用隨機(jī)性測試方法的參數(shù)設(shè)置情況[22],未說明實(shí)驗(yàn)取參均使用NIST隨機(jī)性測試包默認(rèn)設(shè)置。
表3 10種隨機(jī)性測試參數(shù)范圍列表
為了驗(yàn)證密文塊大小對(duì)實(shí)驗(yàn)效果是否有影響,本文采用兩種密文分塊方案,分別將密文文件劃分為32塊和128塊,則密文文件大小為16 KB和4 KB。對(duì)每種分塊方案的密文塊分別記為和,密文文件提取特征生成32×32維和128×128維的特征灰度圖。圖5和圖6所示分別為基于某種加密算法的和密文塊方案的特征灰度圖。
圖5 C3ij2密文塊方案特征灰度圖
圖6 C1ij28密文塊方案特征灰度圖
完成以上工作,將得到的特征灰度圖輸入到卷積神經(jīng)網(wǎng)絡(luò)模型中訓(xùn)練分類。首先將商密SM4算法 與AES、Camellia、DES、IDEA算 法 之 間 兩 兩 區(qū) 分識(shí)別,其準(zhǔn)確率都在80%以上,如表4所示。
表4 SM4與4種分組密碼算法識(shí)別準(zhǔn)確率
表5 DES與4種分組密碼算法識(shí)別準(zhǔn)確率
DES算法與其他算法識(shí)別準(zhǔn)確率均在85%以上,具有較高的識(shí)別準(zhǔn)確率,這說明密鑰長度不同確實(shí)會(huì)影響密碼算法之間識(shí)別的效果。研究識(shí)別的密碼算法在密鑰長度一致的基礎(chǔ)上,與其他相關(guān)文獻(xiàn)相比,本文提出的基于自動(dòng)編碼器和卷積神經(jīng)網(wǎng)絡(luò)的密碼算法識(shí)別方案取得了不錯(cuò)的準(zhǔn)確率和穩(wěn)定性,對(duì)比結(jié)果如表6所示。
表6 分組密碼算法識(shí)別方案對(duì)比
本文利用NIST隨機(jī)性方法對(duì)密文文件提取整體和局部特征,使用自動(dòng)編碼器對(duì)數(shù)據(jù)降維,提出一種基于自動(dòng)編碼器和卷積神經(jīng)網(wǎng)絡(luò)模型的分組密碼算法識(shí)別方案。所選密碼算法在控制密鑰長度這一變量的基礎(chǔ)上開展研究,實(shí)驗(yàn)結(jié)果表明,密鑰長度不同的兩種分組密碼算法,識(shí)別準(zhǔn)確率相對(duì)較高,說明算法密鑰長度不同對(duì)識(shí)別結(jié)果的準(zhǔn)確率確實(shí)有影響。同時(shí),SM4與其他算法兩兩識(shí)別的準(zhǔn)確率可達(dá)80%之上,DES與其他算法兩兩識(shí)別的準(zhǔn)確率可達(dá)85%之上。本文主要針對(duì)分組密碼ECB工作模式進(jìn)行識(shí)別研究,在后續(xù)的工作中,將嘗試對(duì)CBC、CFB等復(fù)雜工作模式開展研究,對(duì)多種不同密鑰長度的密碼算法進(jìn)行識(shí)別,優(yōu)化密文特征選擇和特征處理過程。同時(shí),對(duì)國產(chǎn)商用序列密碼體制和公鑰密碼體制識(shí)別展開研究。