王???/p>
(鄭州大學(xué) 學(xué)報(bào)編輯部,河南 鄭州 450001)
數(shù)據(jù)安全需要多重保障,加密技術(shù)是保護(hù)數(shù)據(jù)安全的重要環(huán)節(jié),也是實(shí)現(xiàn)信息安全的核心技術(shù)[1].AES(The Advanced Encryption Standard)算法是一個迭代分組密碼算法,其分組長度和密鑰長度都是可變的,在它的加解密算法中,對密鑰的選擇沒有任何限制.AES屬于對稱密鑰密碼體制,即它的加密密鑰和解密密鑰相同,加密方和解密方共用一個密鑰,密鑰需要通過安全的密鑰信道由信息發(fā)送方傳給信息接收方,這也成為AES算法的弱點(diǎn).針對這個問題,研究者提出了加解密密鑰每次更換的方法,但要產(chǎn)生大量不能重復(fù)的密鑰成為研究難點(diǎn).
混沌是確定性系統(tǒng)的偽隨機(jī)性,對系統(tǒng)的參數(shù)和初始條件極端敏感.因此,混沌極具密碼學(xué)的應(yīng)用價(jià)值[2-3].本文詳細(xì)研究了混沌序列迭代方程,并選取合適的初始化參數(shù),以此來產(chǎn)生AES加密算法的會話密鑰,加強(qiáng)了算法的安全性,也實(shí)現(xiàn)了AES加密算法.
現(xiàn)在所使用的大多數(shù)對稱分組加密算法都基于Feistel分組密碼結(jié)構(gòu),其遵從的基本指導(dǎo)原則是Shannon提出的擴(kuò)散和混亂,擴(kuò)散和混亂是分組密碼最本質(zhì)的操作.美國國家標(biāo)準(zhǔn)與技術(shù)研究所(NIST)在2002年5月26日,將比利時(shí)的Joan Daemen 和Vincent Rinmen設(shè)計(jì)的Rijndael算法作為新的AES[4]算法,建立了新的高級數(shù)據(jù)加密標(biāo)準(zhǔn)(AES)規(guī)范[5].與公共密鑰密碼使用密鑰對不同,AES 是一個迭代的、對稱密鑰分組的密碼,但它沒有涉及Feistel結(jié)構(gòu),而是采用了Square結(jié)構(gòu).Square結(jié)構(gòu)是一種迭代分組密碼,其輪變換有4個不同的變換組成,這4個不同的變換表現(xiàn)為一套查表和異或操作.它可以使用128、192 和 256 位密鑰,并且用 128 位(16字節(jié))分組加密和解密數(shù)據(jù),通過分組密碼返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同.
混沌現(xiàn)象是在非線性動力學(xué)系統(tǒng)中出現(xiàn)的確定性的、類隨機(jī)的過程[6].這種過程非周期、不收斂但有界,并且對初始狀態(tài)具有極其敏感的依賴性,即混沌系統(tǒng)的初始狀態(tài)只有微小變化,就會產(chǎn)生兩組互不相關(guān)的混沌序列值.因而,從長期意義上說,混沌系統(tǒng)的未來行為是不可預(yù)測的.混沌信號具有天然的隨機(jī)性,特別是經(jīng)過一定處理后的混沌信號具有非常大的周期和優(yōu)良的隨機(jī)性,可以用來產(chǎn)生符合安全性要求的密鑰.更重要的是,通過混沌系統(tǒng)對初始狀態(tài)和參數(shù)的敏感依賴性,可以提供數(shù)量眾多的密鑰.
一類非常簡單卻被廣泛研究的動力學(xué)系統(tǒng)是Logistic映射,其定義如下:
xn+1=a×sin2(xn-b)
(1)
其中,a和b為常數(shù),a∈(0,4),x0∈(0,1).當(dāng)a∈(3.569 945 6…,4)時(shí),Logistic映射呈現(xiàn)混沌態(tài),由初始條件x0在Logist映射的作用下所產(chǎn)生的序列{xn,n=0,1,2,…}是非周期的、不收斂的,對初始值非常敏感.式(1)就是非常典型的一維混沌迭代方程,當(dāng)初始條件x0稍微出現(xiàn)一些偏差△x0,經(jīng)過n次迭代后,其偏差△x0則呈指數(shù)分離[7].
混沌動力系統(tǒng)不僅具有確定性,而且具有形式簡單、對初始條件敏感、具備白噪聲的統(tǒng)計(jì)特性.因而,可以應(yīng)用于包括數(shù)字通信和多媒體數(shù)據(jù)安全等在內(nèi)的眾多應(yīng)用領(lǐng)域.大量的研究表明,目前在數(shù)字信息傳輸、混沌掩蓋保密通訊、混沌調(diào)制擴(kuò)頻通訊、混沌頻率調(diào)制通訊以及參數(shù)調(diào)制多路通信等方面都用到了混沌同步,從而說明了利用混沌實(shí)現(xiàn)保密通訊是可能的[8].
由于混沌信號具有良好的隨機(jī)特性,非常適合用來生成密鑰.因此,從理論上講,將混沌技術(shù)應(yīng)用到密碼算法中可得到安全性較高的加密效果[7].利用混沌迭代方程對初始值非常敏感的特點(diǎn),為增加混沌方程初始值產(chǎn)生的安全性,系統(tǒng)對混沌迭代方程初始值的產(chǎn)生辦法進(jìn)行了特殊處理.以系統(tǒng)時(shí)間作為參數(shù)產(chǎn)生的依據(jù),調(diào)用混沌方程,使混沌迭代方程產(chǎn)生的序列值更加沒有規(guī)律,加強(qiáng)了密鑰的安全性.具體辦法如下:
混沌迭代方程里有3個參數(shù)a,x0,b,每次調(diào)用方程產(chǎn)生密鑰都將3個參數(shù)進(jìn)行初始化.
(1)調(diào)用計(jì)算機(jī)系統(tǒng)當(dāng)前時(shí)間賦值給一個變量.
(2)以系統(tǒng)時(shí)間為參數(shù)3次調(diào)用偽隨機(jī)數(shù)發(fā)生器分別給a,x0,b賦初始值.
由于初始值以系統(tǒng)時(shí)間為參數(shù)產(chǎn)生,所以迭代方程里面的所有參數(shù)都是變值,每次運(yùn)行都會產(chǎn)生不同的a,x0,b初始值,多次迭代(1)式,就得到一個序列值,經(jīng)過處理后即可作為AES加密密鑰.
AES加密算法是一個迭代分組密碼,其分組長度和密鑰長度都是可變的.在實(shí)際應(yīng)用中,分組長度限定大小為128位,而密鑰長度可在128位、192位、256位三者中進(jìn)行選擇,相應(yīng)的迭代輪數(shù)N分別為10輪、12輪、14輪.為了簡單起見,這里以密鑰長度為128位進(jìn)行分析.算法由10輪循環(huán)組成,每一輪循環(huán)都有一個循環(huán)密鑰,它來自于初始密鑰.這里有一個第0輪循環(huán)密鑰,它就是初始密鑰.每一輪循環(huán)輸入的是128位,產(chǎn)生的輸出也是128位,128個輸入位分成16個字節(jié).
AES迭代加密使用一個循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換(Permutations)和替換(Substitutions)輸入數(shù)據(jù),每一輪操作由3層組成,每一層都有自己的函數(shù),這3層是線性混合層(確保多輪之上的高度擴(kuò)散)、非線性層(將具有最優(yōu)的“最壞情況非線性特性”的s盒并行使用)和密鑰加密層(將子密鑰異或到中間狀態(tài))[9].
實(shí)際上,AES加解密每一輪循環(huán)都使用代替和混淆并行地處理整個數(shù)據(jù)分組,主要有列變換、行移位變換,結(jié)構(gòu)由4個不同的階段組成,包括3個代替和一個混淆[10],具體的加解密執(zhí)行過程如圖1所示.
圖1 AES算法的加解密框圖Fig.1 Structure of AES algorithm’s encryption and decryption
AES加密算法執(zhí)行過程中的4個變換分別為字節(jié)代替(SubBytes)、行移位(Shiftrows)、列混淆(MixColumns)和輪密鑰加(AddRoundKey).AES解密運(yùn)算的基本步驟中除輪密鑰加變換(AddRoundKey)不變外,其余字節(jié)代替(SubBytes)、行移位(ShiftRows)、列混合變換(MixColumns)都要進(jìn)行求逆變換,具體見文獻(xiàn)[11].AES加密算法執(zhí)行過程具體如下.
(1)字節(jié)代替(SubBytes).這是一個非線性層,用一個S盒完成分組中的按字節(jié)的代替,目的是防止微分和線性密碼體制的攻擊;SubBytes變換是一個基于S盒的非線性置換,它用于將輸入或中間態(tài)的每一個字節(jié)通過一個簡單的查表操作,將其映射為另一個字節(jié).映射方法為:把輸入字節(jié)的高4位作為S盒的行值,低4位作為S盒的列值,然后取出S盒中對應(yīng)行和列的元素作為輸出.例如,輸入十六進(jìn)制數(shù)“95”,則進(jìn)行對應(yīng)的S盒的行值為“9”,列值為“5”,S中對應(yīng)位置為“2a”,說明“95”被映射為“2a”.
(2)行移位(ShiftRows).行移位是簡單的線性組合置換,可以導(dǎo)致多輪循環(huán)各個位間的擴(kuò)散.ShiftRows完成基于行的循環(huán)移位操作,變換方法如圖2所示,第0行不動,第1行循環(huán)左移1個字節(jié),第2行循環(huán)左移2個字節(jié),第3行循環(huán)左移3個字節(jié).
圖2 行移位變換Fig.2 Transformation of shifted row
(3)列混淆(MixColumns).列混淆是利用在域GF(28)上的算術(shù)特性的代替,與行變換的目的是相同的.MixColumns實(shí)現(xiàn)逐列混合,將狀態(tài)列的每個列視為GF(28)上的多項(xiàng)式,再與一個固定的多項(xiàng)式c(x)進(jìn)行模乘法.當(dāng)然要求c(x)是模x4+1可逆的多項(xiàng)式,否則列混合變換就是不可逆的.因而,會使不同的輸入分組對應(yīng)的輸出分組可能相同.AES的設(shè)計(jì)者給出的c(x)為(系數(shù)用十六進(jìn)制表示):
c(x)={03}·x3+{01}·x2+{01}·x+{02}
(2)
c(x)是與x4+1互素的,所以是模x4+1可逆的.列混合變換也可寫為矩陣乘法,設(shè)s′(x)=c(x)·s(x)mod(x4+1),則:
(3)
MixColumns 變換如圖3所示.
圖3 列混淆變換Fig.3 Transformation of mixed column
(4)輪密鑰加(AddRoundKey).利用當(dāng)前分組和擴(kuò)展密鑰的一部分進(jìn)行按位異或,即循環(huán)密鑰同上層結(jié)果進(jìn)行異或運(yùn)算.
通過對混沌理論的探討,驗(yàn)證了混沌動力系統(tǒng)不僅具有確定性,而且具有形式簡單、對初始條件敏感、具備白噪聲的統(tǒng)計(jì)特性.系統(tǒng)經(jīng)過對混沌信號作一定處理后,利用混沌信號具有非常大的周期和優(yōu)良的隨機(jī)性的特點(diǎn),產(chǎn)生了符合安全性要求的AES加密密鑰,最終實(shí)現(xiàn)了AES加密算法.
參考文獻(xiàn):
[1] 李 飛.網(wǎng)絡(luò)加密安全系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2003,4(12):86-88.
[2] 孫克輝,張?zhí)┥?基于混沌序列的數(shù)據(jù)加密算法設(shè)計(jì)與實(shí)現(xiàn)[J].小型微型計(jì)算機(jī)系統(tǒng),2004,25(7):1 368-1 371.
[3] 王工一.混沌序列流密碼[J].計(jì)算機(jī)與信息技術(shù),2002(3):1-6.
[4] 郎榮玲,夏 煜,戴冠中.高級加密標(biāo)準(zhǔn)AES算法的研究[J].小型微型計(jì)算機(jī)系統(tǒng),2003, 24(5):905-908.
[5] 王 睿,林海波.網(wǎng)絡(luò)安全與防火墻技術(shù)[M].北京:清華大學(xué)出版社,2000:45-53.
[6] 張化光,王智良,黃 瑋.混沌系統(tǒng)的控制理論[M].沈陽:東北大學(xué)出版社,2003:12-13.
[7] 陳 誼,白少華,翁貽方.基于混沌理論的文件安全系統(tǒng)[J].計(jì)算機(jī)工程,2003,29(14):129-132.
[8] 溫孝東,黃榮懷,胡 崗,等.一種時(shí)空混沌保密語音會議系統(tǒng)的實(shí)現(xiàn)[J].北京師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,41(2):142-145.
[9] 張煥國,覃中平.高級數(shù)據(jù)加密標(biāo)準(zhǔn)的研究[J].計(jì)算機(jī)工程與科學(xué),2001,23(5):91-93.
[10] 胡向東,魏琴芳.應(yīng)用密碼學(xué)教程[M].北京:電子工業(yè)出版社,2005:54-107.
[11] 王???,范伊紅,廉飛宇,等. AES加密算法在不停車收費(fèi)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)測量與控制,2006(1):95-97.