AES_GCM加密
AES-GCM 非常简单,如果你看过前面几篇工作模式文章,会很容易理解它的处理逻辑。
这个模式主要分为两部分:
- AES-CTR
- 负责主要的加密逻辑,将明文转换为密文。
- GMAC
- 负责认证,保证消息完整性和真实性。
下面我们主要讲解一下 GMAC 的逻辑。
GMAC 作用
- GMAC 是 GCM 中的消息认证码(MAC)组件
- 提供数据完整性和真实性验证
- 确保密文和 AAD(附加认证数据)未被篡改
- 换句话说:保证消息没被篡改,且是由密钥持有者生成
GMAC 核心原理
GMAC 由两部分组成:
-
GHASH 函数
- 在 GF(2¹²⁸) 上进行多项式运算
- 输入:密文块、AAD、长度信息
- 迭代进行乘法和异或运算
- 乘数 H = AES(Key, 0¹²⁸)
这一步不是为了加密消息,而是生成 GMAC 运算的固定系数 H
-
最终加密步骤
- 将 GHASH 结果与 AES-加密后的初始计数器块 J0 进行异或
- 生成最终的认证标签(Tag)
完整公式
认证标签 Tag = AES(Key, J0) ⊕ GHASH_H(AAD, Ciphertext)
安全特性
- 安全性依赖于底层 AES 的安全性
- 提供 128 位的安全强度
- 相比 HMAC,GHASH 具有更好的并行性能
总结
AES-GCM 不只是加密,它还生成认证码。
H = AES(K,0¹⁶) 不是用来加密消息,而是“初始化认证引擎”的材料,保证 GMAC 生成的 Tag 安全且唯一,类似给消息盖的隐形印章。
这个模式在加密上不常直接见到,但在消息传输和网络协议中非常常用。