目錄
引言
DES算法介紹
DES發(fā)展
設(shè)計(jì)方案
加密解密過程
16輪F運(yùn)算迭代
原理
混淆和擴(kuò)散
雪崩效應(yīng):
迭代輪數(shù):
函數(shù)F的設(shè)計(jì):
密鑰擴(kuò)展:
S-box 的設(shè)計(jì)準(zhǔn)則
安全分析
DES 算法的一些應(yīng)用
參考文章
引言
今天,我們大部分時(shí)間都生活在互聯(lián)網(wǎng)上。無論是存儲(chǔ)我們的個(gè)人信息、娛樂、購物還是處理我們的工作,我們的社會(huì)都越來越依賴于互聯(lián)網(wǎng)。
對(duì)互聯(lián)網(wǎng)的依賴意味著信息安全比以往任何時(shí)候都更加重要。一旦信息被惡意竊取,將會(huì)產(chǎn)生嚴(yán)重的后果,可以具體到個(gè)人,也可能危及一個(gè)國家。用戶需要知道他們的敏感數(shù)據(jù)是受到保密的、未修改的,并且被授權(quán)者可以隨時(shí)訪問。
數(shù)據(jù)加密只是網(wǎng)絡(luò)安全武器庫中的一種武器,但它是最古老和最常用的武器之一。本文討論了最經(jīng)典的DES加密算法,讓我們開始吧!
DES算法介紹
DES全稱為Data Encryption Standard,即數(shù)據(jù)加密標(biāo)準(zhǔn),是一種使用密鑰加密的塊算法,1977年被美國聯(lián)邦政府的國家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),并授權(quán)在非密級(jí)政府通信中使用,隨后該算法在國際上廣泛流傳開來。需要注意的是,在某些文獻(xiàn)中,作為算法的DES稱為數(shù)據(jù)加密算法(Data Encryption Algorithm,DEA),已與作為標(biāo)準(zhǔn)的DES區(qū)分開來。
DES算法是一種分組密碼算法,使用64位密鑰(除去8位奇偶校驗(yàn),實(shí)際密鑰長(zhǎng)度為56位) 對(duì)64比特的數(shù)據(jù)分組(二進(jìn)制數(shù)據(jù)) 加密,產(chǎn)生64位密文數(shù)據(jù);DES也是一種對(duì)稱密碼體制,在加密和解密的過程中使用相同的密鑰,解密和加密使用同一算法(在硬件與軟件設(shè)計(jì)時(shí)有利于加密單元的重用)。在將明文分塊為64位后,DES算法就是一個(gè)把64位的明文輸入塊變?yōu)?4位密文輸出塊的算法,它所使用的密鑰也是64位(其實(shí)只使用到了56位,其余8位為奇偶校驗(yàn)位),按替代或交換的方式形成密文組。
DES算法的入口參數(shù)有三個(gè): Key、Data、Mode。其中Key為8個(gè)字節(jié)共64位,是DES算法的工作密鑰: Data也為8個(gè)字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密或解密
DES發(fā)展
DES 基于 Feistel 塊密碼,稱為 LUCIFER,由 IBM 密碼學(xué)研究員 Horst Feistel 于 1971 年開發(fā)。DES 使用 16 輪 Feistel 結(jié)構(gòu),每輪使用不同的密鑰。
1973年,美國國家標(biāo)準(zhǔn)計(jì)算研究所(NIST)征求對(duì)稱加密算法方案,IBM提交了自己的算法;
1977年,IBM的算法(Luciffer算法)被正式采用,成為數(shù)據(jù)加密標(biāo)準(zhǔn):Data Encryption Standard即DES算法;
DES公布后,就被質(zhì)疑算法密鑰比較短,只有56位,迭代次數(shù)少,很容易受到密碼分析手段和暴力破解的攻擊,同時(shí),也有人被懷疑DES內(nèi)部存在NSA(美國國家安全局)安置的后門,他們擔(dān)心DES中的幾個(gè)結(jié)構(gòu)(S 盒)可能有一些秘密后門,使國家安全局 (NSA) 能夠解密密鑰要求之外的消息。后來 IBM 的設(shè)計(jì)者解釋了這些內(nèi)部機(jī)制是為了避免差分密碼分析而設(shè)計(jì)的;
1998年,出現(xiàn)DES算法破譯機(jī),DES算法被攻破,宣告不安全;
1999年,NIST公布新標(biāo)準(zhǔn)3DES,3DES取代DES,DES作為遺留系統(tǒng)的加密手段被廢棄;
DES 的統(tǒng)治地位在 2002 年結(jié)束,當(dāng)時(shí)高級(jí)加密標(biāo)準(zhǔn) (AES) 取代 DES 加密算法成為公認(rèn)的標(biāo)準(zhǔn),隨后公開競(jìng)爭(zhēng)尋找替代品。NIST 于 2005 年 5 月正式撤回了 FIPS 46-3(1999 年的重申),盡管 Triple DES (3DES) 在 2030 年之前仍被批準(zhǔn)用于敏感的政府信息。
雖然DES被取代了,但是DES的CBC工作模式是基礎(chǔ)性的算法和工作模型,有很強(qiáng)的意義,在遺留系統(tǒng)中也有一些使用的。
設(shè)計(jì)方案
?
DES加密解密首先要準(zhǔn)備好由64位密鑰(8位為校驗(yàn)位)轉(zhuǎn)換得到16組子密鑰,每個(gè)密鑰長(zhǎng)32位。
16個(gè)子密鑰生成
64位的初始密鑰,密鑰只包括56位,剩余的位在硬件中用作奇偶校驗(yàn),在軟件中可直接忽略,初始密鑰通過長(zhǎng)為56的PC1置換矩陣進(jìn)行置換(丟棄了8位):
[
57, 49, 41, 33, 25, 17, 9,
1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27,
19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15,
7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29,
21, 13, 5, 28, 20, 12, 4,
]
將置換后的56位的密鑰分為兩個(gè)28位的組。然后,針對(duì)每個(gè)子密鑰,根據(jù)子密鑰的序列值(也就是16個(gè)子密鑰中的第i個(gè))旋轉(zhuǎn)這兩組值,旋轉(zhuǎn)的位數(shù)在左移表中查找:
KEY_MOVE = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]
然后重新合并為56位。之后再按照PC2置換矩陣對(duì)重組后的密鑰進(jìn)行置換,使56位的子密鑰縮小為48位(丟棄了8位),這個(gè)排列過程就稱為置換選擇。
[
14, 17, 11, 24, 1, 5, 3, 28,
15, 6, 21, 10, 23, 19, 12, 4,
26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40,
51, 45, 33, 48, 44, 49, 39, 56,
34, 53, 46, 42, 50, 36, 29, 32
]
針對(duì)16個(gè)子密鑰,每個(gè)子密鑰重復(fù)一次該過程。這里的目的是保證將初始密鑰中的不同位在每一輪排列后應(yīng)用于加密的數(shù)據(jù)上。最終得到16個(gè)子密鑰K
加密解密過程
?
準(zhǔn)備好子密鑰后,再進(jìn)行明文的加密解密:將明文分組,每組56位,最后一組不足56位的向前補(bǔ)零;對(duì)一組明文進(jìn)行初始置換,即通過位置的替換,將56位文組轉(zhuǎn)換位64位分組,并將64位分組分成左右兩個(gè)組L0和R0各32位,一次對(duì)兩組進(jìn)行16輪的F運(yùn)算,其中會(huì)使用到之前準(zhǔn)備的16個(gè)子密鑰,最后將兩組合并得到64位的組,在經(jīng)過最后一次逆置換將其轉(zhuǎn)換位56位的密文組。按順序?qū)⒚芪姆纸M拼接即可得到密文。
在初始變換中,使用到的變換矩陣M如下:
[
58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7
]
其從左到右,從上到下依次數(shù)共64個(gè),表中第i個(gè)數(shù)據(jù)1<=M[i]<=64,M[i]表示原始數(shù)據(jù)中第M[i]個(gè)數(shù)置換到第i位。逆置換的矩陣為
[
40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25
]
16輪F運(yùn)算迭代
每一輪以Li-1和Ri-1開始,在前15輪中有:
最后一輪為:
在F運(yùn)算中,ki為第i個(gè)子密鑰,F(xiàn)運(yùn)算分為四個(gè)階段:
- E擴(kuò)展:將Ri-1從32位擴(kuò)展到48位。E置換矩陣為:
[
32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1
]
該置換的主要目的是在加密數(shù)據(jù)的過程中制造一些雪崩效應(yīng),使用數(shù)據(jù)塊中的1位將在下一步操作中影響更多位,從而產(chǎn)生擴(kuò)散效果。
- 異或:將計(jì)算出的48位的結(jié)果值與這一輪子密鑰Ki進(jìn)行異或運(yùn)算,這將產(chǎn)生48位的中間值,記為Rint。如果將E計(jì)為擴(kuò)展置換的結(jié)果,則本輪到目前為止的操作可以表示為:
?
- S盒壓縮:Rint 需要通過8個(gè)單獨(dú)的S盒執(zhí)行8次替換操作,每個(gè)S盒對(duì)應(yīng)一個(gè)S表:
[
??[
[14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7],
[0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8],
[4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0],
[15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13]
??],
??[
[15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10],
[3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5],
[0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15],
[13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9]
??],
??[
[10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8],
[13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1],
[13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7],
[1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12]
??],
??[
[7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15],
[13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9],
[10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4],
[3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14]
??],
??[
[2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9],
[14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6],
[4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14],
[11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3]
??],
??[
[12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11],
[10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8],
[9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6],
[4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13]
??],
??[
[4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1],
[13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6],
[1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2],
[6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12]
??],
??[
[13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7],
[1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2],
[7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8],
[2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11]
??]
]
第j(j=1...8)個(gè)S盒從Rint的6(j-1) 到 6(j-1)+6 的位置取出6位,并為其在S[j]表中查出1個(gè)4位的值,該值為取出這6位壓縮后的結(jié)果。通過前面取出的6位值,根據(jù)第1位和最后1位組成的2位值找到S[j]中的行號(hào),而根據(jù)中間剩下的4位來確定S[j]中的列號(hào)。例如,若Rint中的第3個(gè)6位組是101011。因此對(duì)應(yīng)S[3]表中,行號(hào)等于11 = 3,列號(hào)等于0101= 5 得到結(jié)果為8,轉(zhuǎn)換為二進(jìn)制位0100。S盒壓縮為數(shù)據(jù)增加了不確定性,除了給DES帶來安全性外,沒什么特別的。
- P置換:使用P置換矩陣將S盒結(jié)果位置置換:
[
16, 7, 20, 21, 29, 12, 28, 17,
1, 15, 23, 26, 5, 18, 31, 10,
2, 8, 24, 14, 32, 27, 3, 9,
19, 13, 30, 6, 22, 11, 4, 25
]
如果 bj 代表Rint中的第j個(gè)6位組,Sj 代表第j個(gè)S盒,而P代表P盒置換,則3、4階段可以用函數(shù)f表示:
?
注意,解密過程同加密過程相同,只需要將子密鑰按照逆向的順序(16-1)對(duì)密文進(jìn)行處理
原理
從本質(zhì)上來說,DES的安全性依賴于虛假表象,從密碼學(xué)的術(shù)語來講就是依賴于“混淆和擴(kuò)散”的原則?;靵y的目的是為隱藏任何明文同密文、或者密鑰之間的關(guān)系,而擴(kuò)散的目的是使明文中的有效位和密鑰一起組成盡可能多的密文。兩者結(jié)合到一起就使得安全性變得相對(duì)較高。
混淆和擴(kuò)散
擴(kuò)散就是指使明文的統(tǒng)計(jì)特征消散在密文中,這可以通過讓每個(gè)明文數(shù)字盡可能地影響多個(gè)密文數(shù)字獲得,等價(jià)于說每個(gè)密文數(shù)字被許多明文數(shù)字影響?;煜齽t是盡可能使密文和加密密鑰間的統(tǒng)計(jì)關(guān)系更加復(fù)雜,以阻止攻擊者發(fā)現(xiàn)密鑰,從而導(dǎo)致明文的統(tǒng)計(jì)結(jié)構(gòu)消失,密文中各字母的出現(xiàn)頻率趨于一致,無法通過統(tǒng)計(jì)方法來破解密文。注意簡(jiǎn)單的線性代替函數(shù)幾乎增加不了混淆,而需要嘗試復(fù)雜代替算法。
DES算法具體通過對(duì)明文進(jìn)行一系列的排列和替換操作來將其加密。過程的關(guān)鍵就是從給定的初始密鑰中得到16個(gè)子密鑰的函數(shù)。要加密一組明文,每個(gè)子密鑰按照順序(1-16)以一系列的位操作施加于數(shù)據(jù)上,每個(gè)子密鑰一次,一共重復(fù)16次。每一次迭代稱之為一輪。要對(duì)密文進(jìn)行解密可以采用同樣的步驟,只是子密鑰是按照逆向的順序(16-1)對(duì)密文進(jìn)行處理。
S-boxes 和 P-boxes 用于增加數(shù)學(xué)的復(fù)雜性,連同一個(gè)密鑰使得確定一些輸入位和每個(gè)輸出位之間發(fā)生的實(shí)際映射變得非常困難。真正觸及問題核心的是 S-box 的設(shè)計(jì)原理/標(biāo)準(zhǔn)。
雪崩效應(yīng):
在密碼學(xué)中,雪崩效應(yīng)是密碼算法的理想屬性,通常是塊密碼和密碼哈希函數(shù),其中如果輸入略有變化(例如,翻轉(zhuǎn)一位),輸出會(huì)顯著變化(例如,一半輸出位翻轉(zhuǎn))。在高質(zhì)量分組密碼的情況下,密鑰或明文的如此小的變化應(yīng)該會(huì)導(dǎo)致密文發(fā)生劇烈變化。
迭代輪數(shù):
僅執(zhí)行擴(kuò)散或混淆的密碼都不是安全的,比如移位密碼或第二次世界大戰(zhàn)使用的密碼機(jī)?Enigma。這兩個(gè)密碼都是僅執(zhí)行擴(kuò)散的密碼。然而,將擴(kuò)散操作串聯(lián)起來就可以建立一個(gè)更強(qiáng)壯的密碼。將若干加密操作串聯(lián)起來的思想也是 Shannon 提出的,這樣的密碼也叫乘積密碼(Product cipher)。目前,所有的分組密碼都是乘積密碼,因?yàn)樗鼈兌际怯蓪?duì)數(shù)據(jù)重復(fù)操作的輪組成的。迭代輪數(shù)越多,密碼分析就越困難。迭代輪數(shù)的選擇標(biāo)準(zhǔn)是使密碼分析的難度大于簡(jiǎn)單窮舉攻擊的難度。有學(xué)者觀察到,對(duì)于16輪選代的DES,差分密碼分析比窮舉攻擊的效率要差一點(diǎn);差分密碼分析需要?2^55.1次操作,而窮舉攻擊平均則需要 2^55次操作。如果 DES 只有15 層選代或更少,差分密碼分析比窮舉攻擊效率就要高一些。
函數(shù)F的設(shè)計(jì):
Feistel密碼的核心是函數(shù) F。函數(shù)F給 Feistel密碼注入了混淆的成分,F(xiàn) 的明顯標(biāo)準(zhǔn)是非線性,任何形式的分析就會(huì)越困難,越難將F近似表示為某些線性等式,F(xiàn)的非線性度就越高。
設(shè)計(jì)F時(shí)還應(yīng)考慮其他幾個(gè)標(biāo)準(zhǔn)。我們希望算法有較好的雪崩效應(yīng),即輸入的一位變化應(yīng)該引起輸出的很多位變化。一個(gè)更嚴(yán)格的定義是嚴(yán)格雪崩效應(yīng)準(zhǔn)則SAC(Strict Avalanche Criterion),參見文獻(xiàn)[WEBS86],即對(duì)于所有的i和,它要求若S 盒的輸入的任意一位i發(fā)生變化,輸出的任意位i發(fā)生變化的可能性為 1/2(參見附錄S 中關(guān)于S 盒的討論)盡管 SAC是對(duì)S盒而言的,作為個(gè)標(biāo)準(zhǔn)它同樣適用于整個(gè)F函數(shù)。當(dāng)F中不含S盒時(shí),這條準(zhǔn)則是很重要的。文獻(xiàn)[WEBS86]中建議的另一項(xiàng)標(biāo)準(zhǔn)是 BIC標(biāo)準(zhǔn)(BitIndependent Criterion),即對(duì)任意的,jk,當(dāng)輸入中的一位i發(fā)生變換時(shí),輸出中的位j和位k的變化應(yīng)是彼此無關(guān)的。SAC 和 BIC 明顯是為了加強(qiáng)混淆的有效性。
密鑰擴(kuò)展:
在密鑰擴(kuò)展算法中,通過左移的方式加大了推導(dǎo)子密鑰及密鑰種子的難度。
S-box 的設(shè)計(jì)準(zhǔn)則
在DES算法中,S-box運(yùn)算是非線性的,而其他運(yùn)算都是線性的,這對(duì)于增加數(shù)學(xué)復(fù)雜性有著決定性的作用,為加密算法提供了更好的安全性。S-box的設(shè)計(jì)準(zhǔn)則如下:
- 每個(gè)?S - 盒都有 6 個(gè)輸入位和 4 個(gè)輸出位。
- 任何一個(gè)輸出位都不應(yīng)該太接近于輸入位的線性組合。
- 如果輸入的最高位和最低位都是固定的,只有中間的?4 個(gè)位是可變的,則每個(gè)可能的 4 位輸出值都必須只出現(xiàn)一次。
- 對(duì)于?S - 盒的兩個(gè)輸入,如果僅有 1 位不同,則輸出必須至少有兩位不同。
- 對(duì)于?S - 盒的兩個(gè)輸入,如果只有中間兩位不同,則輸出必須至少有兩位不同。
- 對(duì)于?S - 盒的兩個(gè)輸入,如果開頭的兩位不同,但最后兩位相同,則輸出必須不同。
- 對(duì)于任意有?6 位非零差分的輸入對(duì),32 對(duì)輸入中至多有 8 對(duì)有相同的輸出差分。
- 8 個(gè) S - 盒對(duì)應(yīng)的 32 位輸出沖突(零輸出差異)只有在三個(gè)相鄰的 S - 盒的情況下才有可能。
- S - 盒是 DES 中最重要的元素,因?yàn)?S - 盒在密碼中引入了非線性,即:
如果沒有非線性構(gòu)造元件,攻擊者很容易就可以使用一個(gè)線性等式系統(tǒng)來表示?DES 的輸入和輸出;其中該系統(tǒng)的密鑰位是已知的。這樣的系統(tǒng)很容易被破解。然而,人們通常會(huì)精心設(shè)計(jì) S - 盒,以便可以抵御各種高級(jí)的數(shù)學(xué)攻擊,尤其是差分密碼分析。
安全分析
DES是不安全的,其主要原因在于其密鑰的長(zhǎng)度太短,56位的密鑰,其密鑰空間大小有限,無法抵擋暴力破解。
在DES剛提出時(shí),非政府密碼學(xué)家就提出 DES 的 56 位密鑰太短,而這起初并沒有被美國政府接受。
在一項(xiàng)研究密鑰長(zhǎng)度的論文中提出,至少75 位才能認(rèn)為現(xiàn)有密碼是安全的,而至少 90 位才能用于新密碼。
如今,基于專用硬件能夠再幾天時(shí)間內(nèi)破解DES,1998年初,電子前沿基金會(huì)建造了一 臺(tái)DES破解機(jī)。平均幾天的搜索就能找到一個(gè)DES密鑰,并且隨著電子技術(shù)的發(fā)展,這樣的硬件成本只會(huì)越來越低。
還有一種?DES 的變體三重 DES(3DES),它比普通的 DES 好得多,使用三個(gè)不同的密鑰應(yīng)用三次 DES。密鑰空間也十分龐大,無法被輕易的暴力破解。我們的代碼默認(rèn)使用3DES。雖然3DES 的速度大約是 DES 的 1/3,但隨著CPU的發(fā)展,已足夠允許3DES在代碼中運(yùn)行。
在DES之后又出現(xiàn)了許多優(yōu)化之后的加密算法,他們選擇密鑰的長(zhǎng)度至少為128位文章來源:http://www.zghlxwxcb.cn/news/detail-434720.html
DES 算法的一些應(yīng)用
- 它用于隨機(jī)數(shù)生成
- 當(dāng)需要不太強(qiáng)的加密時(shí)部署它?,DES算法最常用的場(chǎng)景是銀行業(yè),如銀行卡收單,信用卡持卡人的PIN的加密傳輸,IC卡與POS間的雙向認(rèn)證、金融交易數(shù)據(jù)包的MAC校驗(yàn)等,均用到DES算法。另外,在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收費(fèi)站等領(lǐng)域,DES算法也被廣泛應(yīng)用,以此來實(shí)現(xiàn)關(guān)鍵數(shù)據(jù)的保密。
- 它用于開發(fā)一種新形式的?DES,稱為 Triple DES(使用由三個(gè)密鑰組成的 168 位密鑰)
參考文章
[1]William Stallings.密碼編碼學(xué)與網(wǎng)絡(luò)安全第七版[M].?北京:電子工業(yè)出版社2017.2。文章來源地址http://www.zghlxwxcb.cn/news/detail-434720.html
到了這里,關(guān)于DES加密算法解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!