1、考虑以下关于两条消息加密的完美保密性定义。若消息空间M上的加密方案(Gen, Enc, Dec)满足:对于M上的所有分布、所有m, m′ ∈M,以及所有满足Pr[C = c ∧C′ = c′] > 0的c, c′ ∈C,有Pr [M = m ∧M ′ = m′ | C = c ∧C′ = c′] = Pr[M = m ∧M ′ = m′],其中m和m′是从M上的同一分布中独立采样得到的,则称该加密方案对两条消息是完美保密的。证明没有加密方案能满足这个定义。提示:取m ≠ m′但c = c′。
按照提示,取 $ m \ne m’ $ 但 $ c = c’ $。在加密过程中,若 $ c = c’ $,则意味着两条不同的消息 $ m $ 和 $ m’ $ 加密后得到了相同的密文。而在概率层面,
$$
\Pr [M = m \wedge M’ = m’ \mid C = c \wedge C’ = c’]
$$
表示在密文为 $ c $ 和 $ c’ $(这里 $ c = c’ $)的条件下,消息为 $ m $ 和 $ m’ $ 的概率;
$$
\Pr[M = m \wedge M’ = m’]
$$
表示消息为 $ m $ 和 $ m’ $ 的先验概率。
由于 $ m \ne m’ $ 却加密得到相同密文,这会导致
$$
\Pr [M = m \wedge M’ = m’ \mid C = c \wedge C’ = c’] \ne \Pr[M = m \wedge M’ = m’]
$$
所以没有加密方案能满足该定义。
2、当输入为 (L0, R0) 时,以下两种情况下 r 轮 Feistel 网络的输出分别是什么:(a) 每个轮函数无论输入如何都输出全 0;(b) 每个轮函数都是恒等函数。
在情况 (a) 中,每一轮的输出为
Li = Ri-1 , Ri = Li-1 ⊕ 0 = Li-1 。
经过 r 轮后,
- 若 r 为偶数,输出为 (L0, R0) ;
- 若 r 为奇数,输出为 (R0, L0) 。
在情况 (b) 中,每一轮的输出为
Li = Ri-1 , Ri = Li-1 ⊕ Ri-1 。
经过 r 轮后,
- 若 r 为偶数,输出为 (L0, R0) ;
- 若 r 为奇数,输出为 (R0, L0 ⊕ R0) 。
3、假设DES的密钥调度修改如下:主密钥的左半部分用于推导第1 - 8轮的所有子密钥,而主密钥的右半部分用于推导第9 - 16轮的所有子密钥。展示一种针对此修改方案的攻击,该攻击能在大约2^28的时间内恢复整个密钥。
攻击思路
攻击思路是分别遍历主密钥的左右两半部分的密钥空间,攻击复杂度约为 $ 2 \cdot 2^{28} $ 而非 $ 2^{56} $。
具体做法
-
猜测主密钥左半部分 :
- 设 $ k_L $ 是主密钥左半部分的猜测值。
- 已知 $ f_1 $ 的输入 $ R_0 $,用 $ k_L $ 可计算前四个 S 盒的输入,进而计算 $ f_1 $ 输出的一半比特位。 -
验证猜测值 :
- 同样,用已知的 $ f_3 $ 输入 $ L_3 $ 和相同猜测值 $ k_L $ 可计算 $ f_3 $ 输出的相同位置的比特位。
- 计算这两个输出值的异或,并检查是否与已知的 $ f_1 $ 和 $ f_3 $ 输出异或值的相应比特位匹配。
- 若不相等则 $ k_L $ 错误,正确的半密钥 $ k_L $ 总能通过测试,错误的半密钥通过测试的概率约为 $ 2^{-16} $。 -
筛选半密钥 :
- $ 2^{28} $

811

被折叠的 条评论
为什么被折叠?



