iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Security

學密碼學也猜不到你的手機密碼系列 第 7

DAY 7- 《區塊密碼1》DES(1)- 加密過程

そうですね。

今天來介紹過去被廣泛使用,甚至被定為標準的區塊加密演算法,
DES(Data Encryption Standard),資料加密標準。

DES

DES由IBM所提出,1976年被NBS(NIST的前身)制定為國家標準。
DES 使用的密鑰長度為56位元,這個56位元的密鑰可以推導出16把48位元的子密鑰,
進行16回合重複的運算。
而加密區塊的大小是64位元,也就是說如果你有128位元的資料,就得切成兩半加密。

大綱

首先先來大概看一下我們會經過哪些過程,
我們有一個64位元的資料,將他用DES加密

第一關
他會先遇到
初始排列 IP(Initial Permutation),這是一個將資料打亂的過程。

接著這64位元的訊息會來到第二關。

第二關 是一連串的運算,會將輸入的64位元分成左右兩邊,
右半邊先原封不動的成為輸出的左半邊,
右半邊再經過一個函數運算後和左半邊進行XOR成為輸出的右半邊
這個函數裡總共有4個步驟,

第二關會重複16遍。
最後來到第三關

第三關是名為最終排列 FP(Final Permutation)的打亂過程,
他是初始排列的逆運算,意思是說將如果中間沒有經過第二關的話,原始資料就會原封不動的跑出來。

而我剛說了56位元的密鑰會生成16個46位元的子密鑰,就是用於第二關的每一輪。
接下來要細講每一關的實際操作方式。

一、 初始排列 IP

IP是一個重新排列的過程,方式是查底下這張表。
這張表由左往右、由上往下讀。
所以依序得到58、50、42、...、2、60、...
意思是輸入的第58位是輸出的第1位、輸入的第50位是輸出的第2位...
依序排列直到最後:輸入的第7位是輸出的第64位

這樣就完成了初始排列。

二、左右分半運算

可以看到下圖中IP下面的部分,
資料被分成左右兩邊,右半經過函數運算、和左邊XOR後成為下一輪的左半
右半再原封不動成為下一輪的左半。
而中間的函數稱為F-function。

F-function 有 4個步驟

1.擴張(Expansion)
右半邊輸入的32位元會經過擴張的過程變成48位元,
而擴張的方式如右圖,
看法跟上面所講的初始排列是相同的。

2.跟子密鑰(k)做XOR
擴張完後的48位元和48位元的子密鑰進行XOR。

3.S-Box 代換

XOR完之後,48位元的資料分成6位元一組,總共有8組。
每一組都經過指定的S-Box做代換,6位元經過代換後成為4位元。

查表方式是這樣:假設輸入是110001,
第一位和第六位合在一起(11)是十進位的3

中間四位(1000)是十進位的8
所以查第3列第8行得到5,再轉換成2進位(0101)
這樣就完成了。

注意到S-box總共有8個,不同位置的資料要使用不同的S-box做代換。
於是原先的48位元回到32位元。

4.排列(Permutation)

最後用一樣的方式查表得到最終輸出值。

以上的四個步驟是F-function的內容。

三、 最終排列 FP

前面提到,最終排列其實就是初始排列的逆運算,也就是下圖中的(b)
經過同樣的方式重新排列,得到密文


OK,我想今天夠了。
明天再來看看我們要怎麼由56位元的密鑰產生16個48位元的子密鑰,
以及DES的安全性問題和替代方案。

圖片來源:
https://www.geeksforgeeks.org/data-encryption-standard-des-set-1/
https://www.tutorialspoint.com/cryptography/data_encryption_standard.htm
http://www.umsl.edu/~siegelj/information_theory/projects/des.netau.net/Dataencryptionalgorithm.html
https://www.researchgate.net/figure/Data-Encryption-Standard-DES-Algorithm_fig4_321587376
https://captanu.wordpress.com/2015/04/05/des/
https://www.coursehero.com/tutors-problems/Computer-Science/19056208-Referring-to-the-lecture-notes-on-DES-there-are-one-Expansion-Permuta/
https://www.oreilly.com/library/view/computer-security-and/9780471947837/sec9.3.html
https://www.hebergementwebs.com/cryptography-tutorial/data-encryption-standard
https://sandilands.info/crypto/DataEncryptionStandard.html


上一篇
DAY 6- 《串流密碼2》- RC4
下一篇
DAY 8- 《區塊密碼1》DES(2)- 密鑰生成及安全性
系列文
學密碼學也猜不到你的手機密碼30

尚未有邦友留言

立即登入留言