Appearance
第2章:一次一密、伪随机性与分组密码
一次一密
取均匀随机密钥 ,加密 。对任意消息和密文,恰有一个密钥使它们对应,因此
与消息无关。密文分布不改变攻击者对消息的先验,这是完美保密。
结论要求密钥独立、均匀、足够长且只用一次。若复用密钥,,消息间关系立即泄露。一次一密也不提供完整性:翻转密文位会翻转对应明文位。
从短密钥扩展
伪随机生成器把短随机种子扩展成较长串,使有效攻击者难以区分输出和真随机串。把输出用作掩码得到计算保密,而不是信息论保密。
流密码必须避免重复使用同一密钥流。nonce 可用来为同一密钥区分不同消息;nonce 通常不需要保密,但其唯一性或其他要求由具体构造决定。
PRF 与 PRP
伪随机函数 PRF 模拟随机函数,允许不同输入碰巧同输出。伪随机置换 PRP 对固定长度块是双射,典型分组密码属于此类设计目标。
AES 是分组密码,不是完整的大消息加密协议。直接把各块独立加密的 ECB 会暴露相同块的重复模式;知道轮函数复杂并不能消除这种模式泄露。
CTR 的条件
CTR 用互不重复的计数器输入产生掩码:
计数器通常由 nonce 与块序号组织。要求同一密钥下所有这些输入不重复,不只是单条消息中序号递增。若两条消息复用了同一段计数器,便重现一次一密复用问题。
CTR 可并行计算,并支持随机访问,但依旧可篡改。工程上应采用标准认证加密方案,并严格遵守 nonce、长度和调用次数限制。
练习
- 用两条 4 bit 消息展示复用一次一密密钥泄露异或关系。
- 为什么 nonce 公开不等于密钥流公开?
- ECB 泄露的是明文值本身,还是至少泄露某些关系?区分两者。