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是面向位運算