分组密码体制应用

1.

(1) 设 \(M’\)\(M\) 的逐比特取补,证明在 DES 中,如果对明文分组和密文分组都逐比特取补,
那么得到的密文也是原密文的逐比特取补,即
如果 \(Y=DES_K(X)\),那么 \(Y’=DES_{K’}(X’)\)
提示:对任意两个长度相等的比特串 A 和 B,证明 \((A⊕B)’=A’⊕B\)

(2) 对 DES 进行穷举搜索攻击时,需要在由 \(2^{56}\) 个密钥构成的密钥空间进行。能否根据(1)
的结论减少进行穷搜索攻击时所用的密钥空间。

2.

证明 DES 的解密变换是加密变换的逆。

3.

在 DES 的 ECB 模式中,如果在密文分组中有一个错误,解密后仅相应的明文分组受到影响。
然而在 CBC 模式中,将有错误传播。例如在图 3-11 中 \(C_1\) 中的一个错误明显地将影响到 \(P_1\)
\(P_2\) 的结果。
(1)\(P_2\) 后的分组是否受到影响?
CBC 的加密: \(C_0=IV, C_i=DES_K[P_i⊕C_{i-1}], i≥2\)
解密: \(P_i=DES_K^{-1}[C_i]⊕C_{i-1} , i≥1\)
\(C_2=DES_K[P_2⊕C_1]\)
\(P_2=DES_K^{-1}[C_2]⊕C_1\)
\(C_3=DES_K[P_3⊕C_2]\)
\(P_3=DES_K^{-1}[C_3]⊕C_2\)
\(C_2\) 之后的明文都是正确的,所以不受影响。
(2)设加密前的明文分组 \(P_1\) 中有 1 比特的错误,问这一错误将在多少个密文分组中传播?
对接收者产生什么影响?
\(C_i=DES_K[P_i⊕C_{i-1}\) 之后的所有密文分组都会受到影响。
接收者无法解出正确的明文。

4.

在 8 比特 CFB 模式中,如果密文字符中出现 1 比特的错误,问该错误能传递多远?
\(ans=trunc((64+8-1)/8)=9\)
CBC 的错误传播只会影响当前分组和下一分组。
CFB 的错误传播会影响当前分组的解密和后续 \(64/j\)\(64/j+1\) 个分组的解密
OFB 的错误传播只会影响当前分组的解密,不会传播。

5.

在实现 IDEA 时,最困难的部分是模 \(2^{16}+1\) 乘法运算。以下关系给出了实现模乘法的一种有效方法,其中 a 和 b 是两个 n 比特的非 0 整数。
\[ ab\ mod(2^n+1)= \begin{cases} {(ab\ mod\ 2^n)- (ab\ div\ 2^n)}&\text{if } {(ab\ mod\ 2^n)\geqslant (ab\ div\ 2^n)} \\ {(ab\ mod\ 2^n)- (ab\ div\ 2^n)+2^n+1}&\text{if } {(ab\ mod\ 2^n)\lt (ab\ div\ 2^n)} \end{cases} \]
注意:\((ab\ mod\ 2^n)\) 相当于 ab 的 n 个有效最低位,\((ab\ div\ 2^n)\) 是 ab 右移 n 位。
(1)证明存在唯一的非负整数 \(q\)\(r\),使得 \(ab=q(2^n+1)+r\)
证明:设存在非负整数 \(q\)\(r\) ,使得 \(ab=q(2^n+1)+r\)
设存在另一对非负整数 \(q'\)\(r'\) ,使得 \(ab=q'(2^n+1)+r'\)
两式相减得 \(0=(q-q')2^n+1)+(r-r')\)
因为 \(q\)\(r\)\(q'\)\(r'\) 均为非负整数,当且仅当 \((q=q')\)\((r=r')\) 时成立,得证。
(2)求 \(q\)\(r\) 的上下界
\(0\leqslant r \leqslant (2^n)\)
\[ a\ 和\ b 的最大值均为\ 2^n-1,\frac {a_{max}*b_{max}}{(2^n+1)}=\frac{(2^{2n}-2^{n+1}+1)}{(2^n+1)}\\ =\frac{(2^n(2^n+1)-2*(2^n+1)+2-2^n-1)}{(2^n+1)}=2^n-3 \]
所以
\[ \begin{cases} {0\leqslant q \leqslant (2^n-3)}&\text{if } {(n\geq 2)} \\ {q=0}&\text{if } {(n=1)} \end{cases} \]
(3)证明 \(q+r<2^{n+1}\)
\(q+r \leqslant 2^n+2^n-3 <2^{n+1}\)
(4)(5)求 \(ab\ mod\ 2^n\)\((ab\ div\ 2^n)\) 关于 \(q\)\(r\) 的表达式
因为 \(ab=q(2^n+1)+r\) ,当 \(q+r<2^n\) 时,\((ab\ div\ 2^n)=q\)
\(q+r\geqslant 2^n\) 时,\((ab\ div\ 2^n)=q+1\)
同理,当 \(q+r<2^n\) 时,\((ab\ mod\ 2^n)=q+r\)
\(q+r\geqslant 2^n\) 时,\((ab\ mod\ 2^n)=q+r-2^n\)
\[ ab\ div\ (2^n)= \begin{cases} {q}&\text{if } {$q+r<2^n$} \\ {q+1}&\text{if } {q+r\geqslant 2^n} \end{cases} \]
\[ ab\ mod\ (2^n)= \begin{cases} {q+r}&\text{if } {$q+r<2^n$} \\ {q+r-2^n}&\text{if } {q+r\geqslant 2^n} \end{cases} \]
(6)用(4)和(5)结果求 r 的表达式,并说明 r 的含义
\(ab=q(2^n+1)+r\) 时,\((ab\ div\ 2^n)=q①\)\((ab\ mod\ 2^n)=q+r②\)
②式减①式得 \(r=(ab\ mod\ 2^n)- (ab\ div\ 2^n)\)
同理,当 \(q+r\geqslant 2^n\) 时,\(r=(ab\ mod\ 2^n)- (ab\ div\ 2^n)+2^n+1\)

6.

(1)在 IDEA 的模乘运算中,为什么将模数取位 \(2^{16}+1\) 而不是 \(2^{16}\)
因为 \(2^{16}+1\) 是素数,使得所有非 0 元都有逆元。
(1)在 IDEA 的模加运算中,为什么将模数取位 \(2^{16}\) 而不是 \(2^{16}+1\)
因为取 \(2^{16}\) ,使得所有元素都有逆元,构成群运算,使得求模运算易于实现,而取 \(2^{16}+1\) 时需要额外处理。

7.

证明 SM4 算法满足对合性,即解密过程和加密过程一样,只是密钥的使用顺序相反。

猜你喜欢

转载自www.cnblogs.com/shy-/p/9037717.html