李尚恩
摘要:DES對(duì)稱加密算法過程繁鎖復(fù)雜,其中的16輪密鑰生成過程也是一個(gè)復(fù)雜的過程,大量的選擇操作、循環(huán)移位操作,令眾多學(xué)者望而卻步,從而對(duì)該加密算法只是一知半解?,F(xiàn)從筆者自己編寫的一個(gè)輪密鑰生成模擬程序入手,用動(dòng)態(tài)演示的方法全面而又詳細(xì)地剖析了輪密鑰的生成過程及原理,為大家透徹理解輪密鑰生成提供幫助,從而為深入學(xué)習(xí)DES加密算法和應(yīng)用DES加密算法打下基礎(chǔ)。
關(guān)鍵詞:DES; 加密算法; 輪密鑰; 輪密鑰生成; 動(dòng)態(tài)模擬
中圖分類號(hào):TP31156 文獻(xiàn)標(biāo)識(shí)碼:E文章編號(hào):2095-2163(2013)06-0091-04
0引言
DES對(duì)稱加密算法過程繁瑣復(fù)雜,其中的16輪密鑰生成也同樣是一個(gè)繁雜的過程,涉及了大量的選擇和循環(huán)移位操作,這令眾多學(xué)者一直未能得見該加密算法的實(shí)質(zhì)和精髓。本文從筆者自己編寫的一個(gè)輪密鑰生成模擬程序入手,用動(dòng)態(tài)演示的方法全面、詳細(xì)地剖析了輪密鑰的原理及生成過程,旨在為諸多學(xué)者透徹理解輪密鑰生成提供切實(shí)、有效的幫助。一直以來,密碼學(xué)以研究秘密通信為目的,通過對(duì)需傳輸?shù)男畔⑦M(jìn)行加密,力求防止第三方非法竊取信息[1]。在當(dāng)今計(jì)算機(jī)得到廣泛應(yīng)用的數(shù)字信息時(shí)代,大量信息以數(shù)據(jù)的形式存放在計(jì)算機(jī)里,而信息的傳輸則需通過公共信道,但這些計(jì)算機(jī)和公共信道均未設(shè)防,很不安全,極易受到攻擊和破壞,因而如何保護(hù)信息的安全,是每位研究學(xué)者面臨的一大挑戰(zhàn)。眾所周知,密碼是一種有效且可行的保護(hù)信息安全的重要辦法,但在計(jì)算機(jī)犯罪日益增長(zhǎng),計(jì)算機(jī)黑客日益猖獗的環(huán)境下,一種高強(qiáng)度的加密算法已顯得尤為重要。
1DES加密算法簡(jiǎn)介
DES算法為密碼體制中的對(duì)稱密碼體制,又被稱為美國數(shù)據(jù)加密標(biāo)準(zhǔn),是1972年美國IBM公司研制的對(duì)稱密碼體制加密算法。該加密算法的明文按64位進(jìn)行分組,密鑰長(zhǎng)64位。事實(shí)上,密鑰是56位參與DES運(yùn)算(第8、16、24、32、40、48、56、64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1),分組后的明文組和56位密鑰按位替代和交換的方法形成密文組的加密方法[2]。具體來說,該加密算法是一個(gè)迭代的分組密碼,使用稱為Feistel的技術(shù)[2],其中將需加密的64位文本塊分成兩半,使用輪密鑰(也稱子密鑰)對(duì)其中的一半應(yīng)用循環(huán)移位功能,再將移位后的輸出與文本塊的另一半進(jìn)行異或運(yùn)算;接著交換這兩半,重復(fù)這一循環(huán)移位和異或過程,即進(jìn)行16次循環(huán)移位和異或,但最后一個(gè)循環(huán)則不交換這兩半文本塊,最后即可得到加密后的64位文本塊[3]。DES使用了16個(gè)循環(huán),同時(shí)也調(diào)用了異或、置換、代換、移位操作四種基本運(yùn)算[4,5],從而將64位的明文輸入塊變成64位的密文輸出塊。算法整體流程如圖1所示。
2輪密鑰
密鑰是一種參數(shù),是在明文轉(zhuǎn)換為密文或?qū)⒚芪霓D(zhuǎn)換為明文的算法中輸入的數(shù)據(jù)。從DES算法流程可以看出,整個(gè)DES加密過程需要16個(gè)輪密鑰(K1,K2,K3,……,K16)參與運(yùn)算,才能完整地將明文輸入塊變換為密文輸出塊。那么這16個(gè)輪密鑰從何而來?在DES迭代加密過程中,使用的16個(gè)輪密鑰(48位)均來自于一個(gè)64位的種子密鑰。該種子密鑰共有64位,其中每個(gè)字節(jié)的第8位(第8、16、24、32、40、48、56、64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1)作為奇偶校驗(yàn)[6]。其具體過程描述如下:64位種子密鑰首先根據(jù)選擇置換表PC-1(見表1)進(jìn)行置換(就是將數(shù)碼中的某一位的值根據(jù)置換表的規(guī)定,用另一位代替),從而去除其中的奇偶校驗(yàn)位,得到56位的選擇矩陣;然后在DES的16輪密鑰變換生成過程中,每一輪都將一個(gè)56位的密鑰分成左右各28位的兩部分,再根據(jù)輪數(shù)循環(huán)左移表(見表2)分別左移后,合并左右兩部分,得到56位密鑰,其后則由密鑰壓縮置換表PC-2(表3)將56位密鑰壓縮成48比特密鑰。完整的生成算法過程如圖2所示。
3.9依此類推,依次得到剩下的輪密鑰
依此類推,依次得到剩下的輪密鑰K4,K5,K6,K7,K8,K9,K10,K11,K12,K13,K14,K15,K16。下面用表格形式展示本次輪密鑰生成過程得到的16個(gè)輪密鑰,如表4所示。表格第一列是輪密鑰的名稱,表格第二列是二進(jìn)制的輪密鑰,表格第三列是與第二列對(duì)應(yīng)的16進(jìn)制的輪密鑰。
4結(jié)束語
總而言之,輪密鑰生成過程是一個(gè)復(fù)雜的移位和選擇過程,很多學(xué)者都難以讀懂,對(duì)其只是一知半解。本文通過一種嶄新的逐步動(dòng)態(tài)演示的方式闡述了整個(gè)流程,借助圖表展示了整個(gè)算法的步驟,遠(yuǎn)比文字、數(shù)字式表達(dá)具有更高的可接受度,整個(gè)過程緊湊,且清晰,而且將傳統(tǒng)文字,數(shù)字表達(dá)方式轉(zhuǎn)換成圖表的表現(xiàn)方式,有助于研究人員透徹地認(rèn)識(shí)該算法的原理及過程,從而為深入學(xué)習(xí)DES加密算法和應(yīng)用DES加密算法打下基礎(chǔ)。
參考文獻(xiàn):
[1](美)斯坦普著. 信息安全原理與實(shí)踐(第2版) [M]. 張戈,譯.北京:清華大學(xué)出版社,2013-05.
[2]陳魯生,沈世鎰. 現(xiàn)代密碼學(xué)(第二版) [M].北京:科學(xué)出版社, 2008-08.
[3]林新平.淺析DES數(shù)據(jù)加密算法[J]. 福建電腦, 2008(1).
[4]靳冰,賴宏慧,賈玉珍. DES加密算法的安全分析[J].華南金融電腦, 2007(2):71-73.
[5]孫瑜.基于FPGA的數(shù)據(jù)加解密系統(tǒng)設(shè)計(jì)[D]. 大連:大連海事大學(xué), 2010.
[6]馬銀華,劉明生,王書海,等.提高DES加密強(qiáng)度的密鑰選位方法研究[J].計(jì)算機(jī)工程, 2000(3):68-69.