董 潔 呂朝暉 李 婷
(沈陽(yáng)建筑大學(xué)信息與控制工程學(xué)院 遼寧 110168 )
隨著信息技術(shù)和產(chǎn)業(yè)的急速發(fā)展,信息安全問(wèn)題也隨之日益凸顯,信息安全問(wèn)題關(guān)乎國(guó)家及社會(huì)的安全,尋找解決措施不可怠慢。自研發(fā)以來(lái),DES成為了眾多領(lǐng)域的可靠通信的安全保障。無(wú)論是全球的貿(mào)易、金融部門,還是用戶的識(shí)別、文件保護(hù)都有DES深刻的影響。
DES(Data Encrypti on Standard),上個(gè)世紀(jì)70年代由IBM開(kāi)發(fā)的單密鑰對(duì)稱加解密算法的一個(gè)典范,并在1997年被美國(guó)政府正式的采納。DES算法是一種強(qiáng)算法,到目前為止,除了使用窮舉法搜索其密匙空間尋找破譯密碼外,沒(méi)有更有效的辦法。[1]
DES加密的整個(gè)過(guò)程可分為四個(gè)重要的階段:初始置換、子密鑰的生成、f函數(shù)運(yùn)算、最終逆置換。[2]
將加密的數(shù)據(jù)分割成以若干個(gè)以64位為單位的數(shù)據(jù)(如果位數(shù)不夠用00或FF補(bǔ)足),按照8行8列進(jìn)行排列,使用固定的IP置換表對(duì)64位的二進(jìn)制明文塊進(jìn)行重新排列,置換完畢的明文塊被分為兩個(gè)半?yún)^(qū)L0(前32位)、R0(后32位)。
子密鑰的生成主要是通過(guò)置換和移位產(chǎn)生的,原始密鑰由用戶提供,是DES算法的輸入之一,是一個(gè)64位的二進(jìn)制塊。但DES算法中8的整數(shù)倍位置的數(shù)為奇偶校驗(yàn)位,不參與運(yùn)算,用密鑰置換表進(jìn)行置換、去掉奇偶校驗(yàn)位后,將56位的密鑰分成兩部分,前后各為28位。將這兩部分進(jìn)行16次循環(huán)左移位,每一次移位以后得到的新的56位子密鑰作為下一次移位的有效密鑰,完成16次移位后使用密鑰選擇表壓縮置換,總計(jì)得到16個(gè)48位的子密鑰。
完成前述加密原文以及密鑰的準(zhǔn)備后,需要進(jìn)行f函數(shù)的加密運(yùn)算,公式如下:
從公式可以看出加密運(yùn)算的關(guān)鍵在于Ri:取初始置換后明文塊的后半?yún)^(qū)R,在運(yùn)算前首先要對(duì)該32位的數(shù)據(jù)進(jìn)行擴(kuò)充,即重復(fù)部分位置的數(shù)據(jù)將其擴(kuò)充為48位。
擴(kuò)充后的數(shù)據(jù)與48位的子密鑰的對(duì)應(yīng)位ki進(jìn)行異或運(yùn)算,異或運(yùn)算后的結(jié)果被分為8個(gè)6位的二進(jìn)制塊輸入到代換函數(shù)S中進(jìn)行代換。
代換函數(shù)S(S盒)的原理是將被分割成6位的二進(jìn)制塊的第一位和最后一位合并成一個(gè)2位的二進(jìn)制塊,換算為十進(jìn)制后作為S盒的行數(shù),中間4位換算為S盒的列數(shù)。再將S盒中確定的數(shù)字轉(zhuǎn)換為4位的二進(jìn)制數(shù)。代換后的結(jié)果再經(jīng)過(guò)換位表進(jìn)行置換。[3]8個(gè)6位的二進(jìn)制塊對(duì)應(yīng)不同的S盒,數(shù)值各不相同。完成f函數(shù)運(yùn)算后的Ri,與Li進(jìn)行異或運(yùn)算,并交換位置進(jìn)行16次的迭代。
迭代16次后的最終結(jié)果R16,L16,按照表1所示逆置換表進(jìn)行位置轉(zhuǎn)換:首位數(shù)據(jù)對(duì)應(yīng)原第40位的,第二位數(shù)據(jù)對(duì)應(yīng)原第8位的…,即IP-1置換,便完成了加密過(guò)程。
表1 IP-1逆置換表
DES算法運(yùn)用了置換、替代、代數(shù)等多種密碼技術(shù),算法結(jié)構(gòu)緊湊,條理清楚,而且加密與解密算法類似,這些特點(diǎn)都便于將DES算法在程中實(shí)現(xiàn)。在C#中提供了ESCryptoServiceProvider類用于實(shí)現(xiàn)DES加密及解密的過(guò)程。用C#進(jìn)行DES加密的關(guān)鍵代碼如下:
在數(shù)據(jù)庫(kù)的應(yīng)用中,如果用戶的密碼以明碼的方式存儲(chǔ)在數(shù)據(jù)表中容易造成安全的隱患,為此可以采用DES算法對(duì)其進(jìn)行了加密處理,加密前后結(jié)果如表2所示。
表2 加密結(jié)果
ZXCVBN D 1490677E2BC464F 123456 24179C578C1D8219
如今,信息已經(jīng)成為一種重要的戰(zhàn)略資源,為防止信息泄密,對(duì)關(guān)鍵信息進(jìn)行加密很有必要。DES 是世界上第一個(gè)公認(rèn)的實(shí)用密碼算法標(biāo)準(zhǔn),盡管人們?cè)谄谱g DES 方面取得了許多進(jìn)展,但至今仍未能找到比窮舉搜索密鑰更有效的方法,,但為了保障安全性,也不適合在網(wǎng)絡(luò)環(huán)境下單獨(dú)使用。現(xiàn)今DES的安全性完全在于對(duì)密鑰加以保護(hù),必須有可靠的信道來(lái)分發(fā)密鑰。
[1]周明全 等.網(wǎng)絡(luò)信息安全技術(shù)(第2版)[M].西安電子科技大學(xué)出版社,2010:55-57.
[2]解雙建,原 亮,謝方方.DES 算法原理及其 FPGA 實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展.2011(7):158-161.
[3]管瑩,敬茂華 .DES算法原理及實(shí)現(xiàn)[J].電腦編程技術(shù)與維護(hù).2009(2):5-8.