網絡安全基礎(四)

1.什麼是三重加密?

對於三重加密,明文塊通過加密算法進行加密;然後結果再次通過同一加密算法;第二次加密的結果第三次通過同一加密算法。通常,第二階段使用解密算法而不是加密算法。

2.爲什麼3DES的中間部分是解密而不是加密?

第二階段的解密使用沒有任何加密意義。它的唯一優點是允許3DES用戶通過重複密鑰來解密由舊的單個DES用戶加密的數據。

3.既然DES加密的信息利用現有的個人計算機1年就可以破解,爲什麼DES算法仍將允許在相當長的時間裏繼續使用?

(1)對算法本身的安全性分析
通過研究算法的性質而破譯算法的可能性。這些年來,有很多嘗試尋找和研究該算法的弱點,這使得DES是現存加密算法中被研究得最徹底的一個。
儘管進行了那麼多嘗試,迄今爲止仍然沒有人成功找到DES的致命缺陷
(2)使用56比特密鑰的安全性分析
使用當前的技術,甚至不需要使用特殊的專用硬件即可破解DES。相反地,商業的速度和現成的處理器威脅DES的安全。
但128位或者更大的密鑰,僅使用蠻力攻擊方法不能有效的破解密鑰。即便將攻擊系統的速度提高1012倍,仍然需要花費100000年的時間去破解。
現存的最重要的3DES算法,實際上就是將DES重複使用達到增加密鑰長度的目的。 3DES是一個強大的算法,因爲底層密碼算法是DEA。
DEA聲稱的對基於其算法的破譯的抵抗能力,3DES同樣也有。而且,由於168的密鑰長度,窮舉攻擊更沒有可能。

3DES是FIPS批准的可選對稱加密算法。
●使用單個56比特密鑰的原始DES,只在以往系統的標準下允許,新設計必須支持3DES。
●鼓勵以往用DES系統的政府機構轉換到3DES系統
●預計3DES與高級加密標準(AES)將作爲FIPS批准的算法共存,並允許3DES逐步過渡到AES。

4.對一個密碼體制的安全性分析一般從哪些方面進行分析?

•對算法本身的安全性分析
•密鑰的安全性分析(窮舉分析)

5.高級加密標準(AES)

有和3DES等同或者更高的安全強度,並且效率顯著提高。是分組大小爲128比特的分組密碼,支持密鑰長度爲128,192和256比特。結構不是Feistel結構,而是在每輪替換和移位時都並行處理整個數據分組。輸入的密鑰被擴展成44個32比特字的數組,4個不同的字用作每輪的輪密鑰。進行了4個不同的步驟,一個移位,三個替換:字節替換,行移位,列混合,輪密鑰加。

6.分組密碼

分組密碼處理固定大小的明文輸入分組,且對每個明文分組產生同等大小的密文分組。

7.三重DES (3DES)

3DES是FIPS批准的可選對稱加密算法。使用單個56比特密鑰的原始DES,只在以往系統的標準下允許,新設計必須支持3DES。鼓勵使用以往DES系統的政府機構轉換到3DES。允許3DES過度到AES。它是一個強大的算法,有對於基於其算法的破譯的抵抗力,抗窮舉攻擊。
使用三個密鑰並執行三次DES算法的算法,其組合過程依照加密-解密-加密(EDE)的順序進行。通過三個不同的密鑰,3DES的有效密鑰長度爲168比特。

8.考慮一個對稱的加密算法如下式,用64比特密鑰來加密明碼文本(未加密文件)的32比特的加密塊。
在這裏插入圖片描述
其中:C=密碼文本,K=密鑰,K0=K的最左邊的64比特,K1=K的最右邊的64比特,⊕按位異或,⊞=加法模264。(即:a⊞b=(a+b) mod 264。如果不考慮超過264。它的逆運算就是減法,但不能直接用減法符號,但可以用負號)。
a.寫出解密方程式,寫出以P爲導函數的C、K0和K1的方程式。
b.假設敵人獲得了兩組明碼文本和與它們相對應的密碼文本,並且企圖得到K。有以下兩組等式:
在這裏插入圖片描述
在這裏插入圖片描述
首先,推導一個未知量的方程(例如,K0),是否可能進一步確定K0?

答案:

