數據加密標准(DES)
概述
DES(Data Encryption Standard)是由1971年IBM公司設計出的一個加密算法,1977年經美國國家標准局(NBS)采用作為聯邦標准之后,已成為金融界及其它各種民間行業最廣泛應用的對稱密碼系統,是第一個被公布出來的標准算法。四十年來,盡管計算機硬件及破解技術的發展日新月異,但對DES的攻擊也僅僅做到了“質疑”的地步,其主要缺點之一是密鑰太短,若能用DES改進算法加長密鑰長度,仍不失為一個安全的密碼系統。
DES結構
明文m 置換IP m0=L0UR0 密鑰源K1 L1UR1 密鑰源K2 L2UR2 ……密鑰源K16 L16UR16 得到R16UL16 逆置換IP^-1 得到密文C
- DES是一個對稱密碼體制,加解密使用同一密鑰,密鑰、明文、密文長度均為64bit。
- 解密過程為輸入密文C並反序輸入子密鑰K16,K15,...,K1,最后輸出的即明文m。
DES詳細結構圖
置換IP和逆置換IP^-1
置換IP和逆置換IP-1沒有密碼學意義,X與IP(X)(或Y與IP-1 (Y))的一一對應關系是已知的,置換的目的是打亂原來輸入X的ASII碼字的前后關系。
- 置換IP
- 置換IP表中的位序號特征為:64位按照8行8列排列,最右邊一列按照1、3、5、7排列,往左邊各列的位序號依次為其右邊一列各位序號加8.
- 逆置換IP^-1
- 逆置換IP^-1是置換IP的逆過程,表中位序號特征,64位按照8行8列排列,左邊第二列按8、7、6、5、4、3、2、1次序排列,往右邊隔一序號是當前列序號加8,認為最右邊一列的隔一列為最左邊一列。
F函數
DES的一輪迭代過程見下圖,其中的F函數由3部分組成:
- 擴展置換(E盒)
- 非線性代換(S盒)
- 線性置換(P盒)
substitute:代換
permute:置換
expand:擴展
- 擴展置換
- 擴展置換又稱E盒,將32別輸入擴展為48bit輸出。擴展過程如下:
擴展置換E盒作用:
- 將32bit擴展為48bit,產生子密鑰相同長度的數據使得能進行異或運算;
- 擴展后的48bit數據在S盒的作用下壓縮32bit實現了非線性運算。
- 代換
-
代換盒子又稱S盒,其功能是進行非線性代換,S盒子是DES中唯一的非線性部分,DES的安全性主要取決於S盒的安全。
-
S盒是一個查表運算,將48bit輸入數據分成8個6bit數據,分別經過對應的8個代換子盒,變為8個bit數據,然后合成32bit數據輸出。
-
具體查表方法如下:
- 設6bit輸入為b1b2b3b4b5b6,則將b1和b6組合,轉化為十進制的0~3的某個數,它對應表的行號(行分為第0、1、2、3行);
- 其余4bit數b2b3b4b5組合,轉化為十進制的0~15的某個數,它對應表的列號(列分為第0、1、2、3……15列)。
- 行列對應位置的十進制數轉化為4bit二進制數輸出。