資訊保安作業1——SYSU

�優秀�發表於2020-12-15

在這裡插入圖片描述

選擇Problem1,Problem2,Problem3,Problem5,Problem6進行作答

Problem1

如果用Vigenere Cipher進行加密解密,則運算過程如下所示
KaTeX parse error: No such environment: align* at position 8: \begin{̲a̲l̲i̲g̲n̲*̲}̲\label{2} &Enc…
根據字母表只有A,B,C。我們首先可以得到一個維吉尼亞密碼錶,如下所示

ABC
AABC
BBCA
CCAB

如果金鑰長度是2,那麼我們可以將密文每兩個分成一組,得到五組分別為AB,CB,AB,BB,AC,我們的金鑰有六種可能,分別是AB,BA,AC,CA,BC,CB

假設金鑰為AB,對密文進行解密

解密結果為AACAAABAAB,也就是說對明文AACAAABAAB進行加密,得到的結果就是我們題目中的密文,所以我們的金鑰長度有可能是2.

假設金鑰為BA,對密文進行解密

解密結果為CBBBCBABCC,也就是說對明文CBBBCBABCC進行加密,得到的結果就是我們題目中的密文

假設金鑰為AC,對密文進行解密

解密結果為ACCCACBCAA,也就是說對明文ACCCACBCAA進行加密,得到的結果就是我們題目中的密文

假設金鑰為CA,對密文進行解密

解密結果為BBABBBCBBC,也就是說對明文BBABBBCBBC進行加密,得到的結果就是我們題目中的密文

假設金鑰為BC,對密文進行解密

解密結果為CCBCCCACCA,也就是說對明文CCBCCCACCA進行加密,得到的結果就是我們題目中的密文

假設金鑰為CB,對密文進行解密

解密結果為BAAABACABB,也就是說對明文BAAABACABB進行加密,得到的結果就是我們題目中的密文

對上述結果進行頻率分析,發現當金鑰為AB時,明文中A的出現頻率為0.7,B的出現頻率為0.2,C的出現頻率為0.1,與經驗頻率相吻合,所以最有可能的金鑰是AB

特別地,如果不對金鑰長度加以限制,我們可以發現在密文中有一些重複的序列如下所示:

ABCBABBBAC : AB重複出現,兩者之間相隔四個字母

ABCBABBBAC : BA重複出現,兩者之間相隔四個字母

則可以認為4很可能是金鑰的長度

Problem2

1. For a perfect secret encryption scheme E(K, M) = C, prove: Pr[C = c|M = m] = Pr[C = c].

Proof:
對 於 一 個 完 全 安 全 的 密 碼 系 統 , 我 們 有 P r [ M = m ∣ C = c ] = P r [ M = m ] ∵ P r [ M = m ∣ C = c ] = P r [ M = m , C = c ] P r [ C = c ] ∴ P r [ M = m ] P r [ C = c ] = P [ M = m , C = c ] ∴ P r [ C = c ] = P r [ M = m , C = c ] P r [ M = m ] ∴ P r [ C = c ] = P r [ C = c ∣ M = m ] 對於一個完全安全的密碼系統,我們有Pr[M = m|C = c] = Pr[M = m]\\ ∵Pr[M = m|C = c] = \frac{Pr[M = m , C = c]}{Pr[C = c]}\\ ∴Pr[M = m]Pr[C = c] = P[M = m , C = c]\\ ∴Pr[C = c] = \frac{Pr[M = m , C = c]}{Pr[M = m]}\\ ∴Pr[C = c] = Pr[C = c|M = m] Pr[M=mC=c]=Pr[M=m]Pr[M=mC=c]=Pr[C=c]Pr[M=m,C=c]Pr[M=m]Pr[C=c]=P[M=m,C=c]Pr[C=c]=Pr[M=m]Pr[M=m,C=c]Pr[C=c]=Pr[C=cM=m]

2. Consider a biased one-time-pad system, where Pr[M = b] = pb, b = 0,1 and Pr[K = 0] = 0.4. The first attacker Randy randomly guesses M = 0 or M = 1: prove that the probability of success is 0.5. The second attacker Smartly guesses M based on C and p0, p1: suggest a good attack strategy.

