天天看点

密码学 | 如何安全量化

安全分两种:

  • ⽆条件安全:⽆法攻破密码算法。
  • 计算安全:攻破密码算法的概率可忽略。

加密算法包括三个子算法:

1 密钥⽣成⼦算法(Gen)

算法输⼊:安全参数n;算法输出:满⾜特定分布的密钥k

2 加密⼦算法(Enc)

算法输⼊:密钥k和明⽂m;算法输出:密⽂c,c ß Enc(k, m)

3 解密⼦算法(Dec)

算法输⼊:密钥k和密⽂c;算法输出:明⽂m,m = Dec(k, c)

满⾜: Dec(k, Enc(k, m)) = m

唯密文攻击实验:

  1. 运⾏密钥⽣成算法Gen,确定密钥k。
  2. 随机加密若⼲明⽂,并将密⽂发送给攻击者。
  3. 攻击者发送明⽂空间中的两条消息m0和m1。
  4. 随机加密其中⼀条明⽂,并将对应密⽂发送给攻击者。(询问且进行欺骗。在美日的例子中对应美国开放一天信道故意让日本进行检测:中途岛没淡水补给了)
  5. 随机加密若⼲明⽂,并将密⽂发送给攻击者。(对应美国发现日本舰队中增加了几天淡水补给船,则是对第四点的验证)
  6. 攻击者根据密⽂猜测对应的明⽂是m0还是m1。

若一个算法是计算安全的,虽然我能在第二步和第五步能够收集到很多密文对,但是我收集到的并不是全集,而是多项式时间内的子集。

即使在理论上证明一个算法是计算安全的,但在实际应用中也不一定是计算安全,因为要考虑到各种机器语言的影响。我们设计一个算法的流程是在理论上线进行安全设计,再在实践上设计。

继续阅读