密碼 | 對(duì)稱加密 | AES

一、AES 算法簡(jiǎn)介

高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,縮寫:AES),在密碼學(xué)中又稱Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn),用來(lái)替換原先的 DES.
背景介紹:1997年1月2號(hào),美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(National Institute of Standards and Technology: NIST)宣布希望征集高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard: AES),用以取代DES。AES得到了全世界很多密碼工作者的響應(yīng),先后有很多人提交了自己設(shè)計(jì)的算法。最終有5個(gè)候選算法進(jìn)入最后一輪:RijndaelSerpentTwofishRC6和MARS。最終經(jīng)過(guò)安全性分析、軟硬件性能評(píng)估等嚴(yán)格的步驟,Rijndael算法獲勝。

AES 算法的區(qū)塊長(zhǎng)度固定為128位(16 字節(jié)),密鑰長(zhǎng)度則可為128位,192位,256位。加密模式可采用 ECB,CBC,CTR,OFB,CFB 等模式進(jìn)行加密。
其中 ECB 與 CBC 模式是對(duì)數(shù)據(jù)原文做加密處理,原文長(zhǎng)度的必須為 16 或 16 的倍數(shù)方可加密成功,不足16倍數(shù)的部分則需進(jìn)行 Padding 處理(Padding 方式為 PKCS5 Padding 或 PKCS7 Padding)。
CTR,OFB,CFB 模式則是對(duì)待加密數(shù)據(jù)的 IV 做加密處理,原文長(zhǎng)度不需為 16 或 16 的倍數(shù),原文長(zhǎng)度與密文長(zhǎng)度相等。
AES 屬于對(duì)稱加密即加密密鑰與解密密鑰是相同的,加密速度快。

二、AES 加密原理

AES 是分組密碼技術(shù),將明文進(jìn)行分組加密,每組為固定128位(16字節(jié))區(qū)塊長(zhǎng)度,不足 128 位的部分需采用補(bǔ)位方式,將其補(bǔ)全成為 128 位數(shù)據(jù)后進(jìn)行加密。AES密鑰區(qū)塊長(zhǎng)度可為 128位,192位,256位區(qū)塊長(zhǎng)度,加密過(guò)程中采用 Rijndael 提出的特定的密鑰生成方案。

AES 128 10輪
AES 191 12輪
AES 256 14輪

加解密步驟:
AES 加密分為 4步。

  • SubBytes(),ShiftRows(),MixColumns(),AddRoundKey()。
    AES 解密分為 4步。
  • 逆向 MixColumn 子層, 逆向 ShiftRow 子層, 逆向 SubBytes 層,逆向 AddRoundKey()。
image

SubBytes()

字節(jié)替換,AES 定義了一個(gè) 16(0~F) * 16(0~F) 字節(jié)的 S 盒(S-Box),將輸入的數(shù)據(jù) 16 byte(4 * 4) 按照 S 盒的內(nèi)容進(jìn)行依次替換。例如數(shù)據(jù)為0x31,則需找到 S-Box 中橫坐標(biāo)為 3 縱坐標(biāo)為 1 的值,進(jìn)行替換操作。

ShiftRows()

ShiftRows 行位移變換是狀態(tài)數(shù)組的第一行保持不變,第二行循環(huán)左移一個(gè)字節(jié),第三行循環(huán)左移兩個(gè)字節(jié),第四行循環(huán)左移三個(gè)字節(jié)。行移位變換的目的就是增加 AES 的擴(kuò)展屬性。

MixColumns()

MixColumns 列混淆變換是一個(gè)線性變換,混淆了狀態(tài)矩陣的每一列。列混淆變換中,每輸入的一個(gè)字節(jié)均影響了 4 個(gè)輸出字節(jié),MixColumn 操作是 AES 中的主要擴(kuò)散元素。ShiftRows() 和 MixColumns() 組合操作使得三輪以后,狀態(tài)矩陣的每個(gè)字節(jié)都依賴于所有 16 個(gè)明文字節(jié)成為可能。

AddRoundKey()

密鑰加法層是將 16 字節(jié)的當(dāng)前狀態(tài)矩陣和 16 字節(jié)的子密鑰通過(guò)按位 XOR 操作結(jié)合在一起的。

