朱玉倩,王 超,張 艷
(華北計(jì)算機(jī)系統(tǒng)工程研究所,北京 100083)
在密碼學(xué)領(lǐng)域,主要使用對(duì)稱密碼算法對(duì)信息進(jìn)行加密,保障信息的機(jī)密性。隨著密碼分析技術(shù)的進(jìn)步和敵手攻擊能力的提升,加密密碼算法的設(shè)計(jì)要求不斷提高。分析與識(shí)別保密系統(tǒng)所采用的密碼算法,對(duì)于評(píng)估信息系統(tǒng)安全性、密碼分析和攻擊、非法通信監(jiān)控、惡意代碼識(shí)別等都有著重要的理論意義[1]。
近幾年加密算法生成密文的檢驗(yàn)領(lǐng)域成果層出不窮,王瑛[2]等人結(jié)合人工智能技術(shù)和機(jī)器學(xué)習(xí)方法,研究和設(shè)計(jì)了網(wǎng)絡(luò)加密流量檢測(cè)體系框架和方法。吳楊[3-4]等人通過NIST 隨機(jī)性檢測(cè)標(biāo)準(zhǔn)中的單比特頻數(shù)檢驗(yàn)、塊內(nèi)頻數(shù)檢驗(yàn)和游程檢驗(yàn)理論設(shè)計(jì)統(tǒng)計(jì)量,對(duì)OpenSSL軟件庫中的AES、Camellia、DES、3DES和作者實(shí)現(xiàn)的SM4 分組密碼算法生成的200 組、每組1 萬條密文進(jìn)行分析,實(shí)現(xiàn)上述5種分組密碼算法的識(shí)別。
本文方法具有以下不同點(diǎn):
(1)支持全部NIST 隨機(jī)性檢驗(yàn)標(biāo)準(zhǔn);
(2)統(tǒng)計(jì)量為NIST 檢驗(yàn)失敗次數(shù);
(3)7種對(duì)稱密碼算法,涵蓋分組密碼算法和序列密碼算法;
(4)5種隨機(jī)方式和2種影射方式構(gòu)造密鑰和初始向量得到10 類密文;
(5)運(yùn)用單因素方差分析。
密碼算法主要包括序列密碼算法、分組密碼算法、公鑰密碼算法以及散列函數(shù)。序列密碼算法輸出的密文序列既與密碼算法相關(guān),又與算法加載的密鑰和初始向量相關(guān),不同的密鑰和初始向量將產(chǎn)生不同的輸出;分組密碼算法輸出的密文序列既與密碼算法和工作模式相關(guān),又與算法加載的密鑰、明文和初始向量相關(guān)。對(duì)于給定的分組密碼算法、工作模式和固定明文,不同的密鑰和初始向量將產(chǎn)生不同的輸出。
本文主要使用序列密碼算法和分組密碼算法,具體包括ZUC-128算法[5]、ZUC-256算法[6]、Snow算法[7]、AES算法[8]、SM4算法[9]、SOSEMANUK算法[10]以及Triviurm算法[11],共計(jì)7種密碼算法。
ZUC-128 算法是我國自主研發(fā)的序列密碼算法,被3GPP 選為LTE 加密標(biāo)準(zhǔn)算法。它采用128 bit的初始密鑰和128 bit的初始向量作為輸入,輸出關(guān)于字的密鑰流對(duì)信息進(jìn)行加解密。ZUC 執(zhí)行分為兩個(gè)階段:初始化階段和工作階段。第一階段是對(duì)密鑰和初始向量進(jìn)行初始化,第二階段每一個(gè)時(shí)鐘脈沖產(chǎn)生一個(gè)32 bit的密鑰輸出。
ZUC-256 算法是ZUC-128 算法的改進(jìn)版,包含了初始化階段、密鑰流生成階段及消息認(rèn)證碼生成階。初始化階段采用256 bit 初始密鑰,與ZUC-128 流密碼高度兼容,進(jìn)一步提高了算法的安全性。
Snow 算法是一種面向字的序列密碼算法,其密鑰長度為128 bit,初始向量長度為128 bit。
SM4 算法是一種分組密碼算法,作為國家密碼管理局公布的第一個(gè)商用分組密碼標(biāo)準(zhǔn)。分組長度為128 bit,密鑰長度也為128 bit。
SOSEMANUK 算法是一種序列密碼算法,該算法是歐洲流密碼工程勝選算法之一,其密鑰長度為256 bit,初始向量長度為128 bit。
Triviurm 算法是一種基于硬件的序列密碼算法,是歐洲流密碼工程eSTREAM 勝選算法之一,支持多種長度的密鑰和初始向量。本文使用經(jīng)典的長度,密鑰長度為80 bit,初始向量長度為80 bit。
AES 算法是一種分組密碼算法,作為美國新的分組密碼標(biāo)準(zhǔn),相對(duì)于其他傳統(tǒng)加密算法,AES 在擴(kuò)散性、混淆性和數(shù)據(jù)加解密效率等方面具有較為明顯的優(yōu)勢(shì)。AES 算法的分組長度為128 bit,支持128 bit、192 bit 和256 bit的密鑰長度,分別記為AES-128、AES-192、AES-256,相應(yīng)的迭代輪數(shù)分別為10 輪、12 輪和14 輪。本文使用的是經(jīng)典的AES-256。
NIST 隨機(jī)性檢測(cè)標(biāo)準(zhǔn)是美國國家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology)用于檢測(cè)比特序列與真隨機(jī)序列之間偏差的方法集。主要包括:單比特頻數(shù)檢驗(yàn)(Frequency)、塊內(nèi)頻數(shù)檢驗(yàn)(Block Frequency)、游程檢驗(yàn)(Runs)、最大游程檢驗(yàn)(Longest Run)、二元矩陣秩檢驗(yàn)(Rank)、離散傅里葉變換檢驗(yàn)(FFT)、非重疊匹配檢驗(yàn)(NonOverlapping Template)、重疊匹配檢驗(yàn)(Overlapping Template)、全局通用統(tǒng)計(jì)檢驗(yàn)(Universal)、線性復(fù)雜度檢驗(yàn)(Linear Complexity)、序列串行檢驗(yàn)(Serial)、近似熵檢驗(yàn)(Approximate Entropy)、累加和檢驗(yàn)(Universal)、隨機(jī)偏移檢驗(yàn)(Random Excursions)以及隨機(jī)偏移變量檢驗(yàn)(Random Excursions Variant)。其具體應(yīng)用過程可參考文獻(xiàn)[12]中的研究內(nèi)容。
為了降低密鑰和初始向量的選取對(duì)密文序列的檢測(cè)判斷產(chǎn)生影響,本文采用5種隨機(jī)方式復(fù)合2種影射方式,共10種方式構(gòu)造[5,12]。
(1)隨機(jī)方式
①反饋移位寄存器
n 位線性反饋移位寄存器的邏輯功能如圖1 所示,0和1 是特征為2的素域GF(2)的兩個(gè)元素。其中F(x0,x1,…,xn-1)=

