日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

AES算法描述

發布時間:2023/12/13 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 AES算法描述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在AES中,分組長度只能是128位,密鑰長度可以是三者中的任意一種

  密鑰長度不同,則加密輪數不同,AES參數如表3.8所示。本節中,假定密鑰長度位128位,那么AES的迭代輪數為10輪,這也是目前使用最廣發的實現方式。

  

  AES處理單位是字節,128位的輸入明文分組P和輸入密鑰K都被分為16字節。

  一般明文分組用以字節位單位的正方形矩陣描述,稱為狀態(State)矩陣。

  在算法的每一輪,狀態矩陣的內容不斷發生變化,最后的結果作為密文輸出C。

  矩陣中字節的排序順序為從上到下,從左至右,輸入矩陣和輸出矩陣如圖3.9所示。

  

  類似地,128位密鑰也是以字節為單位的矩陣表示,矩陣的每一列被稱作1個32bit的字

   通過密鑰編排程序,該密鑰矩陣被擴展成一個由44個字組成的w[0],w[1],...w[43]系列的前4個元素是原始密鑰,用于加密運算的初始密鑰加。

   后40個字分為1組,每組4個字(128bit)分別用于10輪運算中的輪密鑰加。

   AES算法的加密與加密如圖3.10所示

  

  AES的解密過程與加密過程并不一致,因為AES并未使用Feistel結構,在每輪操作時,對整個分組進行處理。解密過程仍為10輪,每輪操作是加密操作的逆變換。解密操作的一輪就是順序執行逆行移位、逆字節變換、輪密鑰加和逆列混合。與加密操作類似,最后一輪不執行逆列混合,在第一輪解密之前,要執行1輪密鑰加操作。

  加密和解密分別由輪密鑰加開始和結束,是因為只有輪密鑰加階段使用了密鑰。

  字節代換:

    字節代換是一個關于字節的非線性變換,獨立地對狀態的每個字節進行。字節代換是可逆,由以下兩個可逆變換復合得到。首先,將一個字節變換成有限域GF(28)中的乘法逆元素,規定00映射到自身00。

    其次,對之前的結果進行如下(GF(2)上的,可逆的)仿射變換,可由以下矩陣變換表示。

    也可以將字節代換對各種可能字節的變換結果拍成一個表,如果3.11所示,它稱為AES的字節代替表或S盒。

    

    狀態矩陣中的元素按照下面的方式通過S盒映射為一個新的字節:把該字節的高4位作為行值,低4位作為列值,取出S盒對應行列的元素作為輸出

    例如:加密時,輸入字節0x12,則查找s盒的第一行第二列,得到值0xC9。

    例如:

  

          將計算結果從下往上讀,最終(11101001),寫成十六進制數為0xE9;

  行位移:

    1.行位移是將狀態矩陣的各行進行循環移位,不同狀態行的位移量不同。

    2.第0行不移動,

    3.第1行循環左移1個字節

    4.第2行循環左移2個字節

    5.第3行循環左移三個字節,行移位示意圖如圖3.12所示。

    6.行移位逆變換是將狀態矩陣的每行執行相反的移位操作

    7.列如,AES-128中,狀態矩陣的第0行右移0字節。

    8.第一行右移1字節

    9.第二行右移2字節 

    10.第三行右移3字節

    11.行移位雖然簡單,但是相當有用。

    12.它將某個字節從其中一列移到另一列中,它的線性距離是4字節(1個字)的倍數,同時這個變換確保了某列的4字節被擴展到了4個不同的列。

  列混合:   

    1.列混合變換是一個替代操作,是AES算法中最具技巧性的部分。該步驟的設計中包含了多個方面,包括維數、線性性、擴散性盒在8位處理器上的運算性能,它只在AES的第0,1,...  ,Nr-1輪中使用。

    2.列混合變化是通過矩陣相乘實現的,經行移位后的狀態矩陣與固定的矩陣相乘,得到混淆后的狀態矩陣:

    

    3.列混合過程用到有限域GF(28)乘法

     4.其中任何值乘0x01都等于自身

    5.用0x02做乘法時  可以使用乘法運行xtime()來描述

    6.使用0x03做乘法時,可以采用:

      b*0x03=b*(0x02異或0x01) = (b*0x02)異或(b*0x01)

    

    7.例如:

      列混合運算的逆運算是類似的,即每列都用一個特定的多形式d(x)相乘。

      d(x)滿足(’03’x3+’01’x2+’01’x+’02’)d(x)=’01’,由此可得d(x)=’0B’x3+’0D’x2+’09’x+’0E’。

  4.輪密鑰加

    1.128位的state按位與128位的密鑰逐位異或(XOR)

    2.10輪輪密鑰加變換雖然簡單,缺影響了State中的每一位。

    3.密鑰擴展的復雜性和AES其它階段運算的發雜性,確保了該算法的安全性

    4.輪密鑰加是將128bit密鑰Ki同State中的數據進行逐位異或操作,該過程可以看作字逐位異或的結果,也可以看作字節級別的操作。

    5.其中,密鑰Ki中每個字w[4i]、w[4i+1]、w[4i+2]、w[4i+3]均為32bit,包含4個字節。

    6.密鑰Ki(i=0 ,1,… ,9)的生成過程為密鑰擴展算法,輪密鑰加運算示意圖如圖3.15所示。

    

    7.輪密鑰加運算的逆運算同正向的輪密鑰加運算完全一致,這是因為異或的逆操作是其本身。

  密鑰擴展:

    AES在加密和解密算法中使用了一個由種子密鑰字節數組生成的密鑰調度表,稱為密鑰擴展(Key Expansion)  

    密鑰擴展從一個原始密鑰中生成了多重密鑰來代替使用單個密鑰,大大增加了比特位的擴散

    AES密鑰擴展算法的輸入值是4字密鑰,輸出是一個44字的一維線性數組,這為初始輪密鑰擴展階段和算法中的其他10輪中的每一輪提供16個字節的輪密鑰。

    AES首先將初始128位密鑰輸入一個4x4矩陣中。矩陣的每列被稱為1個32bit的字,依次命名為w[0],w[1],w[2],w[3]

    它們構成了一個以字為單位的數組w

    然后每次用w數組填充擴展密鑰數組余下的部分,在擴展密鑰數組中,w[i]的值一來與w[i-1]和w[i-4]  (i≥4)

    對w數組中下標不為4的倍數的元素,只進行簡單的異或,其邏輯關系為w[i]=w[i-1]異或w[i-4]

    對w數組中下標為4的倍數的元素,由等式w[i]=w[i-4]異或T(w[i-1])

    其中T是一個復雜的函數,由3部分組成:字循環、字節代換和輪常量異或

    T(w[i-1]) =ByteSub (RotByte (w[i-1]))⊕Rcon[i] 具體作用如下。   

      (1)字循環RotByte():將1個字的4個字節循環左移1個字節,即將字(B0B1B2B3) 變為(B1B2B3B0) 。

      (2)字節代換ByteSub():基于S盒對輸入字中的每個字節進行S代替。:

      (3)輪常量異或⊕:將上述(1)和(2)的結果再與輪常量Rcon[i]相異或,其中i表示輪數

    為了抵抗已有的密碼分析,AES使用了于輪相關的輪常量來防止不同輪中產生的輪密鑰的對稱性和相似性

    輪常量Rcon[i]是1個4個字節的字,這個字的右邊三個字節總為0,Rcon[i]數據表如表3.9所示

    

      

      Rcon[i/Nk] 為輪常數,其值與Nk無關,定義為(字節用十六進制表示,同時理解為GF(28)上的元素):

       Rcon[i]=(RC[i], ‘00’, ‘00’, ‘00’)

       其中RC[i]是GF(28)中值為xi-1的元素,因此。

       RC[1]=1(即‘01’)

       RC[2]=x(即‘02’)

       RC[i]=xi-1

  分組密碼的工作模式:

    分組密碼在加密時,明文分組的長度是固定的,而實際應用中待加密消息的數據量是不固定的,數據格式可能多種多樣

    為了能在各種應用場合使用DES,1980年NIST公布了DES的4種工作模式:電子密碼本(Electronic Code Book,ECB)模式、密碼分組鏈接(Cipher Block Chaining,CBC)模式、密碼反饋(Cipher Feedback,CFB)模式和輸出反饋(Output Feedback,OFB)模式。

    2001年12月公布了AES的5種工作模式,即ECB、CBC、CFB、OFB和CTR(計數器模式,Counter Mode)。

      ECB模式是最簡單的工作模式,ECB模式的加密操作和ECB模式的解密操作分別如圖3.16和3.17所示,它一次對一個64bit長的明文分組加密,而且每次的加密密鑰都相同。當密鑰取定時,對明文的每個分組都有唯一的密文與之對應。

  

      

      ECB模式在用于短數據(如加密密鑰)時非常理想,因此如果需要安全地傳遞DES密鑰,ECB是最合適的模式。

總結

以上是生活随笔為你收集整理的AES算法描述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。