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)\) 相當於 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)\)
所以
(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\)
(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 算法滿足對合性,即解密過程和加密過程一樣,只是密鑰的使用順序相反。