“当 $q$ 接近 $2^{n/2}$ 时,上述半块生日项不再小;这一具体保证不会因完整块长是 $2n$ 而自动延伸到 $2^n$ 次查询。分组密码作为消息加密组件时,还要选择正确模式、non…”
形式陈述
密钥选定一张可逆的替换表
分组密码(block cipher)每次处理一个固定长度的数据块。直觉上,一把密钥选定一张很大的替换表:输入块映到输出块,知道密钥就能沿反方向找回来。表大到无法完整保存,所以实际算法用一系列高效运算计算这张表,而不是逐项存储它。
设分组长度为
对每个固定密钥
用两位分组作一个纯粹的数学示意:
| 输入 | 00 |
01 |
10 |
11 |
|---|---|---|---|---|
| 某个 |
10 |
00 |
11 |
01 |
四个输出各出现一次,因此知道输出 00 时,可以唯一恢复输入 01。若两列输出相同,解密就无法区分它们;这样的映射不是该分组空间上的分组密码。
直觉
可逆只是功能要求,伪随机才是安全目标
恒等映射
常用目标是伪随机置换(PRP):攻击者能够自行选择输入并观察输出,但难以区分自己访问的是随机密钥选出的
更强的 strong PRP 模型允许攻击者同时查询正向和逆向 oracle,比较实际加密、解密与同一个理想置换及其逆。是否允许解密查询,改变了攻击者的能力,不能省略。
Luby–Rackoff 构造把这个权限区别变成可检查的轮数差异:独立轮 PRF 的三轮 Feistel 可达正向 PRP 安全,允许逆查询时却有结构性攻击;四轮版本才具有相应的强 PRP 保证。安全界还包含随查询数平方增长的半块碰撞项。
伪随机函数(PRF)的理想对象则是随机函数,允许不同输入发生碰撞。对
例子与边界
分组长度和密钥长度控制不同的东西
AES 的分组长度固定为
分组长度决定输入、输出空间的大小以及许多工作模式中的数据量界。密钥长度决定密钥空间规模,并影响穷举密钥的成本。增加密钥长度不会自动增加分组空间,也不会自动修复工作模式的错误使用。
AES 通过密钥扩展和若干轮可逆变换实现置换。理解接口时只需记住:单次
推论与应用
怎样从一个分组处理整条消息
最直接的 ECB 方式对每个明文块分别计算
相同块的重复模式被原样暴露。即使底层置换达到理想 PRP 目标,这个事实也不会消失,因为任何置换都会保持“相等还是不相等”的关系。
CTR 模式改为加密一个个计数块,再与消息异或:
这里
关键条件是:同一密钥下,送入
暴露两者的关系。这里的错误来自重复使用模式输入,不要求破解底层 AES。[1]
保密与认证需要不同的保证
仅有可逆加密没有说明接收方怎样识别篡改。以 CTR 为例,把密文改为
认证加密进一步结合保密与完整性验证。描述一个实际方案时,应完整说明“分组密码+工作模式+密钥长度+nonce/计数规则+认证方式”,而不是只用“AES”代替整套协议。分组密码负责提供可逆的伪随机变换,工作模式负责把它组织成具有消息级保证的机制。
CMAC用完整/填充末块的不同秘密掩码,把固定块置换组成变长消息认证。AES-GCM进一步给出计数加密、GHASH和长度认证的逐块执行;AES-SIV则先认证关联数据向量与明文,再生成合成IV。三者分别规定输入、密钥分工和使用预算,不能仅凭“AES”名称互换。
参考资料
[1] Dan Boneh、Victor Shoup,A Graduate Course in Applied Cryptography,version 0.5,§4.1、§4.4 与第 5、9 章:PRP、PRF、工作模式和认证加密。
[2] NIST,FIPS 197: Advanced Encryption Standard (AES),2023 更新版:AES 分组长度与三种密钥长度。