(1) prove that the probability of success is 0.5.

Proof:
設 第 一 個 攻 擊 者 做 出 M = 1 這 一 猜 測 的 概 率 為 p ′ , 做 出 M = 0 這 一 猜 測 的 概 率 為 p ′ ′ . 因 為 第 一 個 攻 擊 者 是 隨 機 進 行 猜 測 的 , 所 以 p ′ = p ′ ′ = 0.5 所 以 第 一 個 攻 擊 者 猜 測 正 確 的 概 率 為 : p c o r r e c t = p 0 ∗ p ′ ′ + p 1 ∗ p ′ = 0.5 ( p 0 + p 1 ) 因 為 我 們 已 知 p 0 + p 1 = 1 所 以 p c o r r e c t = 0.5 ∗ 1 = 0.5 設第一個攻擊者做出M=1這一猜測的概率為p',做出M=0這一猜測的概率為p''.\\ 因為第一個攻擊者是隨機進行猜測的,所以p'=p''=0.5\\ 所以第一個攻擊者猜測正確的概率為:\\ p_{correct} = p_0*p'' + p_1*p' = 0.5(p_0 + p_1)\\ 因為我們已知p_0+p_1 = 1\\ 所以p_{correct} = 0.5*1 = 0.5 M=1p,M=0p.p=p=0.5:pcorrect=p0p+p1p=0.5(p0+p1)p0+p1=1pcorrect=0.51=0.5

(2) The second attacker Smartly guesses M based on C and p0, p1: suggest a good attack strategy.