三、AES 模式說(shuō)明

分組密碼算法(DES,AES,SM4等)只能加密固定長(zhǎng)度的分組,當(dāng)待加密明文數(shù)據(jù)長(zhǎng)度都超過(guò)分組密碼長(zhǎng)度時(shí),就需要對(duì)分組密碼算法進(jìn)行迭代,將明文數(shù)據(jù)進(jìn)行加密,迭代的方法稱為分組密碼的模式

ECB 模式

ECB 模式全稱為電子密碼本模式,ECB 模式中,將明文分組加密之后的結(jié)果直接拼接成密文分組。
ECB 模式中相同的明文分組會(huì)被轉(zhuǎn)換成為相同的密文分組。
計(jì)算支持并行計(jì)算(加密,解密)。

ECB 模式存在非常大的風(fēng)險(xiǎn),攻擊者不需要破譯密碼就可以操作明文。
分組1:卡號(hào)A
分組2:金額1
分組3:卡號(hào)B
交易信息為卡號(hào)A 向卡號(hào)B 轉(zhuǎn)賬 金額1,攻擊者將分組信息對(duì)調(diào)成 卡號(hào)B 向卡號(hào)A 轉(zhuǎn)賬 金額1,攻擊者無(wú)需解析密文,就能更改交易信息,顯然是存在風(fēng)險(xiǎn)的。

image

CBC 模式

CBC 模式全稱為密碼分組鏈接模式,CBC 模式中加密過(guò)程引入初始化向量 IV,第一包數(shù)據(jù)與初始化向量 IV 做異或操作后進(jìn)行加密,接下來(lái)將明文分組與前一個(gè)密文分組進(jìn)行 異或操作后在進(jìn)行加密。
計(jì)算支持并行計(jì)算(僅解密)。


image

CFB 模式

CFB 模式為密文反饋模式,在 CFB 模式中,明文分組并沒(méi)有直接進(jìn)行加密,第一包數(shù)據(jù)將初始化向量加密,密文值與明文分組進(jìn)行異或操作,接下來(lái)依次將每次異或得到的結(jié)果進(jìn)行加密得到數(shù)據(jù)密文。
計(jì)算支持并行計(jì)算(僅解密),可以解密任意分組。


image

OFB 模式

OFB 模式為輸出反饋模式,OFB 模式中,密碼算法的輸出會(huì)反饋到密碼算法的輸入中。OFB 模式中,XOR 所需要的比特序列可以事先通過(guò)密碼算法生成,和明文分組無(wú)關(guān)。只要提前準(zhǔn)備好所需的密鑰流,則在實(shí)際從明文生成密文的過(guò)程中,就不需要?jiǎng)討B(tài)密碼算法了。
計(jì)算不支持并行計(jì)算(加密,解密)。


image

CTR 模式

CTR 模式為計(jì)數(shù)器模式,CTR 模式是一種通過(guò)將逐次累加的計(jì)數(shù)器進(jìn)行加密來(lái)生成密鑰流的流密碼。CTR 模式中,每個(gè)分組對(duì)應(yīng)一個(gè)逐次累加的計(jì)數(shù)器,并通過(guò)對(duì)計(jì)數(shù)器進(jìn)行加密來(lái)生成密鑰流。最終的密文分組是通過(guò)將計(jì)數(shù)器加密得到的比特序列,與明文分組進(jìn)行異或得到。CTR 模式可以以任意順序?qū)Ψ纸M進(jìn)行加解密,在加解密時(shí)需要用到的 “計(jì)數(shù)器” 的值可以由分組序號(hào)直接計(jì)算出來(lái),可以實(shí)現(xiàn)并行計(jì)算,支持并行計(jì)算的系統(tǒng)中,CTR 模式的速度非常快。CFB,OFB 模式均推薦使用 CTR 模式代替。
支持并行計(jì)算(加密,解密)。


image

四、參考

參考鏈接:
https://en.wikipedia.org/wiki/Advanced_Encryption_Standard
http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf
http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf
https://bbs.pediy.com/thread-253884.htm

參考書(shū)籍:
《深入淺出密碼學(xué)》
《圖解密碼技術(shù)》

參考代碼:
LGPL-AES:https://tls.mbed.org/source-code

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容