1. 程式人生 > 實用技巧 >DES演算法和原理

DES演算法和原理

Feistal框架是DES的主體,DES是在其基礎上搞出來的具體應用。

關於Feistal框架部分不再贅述,瞭解的可跳過,不瞭解的跳轉↓做好預習
https://blog.csdn.net/weixin_43289702/article/details/108913996

本文包括:DES結構,輪函式的計算,子金鑰產生,和它們的原理。
.
.

一、DES結構

1

DES特點

  1. 不求可逆
  2. 非線性
  3. 擴散性
  4. 混亂性
  5. 雪崩
  6. 位獨立

不墨跡了,直接看F和金鑰的細節。

.
.
.

二、輪函式F

結構如圖

DES

具體步驟

1、64位的明文分組,拆成32位的左右兩部分。Li=Ri-1不做變動;Ri-1進入輪函式F,準備經過運算後生成Ri

2、E-box擴充套件:從32位擴充套件至48位。填充方法如圖,將原文每4個位一行排列。比如第二行5 6 7 8,那麼在5前面填充第4位,在8後面填充第9位。2

3、已經擴充到48位,下一步就拿它們跟48位的金鑰XOR(下面會說48位的金鑰怎麼來的)。

4、S-box:把48位長度的資料變回32位。一個S盒負責將6位資料變成4位,所以48/6=8,我們一共需要8個S盒。

S盒是安全的關鍵唯一非線性部分。

  • 8個S盒的工作原理是一樣的,這裡以S2盒為例:第7位和第12位作為Outer bits輸入,第8位—第11位作為middle 4 bits of input輸入,最終產生4位資料,即是輸出資料的第5位—第8位。

在這裡插入圖片描述

  • 那麼 S盒是怎麼把6位資料變成4位的呢?很簡單,查表。下圖是S5盒的表

在這裡插入圖片描述

【補充】每個S盒的表格,都是固定的,並非使用時隨機生成,或開發人員隨便填寫。細心對比可以發現,輸入中任1位元的變化,都會最少引起輸出中2位元的變化。

(其實這是當年美國IBM公司的大佬精心設計的,目的為了提高擴散性和混亂性。不過美國並未公佈具體的設計原理,只告訴了大家成果)
對其餘S盒有興趣的可以去查 百度百科詞條_S盒。

5、P-box:再將32位元的資料置換,此處是為了再次加強擴散性。

P盒的特點:

  1. 各輸出塊的4個位元必須來自不同輸入塊
  2. 各輸入塊的4個位元必須分配到不同的輸出塊
  3. 第n個輸出塊中不能包含第n個輸入塊的資料

6、輸出,一次迭代中的輪函式至此結束。
.
.
.
.

三、子金鑰

金鑰表面上有64位元,實際只有56位元,後面8位元是校驗和。如圖

1、初試金鑰經過第一次置換,拆成C、D左右兩部分(各自28位元)。
2、C、D分別獨立的進行第一次迴圈左移。

3、將2的結果組合(56位元),進行第二次置換(48位元)
4、輸出K1(48位元)
5、繼續進行2,3步驟
6、輸出K2
… …
7、輸出K16

C和D每次迴圈左移 要移多少位呢?還是查表 ╮(╯▽╰)╭

6

.
.

後話

差分分析是第一個公開的能對 DES 在小於 255複雜度情況下攻擊成功的方法。它表明,若有 247個選擇明文,用差分分析就可以在 247次加密運算內成功攻擊 DES。盡
儘管差分分析是一個強有力的密碼攻擊方法,但它對 DES 並不十分奏效。

另一個密碼分析方法是線性分析,這種方法只需知道 243 個明文就可以找出 DES 的金鑰,而用差分分析則需知道 247 個選擇明文。儘管獲取明文比獲取選擇明文容易得多,但是這只是一個小的改進,線性密碼分析對於攻擊 DES 還是不可行的。
.
.

全文結束,加密過程的重中之重是S盒。

最後附上DES完整流程圖
1

1

.
.
.
.
部分圖片素材擷取自網上資訊保安課程的PPT,感謝任教老師,自己做了適當調整,如有錯誤和不足,歡迎指出。

.
.
考研階段,邊學邊寫邊複習,編輯器用的不熟
.
.
.
.
.