【pptx】对称密码1

随机序列

性质:不能可靠重复产生(用完全相同的输入操作两次,得到两个不相关的序列)

数学解释:概率服从均匀分布(①产生每个比特概率为 1/2 ②任意两个比特统计上相互独立)

计算机不能产生真正的随机序列,其本身只能产生伪随机序列。相同计算环境下,对于相同输入,计算机只能产生相同的输出。

一次一密(one-time pad)密钥流是随机序列,且不重复使用。

如何定义“安全”:

  1. 不能恢复密钥?$E_k$(m)=m 虽没有泄露密钥,但泄露了明文。
  2. 不能恢复所有明文?$E_k$($m_0$||$m_1$) = $m_0$ || k ⊕$m_1$ 只加密了后半段,前半段明文泄露。

香农认为,在唯密文攻击下,密文不能泄露明文的任何信息(只包含明文的内容)

完善保密性:见《【DanBoneh】One Time Pad》密码完美安全

香农定理:满足完善保密性,所需密钥至少和明文一样长。

一次一密总结:

优点:

  1. 只用异或运算,实现简单/效率高
  2. 唯密文攻击无效,再牛的攻击者也无计可施(具备完善保密性)

不实用的原因:

  1. 密钥是(真)随机的(如何获得真随机序列是一个现实的问题)
  2. 每个密钥只用一次
  3. 密钥至少和明文一样长(完善保密性, 香农定理)(分发/存储如此长的密钥,并确保安全性很困难)

流密码:为使一次一密更加实用,降低安全性要求,缩短密钥长度,使用“伪随机”密钥流代替“随机”密钥流,利用一个短的随机密钥(种子k)作为伪随机数发生器(PRG/PRNG)的输入,产生伪随机密钥流 G(k),再与明文异或。

PRG:见《【DanBoneh】Stream Ciphers》PRG

PRG的安全性:对于任何高效可计算的算法,成功区分出 PRG 的输出和随机序列的概率都是可忽略的。(计算上不可区分)

一个PRG是安全的 = 一个PRG是不可预测的

流密码不具有完善保密性。

完善保密性 VS 语义安全性

完善保密性

  1. 唯密文攻击无效
  2. 无条件安全(即使拥有无限计算资源,唯密文攻击也无法破译)

语义安全性

  1. 选择明文攻击无效(密钥只用一次)比唯密文攻击更强
  2. 计算上安全(攻击者的计算资源有限,更符合现实)

在实验中,攻击者发送等长的两条明文进行加密,实验前黑盒中 b 的值已经确定,攻击者根据加密结果判断 b 的值(即发生的实验是实验一还是实验二)

语义安全性:在上述模型中,对于所有高效可计算的攻击者A,优势Adv:=| Pr[A($E_k$($m_0$)) = 1] - Pr[A($E_k$($m_1$)) = 1] |(即 b 为 0 或 1 的概率差)是可忽略的。

对于任何高校可计算的攻击者选择的明文 $m_0$ 和 $m_1$ :{$E_k$($m_0$)} $≈_c$ {$E_k$($m_1$)} (计算上不可区分)

语义安全性等价定义:在上述模型中,对于所有高效可计算的攻击者A,优势Adv:=| Pr[b’ = b] - 1/2 |(攻击者猜对 b 的概率)是可忽略的。

对于任何高效可计算的攻击者选择的明文 $m_0$ 和 $m_1$ :猜中 b 的概率可以忽略不计。

一次一密是语义安全的。

PRG具有不可预测性 ⇒ 相应的流密码是语义安全的。

目的是证明流密码在计算上不可区分

首先证明下图,由于 PRG 具有不可预测性,则 PRG 与真随机在计算上不可区分

一次一密是语义安全的,在计算上不可区分

PRG 与真随机在计算上不可区分

因此流密码在计算上不可区分,是语义安全的。

一次一密 VS 流密码

一次一密:符合完善保密性语义安全性,密钥长度至少和明文一样长,不实用。

流密钥:符合语义安全性,密钥长度比明文短很多,实用。

一次一密和流密码的密钥都不能重复使用,想重复使用密钥,不要“直接”使用流密码。