圖1 n 位反饋移位寄存器
②random 隨機(jī)方式
通過rand()函數(shù)設(shè)置參數(shù)作為種子,調(diào)用rand()函數(shù),它會(huì)依據(jù)內(nèi)部狀態(tài)返回一個(gè)隨機(jī)數(shù),同時(shí)更新內(nèi)部狀態(tài),得到密文序列。
③AES 分組加密算法方式
使用固定的密鑰初始化AES 分組加密算法,初始明文設(shè)為全0,加密后得到的密文作為偽隨機(jī)數(shù)序列輸出;將上一次的密文輸出作為新一次的明文輸入,如此迭代加密產(chǎn)生密文序列。
④線性反饋移位寄存器聯(lián)合AES 方式
線性反饋移位寄存器方式產(chǎn)生偽隨機(jī)數(shù)序列,將其作為AES 分組加密算法的明文輸入,加密后產(chǎn)生密文序列。
⑤隨機(jī)方式rand 聯(lián)合AES 方式
使用rand 方式產(chǎn)生偽隨機(jī)數(shù)序列,將其作為AES 分組加密算法的明文輸入,加密后產(chǎn)生密文序列。
(2)影射方式
本文約定32 B、16 B 或10 B 長密鑰的二進(jìn)制表示中,若1 僅出現(xiàn)為0、1、2 或3 次,則稱此密鑰為弱密鑰。32 B 或10 B 長初始向量的二進(jìn)制表示中,若1 僅出現(xiàn)為0、1、2 或3 次,則稱此初始向量為弱初始向量。
①弱方式
5種隨機(jī)方式中的任一種方式產(chǎn)生64 bit 偽隨機(jī)數(shù),將其影射至所有弱密鑰和弱初始向量之中,生成偽隨機(jī)的弱密鑰或弱初始向量。
②全域投影方法
5種隨機(jī)方式中任一種方式產(chǎn)生64 bit 偽隨機(jī)數(shù)[12]。
SPSS(Statistical Product and Service Solutions) 統(tǒng)計(jì)產(chǎn)品與服務(wù)解決方案是常用統(tǒng)計(jì)軟件[13]。
NIST 隨機(jī)性檢測(cè)標(biāo)準(zhǔn)中15種檢驗(yàn)方法的失敗個(gè)數(shù)作為因變量共15 列,增加密碼算法種類標(biāo)識(shí)列作為因子。7種算法、5種隨機(jī)方式和2種影射方式總計(jì)得到70 行數(shù)據(jù)。
單因素方差分析的前提條件主要包括正態(tài)性和方差齊性。
理論上多元方差分析要求各因變量服從多元正態(tài)分布,但目前常見的統(tǒng)計(jì)軟件還無法實(shí)現(xiàn)多元正態(tài)性檢驗(yàn),所以在實(shí)際應(yīng)用中,弱化為考察每一個(gè)變量是否服從正態(tài)分布[13-15]。
由于樣本量超過50,選用柯爾莫戈洛夫-斯米諾夫檢驗(yàn),每一個(gè)變量的正態(tài)性檢驗(yàn)結(jié)果如表1 所示。在0.05的顯著性水平下,只有累加和檢驗(yàn)不服從正態(tài)分布。進(jìn)一步,通過非參數(shù)檢驗(yàn)得到累加和檢驗(yàn)為單峰對(duì)稱分布,因此可以認(rèn)為近似正態(tài)分布。

