• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      沈 俊

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

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

      中圖分類號(hào):TP3 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7597(2009)0110052-02

      一、引言

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

      二、AES加密算法簡(jiǎn)介

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

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

      2.行移位:一個(gè)簡(jiǎn)單的基于行的置換。

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

      4.輪密鑰加:用當(dāng)前分組和擴(kuò)展密鑰的一部分進(jìn)行按位異或。

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

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

      AES加密算法的詳細(xì)內(nèi)容請(qǐng)參考文獻(xiàn)[1]。

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

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

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

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

      1.加法

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

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

      char ubyte;

      {

      GF2NOP_1B gfR;

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

      return gfR;

      }

      2.乘法

      乘法要稍微復(fù)雜一些,不能只用簡(jiǎn)單的異或運(yùn)算。但是可以使用一種合理而容易實(shí)現(xiàn)的技巧,原理請(qǐng)見參考文獻(xiàn)[2],這里只給出實(shí)現(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;

      }

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

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

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

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

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

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

      類似的第二處改進(jìn)也可以用一個(gè)算式表示,即對(duì)給定的State Si和給定的輪密鑰wj:

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

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

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

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

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

      und]。

      四、消息系統(tǒng)的設(shè)計(jì)

      這里設(shè)計(jì)的消息系統(tǒng)是C/S結(jié)構(gòu)的,客戶端通過服務(wù)器與另一個(gè)客戶端聯(lián)系。服務(wù)器端的主要功能是:接受管理客戶端的連接請(qǐng)求,存儲(chǔ)轉(zhuǎn)發(fā)客戶端的消息。其UML構(gòu)件圖如圖3。

      TCP/IP接口構(gòu)件是對(duì)Socket API的封裝,為上層構(gòu)件提供接口;數(shù)據(jù)庫(kù)接口構(gòu)件是對(duì)數(shù)據(jù)庫(kù)訪問操作的封裝,為上層構(gòu)件提供接口??蛻舳诉B接請(qǐng)求到達(dá)時(shí),經(jīng)由AES加解密構(gòu)件解密后由連接管理構(gòu)件管理,并反饋以密鑰生成構(gòu)件隨機(jī)生成的密鑰;當(dāng)有消息到達(dá)時(shí),AES加解密構(gòu)件對(duì)其解密后,由消息處理構(gòu)件進(jìn)行處理,由消息存檔構(gòu)件存入數(shù)據(jù)庫(kù),并由消息分發(fā)構(gòu)件向連接管理構(gòu)件查詢目標(biāo)地址后交由TCP/IP接口構(gòu)件發(fā)送。

      客戶端程序比較簡(jiǎn)單,主要的流程如圖4的UML活動(dòng)圖。

      圖4中請(qǐng)求連接時(shí)的請(qǐng)求數(shù)據(jù)是用默認(rèn)密鑰進(jìn)行加密的,服務(wù)器響應(yīng)后會(huì)返回新密鑰,以后的會(huì)話都使用新密鑰進(jìn)

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

      五、結(jié)束語

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

      參考文獻(xiàn):

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

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

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

      作者簡(jiǎn)介:

      沈俊,男,浙江省湖州人,同濟(jì)大學(xué)碩士研究生,主要從事網(wǎng)絡(luò)化測(cè)試平臺(tái)通信安全的研究。

      猜你喜歡
      網(wǎng)絡(luò)安全
      網(wǎng)絡(luò)安全(上)
      網(wǎng)絡(luò)安全知多少?
      新量子通信線路保障網(wǎng)絡(luò)安全
      網(wǎng)絡(luò)安全
      網(wǎng)絡(luò)安全人才培養(yǎng)應(yīng)“實(shí)戰(zhàn)化”
      上網(wǎng)時(shí)如何注意網(wǎng)絡(luò)安全?
      網(wǎng)絡(luò)安全與執(zhí)法專業(yè)人才培養(yǎng)探索與思考
      設(shè)立網(wǎng)絡(luò)安全專項(xiàng)基金 促進(jìn)人才培養(yǎng)
      網(wǎng)絡(luò)安全監(jiān)測(cè)數(shù)據(jù)分析——2015年12月
      網(wǎng)絡(luò)安全監(jiān)測(cè)數(shù)據(jù)分析——2015年11月
      马公市| 宣汉县| 乌拉特中旗| 亚东县| 梓潼县| 哈尔滨市| 五原县| 会理县| 呼伦贝尔市| 枣强县| 靖宇县| 临沧市| 且末县| 绩溪县| 明水县| 昌邑市| 广元市| 遵义县| 卫辉市| 衢州市| 新干县| 当涂县| 通河县| 柏乡县| 西乡县| 女性| 通辽市| 扶风县| 太原市| 晋宁县| 漳浦县| 玛多县| 连州市| 哈尔滨市| 特克斯县| 太康县| 抚远县| 澄城县| 南宁市| 陈巴尔虎旗| 襄汾县|