a. 設-X是X的加法逆元,於是:-X⊞X =0。那麼:
P= (C⊞-K1)⊕K0
b. 不大可能,因爲這裏的兩個運算符無法使用算數法則(結合律或者分配律)。所以即使我們可以聯立兩個方程式,仍然無法消元。

9.最簡單的“嚴格“對稱塊加密算法是微型加密算法(TEA)。TEA運用128比特的密鑰來操作64比特的明碼文本模塊,這個明碼文本被分爲2個32比特塊(L0,R0),並且密鑰分別爲4個32比特塊(K0,K1,K2,K3)。加密需要重複應用一對輪(rounds),輪i和i+1如下定義:
在這裏插入圖片描述
a.就運用常量序列的重要性和益處發表看法。
b. 運用加密碼的結構圖和流程圖來闡明TEA的運作。
c. 如果僅有一對輪被使用,然後這個密碼文本包括了64位塊( L2,R2),在這個例子中,依據等式來解釋這個解密算法。
d. 運用與b部分相似的說明來解釋c部分。

a 常量確保每輪的加密/解密不同
b 前兩輪是這樣的
在這裏插入圖片描述
C 首先,讓我們定義加密過程
在這裏插入圖片描述

現在是解密過程。輸入是密文(L2,R2),輸出是明文(L0,R0)。解密本質上與加密相同,子密鑰和增量值的應用順序相反。還要注意,不必使用減法,因爲每個方程中都有偶數個加法。
在這裏插入圖片描述
d.
在這裏插入圖片描述

10.說明Feistel解密是Feistel加密的逆過程。
正確答案:

爲了確保具有相反密鑰順序的同一算法產生正確的結果,請考慮圖2.2,圖2.2顯示了16輪算法的加密過程從左側向下,解密過程從右側向上(任何輪數的結果都相同)。爲了清楚起見,對於通過加密算法傳輸的數據,我們使用符號LEi和REi;對於通過解密算法傳輸的數據,使用LDi和RDi。該圖表明,在每一輪中,解密過程的中間值等於加密過程的相應值,並且值的兩半被交換。換句話說,讓第i個加密輪的輸出爲LEi
| | REi(Li與Ri連接)。然後,第(16–i)輪解密的對應輸入是RDi | |LDi。讓我們通過這個圖來演示前面斷言的有效性。爲了簡化圖表,它被展開,而不是顯示每次迭代結束時發生的交換。但請注意,加密過程第i階段結束時的中間結果是通過連接LEi和REi形成的2w比特量,解密過程第i階段結束時的中間結果是通過連接LDi和RDi形成的2w比特量。
在加密過程的最後一次迭代之後,輸出的兩半被交換,因此密文是RE16 | |LE16。那一輪的輸出是密文。現在把這個密文作爲同一算法的輸入。第一輪的輸入是RE16 | LE16,等於加密過程第十六輪輸出的32位交換。
現在我們要證明,第一輪解密過程的輸出等於第十六輪加密過程的輸入的32位交換。首先,考慮加密過程。我們看到:
在這裏插入圖片描述在這裏插入圖片描述
因此,我們得到LD1=RE15和RD1=LE15。因此,第一輪解密過程的輸出是LE15 | |RE15,即32-的位交換輸入到第十六輪加密。如圖所示,這種對應關係貫穿16次迭代。我們可以把這個過程概括起來。對於加密算法的第i次迭代:
因此,我們將第i次迭代的輸入描述爲輸出的函數,這些方程證實了下圖右側所示的賦值。 最後,我們看到最後一輪解密過程的輸出是RE0 | | LE0。32位交換恢復原始明文,證明了Feistel解密過程的有效性。

11.爲什麼2DES不安全?

2DES所用的密鑰長度是112位,所以2DES所產生的安全性(破解2DES的時間複雜性)應該與相當。
之所以說2DES不安全,因爲破解2DES的時間複雜性遠遠低於,約略大於。下面進行證明:
設小明用K1、K2執行2DES,給小紅髮送加密過的情書。我們已經截獲了小明的給小紅的情書原文p(plain text)和密文c(cipher
text)。我們相信小明也是用K1、K2給小琳發信息,我們嚴重懷疑他給小琳發的也是情書。故此進行破解! 破解代碼如下

          Dictionary<string, string> dic = new Dictionary<string, string>();
