Skip to content

模型Model

分组密码

Block cipher

由密钥索引、作用于固定长度分组且可高效求逆的置换族;消息级保密与认证还取决于工作模式。

形式陈述 ​

密钥选定一张可逆的替换表 ​

分组密码(block cipher)每次处理一个固定长度的数据块。直觉上,一把密钥选定一张很大的替换表:输入块映到输出块,知道密钥就能沿反方向找回来。表大到无法完整保存,所以实际算法用一系列高效运算计算这张表,而不是逐项存储它。

设分组长度为 b,密钥空间为 K。加密与解密为

E,D:K×{0,1}b→{0,1}b,DK(EK(x))=x.

对每个固定密钥 K,EK 必须是 {0,1}b 上的置换,且逆映射可高效计算。于是不同输入不会在同一个密钥下得到相同输出。这是可逆性的要求,不是额外的概率性“碰撞很少”保证。[1]

用两位分组作一个纯粹的数学示意:

输入 00 01 10 11
某个 EK 的输出 10 00 11 01

四个输出各出现一次,因此知道输出 00 时,可以唯一恢复输入 01。若两列输出相同,解密就无法区分它们;这样的映射不是该分组空间上的分组密码。

直觉

可逆只是功能要求,伪随机才是安全目标 ​

恒等映射 EK(x)=x 也可逆,却完全不隐藏输入。因此定义一个分组密码算法,还需要区分它是否满足所要求的安全性质。

常用目标是伪随机置换(PRP):攻击者能够自行选择输入并观察输出,但难以区分自己访问的是随机密钥选出的 EK,还是从全部 b 位置换中均匀抽取的理想置换。比较对象是“随机选定、以后保持不变的一张置换”,不是每次查询都重新生成一个独立结果;同一输入被重复询问时,两种世界都应返回同一输出。[1]

更强的 strong PRP 模型允许攻击者同时查询正向和逆向 oracle,比较实际加密、解密与同一个理想置换及其逆。是否允许解密查询,改变了攻击者的能力,不能省略。

Luby–Rackoff 构造把这个权限区别变成可检查的轮数差异:独立轮 PRF 的三轮 Feistel 可达正向 PRP 安全,允许逆查询时却有结构性攻击;四轮版本才具有相应的强 PRP 保证。安全界还包含随查询数平方增长的半块碰撞项。

伪随机函数(PRF)的理想对象则是随机函数,允许不同输入发生碰撞。对 q 个不同输入,随机函数出现碰撞的概率至多为 q(q−1)/2b+1,而置换不会碰撞。这是 PRP/PRF switching 中生日尺度的来源:在适当查询模型下、q≪2b/2 时,两种理想对象可以很接近;它们仍不是同一个定义。

例子与边界

分组长度和密钥长度控制不同的东西 ​

AES 的分组长度固定为 128 位,密钥长度可以是 128、192 或 256 位。因此 AES-256 的“256”是密钥长度,不是一次加密 256 位数据。[2]

分组长度决定输入、输出空间的大小以及许多工作模式中的数据量界。密钥长度决定密钥空间规模,并影响穷举密钥的成本。增加密钥长度不会自动增加分组空间,也不会自动修复工作模式的错误使用。

AES 通过密钥扩展和若干轮可逆变换实现置换。理解接口时只需记住:单次 EK 的输入仍然恰好是一个分组。任意长度文件的分块、消息之间怎样避免重复、是否验证篡改,都不属于这个接口本身。

推论与应用

怎样从一个分组处理整条消息 ​

最直接的 ECB 方式对每个明文块分别计算 Ci=EK(Mi)。其问题可以用一个等价式看清:

Mi=Mj⟺Ci=Cj.

相同块的重复模式被原样暴露。即使底层置换达到理想 PRP 目标,这个事实也不会消失,因为任何置换都会保持“相等还是不相等”的关系。

CTR 模式改为加密一个个计数块,再与消息异或:

Si=EK(N‖ctri),Ci=Mi⊕Si.

这里 N 与计数器经过明确编码,合起来必须恰好占 b 位。解密仍用同样的密钥流异或,并不需要调用 DK。这样,一个固定长度的分组密码也能成为流式加密的构件;“流密码”与“分组密码”不是按整个应用能否流式处理来划分的。

关键条件是:同一密钥下,送入 EK 的完整计数块不能重复,既包括不同消息之间,也包括单条消息内部的计数器回绕。若同一密钥流块 S 被用于两个明文块,就有

(M⊕S)⊕(M′⊕S)=M⊕M′,

暴露两者的关系。这里的错误来自重复使用模式输入,不要求破解底层 AES。[1]

保密与认证需要不同的保证 ​

仅有可逆加密没有说明接收方怎样识别篡改。以 CTR 为例,把密文改为 C⊕Δ,解密就得到 M⊕Δ;攻击者甚至不必知道明文,也能施加这个确定的变化。

认证加密进一步结合保密与完整性验证。描述一个实际方案时,应完整说明“分组密码+工作模式+密钥长度+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 分组长度与三种密钥长度。

关系图谱10 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系