AES-CTR
AES-CTR 是什么?
AES-CTR一种将 AES 变为密钥流生成器的流密码模式,通过加密递增计数器并与明文进行 XOR 实现加密。
AES-CTR(计数器模式)是 NIST SP 800-38A 标准化的仅保密模式。密码对连续的计数器分组(通常是 96 位 nonce 与 32 位分组计数器拼接而成)进行加密,并将所得的密钥流与明文进行 XOR。由于每个分组只依赖于计数器,而不依赖前一个分组,CTR 支持完全并行的加密/解密以及对密文的随机访问,这些特性使它成为磁盘加密、IPsec ESP(RFC 3686)以及包裹在认证模式中的 TLS 记录保护的主力。
CTR 的根本弱点在于它不提供完整性且具有可塑性:攻击者翻转一位密文,就会精确地翻转对应位的明文,而且无法被检测。它必须始终与 MAC 配对使用,或作为 GCM、EAX、CCM 等 AEAD 内部的引擎。第二个更危险的陷阱是 nonce/计数器重用:用相同的密钥和起始计数器加密两条消息会产生重叠的密钥流,因此将两段密文 XOR 会抵消密钥流,得到两段明文的 XOR,这正是经典的"二次一次性密码本",曾攻破过真实系统。无论数据如何,密钥流都是相同的,因此即便跨不同文件,重复的计数器也是灾难性的。
在实践中,绝不要为存储或传输的数据部署原始的 AES-CTR:应选择 AES-GCM 或 ChaCha20-Poly1305,它们在相同的计数器模式内核之上构建认证,而唯一的操作要求就是保证 nonce 唯一。
flowchart LR
subgraph 密钥流生成
N[Nonce + 计数器 0] --> E0[AES 加密] --> KS0[密钥流分组 0]
N1[Nonce + 计数器 1] --> E1[AES 加密] --> KS1[密钥流分组 1]
N2[Nonce + 计数器 2] --> E2[AES 加密] --> KS2[密钥流分组 2]
end
P0[明文 0] --> X0((XOR))
KS0 --> X0 --> C0[密文 0]
P1[明文 1] --> X1((XOR))
KS1 --> X1 --> C1[密文 1]
P2[明文 2] --> X2((XOR))
KS2 --> X2 --> C2[密文 2]
C0 --> MAC[添加 MAC / 使用 GCM<br/>以保证完整性]● 示例
- 01
AES-CTR 是 AES-GCM 与 AES-CCM 内部的加密层。
- 02
Linux dm-crypt 使用 AES-CTR 变体进行全盘加密。
● 常见问题
AES-CTR 是什么?
一种将 AES 变为密钥流生成器的流密码模式,通过加密递增计数器并与明文进行 XOR 实现加密。 它属于网络安全的 密码学 分类。
AES-CTR 是什么意思?
一种将 AES 变为密钥流生成器的流密码模式,通过加密递增计数器并与明文进行 XOR 实现加密。
如何防御 AES-CTR?
针对 AES-CTR 的防御通常结合技术控制与运营实践,详见上方完整定义。
AES-CTR 还有哪些其他名称?
常见的别称包括: 计数器模式, AES-128-CTR, AES-256-CTR。