摘 要:針對物聯網密碼產品檢測過程中的密碼算法識別問題,采用選擇明文密碼分析的思想,提出了DES、3DES、SM4、AES和Blowfish的密碼算法識別方案。方案利用5種不同類型的明文構造了密文數據集,以字節(jié)信息熵和字節(jié)概率兩種密文特征進行了模型訓練和測試。實驗結果表明,明文的構成元素越簡單,密碼算法的識別準確率越高;利用全“0”或者全“1”構成的明文作為輸入,在部分密文條件下(如ECB、CBC、CFB和OFB模式下),該方案對上述5種密碼算法的分類識別準確率均可達到100%。
關鍵詞:物聯網;分組密碼算法;分組密碼工作模式;機器學習;密碼算法識別;支持向量機
中圖分類號:TP39 文獻標識碼:A 文章編號:2095-1302(2025)03-0-05
0 引 言
現代密碼學理論強調一切秘密寓于密鑰之中,無需對密碼算法進行保密[1-2]。但是,在物聯網環(huán)境中情況卻變得非常復雜,為了規(guī)避或繞過某些規(guī)范性要求,產品實際采用的加密算法可能與其宣稱的密碼算法不一定完全相同。而數據加密以及安全協(xié)議是物聯網的重要組成部分[3],用戶的數據在智能家居、智能醫(yī)療和智能汽車等應用場景下[4]需要采用國產密碼算法實現安全保障。在密碼算法不明確的情況下,如果要評測物聯網設備是否使用了國產密碼算法,則需要對數據加密所使用的算法進行識別。常見的識別方法有3種:通過代碼分析識別產品采用的密碼算法[5],通過網絡握手協(xié)議判斷產品采用的密碼算法[6],通過密文分析判斷產品使用的密碼算法[7-9]。其中,第1種方法需要獲得物聯網設備固件的源代碼,使用范圍具有一定的局限性;第2種方法對于虛假握手協(xié)議無能為力;第3種方法是通過機器學習分析密文特征識別密碼算法,這種方法僅從密文出發(fā)檢測產品所使用的密碼算法,具有更好的普適性,但當前學術上研究的識別效果不是很理想[10]。
為了直觀地展現近年來的相關研究,本文對密碼算法識別領域的學術成果進行了歸納,見表1。文獻[11-14]采用支持向量機(Support Vector Machine, SVM)作為分類器,在電子密碼本(Electronic Code Book, ECB)模式下獲得了較好的識別效果。其中文獻[13]中對ECB模式下DES、3DES、AES、Blowfish和RC5等密碼算法的識別準確率較高,在固定密鑰及全部密文條件下平均識別準確率達到了98%。文獻[13]和文獻[14]同時對密碼分組鏈接(Cipher Clock Chaining, CBC)模式下的分組密碼算法進行了識別,但是識別準確率僅與隨機猜測的準確率相當。文獻[15-27]分別采用了直方圖(Histogram, HIS)、決策樹(Decision Tree, DT)、K-均值(K-Means)、旋轉森林(Rotation Forest, RoFo)、多層感知機(Multiple Perceptron, MP)、隨機森林(Random Forest, RF)、梯度提升決策樹(Gradient Boosting Decision Tree, GBDT)、邏輯回歸(Logistic Regression, LR)、混合k近鄰(Hybrid k-Nearest Neighbor, H-KNN)、樸素貝葉斯(Naive Bayes, NB)等模型作為分類器。其中文獻[20]對密碼算法的識別問題進行了深入的研究,提出了先分類后識別的分層識別方案,證明了分層方案的優(yōu)勢。文獻[28-29]使用深度學習的卷積神經網絡(Convolutional Neural Network, CNN)算法研究了密碼算法識別問題。其中文獻[28]只對ECB模式下的AES和Blowfish算法進行了識別,識別準確率達到了99%。文獻[29]對常見的幾種對稱密碼算法進行了識別,研究結果顯示在全部密文條件下ECB模式的密碼算法識別準確率為100%,CBC模式的算法識別準確率為70.55%,但是仍然沒有達到比較理想的識別效果。
綜上所述,學術上對于ECB模式的分組密碼算法識別的研究較多,但是對于CBC、密碼反饋(Cipher Feedback, CFB)和輸出反饋(Output-Feedback, OFB)等工作模式的分組密碼算法識別的研究仍然較少,而且缺少對部分密文條件下密碼算法識別的討論,無法滿足密碼分析和密碼產品檢測的需要。
鑒于上述文獻中SVM模型在ECB模式下采用信息熵和比特值統(tǒng)計作為分類特征所獲得的識別效果較好[11-14],且考慮到傳統(tǒng)機器學習運算快,結構簡單,易于在物聯網設備上實現,本文嘗試分別以字節(jié)信息熵和字節(jié)概率作為分類特征,固定加密密鑰,結合選擇明文分析的思想,利用SVM模型討論ECB、CBC、CFB和OFB等模式下不同明文類型對密碼算法識別的影響,通過選擇特殊類型的明文提高加密算法的識別準確率。
本文的主要貢獻如下:
(1)針對5種不同類型的明文,分別在ECB、CBC、CFB、OFB這4種工作模式下依次使用DES、3DES、SM4、AES和Blowfish這5種分組密碼算法進行加密,構建了100種不同類型的密文數據集;
(2)對每種密文分別采用組內字節(jié)熵和字節(jié)概率分布的方法提取特征向量;
(3)在部分密文條件下,將得到的特征向量輸入SVM進行模型訓練和分類測試,并且對結果進行了詳細的對比分析。
1 提出的識別方案
1.1 識別方案的設計
本文采用5種類型的明文構造密文數據集:第1種由隨機字符生成,記作Mode1;第2種由亞馬遜商品評論文生成,記作Mode2;第3種是字符“0”和字符“1”均勻分布的明文,記作Mode3;第4種是由字符“0”構成的明文,記作Mode4;第5種是由字符“1”構成的明文,記作Mode5。
在分組密碼工作模式πi(i=1, 2, 3, 4; π1, π2, π3, π4分別表示EBC、CBC、CFB和OFB模式)下,用分組密碼算法Ek(k=1, 2, 3, 4, 5; E1, E2, E3, E4, E5分別表示DES、3DES、SM4、AES和Blowfish密碼算法)對以上5種類型的明文數據加密得到密文文件,加密過程如式(1)所示:
cijk=Eπi k" (mModej) (1)
式中:cijk表示在分組密碼工作模式πi下對Modej類型的明文mModej使用分組密碼算法Ek獲得的密文文件??紤]到密文過大時特征提取與分析將變得難以處理。因此將式(1)得到的密文cijk分成若干體積較小的固定長度的密文塊cw ijk(w=1, 2, ..., W)。對每個密文塊cw ijk分別提取出一組U維的特征向量,并標記該密文所采用的密碼算法作為有監(jiān)督學習的分類依據,由所有密文的特征向量集合構成本文實驗數據集。
提取密文塊cw ijk的一組特征向量,記為Feaw ijk,如式(2)所示:
F(cw ijk)→Feaw ijk (2)
式中:F(cw ijk)表示特征的映射過程。特征向量Feaw ijk由U維特征組成,如式(3)所示:
Feaw ijk=(f 1 ijk, f 2 ijk, ..., f u ijk, ..., f U ijk) (3)
式中:f u ijk代表密文塊cw ijk的第u維特征,u=1, 2, …, U。
1.2 密文特征提取
由引言部分的論述可知,常見的特征提取方法有信息熵、隨機性檢測[30]和統(tǒng)計學方法等,并且采用信息熵和統(tǒng)計概率特征的方法都有較好的識別效果。因此本文采用信息熵和統(tǒng)計概率作為特征。
方法一,將密文按照固定長度分塊,計算塊中固定字節(jié)位的熵值,具體方法如下:
(1)密文分組
設待處理密文塊cw ijk的大小為|cw ijk|個字節(jié),將密文文件分組,每組大小為T個字節(jié),則可以劃分為|cw ijk|/T個分組。
(2)計算各個字節(jié)位置的字節(jié)頻率
將每個分組的字節(jié)位置分別編號為0, 1, 2, ..., t, ..., T-1 。對于一個字節(jié)位置t,統(tǒng)計其字節(jié)在每個分組中出現的平均頻率pt(x),如式(4)所示:
(4)
式中:0≤t≤T-1;x表示位置t上的字節(jié)可能的取值,取值范圍為0≤x≤255;Ntx為在|cw ijk|/T個分組的第t字節(jié)位置上出現字節(jié)x的總頻數;T為當前分組的字節(jié)數。
(3)計算分組字節(jié)熵
計算第t個字節(jié)位置處的分組字節(jié)熵[16],如式(5)所示:
(5)
若密文序列完全隨機分布,則在第t個字節(jié)位置處,pt(x)=,有Ht=log2256=8,此特征可以衡量整個密文序
列在某一位置的隨機性。對于每一個密文,可以提取每個字節(jié)位置的分組間字節(jié)熵,形成一組T維特征向量[H0, H1, ..., HT-1]供模型訓練與預測。本文以16字節(jié)進行分塊,將形成一組16維特征向量供模型訓練和預測,標記為Ent16。
方法二,對分塊后的密文文件的全部字節(jié)進行概率統(tǒng)計,將密文按照每一個字節(jié)分塊,統(tǒng)計字節(jié)出現的概率,因為每個字節(jié)共有28即256種不同的取值,分別計算每種字節(jié)值P l 256在密文中出現的概率,如式(6)所示:
, l=1, 2, ..., 256 (6)
式中:pwl ijk表示字節(jié)值P l 256在密文塊cw ijk中出現的概率;|P l 256|表示字節(jié)值P l 256在密文塊cw ijk中的頻數;|cw ijk|表示密文塊cw ijk的字節(jié)總數。
在特征提取方法二下,密文塊cw ijk的特征值Feaw ijk如式(7)所示:
Feaw ijk=(p1 ijk, p2ijk, ..., plijk, ..., p 256 ijk) (7)
通過此特征提取方法提取而來的特征標記為P256。
2 實驗結果分析
2.1 數據及實驗設置
對于大小為800 MB的明文mModej,按照式(1)進行加密,生成大小為800 MB的密文cijk,加密過程采用Crypto庫和OpenSSL實現。為了提高模型訓練效率,同時考慮到實際應用需求,本文按照200 KB的大小對每個密文文件cijk進行分割,可得到4 096份密文文件cw ijk(w=1, 2, ..., 4 096)。為了實驗方便,本文把其中的4 000份密文作為加密模式πi下明文類型為Modej時加密算法Ek的實驗數據集。當i遍歷{1, 2, 3, 4},j與k分別遍歷{1, 2, 3, 4, 5}時共產生100種這樣的實驗數據集。對每種數據集分別采用Ent16和P256兩類特征進行特征提取、模型訓練和測試。
2.2 五分類識別情況
5種密碼算法的五分類識別任務如圖1所示。
當明文類型為Mode4和Mode5時,在ECB、CBC和CFB加密模式下,無論采用Ent16作為分類特征還是P256作為分類特征,DES、3DES、SM4、AES和Blowfish算法五分類的識別準確率都為1.0;在OFB加密模式下,以Ent16作為分類特征時,其五分類識別準確率在0.5左右,明顯高于五分類隨機猜測的準確率0.2。當明文類型為Mode3時,4種加密模式下的五分類識別準確率從高到低依次為ECB、OFB、CBC和CFB。分類特征為Ent16時其識別準確率分別為0.791、0.587、0.292和0.212;分類特征為P256時其識別準確率分別為1.0、1.0、0.659和0.657。當明文類型為Mode2時,ECB加密模式和OFB加密模式下的識別準確率高于隨機猜測的準確率;而CFB加密模式和CBC加密模式下的識別準確率與隨機猜測的準確率相近。當明文類型為Mode1時,OFB加密模式下的五分類準確率能達到0.841,遠高于隨機猜測的準確率;而此時ECB、CBC和CFB模式下密碼算法的五分類準確率都與隨機猜測的準確率相當。
根據數據分析可以得到如下規(guī)律:當采用相同的分類特征時,明文的構成越簡單,分類任務的識別準確率越高;當明文類型相同時,P256作為分類特征更加有效;當明文類型相同且以P256作為分類特征時,OFB模式下的密碼算法識別最容易,其次是ECB模式下的密碼算法識別,最難識別的是CBC模式下和CFB模式下的密碼算法。
2.3 與其他研究成果的對比
根據本文的結論,CBC模式和CFB模式下的密碼算法最難識別,且公開文獻中沒有對CFB模式下密文分類的研究,故本文對CBC模式下密碼算法識別與部分已有文獻進行對比。由于現有的公開文獻中的識別場景和任務各有差異,因此選取3篇代表文獻中不同分類數量的密碼算法的識別準確率作為參數進行對比,結果見表2。文獻[15]選用直方圖作為識別方案,在五分類的情形下的識別準確率為25.6%,略微高于隨機猜測的準確率。文獻[12]采用3種特征提取方案,在二分類的情形下的識別準確率均沒有超過隨機猜測的準確率。文獻[21]采用固定比特概率作為識別方案,在八分類的情形下識別準確率與隨機猜測的準確率相當。在本文中,當明文類型為Mode4和Mode5時,五分類下的識別準確率均為100%。當明文類型為Mode3時,選用P256作為分類特征,五分類識別準確率也達到了65.90%。當明文類型為Mode1和Mode2時,五分類的識別準確率與現有文獻的五分類識別準確率相當。
3 結 語
本文針對物聯網設備中所使用的密碼算法識別提出了一種選擇明文識別分組密碼算法的新方法,該方法利用密碼分析理論中選擇明文分析的思想,分別對ECB、CBC、CFB和OFB模式下5種不同類型的密文數據集進行特征提取、模型訓練和測試。研究發(fā)現,不同的明文類型對密碼算法的識別準確率具有很大影響,明文的構成元素越簡單,密碼算法的識別準確率越高。因此,若要實現對物聯網設備中密碼算法的有效識別,可以選擇以構成更為簡單的明文作為輸入,測試其對應密文所采用的密碼算法。同時,研究表明,當明文類型相同時,采用P256作為分類特征時的識別準確率明顯高于以Ent16作為分類特征時的識別準確率。特別是當明文類型相同且以P256作為分類特征時,不同模式下密碼算法的識別準確率從高到底的次序為OFB、ECB、CBC、CFB,其中CBC和CFB模式下的識別準確率相似,沒有明顯差別,在OFB模式下的密碼算法識別是最容易的。
本文的研究還有很多不足之處,本研究只采用了SVM模型,缺少對不同分類器尤其是與深度學習識別效果的橫向對比。另外,本文只是在固定加密密鑰的條件下,選用了兩種學術上常用的特征,沒有深入研究其他密文特征在一般明文輸入時的識別效果。以上這兩種情況都是本團隊下一步要研究的重點問題。
注:本文通訊作者為賈忠田。
參考文獻
[1] KERCKHOFFS A. Militarycryptography [J]. Journal of military science, 1883, 9:161-191.
[2] SHANNON C E. The mathematical theory of communication [J]. Bell labs technical journal, 1950, 3(9): 31-32.
[3]劉強,崔莉,陳海明.物聯網關鍵技術與應用[J].計算機科學,2010,37(6):1-4.
[4]張玉清,周威,彭安妮. 物聯網安全綜述[J]. 計算機研究與發(fā)展,2017,54(10):2130-2143.
[5]張經緯,舒輝,蔣烈輝,等. 公鑰密碼算法識別技術研究[J]. 計算機工程與設計,2011,32(10):3243-3246.
[6]陳曼,張文政,吉慶兵.基于網絡數據流的未知密碼協(xié)議逆向分析[J].信息安全與通信保密,2022(6):86-93.
[7]趙志誠. 基于機器學習的密碼體制識別研究[D]. 鄭州:戰(zhàn)略支援部隊信息工程大學,2018.
[8] DE SOUZA W A R, TOMLINSON A. A distinguishing attack with a neural network [C]//2013 IEEE 13th International Conference on Data Mining Workshops. Dallas, TX, USA: IEEE, 2013: 154-161.
[9] SHARIF S O, MANSOOR S P. Performance evaluation of classifiers used for identification of encryption algorithms [C]//2011 Second International Conference on Advances in Information and Communication Technologies, 2011.
[10] CHENG T, LI Y, SHAN Y. A novel identification approach to encryption mode of block cipher [C]//2016 4th International Conference on Sensors, Mechatronics and Auto-mation (ICSMA 2016). Paris:Atlantis Press, 2016: 586-591.
[11] DILEEP A D, SEKHAR C C. Identification of block ciphers using support vector machines [C] //The 2006 IEEE International Joint Conference on Neural Network Proceedings. Vancouver, BC, Canada: IEEE, 2006: 2696-2701.
[12] CHOU J W, LIN S D, CHENG C M. On the effectiveness of using state-of-the-art machine learning techniques to launch cryptographic distinguishing attacks [C]//Proceedings of the 5th ACM Workshop on Security and Artificial Intelligence. [S.l.]: ACM, 2012: 105-110.
[13] TAN C, JI Q. An approach to identifying cryptographic algorithm from ciphertext [C]//2016 8th IEEE International Conference on Communication Software and Networks (ICCSN). Beijing, China: IEEE, 2016: 19-23.
[14] ZHANG W, ZHAO Y, FAN S. Cryptosystem identification scheme based on ASCII code statistics [J]. Security and communication networks, 2020(4): 1-10.
[15] NAGIREDDY S, MURTHY H A, KANTS S. Identification of encryption method for block ciphers using histogram method [J]. Journal of discrete mathematical sciences and cryptography, 2010, 13(4): 319-328.
[16] MANJULA R, ANITHA R. Identification of encryption algorithm using decision tree[C]//International Conference on Computer Science and Information Technology. Berlin, Heidelberg: Springer, 2011.
[17]吳楊,王韜,邢萌,等. 基于密文隨機性度量值分布特征的分組密碼算法識別方案 [J]. 通信學報,2015,36(4):147-155.
[18]趙志誠,趙亞群,劉鳳梅. 基于隨機性測試的分組密碼體制識別方案 [J]. 密碼學報,2018,6(2):177-190.
[19]黃良韜,趙志誠,趙亞群. 基于隨機森林的密碼體制分層識別方案 [J]. 計算機學報,2018,41(2):382-399.
[20] MELLO F, JAM X. Identifying encryption algorithms in ECB and CBC modes using computational intelligence [J]. Journal of universal computer science, 2018, 24(1): 25-42.
[21] HU X, ZHAO Y. Block ciphers classification based on random forest [J]. Journal of physics: conference series, 2019, 1168: 032015.
[22]紀文桃,李媛媛,秦寶東. 基于決策樹的SM4分組密碼工作模式識別[J]. 計算機工程,2021,47(8):157-161.
[23]袁科,黃雅冰,杜展飛,等. 基于混合梯度提升決策樹和邏輯回歸模型的分組密碼算法識別方案[J]. 工程科學與技術,2022,54(4):218-227.
[24] YUAN K, YU D, FENG J, et al. A block cipher algorithm identification scheme based on hybrid k-nearest neighbor and random forest algorithm [J]. PeerJ computer science, 2022, 8: 1110.
[25] BRUNETTA C, PICAZO-SANCHEZ P. Modelling cryptographic distinguishers using machine learning [J]. Journal of cryptographic engineering, 2022, 12(2): 123-135.
[26] YUAN K, HUANG Y, LI J, et al. A block cipher algorithm identification scheme based on hybrid random forest and logistic regression model [J]. Neural processing letters, 2022: 1-19.
[27] ZHAO L, CHI Y, XU Z, et al. Block cipher identification scheme based on hamming weight distribution [J]. IEEE access, 2023, 11:" 21364-21373.
[28] PAMIDIPARTHI S, VELAMPALLI S. Cryptographic algorithm identification using deep learning techniques [C]//Evolution in Computational Intelligence: Frontiers in Intelligent Computing: Theory and Applications (FICTA 2020). Singapore: Springer , 2021: 785-793.
[29] YANG W, PARK Y. Identifying symmetric-key algorithms using CNN in intel processor trace [J]. Electronics, 2021, 10(20): 2491.
[30] RUKHIN A, SOTO J, NECHVATAL J, et al. A statistical test suite for random and pseudorandom number generators for cryptographic applications [R]. [S.l.]: Booz-allen and Hamilton Inc Mclean Va, 2001.