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