>                 foreach (var k1 in allKeys)
>                 {
>                     string middle = E(k1, p);
>                     dic.Add(middle, k1);
>                 }
>                 foreach (var k2 in allKeys)
>                 {
>                     string middle = D(k2, c);
>                     if (dic.ContainsKey(middle))
>                     {
>                         Console.WriteLine("密鑰是" + dic[middle] + "和" + k2);
>                         break;
>                     }
>                 }

Dictionary是一個鍵值對的集合,dic[middle]是從dic裏取得以middle爲鍵的值,即第一次foreach時的k1。
應用算法複雜性理論,該算法的複雜度在於函數E、D、dic.Add、dic.ContainsKey。如果內存很大,Dictonary散列函數很少衝突,則dic的兩個操作的時間可忽略不計。
於是,E函數要執行次,D函數也要執行次,總共次。遠遠低於預計的次。 證畢

12.設想一個16輪,128比特塊長,128比特密鑰長度的Feistel密碼。如果一個k已經給出,前8個密鑰調度算法決定值k1,k2,…K8,然後設定: K9=K8, K10=k7, K11=K6, … , K16=K1
假設有一個密碼文本C,如果通過一個解密數據庫來解密C並且運用單一數據庫問題來確定m。這表明了對於一個選中的明碼文本攻擊,這個密碼是很脆弱的(當給出一個明碼文本,一個加密數據庫能返回相對應的密碼文本。設備的內部信息是未知的,你不能打開這個設備。你僅能夠通過對它的質疑和關注它的反應來從數據庫獲得信息)。

由於關鍵時刻表,第9輪至第16輪中使用的圓函數是第1輪至第8輪中使用的圓函數的鏡像。從這個事實我們可以看出加密和解密是相同的。我們得到一個密文c。設m’=c。要求oracle加密m’。oracle加密返回的密文將是c的解密。

13.任何塊密碼事實上是一個非線性函數,這對安全來說是至關重要的。這樣看來,設想有一個線性的分組密碼來把128比特的明碼文本塊加密到128比特的密碼文本塊,讓EL(k,m)指出在密鑰k下的128比特信息m的安全加密,因此,在這裏插入圖片描述
對所有128比特格式的m1,m2
描述用128個選中的密碼文本,敵人怎樣能在不知道祕鑰後的情況下解密任何密碼。
(一個“被選中的密碼文本”意味着這個敵人有能力來選擇密碼文本然後對它進行解密。在這個情況中,擁有了128明碼文本和密碼文本對,你就有能力來選擇密文的值)
答案:

對於1≤i≤128,取在這裏插入圖片描述即{0000…0,0100…0,0010…0,…,0000…001}
(每個元素都是128位,其中位置i爲1,其它位爲0)。爲獲取這128個密文的明文,設m1,m2… .
,m128是相應的明文。現在,給定任何不包含全0的密文c,有一個唯一的ci的非空子集,可以一起異或得到,令I©表示此子集,顯然I©⊆{1,2,3,…128}。觀察到:
在這裏插入圖片描述
因此,我們通過計算在這裏插入圖片描述
得到c的明文,讓0成爲全部爲零字符串。注意到E(0)=E(0⊕0)=E(0)⊕E(0)=0。因此,c=0的明文是m=0。因此,我們可以解密每個在這裏插入圖片描述

14.說明DES解密是DES加密的逆過程。
答案:

DES的解密過程和DES的加密過程算法相同,只不過將16輪的子密鑰序列K1,K2……K16的順序倒過來。即第一輪用第16個子密鑰K16,第二輪用K15,其餘類推。
①.X0’=YIP=(R16L16IP-1)*IP=R16L16
②解密第一輪:
在這裏插入圖片描述

L1’=L16, 參考加密最後一輪:L1’=L16=R15 R1’=R16⊕f(L16,K16),參考加密最後一輪:
R1’=(L15⊕f(R15,K16))⊕f(R15,K16)=L15 即 解密第1輪輸出爲:R15L15
同理解密第2輪輸出爲:R14L14
第16輪輸出爲:R0 L0
③最後空交換一次後 R16’L16’IP-1=L0R0IP-1=(x*IP)*IP-1=x明文

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章