AES加密基本原理圖解

AES加密

Fright-Moch整理

AES簡介

高級加密標準(AES,Advanced Encryption Standard)為最常見的對稱加密演算法(微信小程式加密傳輸就是用這個加密演算法的)。對稱加密演算法也就是加密和解密用相同的密鑰,

流程圖如圖

 

&明文P: 沒有經過加密的數據。

 

&密鑰K: 用來加密明文的密碼,在對稱加密演算法中,加密與解密的密鑰是相同的。密鑰為接收方與發送方協商產生,但不可以直接在網路上傳輸,否則會導緻密鑰泄漏,通常是通過非對稱加密演算法加密密鑰,然後再通過網路傳輸給對方,或者直接面對面商量密鑰。密鑰是絕對不可以泄漏的,否則會被攻擊者還原密文,竊取機密數據

 

&AES加密函數:設AES加密函數為E,則 C = E(K, P),其中P為明文,K為密鑰,C為密文。也就是說,把明文P和密鑰K作為加密函數的參數輸入,則加密函數E會輸出密文C

 

&密文C: 經加密函數處理後的數據

 

&AES解密函數:設AES解密函數為D,則 P = D(K, C),其中C為密文,K為密鑰,P為明文。也就是說,把密文C和密鑰K作為解密函數的參數輸入,則解密函數會輸出明文P。

 

&對稱加密演算法:加密和解密用到的密鑰是相同的,這種加密方式加密速度非常快,適合經常發送數據的場合。缺點是密鑰的傳輸比較麻煩。

 

&非對稱加密演算法:加密和解密用的密鑰是不同的,這種加密方式是用數學上的難解問題構造的,通常加密解密的速度比較慢,適合偶爾發送數據的場合。優點是密鑰傳輸方便。常見的非對稱加密演算法為RSA、ECC和EIGamal。

 

&AES的工作模式:ECB、CBC、CTR、CFB、OFB

ECB模式(默認):電碼本模式 Electronic Codebook Book

CBC模式:密碼分組鏈接模式 Cipher Block Chaining

CTR模式:計算器模式 Counter

CFB模式:密碼回饋模式 Cipher FeedBack

OFB模式:輸出回饋模式 Output FeedBack

明文到密文加密關係

 

 

 

 

密鑰拓展:

將密鑰擴充,得到40個新列,分組得到輪密鑰,當W[I]中的i是4的倍數時候我們取經過T函數變換的W[i-1]和W[i-4]進行異或操作得到新的W[i]

 

 

 

 

 

 

 

 

 T函數變換

 

 

 

 

 

 

 

 

 

 

 

異或操作

 

 

  

當i不是4的倍數時候,我們只需要將w[i-1]和w[i-4]進行異或就能得到新的w[i]

 

 

 

 

然後就是重複相同的流程得到我們的10組密鑰

 

 

重複10次

 

 

 

 

然後就是核心流程(針對明文)

 

 

 

 

位元組代換(非線性)

定義S盒/逆S盒,S盒由16*16的位元組組成矩陣,S盒不可自逆

 

 

 

 

我們通過S盒將明文分組中的元素逐個進行替換

例如替換19我們需要找到第一列第九個元素

 

 

 

我們需要全部替換

 

 

 

位元組代換(線性 左循環位移操作)

第N行就位移N位元組

 

 

 

新的矩陣如下

 

 

 

 

 

列混合(非線性)

由固定矩陣乘變換後的矩陣對列進行操作,得到乘積結果放到原來的位置上面

 

 

 

最後得到的

 

 

 

行位移和列混合為矩陣得到了拓展性

輪密鑰加

我們將密鑰拓展得到的輪密鑰和我們的明文分組矩陣進行逐列的異或操作

 

 

 

將得到的結果進行替換反覆進行一個循環

這是第一次的輪密鑰加

 

 

 

AES-128一般循環10次

AES-192一般循環12次

AES-256一般循環14次

 

 

 

 

Output就是最後的加密密文

小結

AES演算法中分組長度只能是128位,面向位元組運算而DES是面向位運算