1. 从伪随机性到加密
Lecture 4 定义了 PRG:用短的均匀种子生成较长的串,使 PPT 区分器无法有效分辨它与等长均匀串。现在先检查一种看似自然的 PRG 变换,再用 PRG 构造加密方案。
记 为 位串上的均匀分布, 表示拼接, 表示按位异或。后文的区分优势指两种输入分布下,区分器输出同一比特的概率差的绝对值。
2. 与种子相关的变换未必保持伪随机性
给 PRG 输出再做一次异或,是否仍然安全,取决于异或对象与输出之间的关系。不能把由同一个种子生成的两个量当成独立随机量。
练习: 一定是 PRG 吗?
题目:设 是 PRG,判断上述 是否必然是 PRG。
答案:不一定。只需构造一个符合条件的 ,再说明对应的 可被高效区分。
为简洁设 为偶数,取 PRG
将种子写成 ,其中两部分长度均为 ,定义
先证明 是 PRG。假设区分器 能区分 的输出与 ,构造区分器 :收到 后,独立采样 ,输出 。
当 时, 正好服从 ;当 时, 正好服从 。因此 对 的区分优势等于 对 的区分优势。参数由 换成 不改变多项式时间或可忽略性,故 安全推出 安全。
再考察 :
两个串的前 位都是 ,异或后恒为 。令区分器检查此前缀是否全零,则
区分优势为 ,不可忽略,所以 不是 PRG。
这里 的均匀前缀本身没有可检测的偏差;与种子的一部分相同也不违反 PRG 定义,因为区分器不知道种子。将它与同一份种子异或后,这种相关性才变成容易检测的全零前缀。
3. 伪一次一密(Pseudo OTP)
OTP 需要与消息等长的均匀密钥。利用 PRG,可以只保存一个短种子,按需生成长的伪随机掩码。
构造:伪 OTP
设 为 PRG,消息空间为 。
- :采样 。
- :输出 。
- :输出 。
秘密密钥是 位种子 , 是长度为 的掩码。
加密与解密都可以高效计算;正确性为
密钥长度从 缩短为 ,代价是安全性依赖 PRG 假设及攻击者计算能力限制。这并不违背完美保密的密钥长度下界,因为此处目标已改为计算安全。
4. 伪 OTP 的单消息安全性
要证明加密安全,需要把“区分两条明文的加密结果”转换成“区分伪随机掩码与均匀掩码”。当掩码真正均匀时,系统正好退化为已经证明安全的 OTP。
定理:伪 OTP 满足单消息窃听安全性
若 是 PRG,则上述方案 对长度固定为 的消息满足 IND-EAV 安全性:对任意 PPT 攻击者 ,存在可忽略函数 ,使
证明思路:用一次假想攻击检测掩码的来源
是假想的加密攻击者,目标是猜出加密了哪条消息。归约算法 收到一段来源未知的串 ,它的目标是判断 来自 PRG 还是均匀分布。 把 作为加密掩码,为 模拟一次挑战。如果 来自 PRG,这就是正常的伪 OTP;如果 均匀,这就是 OTP, 只能随机猜。因此,若 在正常加密中有明显优势, 就能用它检测掩码来源。
证明:给定任意 PPT 加密攻击者 ,构造 PRG 区分器 :
- 运行 ,得到候选消息 ,保留其状态。
- 独立采样均匀比特 ,将 交给 。
- 得到猜测 后,若 则输出 1,否则输出 0。
同时扮演两个角色:对 PRG 挑战者,它是区分器;对 ,它是加密实验的挑战者。
sequenceDiagram participant A as 加密攻击者 A participant B as 区分器 B participant P as PRG 挑战者 P-->>B: 来源未知的串 x:G(k) 或均匀串 A->>B: 候选消息 m₀, m₁ Note over B: 自己抽均匀比特 b,用 x 当掩码 B-->>A: c = x ⊕ m_b A->>B: 猜测 b′ Note over B: b′ = b 则输出 1,即判断 x 来自 G B->>P: 输出的比特
不需要知道 的种子;它只使用收到的串完成一次模拟。设 为 在真实伪 OTP 游戏中的获胜概率,则
| 收到的输入 | 为 模拟的分布 | 输出 1 的概率 |
|---|---|---|
| , | 真实的伪 OTP 游戏 | |
| 均匀掩码下的 OTP 游戏 |
因此
是 PPT,PRG 安全性保证右侧可忽略,于是 ,定理得证。
若改用“猜掩码来源”的游戏来计算,假设 ,则 将输出 1 解释为“来自 PRG”时,猜对来源的概率为
两分布区分优势是 ,来源游戏的获胜优势是 ;两者都在 不可忽略时不可忽略。
5. 同一密钥下的多消息安全
单消息实验只给出一条挑战密文。实际通信通常反复使用同一密钥,因此需要检验多条密文联合起来是否泄露关系。
5.1 多消息窃听实验
将单消息游戏中的两条候选消息扩展为两组候选消息,要求攻击者无法判断收到的是哪一整组的加密。
定义:多消息窃听安全性
实验 :
- 输出两组合法消息
其中 多项式有界,且对每个 都有 。
- 挑战者生成一个密钥 ,独立选择一个均匀比特 ,计算
- 收到 后输出 ;实验在 时输出 1,否则输出 0。
所有位置使用同一密钥和同一个挑战位;若加密本身随机化,每次加密使用独立的新随机性。
若对任意 PPT 攻击者 ,存在可忽略函数 ,使对所有 ,
则称方案满足多消息窃听安全性。
sequenceDiagram participant A as PPT 攻击者 A participant C as 挑战者 A->>C: 两组消息 𝐦₀ = (m₀,₁, …, m₀,ₜ) 与 𝐦₁ = (m₁,₁, …, m₁,ₜ) Note over C: 生成一个 k ← Gen(1ⁿ),抽一个均匀比特 b Note over C: 用同一个 k 逐条加密第 b 组 C-->>A: c₁, …, cₜ,其中 cᵢ ← Enc_k(m_b,ᵢ) A->>C: 猜测 b′
对应位置的两条候选消息必须等长,不同位置之间可以长度不同。同一个 选择整组,攻击者因此可以利用各条密文之间的关系。
令 就得到单消息实验,所以多消息安全蕴含单消息安全;反方向不成立。
5.2 伪 OTP 为什么不满足多消息安全
伪 OTP 对相同密钥始终生成同一个掩码,因而重新出现了 OTP 复用密钥的问题:
例题:在多消息游戏中以概率 1 攻破伪 OTP
记 ,选择
若 ,两条密文都等于 ,所以相同;若 ,两条密文分别为 与 ,所以不同。
sequenceDiagram participant A as 攻击者 A participant C as 挑战者(持有 k) A->>C: 𝐦₀ = (0ˡ, 0ˡ),𝐦₁ = (0ˡ, 1ˡ) Note over C: 抽 b,两条都用同一个掩码 G(k) C-->>A: c₁ = G(k) ⊕ m_b,₁,c₂ = G(k) ⊕ m_b,₂ Note over A: c₁ = c₂ 则猜 0,否则猜 1 A->>C: 猜测 b′攻击者检查两条密文是否相同即可准确猜出 。获胜概率为 1,与 本身是否安全无关。
事实上,任何满足正确性的确定性加密方案,都可被相同的重复模式攻击:同一消息总产生相同密文,不同消息在同一密钥下必须产生不同密文。
伪 OTP 的证明只保证一次使用短密钥时的单消息安全。要用同一密钥保护多条消息,需要进一步改变加密构造,而不能仅将 PRG 输出当作固定掩码反复使用。