表1 柯爾莫戈洛夫-斯米諾夫檢驗(yàn)
方差齊性檢驗(yàn)中,僅單比特頻數(shù)檢驗(yàn)基于平均值的顯著性等于0.046,其余均大于0.05,如表2 所示。因此可以認(rèn)為方差相等,滿足單因素方差分析使用的前提要求。

表2 方差齊性檢驗(yàn)部分結(jié)果
選擇密碼算法各類標(biāo)識(shí)作為控制變量,15種檢驗(yàn)方法的失敗個(gè)數(shù)作為觀測(cè)變量。
(1)零假設(shè):控制變量不同水平下觀測(cè)變量各總體的均值無顯著性差異,即7種密碼算法關(guān)于15種檢驗(yàn)方法得到的失敗數(shù)構(gòu)成的15 維向量的均值相等。
(2)單因素方差分析部分結(jié)果如表3 所示,僅二元矩陣秩檢驗(yàn)的顯著性等于0.48,其余均大于0.05。

表3 ANOVA 部分結(jié)果
(3)在顯著性水平0.05 下,概率值P 比0.05 大,則零假設(shè)成立,認(rèn)為控制變量不同水平下觀測(cè)變量的總體均值基本相同,控制變量各水平的效應(yīng)同時(shí)為0,控制變量的不同水平對(duì)觀測(cè)變量的影響并不顯著。
本文通過5種隨機(jī)方式和2種影射方式構(gòu)造密鑰和初始向量,生成對(duì)稱密碼算法10 類密文,使用15種NIST 隨機(jī)性檢驗(yàn)方法統(tǒng)計(jì)失敗次數(shù),再利用SPSS 軟件進(jìn)行單因素方差分析。實(shí)驗(yàn)結(jié)果表明,7種對(duì)稱密碼算法在0.05 顯著性水平下的檢驗(yàn)結(jié)果在統(tǒng)計(jì)學(xué)上無顯著差異。因此,此統(tǒng)計(jì)檢驗(yàn)可作為評(píng)價(jià)密碼算法好壞的指標(biāo)之一。