先把“安全”变成一个问题

拿到一段乱码,并不意味着它就是安全的密文。对手可能看不懂完整内容,却仍能判断它对应“同意”还是“拒绝”。因此,讨论加密安全时,需要先明确对手究竟能够获知什么。

现代密码学常用一个游戏表达这种要求:对手选择两条等长消息,挑战者随机加密其中一条,再请对手猜测加密的是哪一条。限制消息等长,是因为许多方案本来就会泄露长度。

与随机猜测相比,优势有多大

假设挑战位为 b,对手的猜测为 b′。一种常见约定把区分优势写成下式;也有文献采用其两倍,所以比较结论时要检查定义。

Adv = | Pr[b′ = b] − 1/2 |

如果高效对手的优势随安全参数增长而可忽略,才得到相应的计算安全保证。有限次实验中接近一半的猜中率,不能代替面对所有允许对手的证明。

读定义时,先看游戏规则

IND-CPA 允许对手请求选择明文的加密。换成选择密文攻击,游戏还会讨论解密查询及其限制。不同访问能力描述不同威胁模型,不能省略后直接比较“哪个方案更安全”。

读一个安全定理时,先写下对手能力、成功事件与安全参数,再看证明。

延伸阅读