AES算法(五)GCM工作模式
在以前介紹的基本工作模式中,ECB、CFB、OFB 三種模式可以解決 ECB 模式中相同明文生成相同密文的缺陷,CTR 又可以在此基礎(chǔ)上提供多分組并行加密特性,但是它們都不能提供密文消息完整性校驗(yàn)功能,所有就有了 GCM 模式。
講解 GCM 模式之前,我們先要講一下 MAC和GMAC。
MACMAC 全稱是 Message Authentication Code,中文名稱為消息認(rèn)證碼,一串由密鑰和密文生成的固定值,有時也稱 Auth Tag。
MAC 的使用流程如下:
首先 Sender 和 Receiver 共享同一個 Key,約定一個 MAC 計(jì)算算法 Algorithm
Sender 把要傳遞的消息 Message 通過 Key 和 Algorithm 計(jì)算出 MAC,將 Message 和 MAC 發(fā)送給 Receiver
Receiver 收到 Message 和 MAC 后,將 Message 通過約定的 Key 和算法 Algorithm 計(jì)算出 MAC_1,通過對比 MAC 和 MAC_1 是否相等
MAC == MAC_1 消息無篡改且是 Sender 發(fā)布的
MAC != MAC_1 消息有篡改或者根本不是 Sender 發(fā)布的,也就是有問題
消息認(rèn)證碼是密碼學(xué)家工具箱中的 6 大工具之一:對稱密碼、公鑰密碼、單向散列函數(shù)、消息認(rèn)證碼、數(shù)字簽名和偽隨機(jī)數(shù)生成器。
MAC 跟哈希有點(diǎn)像但比哈希要復(fù)雜,因?yàn)?Mac 的生成和驗(yàn)證過程都是需要密鑰的。
GMACGMAC 全稱是 Galois Message Authentication Code,中文名稱為伽羅瓦消息驗(yàn)證碼。
GMAC 就是利用伽羅華域(Galois Field,GF,有限域)乘法運(yùn)算來計(jì)算消息的 MAC 值。
GCM 模式GCM 全稱為 Galois/Counter Mode,可以看出 G 是指 GMAC,C 是指 CTR。它在 CTR 加密的基礎(chǔ)上增加 GMAC 的特性,解決了 CTR 不能對加密消息進(jìn)行完整性校驗(yàn)的問題。
GCM 加密所需數(shù)據(jù):明文 P、加密密鑰 Key、初始向量 IV、附加消息 F。
GCM 加密步驟如下:
將 P 分為 P1、P2、…、Pn,Px 長度 <= 128
生成累加計(jì)數(shù)器 c0、c1、c2、…、cn,由密鑰 Key 計(jì)算出密鑰 H
將 IV、c0 進(jìn)行運(yùn)算(連接、加和、異或等)得到 IV_c0,用 Key 加密 IV_c0 得到 IVC0
將 IV、c1 進(jìn)行運(yùn)算(連接、加和、異或等)得到 IV_c1,用 Key 加密 IV_c1 得到 IVC1,將 IVC1、P1 做異或運(yùn)算得到 C1,用密鑰 H 通過 GMAC 算法將附加消息 F 計(jì)算出 F1, F1 與 C1 做異或運(yùn)算得到 FC1
將 IV、c2 進(jìn)行運(yùn)算(連接、加和、異或等)得到 IV_c2,用 Key 加密 IV_c2 得到 IVC2,將 IVC2、P2 做異或運(yùn)算得到 C2,用密鑰 H 通過 GMAC 算法將附加消息 FC1 計(jì)算出 F2, F2 與 C2 做異或運(yùn)算得到 FC2
…
將 IV、cn 進(jìn)行運(yùn)算(連接、加和、異或等)得到 IV_cn,用 Key 加密 IV_cn 得到 IVCn,將 IVCn、Pn 做異或運(yùn)算得到 Cn,用密鑰 H 通過 GMAC 算法將附加消息 FC(n-1) 計(jì)算出 Fn, Fn 與 Cn 做異或運(yùn)算得到 FCn
拼接 C1、…Cn 得到密文 C,用密鑰 H 通過 GMAC 算法結(jié)合 FCn 和 IVC0 最終計(jì)算出 MAC
GCM 加密步驟相關(guān)資料較少,本文根據(jù)維基百科大致做了步驟拆解,如有不準(zhǔn)確請敬請斧正
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。