資源描述:
《數(shù)據(jù)加密標(biāo)準(zhǔn)DES》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、數(shù)據(jù)加密標(biāo)準(zhǔn)DES1977年1月,美國(guó)政府將IBM研制的一種乘積密碼宣布為國(guó)家的數(shù)據(jù)加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)的確立刺激了很大一批廠商去實(shí)現(xiàn)加密算法的硬件化,以提高處理速度。這種密碼術(shù)的核心是乘積變換,在硬件產(chǎn)業(yè)中常常簡(jiǎn)稱為DES(DataEncryptionStandard)。這樣一來(lái),由于可以得到便宜高速的硬件,所以反過(guò)來(lái)也鼓勵(lì)了許多其他用戶采納DES。1.DES算法描述現(xiàn)在我們來(lái)說(shuō)明DES算法,它的過(guò)程如圖9-2所示。對(duì)明文按64位分組,每組明文經(jīng)初始排列(第1步),通過(guò)子密鑰K1--K16進(jìn)行16次乘積變換(第2步
2、),再通過(guò)最終排列(第3步)得到64位密文。圖9-2DES算法過(guò)程圖16次乘積變換的目的是使明文增大其混亂性和擴(kuò)散性,使得輸出不殘存統(tǒng)計(jì)規(guī)律,使破譯者不能從反向推算出密鑰。第1步:初始排列(IP)IP(InitialPermutation)取排數(shù)據(jù)的方法如表9-2所示,其中的數(shù)據(jù)表示明文的位標(biāo)(1~64)。例如,58指該組明文中的第58位,50指該組明文中的第50位,其他類推。第l步初始排列的目的是將明文的順序打亂。表9-2初始排列法(IP)[例12-1]明文X=0123456789ABCDEF(十六進(jìn)制形式),寫
3、成二進(jìn)制形式,共64位:X=0000000100100011010001010110011110001001101010111100110111101111經(jīng)過(guò)初始排列(IP)后,結(jié)果變成:1100110000000000110011001111111111110000101010101111000010101010即寫成十六進(jìn)制形式是:CC00CCFFFOAAFOAA。第2步:乘積變換把通過(guò)第1步得出的64位一分為二,用L0表示前32位,R0表示后32位,那么在上例中有:L0=CC00CCFFR0=FOAAFOA
4、A其16次乘積變換的過(guò)程可以用圖9-3表示。其中K1~K16為16次變換所采用的密鑰。每一個(gè)密碼函數(shù)f(Ri-1,Ki)(i=1,…,16)都是通過(guò)3個(gè)子過(guò)程(擴(kuò)展置換,壓縮代換,P排列)得到的。由于16次變換過(guò)程是類似的,我們只要對(duì)其中的一個(gè)展開討論就行了。在上面的例子中,我們不妨看一下i=1(第1次變換)的情況。其具體過(guò)程如圖9-4所示。圖9-316乘積變換過(guò)程(1)擴(kuò)展置換擴(kuò)展置換又稱E(Expand)函數(shù),是一個(gè)與密鑰無(wú)關(guān)的純移位變換,它把32位擴(kuò)展成48位。將32位分成4位一組,共8組,記作a1(1)…a
5、4(1),a1(2)…a4(2),…a1(8)…a4(8)。每組擴(kuò)展成6位,共48位,記作b1(1)…b6(1),b1(2)…b6(2),…b1(8)…b6(8)。其擴(kuò)展公式可以表示成:當(dāng)j=l時(shí),有bl(1)=a4(8),j=8時(shí)有b6(8)=a1(1),也就是:圖9-4??第1次變換的過(guò)程[例12-1]中,R0=F0AAF0AA,經(jīng)過(guò)擴(kuò)展置換就變成了:把擴(kuò)展置換的結(jié)果與子密鑰進(jìn)行異或,16個(gè)子密鑰的順序是第i次變換用子密鑰Ki。我們不妨先假設(shè)子密鑰K1=0B02679B49A5,則7A15557A15550B0
6、2679B49A5=711732E15CF0。(2)壓縮替換壓縮替換也稱壓縮編碼(compressedencoding),通過(guò)壓縮替換將輸入的48位變換為32位輸出,其主要方法是利用替換盒(substitutionbox),簡(jiǎn)稱S盒。S盒是指這樣的函數(shù),它把6個(gè)輸入位映射為4個(gè)輸出位。作為一個(gè)密碼表,它是由0~15組成的4行16列的隨機(jī)數(shù)表,此密碼表就是S盒。一個(gè)S盒中有4個(gè)替換表(行編號(hào)為0,1,2,3)。因?yàn)?8位分成6位一組,共分8組,故應(yīng)有8個(gè)不同的S盒,記為S1,S2,…,S8,它們的構(gòu)成見(jiàn)表9-3。表9
7、-3?S盒的構(gòu)成我們以Sl為例來(lái)看一看如何由6位生成4位。把輸入6位中的頭尾兩位合起來(lái)構(gòu)成的兩位二進(jìn)制數(shù)表示行數(shù),中間4位二進(jìn)制數(shù)表示列數(shù),在S1盒中查找對(duì)應(yīng)的數(shù),該數(shù)化成二進(jìn)制形式就是輸出的4位。如果輸入為101100,那么在Sl中查到2行6列所對(duì)應(yīng)的數(shù)為2,即0010,故其輸出的4位為0010,可寫成或?qū)懗?。整個(gè)壓縮替換可用圖9-5表示。圖9-5壓縮替換前面的例子經(jīng)第1子過(guò)程后,得711732E15CF0H(48位),分成011100,010001,011100,110010,111000,010101,110
8、011和1100008個(gè)組,經(jīng)壓縮替換后得到:即經(jīng)壓縮替換的結(jié)果是用十六進(jìn)制表示的0C216D50,或32位二進(jìn)制。(3)P排列P排列也稱換位表變換,將壓縮替換后得到的32位按表9-4所示順序重新排列的32位,即密碼函數(shù)。表9-4P排列在前面的例子中,經(jīng)壓縮替換后的32位是:00001100001000010110110101010000即有:故。最后,得到