密码学与量子计算问题解析

25、假设一个带密钥的函数族 � 的所有映射 �� 都是线性的。攻击者如何轻松赢得伪随机函数可区分性实验?这表明 � 不是伪随机函数。提示:选择全零输入。

由于函数族 $ f $ 的映射 $ f_k $ 是线性的,选择全零输入时,线性函数对全零输入的输出具有特定规律。而随机函数对全零输入的输出是随机的。攻击者通过输入全零值,根据输出是否符合线性函数对全零输入的特性,就能判断使用的是线性函数 $ f_k $ 还是随机函数,从而轻松赢得可区分性实验,证明 $ f $ 不是伪随机函数。

26、考虑Feistel密码。证明解密函数��能恢复明文。

对于Feistel密码,加密过程经过 $ r $ 轮和最终置换后得到密文块 $ (R_r, L_r) $,即
$$ E_k(R_0, L_0) = (R_r, L_r) $$

解密时,定义
$$ (R_{i-1}, L_{i-1}) = (R_i, L_i \oplus F(R_i, K_i)) $$
其中 $ i $ 从 $ r $ 递减到 1。

由于加密和解密使用相同的变换,经过 $ r $ 轮Feistel网络和最终置换,就能恢复出明文 $ (R_0, L_0) $,即
$$ D_k(R_r, L_r) = (R_0, L_0) $$

27、使用四元轮映射给出Salsa20中列轮操作的明确描述。

列轮函数是行轮函数的转置,即先对状态矩阵进行转置,对转置后的矩阵应用行轮操作(对每行进行四元轮操作,操作前后有单词置换和逆置换),最后再对结果进行转置。设S为状态矩阵,则

$$ \text{column-round}(S) = (\text{row-round}(S^T))^T $$

其中,行轮操作对矩阵每行应用四元轮操作,如 $\text{row-round}(S)$ 中,

$$ (z_0, z_1, z_2, z_3) = \text{quarter-round}(y_0, y_1, y_2, y_3) $$

等;四元轮操作对4字序列 $(a, b, c, d)$ 更新规则为:

$$
\begin{aligned}
b &= b \oplus ((a + d) \lll 7), \\
c &= c \oplus ((b + a) \lll 9), \\
d &= d \oplus ((c + b) \lll 13), \\
a &= a \oplus ((d + c) \lll 18).
\end{aligned}
$$

28、证明对于Merkle - Damgård哈希函数和任意长度消息,��(�) = �(�‖ �)不是安全的消息认证码(MAC)。为什么HMAC构造不受此攻击影响?

对于Merkle-Damgård哈希函数,若使用
$$
\text{MAC}_k(m) = H(k \Vert m)
$$
作为MAC,存在长度扩展攻击问题,因此不安全。而HMAC基于两次嵌套哈希运算,能抵御长度扩展攻击,所以不受此影响。

29、使用Sage验证多项式�^128 + �^7 + �^2 + � + 1在��(2)[�]中是不可约的。

可以使用以下Sage代码进行验证:

R = PolynomialRing(GF(2), 'x')
f = R('x^128 + x^7 + x^2 + x + 1')
f.is_irreducible()

如果输出结果为 True ,则表明该多项式在 GF(2)[x] 中是不可约的。

30、描述当明文由一个128位块组成且附加认证数据(AAD)为空时,GCM标签的计算过程。

当明文由一个128位块且AAD为空时,以下是GCM标签的计算步骤:

  1. 选择一个均匀初始化向量(IV),从 {0, 1}^96 中随机选取。
  2. 定义128位计数器 ctr = IV ‖ 0^31 ‖ 1
  3. 应用CTR模式进行加密:由于明文仅一个128位块 m1 c1 = Ek(ctr + 1) ⊕ m1 ,密文 c = IV ‖ c1
  4. 定义128位哈希密钥 H = Ek(0^128) ,因AAD为空, A 为空。
  5. 计算 X1 = A ⋅ H = 0 A 为空)。
  6. 计算 X2 = (X1 ⊕ c1) ⋅ H = c1 ⋅ H
  7. 计算 X3 = (X2 ⊕ (|A| ‖ |c|)) ⋅ H ,因 A 为空, |A| = 0 |c| c 的位长度,用64位大端整数表示,这里 |c| = 96 + 128 = 224 位, X3 = (X2 ⊕ (0 ‖ 224)) ⋅ H
  8. 计算认证标签 t = X3 ⊕ Ek(ctr)

最终完整的认证密文为 (c, t, AAD) ,这里 AAD 为空。

31、攻击者能够修改RSA密文。他们想将未知明文模N进行平方运算。为什么这种攻击对于普通RSA是可行的,但对于RSA - OAEP却不可行?

普通RSA加密具有可延展性,密文易被操纵。若攻击者把密文
c = mᵉ mod N
替换为
sᵉc mod N
对应明文变为
sm mod N
也能使密文对应明文满足乘法同态性,所以可实现将未知明文模N平方的攻击。

而RSA-OAEP是在随机预言模型和RSA假设下,对自适应选择密文攻击(CCA2)安全的,且实现时只给出一种解密错误消息,运行时间与错误类型无关,攻击者无法获取有用信息和篡改密文,因此这种攻击不可行。

32、设 (� = 5, � = 10057) 是一个 RSA 密码系统的公钥。使用普通 RSA 方案对消息 � = 2090 进行加密。对 � 进行因式分解并求出解密指数 �。

1. 加密消息:
   - 根据普通 RSA 加密算法 $ c = m^e \mod n $,已知 $ e = 5 $,$ n = 10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值