首先我們可以知道明文取0或1這一事件與金鑰取0或1這一事件是相互獨立的,所以我們可以知道
p ( M = 0 , k = 0 ) = p ( M = 0 ) ∗ p ( k = 0 ) = p 0 ∗ 0.4 = 0.4 p 0 p ( M = 1 , k = 0 ) = p ( M = 1 ) ∗ p ( k = 0 ) = p 1 ∗ 0.4 = 0.4 p 1 p ( M = 0 , k = 1 ) = p ( M = 0 ) ∗ p ( k = 1 ) = p 0 ∗ ( 1 − 0.4 ) = 0.6 p 0 p ( M = 1 , k = 1 ) = p ( M = 1 ) ∗ p ( k = 1 ) = p 1 ∗ ( 1 − 0.4 ) = 0.6 p 1 p(M=0 , k=0) = p(M=0)*p(k=0) = p_0*0.4 = 0.4p_0\\ p(M=1 , k=0) = p(M=1)*p(k=0) = p_1*0.4 = 0.4p_1\\ p(M=0 , k=1) = p(M=0)*p(k=1) = p_0*(1-0.4) = 0.6p_0\\ p(M=1 , k=1) = p(M=1)*p(k=1) = p_1*(1-0.4) = 0.6p_1\\ p(M=0,k=0)=p(M=0)p(k=0)=p00.4=0.4p0p(M=1,k=0)=p(M=1)p(k=0)=p10.4=0.4p1p(M=0,k=1)=p(M=0)p(k=1)=p0(10.4)=0.6p0p(M=1,k=1)=p(M=1)p(k=1)=p1(10.4)=0.6p1
所以我們可以得到對應的密文取值的概率以及明文與密文取值的聯合概率
p ( C = 1 ) = p ( M = 1 , k = 0 ) + p ( M = 0 , k = 1 ) = 0.4 p 1 + 0.6 p 0 p ( C = 0 ) = p ( M = 0 , k = 0 ) + p ( M = 1 , k = 1 ) = 0.4 p 0 + 0.6 p 1 p ( M = 1 , C = 1 ) = 0.4 p 1 p ( M = 1 , C = 0 ) = 0.6 p 1 p ( M = 0 , C = 1 ) = 0.6 p 0 p ( M = 0 , C = 0 ) = 0.4 p 0 p(C = 1) = p(M=1 , k=0) + p(M=0 , k=1) = 0.4p_1 + 0.6p_0\\ p(C = 0) = p(M=0 , k=0) + p(M=1 , k=1) = 0.4p_0 + 0.6p_1\\ p(M = 1,C = 1) = 0.4p_1\\ p(M = 1,C = 0) = 0.6p_1\\ p(M = 0,C = 1) = 0.6p_0\\ p(M = 0,C = 0) = 0.4p_0\\ p(C=1)=p(M=1,k=0)+p(M=0,k=1)=0.4p1+0.6p0p(C=0)=p(M=0,k=0)+p(M=1,k=1)=0.4p0+0.6p1p(M=1,C=1)=0.4p1p(M=1,C=0)=0.6p1p(M=0,C=1)=0.6p0p(M=0,C=0)=0.4p0
所以我們可以知道密文和明文取值的條件概率
p ( M = 1 ∣ C = 1 ) = p ( M = 1 , C = 1 ) p ( C = 1 ) = 0.4 p 1 0.4 P 1 + 0.6 p 0 p ( M = 0 ∣ C = 1 ) = p ( M = 0 , C = 1 ) p ( C = 1 ) = 0.6 p 0 0.4 P 1 + 0.6 p 0 p ( M = 1 ∣ C = 0 ) = p ( M = 1 , C = 0 ) p ( C = 0 ) = 0.6 p 1 0.4 P 0 + 0.6 p 0 p ( M = 0 ∣ C = 0 ) = p ( M = 0 , C = 0 ) p ( C = 0 ) = 0.4 p 0 0.4 P 0 + 0.6 p 1 p(M=1|C=1) = \frac{p(M=1,C=1)}{p(C=1)} = \frac{0.4p_1}{0.4P_1+0.6p_0}\\ p(M=0|C=1) = \frac{p(M=0,C=1)}{p(C=1)} = \frac{0.6p_0}{0.4P_1+0.6p_0}\\ p(M=1|C=0) = \frac{p(M=1,C=0)}{p(C=0)} = \frac{0.6p_1}{0.4P_0+0.6p_0}\\ p(M=0|C=0) = \frac{p(M=0,C=0)}{p(C=0)} = \frac{0.4p_0}{0.4P_0+0.6p_1} p(M=1C=1)=p(C=1)p(M=1,C=1)=0.4P1+0.6p00.4p1p(M=0C=1)=p(C=1)p(M=0,C=1)=0.4P1+0.6p00.6p0p(M=1C=0)=p(C=0)p(M=1,C=0)=0.4P0+0.6p00.6p1p(M=0C=0)=p(C=0)p(M=0,C=0)=0.4P0+0.6p10.4p0
所以當p0p1滿足下面的條件的時候我們可以做出相應的猜測
{ g u e s s M = 1 , w h e n p 1 > 3 2 p 0 g u e s s M = 0 , w h e n 2 3 p 0 < p 1 < 3 2 p 0 a n d C = 0 g u e s s M = 1 , w h e n 2 3 p 0 < p 1 < 3 2 p 0 a n d C = 1 g u e s s M = 0 , w h e n p 1 < 2 3 p 0 \begin{cases} guess\quad M = 1, when\quad p_1>\frac{3}{2}p_0\\ guess\quad M = 0, when\quad \frac{2}{3}p_0 <p_1<\frac{3}{2}p_0\quad and \quad C = 0\\ guess \quad M = 1, when\quad \frac{2}{3}p_0 <p_1<\frac{3}{2}p_0\quad and \quad C = 1\\ guess \quad M = 0, when\quad p_1<\frac{2}{3}p_0\\ \end{cases} guessM=1,whenp1>23p0guessM=0,when32p0<p1<23p0andC=0guessM=1,when32p0<p1<23p0andC=1guessM=0,whenp1<32p0

Problem3

我們可以看到k1在DESV和DESW中都是用來進行異或操作,這樣一來我們就可以利用異或操作的性質將k1消掉。在DESV中,我們可以用兩個密文進行異或,這樣就可以將k1消掉,得到c1⊕c2,在這之後我們在對明文m1和m2用所有可能的k進行DES加密,再將加密後的結果進行異或,如果和c1⊕c2一致我們則可以認為這個對應的金鑰即為k,所以在我們的操作中可以通過一個異或操作將k1消掉,主要的計算量在於破解k的DES,所以複雜度為O(256)。在DESW中同理,我們先將兩個密文進行DES解密,在將解密得到的結果進行異或消去k1,將異或的結果和明文異或即`m1⊕m2`進行對比,如果一致那麼對應的k即為金鑰,所以主要運算量仍為O(256).

綜上所述,無論是DESW還是DESV,運算複雜度均為O(2^56).

Problem5

我們假設M0經過金鑰K加密之後的得到的結果為M0‘,M1經過金鑰K加密之後的得到的結果為M1‘,M2經過金鑰K加密之後的得到的結果為M2‘。因為我們知到M1 = M2 = M,那麼經過相同的金鑰加密之後,也可以知道M1’ = M2‘ = M’。

對於這一個塊加密系統,我們可以得到下面的等式
I V ⊕ M 0 ′ = C 0 ( 1 ) M 0 ⊕ M ′ = C 1 ( 2 ) M ⊕ M ′ = C 2 ( 3 ) IV ⊕ M_0' = C_0 \quad\quad\quad (1)\\ M_0 ⊕ M' = C_1 \quad\quad\quad (2)\\ M ⊕ M' = C_2 \quad\quad\quad (3) IVM0=C0(1)M0M=C1(2)MM=C2(3)
將(2)式和(3)式進行異或操作可以消掉M’,得到下式
M 0 ⊕ M ′ ⊕ M ⊕ M ′ = M 0 ⊕ M = C 1 ⊕ C 2 M_0 ⊕ M' ⊕ M ⊕ M' = M_0 ⊕ M = C_1⊕C_2 M0MMM=M0M=C1C2
因為我們已知C1,C2和M,所以可以知道
M 0 = C 1 ⊕ C 2 ⊕ M M_0 = C_1⊕C_2⊕M M0=C1C2M

Problem6

Give a function that is one-way, but not collision-resistant.

模運算是一個非常典型的雜湊函式,這個雜湊函式就是滿足單向性的不滿足防碰撞特性,取模函式的具體表示如下所示
h ( n ) = n m o d p h(n) = n\quad mod\quad p h(n)=nmodp
其中p是一個常數,屬於這個雜湊函式規定的引數,不同的p對應不同的雜湊函式。

在這個函式中,給定一個n,我們可以簡單地將n帶入表示式求出h(n),但是如果給定一個h值,對應的n值可能是 n = k*p + h,其中k = 0,±1,±2……所以n的取值有無限多種可能,我們不能根據h,反推出n,滿足單向性。

但是對於防碰撞性這個函式是不能滿足的,因為n = k*p + h,其中k = 0,±1,±2……在經過這個雜湊函式對映後都會對映到同一個值,也就是h,也就是說這些n經過這個雜湊函式都會發生碰撞,這個函式不滿足防碰撞性。

Give a function that is collision-resistant, but not one-way.

我們可以很輕易地舉出一個簡單的例子,如下所示
h ( n ) = n + 2 h(n) = n + 2 h(n)=n+2
這是一個非常簡單的滿足防碰撞性但不滿足單向性的雜湊函式的例子。

對於任給的一個n值,經過雜湊函式後的值都不會相等。我們採用反證法證明上述結論
假 設 存 在 n 1 ≠ n 2 , 但 是 h ( n 1 ) = h ( n 2 ) 則 n 1 + 2 = n 2 + 2 , 即 n 1 = n 2 , 矛 盾 假設存在n_1≠n_2,但是h(n_1)=h(n_2)\\ 則n_1 + 2 = n_2 + 2,即n_1 = n_2,矛盾\\ n1=n2,h(n1)=h(n2)n1+2=n2+2,n1=n2,
所以這個函式是一個具有防衝突性的雜湊函式。

但是這個函式並不具有單向性,因為對於任給的函式值h,我們可以輕易地知到這個函式值對應的n = h - 2,所以這個函式是一個不具有單向性但是具有防衝突性的函式。

相關文章