国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于AES加密算法的消息系統(tǒng)設計

2009-02-11 10:02
新媒體研究 2009年1期
關鍵詞:網(wǎng)絡安全

沈 俊

[摘要]AES是一種對稱分組密碼算法,它是廣泛應用的新標準。首先介紹AES加密算法的基本操作和流程。隨后討論AES加密算法的實現(xiàn)。最后,闡述一個基于AES加密算法的消息系統(tǒng)的設計方案。

[關鍵詞]AES加密 消息系統(tǒng) 網(wǎng)絡安全

中圖分類號:TP3 文獻標識碼:A 文章編號:1671-7597(2009)0110052-02

一、引言

美國國家標準技術協(xié)會(NIST)在2001年發(fā)布了高級加密標準(AES)。AES是一種對稱分組密碼算法,用以取代DES的商業(yè)應用,從而成為廣泛使用的新標準。其分組長度為128位,密鑰長度為128位,192位或256位,其中128位的密鑰長度最常用。以下各節(jié)介紹了一個基于AES加密算法的消息系統(tǒng)的設計。

二、AES加密算法簡介

AES加密算法1、2中128位密鑰是最常用的,故以128位密鑰為例介紹。AES加密算法有四種基本的操作:

1.字節(jié)代換:用一個S盒完成分組中的按字節(jié)代換。

2.行移位:一個簡單的基于行的置換。

3.列混淆:一個利用在域GF(28)上算術特性的代換。

4.輪密鑰加:用當前分組和擴展密鑰的一部分進行按位異或。

AES加密、解密算法的流程如圖1所示:

圖1中,輸入的密鑰將被擴展成由44個32位字組成的數(shù)組W[i],在每輪加解密過程中有四個字(128位)的密鑰。

AES加密算法的詳細內(nèi)容請參考文獻[1]。

三、AES加密算法實現(xiàn)

AES加密算法中,S盒的初始化和列混淆變換都要用到有限域GF(28)上的運算乘法和加法。因此先闡述有限域GF(28)上運算的實現(xiàn),再介紹AES加密算法的實現(xiàn)。

(一)有限域GF(28)上運算實現(xiàn)

一個專門的GF2NOP_1B類被用來進行一字節(jié)(8位)的加法、乘法和循環(huán)左右移位運算,類的主要方法在AES加密算法中會被調用。

1.加法

GF(28)上的加法實際上就是按位異或運算。代碼如下:

GF2NOP_1B GF2NOP_1B::operator+(ubyte ubV)//typedef unsigned

char ubyte;

{

GF2NOP_1B gfR;

gfR = this->ubValue ^ ubV; //XOR

return gfR;

}

2.乘法

乘法要稍微復雜一些,不能只用簡單的異或運算。但是可以使用一種合理而容易實現(xiàn)的技巧,原理請見參考文獻[2],這里只給出實現(xiàn):

GF2NOP_1B GF2NOP_1B::operator * (ubyte ubV)

{

GF2NOP_1B gfR = 0;

ubyte ubMulN = ubV;

ubyte ubMN = (ubyte)iMODNUM_8; //iMODNUM_8 = 00011011b

ubyte ubTmp;

int i;

for (i = 0; ubMulN; ubMulN >>= 1, i++) {

if (i == 0)

ubTmp = this->ubValue;

else {

if (ubTmp &0x80) {

ubTmp <<= 1;

ubTmp ^= ubMN;

}

else

ubTmp <<= 1;

}

if (ubMulN & 1) {

gfR = gfR + ubTmp;

}

}

return gfR;

}

代碼中還有一個類GF2NOP_4B是實現(xiàn)有限域GF(28)上4字節(jié)的運算,使得AES算法在32位機上用32位字操作會更緊湊更高效。

(二)AES加解密算法及實現(xiàn)

一個AESCrypt類被用來實現(xiàn)AES加解密,其主要方法有:密鑰擴展、輪密鑰加、字節(jié)代換、行移位、列混淆。其中,字節(jié)代換是用查表法實現(xiàn)的,列混淆是矩陣的乘法實現(xiàn)的,其它幾個方法也比較容易實現(xiàn)。

圖1所示AES加密算法和解密算法不同,采取兩處改進[2]可以使解密算法的結構和加密算法的結構一致。分別是,在解密輪中,交換逆向行移位和逆向字節(jié)代換,交換輪密鑰加和逆向列混淆。

逆向行移位影響字節(jié)的順序,但不更改字節(jié)的內(nèi)容,也不依賴字節(jié)的內(nèi)容來進行它的變換。逆向字節(jié)代換影響字節(jié)的內(nèi)容,但不更改字節(jié)的順序同時也不依賴字節(jié)的順序來進行它的變換。因此,這兩個操作可以交換。如對一個給定的State Si:

逆向行移位[逆向字節(jié)代換(Si)]=逆向字節(jié)代換[逆向行移位(Si)] (1)

類似的第二處改進也可以用一個算式表示,即對給定的State Si和給定的輪密鑰wj:

InvMixColumns(Si^wj)= [InvMixColumns(Si)]^[InvMixColumns(wj)] (2)

其中“^”符號表示異或,上式的證明見文獻[2]。至此,加、解密的輪函數(shù)已經(jīng)統(tǒng)一起來了,輪函數(shù)的C++聲明如下:

int AESCrypt::RoundFun(int iRound, int iEDFlag);

參數(shù)iRound是輪數(shù),加密時是1到10,解密時是9到0;iEDFlag是加、解密標志,真值為解密。輪函數(shù)的UML[3]活動圖如圖2所示:

圖2清楚地描繪了AES加、解密算法的輪函數(shù),圖中最后一個分支處當解密并且iRound!=0時有三步操作:ExpandKey[iRound]列逆混淆、輪密鑰加、ExpandKey[iRound]列混淆。第一、二步與前面的States[iRound]列逆混淆完成了上述式(2)等號右邊的運算,而第三步則是為了還原ExpandKey[iRo

und]。

四、消息系統(tǒng)的設計

這里設計的消息系統(tǒng)是C/S結構的,客戶端通過服務器與另一個客戶端聯(lián)系。服務器端的主要功能是:接受管理客戶端的連接請求,存儲轉發(fā)客戶端的消息。其UML構件圖如圖3。

TCP/IP接口構件是對Socket API的封裝,為上層構件提供接口;數(shù)據(jù)庫接口構件是對數(shù)據(jù)庫訪問操作的封裝,為上層構件提供接口。客戶端連接請求到達時,經(jīng)由AES加解密構件解密后由連接管理構件管理,并反饋以密鑰生成構件隨機生成的密鑰;當有消息到達時,AES加解密構件對其解密后,由消息處理構件進行處理,由消息存檔構件存入數(shù)據(jù)庫,并由消息分發(fā)構件向連接管理構件查詢目標地址后交由TCP/IP接口構件發(fā)送。

客戶端程序比較簡單,主要的流程如圖4的UML活動圖。

圖4中請求連接時的請求數(shù)據(jù)是用默認密鑰進行加密的,服務器響應后會返回新密鑰,以后的會話都使用新密鑰進

行。監(jiān)聽和等待發(fā)送是由兩個線程同時執(zhí)行的。這兩個線程一般都是在等待睡眠中,所以CPU占用率很低。

五、結束語

以上由介紹AES加密算法開始闡述了一個基于AES加密算法的消息系統(tǒng)的設計。這里介紹的這個系統(tǒng)是一個初步的雛形,尚只在局域網(wǎng)內(nèi)應用。此系統(tǒng)存在的缺陷是用默認的AES密鑰加密來傳輸AES新密鑰,很容易被黑客破解。為了使系統(tǒng)更安全,下一步的工作是將AES密鑰用RSA算法加密后再傳輸。

參考文獻:

[1]Deamen,j.and Rijmen,V.“Rijndael: The Advanced Encryption Standard.”Dr.Dobb's Journal, March 2001.

[2]孟慶樹、王麗娜、傅建明等譯,William Stallings.密碼編碼學與網(wǎng)絡安全:原理與實踐[M].第四版.北京:電子工業(yè)出版社,2006:66-125.

[3]李洋、鄭龑等譯,Larman,C.UML和模式應用[M].第三版.北京:機械工業(yè)出版社,2006.

作者簡介:

沈俊,男,浙江省湖州人,同濟大學碩士研究生,主要從事網(wǎng)絡化測試平臺通信安全的研究。

猜你喜歡
網(wǎng)絡安全
邯鄲市檔案館積極開展網(wǎng)絡安全宣傳教育
85.4%受訪未成年人接受過網(wǎng)絡安全教育
全國多地聯(lián)動2020年國家網(wǎng)絡安全宣傳周啟動
新量子通信線路保障網(wǎng)絡安全
提升網(wǎng)絡安全增進民生幸福
山西平魯聯(lián)社積極開展網(wǎng)絡安全知識宣傳活動
全省教育行業(yè)網(wǎng)絡安全培訓班在武漢舉辦
保護個人信息安全,還看新法
國家網(wǎng)絡安全人才與創(chuàng)新基地落戶武漢
安全知識網(wǎng)絡競賽進校園