談 程,陳 曼,吉慶兵
(中國電子科技集團公司第三十研究所,四川 成都 610041)
加密的基本原理是通過擴散和混淆的原則將有意義的明文信息變換成無意義的且隨機性良好的密文。在不同的密碼算法下,密文的隨機程度必然存在一定的差異性,通過度量這些差異可在一定程度上實現(xiàn)對不同加密算法的識別?;谖芪牡拿艽a識別技術(shù)的本質(zhì)是挖掘出未知密文數(shù)據(jù)的表征其隨機性的特征,將提取得到的特征與先驗特征通過某種方式進行匹配,然后分析匹配結(jié)果,從而識別出該密文數(shù)據(jù)對應的密碼算法。
基于唯密文數(shù)據(jù)的密碼識別研究過去一直是研究熱點,尤其是針對分組密碼識別的研究。在前期工作中,針對幾種常見分組密碼開展了識別研究[1],當訓練和測試密文樣本用不同密鑰生成時,AES與其他分組密碼能夠以90%以上的識別率進行區(qū)分,表明了不同算法下的密文數(shù)據(jù)中存在可區(qū)分的特征。
機器學習方法在基于唯密文數(shù)據(jù)的密碼識別研究領(lǐng)域具有重要作用。Mishra等人將塊長度和流檢測法、熵重現(xiàn)分析法和決策樹算法相結(jié)合[2],得到一種聯(lián)合方法用于分析AES、DES和Blowfish算法的密文模式。Chopra等分別采用樸素貝葉斯法和K近鄰法,對AES、3DES和Rijndael算法進行識別[3]。
分組密碼識別研究主要集中于ECB模式,但是很多密碼應用場景更多地采用了CBC或者與CBC相關(guān)的模式。也有文獻對CBC模式下加密的密文數(shù)據(jù)進行了區(qū)分研究[4]。文獻中的實驗結(jié)果表明,CBC模式下的密碼識別難度明顯要高于ECB模式。
序列密碼也稱作“流密碼”,與分組密碼同屬對稱密碼體制。對于分組密碼,以一個分組或塊為單位進行加密,先將明文數(shù)據(jù)分為多個固定長度的分組,然后對每個分組使用相同的加密函數(shù)和密鑰進行加密。對于序列密碼,初始密鑰用于生成密鑰流,密鑰流長度一般等于待加密明文的長度。序列密碼以比特或字節(jié)為單位進行加密,使用相同的加密函數(shù)(即異或)和不同的密鑰(即密鑰流的每個比特或字節(jié))加密。因此,在相同長度密文段內(nèi),序列密碼的密文特征沒有分組密碼明顯,其密文特征分布比分組密碼更發(fā)散,對序列密碼的識別難度高于分組密碼。本文主要針對RC4、A5/1和Trivium這3種常見的序列密碼進行識別。
(1)設第k塊中的4個字節(jié)值分別為A、B、C、D,令 g(A,B,C,D)=256A+B+(C+1)(D+1);
(2)變換A、B、C、D的順序,由于g中第3和4個變量位置對等,則有12種排序方式,分別求得各排序方式下g的值,求得平均值為
(3)由于A、B、C、D處于0~255之間,故 Gk∈ [1,131071],而 F=(f1,…,fk,…,f131071)為構(gòu)建的131071維密文文件特征向量,其中分量fk=|{i|Gi=k,i∈ [1,N]}|;
(4)對其他密文文件按照以上步驟分別得到密文特征向量。
本文將繼續(xù)沿用之前文獻[1]中的識別模型。進一步地,通過Adaboost算法[5]對采用的分類器進行改進,得到對原始分類器進行加權(quán)的強分類器后替換原有分類器。
對RC4、A5/1和Trivium這幾種常用序列密碼進行識別。RC4算法按照密鑰長度40 bit、64 bit和 128 bit分為3種,記作RC4_40、RC4_64和RC4_128。A5/1算法按照使用全密鑰流、下行密鑰流和上行密鑰流加密分為3種,記作A5/1、A5/1_down和A5/1_up。對應各算法,分別在100個明文文件下加密得到對應的100個密文樣本,且明文均為可讀的文本數(shù)據(jù)。其中,80個密文樣本用于訓練,20個樣本用于識別測試。
當訓練和測試密文樣本對應密鑰一致時,識別結(jié)果見圖1。
圖1 密鑰一致時識別結(jié)果
從圖1可以看出,在訓練和測試密文樣本密鑰一致時,RC4_40、RC4_64、RC4_128、A5/1_down和A5/1_up幾乎都正確識別出了各自對應的20個樣本,A5/1和Trivium識別率較低。另外,在密文文件為100 kB時,7類密文樣本的綜合識別率達到了最高值91.43%。
當訓練和測試密文樣本對應密鑰不一致時,識別結(jié)果見圖2。
圖2 密鑰不一致時識別結(jié)果
由圖2可見,綜合識別率處于1/7位置附近,即隨機猜測概率,遠遠低于密鑰一致情形的識別率。分別單獨對RC4系(RC4_40、RC4_64和RC4_128)和A5/1系(A5/1、A5/1_down和 A5/1_up)加密數(shù)據(jù)進行識別,結(jié)果見圖3和圖4。
圖3 密鑰不一致時RC4系加密數(shù)據(jù)識別結(jié)果
比較圖3和圖4,RC4系加密數(shù)據(jù)整體比A5/1系加密數(shù)據(jù)識別率稍高,比隨機猜測概率1/3也稍高。可見,訓練和測試密文樣本對應密鑰不一致情況下,多分類識別率較低。
考慮RC4_128、A5/1和Trivium之間的兩兩識別,即二分類識別,識別結(jié)果見圖5。
圖4 密鑰不一致時A5/1系加密數(shù)據(jù)識別結(jié)果
圖5 密鑰不一致兩兩識別結(jié)果
圖5中識別率對應下方兩種類型算法的40個樣本。由圖5可見,RC4_128和A5/1間的識別率整體稍高,RC4_128和Trivium以及A5/1和Trivium兩種情形下的識別基本呈現(xiàn)一邊倒現(xiàn)象,即全部樣本識別為同一種加密類型。
由第2節(jié)可知,序列密碼在密鑰不一致時識別比較困難。真實環(huán)境下,一般待識別的密文數(shù)據(jù)加密密鑰一般是未知的,因此后面章節(jié)僅考慮訓練和測試密文樣本對應密鑰不一致的情形。
這節(jié)針對序列密碼和分組密碼進行混合識別,分組密碼選擇AES、3DES和Blowfish算法,序列密碼選擇RC4_128、A5/1和Trivium算法。
AES是目前最常用的商用密碼算法,序列密碼和AES混合識別的結(jié)果見圖6。
圖6 序列密碼和AES混合識別結(jié)果
從圖6可以看出,RC4_128、A5/1和Trivium與AES混合識別的綜合識別率均只有50%。當密文文件100 kB和500 kB時,識別結(jié)果出現(xiàn)了一邊倒現(xiàn)象。
3DES是DES算法的一種強化變形,和RC4_128、A5/1和Trivium混合識別的結(jié)果見圖7。
圖7 序列密碼和3DES混合識別結(jié)果
從圖7可以看出,當密文文件20 kB以上時,識別率達到了100%;當密文文件為4 kB以上時,3種情形下的混合識別率分別達到了97.5%、95%和85%以上;當密文文件為1 kB時,出現(xiàn)了一邊倒現(xiàn)象。
Blowfish與AES、3DES一樣,也屬于較常見的分組密碼算法,其對應的混合識別結(jié)果見圖8。
圖8 序列密碼和Blowfish混合識別結(jié)果
對比圖7和圖8,呈現(xiàn)的識別結(jié)果基本上差不多,表明當密文樣本文件足夠大時,序列密碼與某些分組密碼密文差異性比較明顯,可以進行混合識別。
所有密文樣本都是基于單次初始化生成的密鑰流進行加密產(chǎn)生,密鑰流較長,因此導致在訓練和測試密文樣本密鑰不一致的情形下難以識別。對于待加密數(shù)據(jù)量較小情形,僅需產(chǎn)生較短的密鑰流用于加密。
這節(jié)對應每種算法分別產(chǎn)生60個測試樣本??紤]16 Byte、32 Byte和64 Byte這3種長度的密鑰流,繼續(xù)針對RC4_128、A5/1和Trivium算法進行識別,識別結(jié)果見圖9、圖10和圖11。
圖9 密鑰流長16 Byte時的識別結(jié)果
圖9、圖10和圖11中,括號內(nèi)兩個數(shù)值分別表示對應兩種密碼算法類型正確識別的密文樣本數(shù)??梢钥闯觯珹5/1和Trivium間的識別率要比其他兩種情形更高。此外,RC4_128和Trivium之間的識別率整體上優(yōu)于RC4_128和A5/1。
圖10 密鑰流長32 Byte時的識別結(jié)果
圖11 密鑰流長64 Byte時的識別結(jié)果
當密鑰流長32 Byte時,整體識別率稍高于密鑰流長16 Byte的情形。在這兩種情形下,所有識別率在密文文件為100 kB時達到最大值,在1 kB時達到最小值,RC4_128和A5/1間識別率處于70.83%~99.17%,RC4_128和Trivium間識別率處于75%~100%,A5/1和Trivium間識別率處于95%~100%。當密鑰流為64 Byte時,整體識別率最低。在該情形下,RC4_128和A5/1間識別率以及RC4_128和Trivium間識別率急劇下降,出現(xiàn)了一邊倒情形,而A5/1和Trivium間識別率下降不是很明顯。只要密文樣本文件在4 kB以上,識別率就能達到90%以上;當密文樣本文件在20 kB以上時,識別率達到了100%。
針對基于唯密文數(shù)據(jù)的序列密碼識別難題,以RC4、A5/1以及Trivium等序列密碼為研究對象,提出了一種有效的序列密碼識別方法。研究發(fā)現(xiàn),密文文件大小和識別對象均會對識別結(jié)果產(chǎn)生一定影響。在訓練和測試密文樣本對應密鑰不一致時,雖然識別結(jié)果不是很理想,但是在短密鑰流情形下能夠達到較高的識別率。在密文樣本文件大小為4 kB以上時,尤其是A5/1和Trivium之間的識別率基本上能達到90%以上。此外,與3DES、Blowfish分組密碼間的混合識別也能夠達到較好的識別結(jié)果。在密文樣本文件為4 kB以上時,識別率均能達到85%以上。