摘要:隨著電子商務(wù)的發(fā)展,信息的安全性急需要得到加強(qiáng)。本文根據(jù)當(dāng)前的需要,對最新的AES加密算法進(jìn)行研究,簡紹了AES算法的結(jié)構(gòu)、加解密過程,并采用C++實現(xiàn)了AES算法,驗證了實現(xiàn)的正確性和其加密性能。并把實現(xiàn)應(yīng)用到網(wǎng)上沖印系統(tǒng)中使其安全性得到增強(qiáng)。
關(guān)鍵詞:AES;加密算法;Rijndael;網(wǎng)上沖印
1 引言
隨著Internet的迅速發(fā)展,個人移動通信、電子郵件通信得到普及,網(wǎng)上證券交易、銀行電子自動轉(zhuǎn)帳支付系統(tǒng)、電子商務(wù)、電子政務(wù)得以實現(xiàn),這為人們的生活、學(xué)習(xí)和工作帶來了極大的方便,但人們也更加關(guān)心信息的安全傳輸、安全存儲和安全管理。信息安全已成為人們關(guān)注和研究的重要課題,而密碼算法的理論與實現(xiàn)研究是信息安全研究的核心。
2 算法介紹
現(xiàn)在廣泛使用的DES,隨著計算技術(shù)和計算速度的發(fā)展,安全性面臨越來越嚴(yán)峻的挑戰(zhàn)。臨時方案三重DES也沒有從根本上解決問題。于2000年10月宣布兩位比利時的密碼專家Joan Daemin和Vincent Rijmen提出的Rijndael算法被選擇為AES的最終算法[1]。
AES算法是可變分組長和可變密鑰長的迭代分組密碼,而且分組長和密鑰長是不相關(guān)的。分組長度有三種情況:128bit、192bit和256bit。運(yùn)算時分組長度被分成4行N列的字節(jié)矩陣。字節(jié)矩陣又稱為“狀態(tài)”,用State表示。算法主要由字節(jié)替換、行移位、列混合和輪密鑰加四個運(yùn)算部分組成[2]。
四種變換
1) 字節(jié)替換(SubByte)
字節(jié)替代是對狀態(tài)陣列的字節(jié)到字節(jié)的變換,它使用字節(jié)替代表(S-盒)作用于狀態(tài)陣列的每個字節(jié)。S-盒通過以下兩步來構(gòu)造:
a)將字節(jié)看作GF(28)的元素,并映射到自己的乘法逆,元素{00}映射到它自身;
b)將該逆元字節(jié)作GF(2)上的如下仿射變換:
采用SubByte變換后,字節(jié)元素至少有兩個比特發(fā)生變換,具有很好的混淆作用。InvSubByte是SubByte的逆變換,它使用逆S-盒作用在每個字節(jié)上,先求逆仿射變換得到一個字節(jié),再求該字節(jié)的乘逆,就可構(gòu)造逆S-盒。
2)行移位(ShiftRow)
行移位是AES算法的線性運(yùn)算中的一個部分,行移位的方案只與狀態(tài)有關(guān)。第一行的元素不移動,第二、三、四行向左循環(huán)移動不同的字節(jié)數(shù)。行移位變換中狀態(tài)循環(huán)移位的字節(jié)數(shù)如表1。ShiftRow循環(huán)移位操作對i行j列的字節(jié)循環(huán)移動后的位置是 。其中Nb是分組長的列數(shù),Ci為第i行移動的字節(jié)數(shù)。
3)列混合(MixColumn)
列混合運(yùn)算采用系數(shù)在GF(28)下的多項式與固定多項式b(x)相乘,得到的結(jié)果取膜x4+1,即列混合的結(jié)果 。
其中
4)輪密鑰相加(AddRoundKey)
輪密鑰長度與分組長度相等,將狀態(tài)State與輪密鑰進(jìn)行簡單的有限域 下的加法操作。
密鑰擴(kuò)展
AES算法中每輪加密的輪密鑰是利用密鑰擴(kuò)展算法(KeyExpansion)對加密密鑰擴(kuò)展得到的。密鑰擴(kuò)展及輪密鑰選擇的原理是對加密密鑰擴(kuò)展得到輪密鑰,輪密鑰的總位數(shù)等于分組長度乘以輪數(shù)加1;在密鑰擴(kuò)展得到的輪密鑰中依次選取與分組長度相同數(shù)目的密鑰用于輪密鑰加運(yùn)算。
加密/解密運(yùn)算
AES算法中分組長和密鑰長的組合決定了需要加密多少輪才能達(dá)到安全的要求。加密輪數(shù)與分組長和密鑰長的對照表如表2,Nb是分組長的列數(shù),Nr加密輪數(shù),Nk密鑰長的列數(shù)。
AES算法的整個加密流程中,輪加密(Round)順序采用SubByte、ShiftRow、MixColumn和AddRoundKey四個變換,而初始輪只采用AddRoundKey變換,而最后一輪少一個MixColumn變換。
3 AES算法測試
3.1 正確性測試
本文對密鑰擴(kuò)展模塊和加/解密模塊進(jìn)行測試,所有的測試向量均來自FIPS PUBS 197。模塊的輸入為十六進(jìn)制數(shù)表示的字符組成的初始密鑰,輸出為產(chǎn)生的密鑰字符的十六進(jìn)制數(shù)表示。每一字符均用兩位十六進(jìn)制數(shù)表示。密鑰擴(kuò)展產(chǎn)生的結(jié)果與FIPS PUBS 197(page27-32)給出的結(jié)果完全相同;加解密的結(jié)果與FIPS PUBS 197(page35-46)給出的結(jié)果相同,由此得到密鑰擴(kuò)展和加解密模塊實現(xiàn)是正確的。
3.2 性能測試
本文采用對同一分組n次加密的方法進(jìn)行時間測試。假設(shè)測到的時間為t,則加密一個分組所需時間為t/n秒,測試取n=2x108。每一種密鑰下測試多次(下表取3次測試數(shù)據(jù)),取平均值即為該加密時的速度。測試的加密性能數(shù)據(jù)見表3。
4 在網(wǎng)上沖印系統(tǒng)中的應(yīng)用
網(wǎng)上沖印系統(tǒng)是一種新興的電子商務(wù),它能夠為用戶提供方便、智能數(shù)碼影像服務(wù)。該系統(tǒng)主要包括圖片上傳模塊、訂單生產(chǎn)模塊、賬戶支付模塊等三部分。在系統(tǒng)中用戶的賬戶信息、銀行卡信息、訂單信息等都屬于敏感信息,在網(wǎng)絡(luò)傳輸時必然要考慮安全性,對信息加密則是敏感信息安全傳送的關(guān)鍵環(huán)節(jié)。因此,本文把已經(jīng)實現(xiàn)的AES加密算法應(yīng)用到網(wǎng)上沖印系統(tǒng)中,來加強(qiáng)系統(tǒng)安全性。
網(wǎng)上沖印系統(tǒng)的結(jié)構(gòu)如圖2[5],系統(tǒng)分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)層,每一層都實現(xiàn)不同的功能劃分。 表示層和數(shù)據(jù)層都和業(yè)務(wù)邏輯層交互,業(yè)務(wù)邏輯層的任務(wù)是提供應(yīng)用程序邏輯---程序的核心部分,因此把AES算法以單件類的形式應(yīng)用到業(yè)務(wù)邏輯層中,當(dāng)需要進(jìn)行信息傳輸時,就調(diào)用該模塊進(jìn)行加解密處理。
結(jié)論
本文采用C++語言實現(xiàn)了AES加密算法,經(jīng)過微機(jī)調(diào)試,程序可以穩(wěn)定運(yùn)行,并且驗證了其正確性和加解密性能。
并把實現(xiàn)的AES算法應(yīng)用到網(wǎng)上沖印系統(tǒng),相對與沒有進(jìn)行加密前,其安全性得到了大幅度的提高。
參考文獻(xiàn)
[1]馮登國. 國內(nèi)外密碼學(xué)研究現(xiàn)狀及發(fā)展趨勢[J]. 通信學(xué)報,2002,23(5):18-26
[2]曾祥勇, 張煥國, 王麗娜. AES S-盒的設(shè)計分析[C]. 第三屆中國信息和通信安全學(xué)術(shù)會議,武漢,2003:186-193
[3]Joan Daemen, Vincent Rijmen. The Block Cipher Square[C]. Fast Software Encryption 1997, Haifa, Israel, 1997: 149-165
[4]曾游, 戚文峰.AES算法攻擊方法的改進(jìn)[J].信息工程大學(xué)學(xué)報,2003,(6):14-17
[5]武勤, 徐進(jìn). C/S結(jié)構(gòu)業(yè)務(wù)系統(tǒng)平移到多層體系結(jié)構(gòu)技術(shù)的研究[J]. 計算機(jī)系統(tǒng)應(yīng)用,2004(11):26-29
作者簡介:張宏(1962-),男,副教授,主要研究方向計算機(jī)系統(tǒng)設(shè)計。
葉朝嶺(1983-),男,碩士研究生,主要研究方向計算機(jī)安全。
鄭春光(1981-),男,碩士研究生,主要研究方向計算機(jī)網(wǎng)絡(luò)安全、網(wǎng)絡(luò)應(yīng)用。