孔潔 劉楊
(北京電子科技職業(yè)學(xué)院,北京 100176)
關(guān)于數(shù)據(jù)加密算法的分析
孔潔劉楊
(北京電子科技職業(yè)學(xué)院,北京100176)
信息安全涉及數(shù)學(xué)、密碼學(xué)、通信等諸多學(xué)科,是近些年迅速發(fā)展的的一個(gè)學(xué)科領(lǐng)域,網(wǎng)絡(luò)安全是信息安全的核心。數(shù)據(jù)加密技術(shù)被廣泛應(yīng)用到信息安全的各個(gè)領(lǐng)域,它伴隨著信息技術(shù)的發(fā)展在不斷發(fā)展。隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)加密技術(shù)也越來越重要。 數(shù)據(jù)加密是保障數(shù)據(jù)安全的一種方式。通過數(shù)據(jù)加密,可以有效地保證通信線路上的內(nèi)容不被泄漏,還可以檢驗(yàn)傳輸數(shù)據(jù)的完整性。目前DES算法得到了廣泛的應(yīng)用。DES是一種用56位密鑰來加密64位數(shù)據(jù)的方法,本文將重點(diǎn)分析和研究DES算法。
數(shù)據(jù)加密密鑰DES算法
密碼技術(shù)是通信雙方按約定的法則進(jìn)行信息特殊變換的一種保密技術(shù)。根據(jù)特定的法則,變明文(Plaintext)為密文(Ciphertext)。從明文變成密文的過程稱為加密(Encryption); 由密文恢復(fù)出原明文的過程,稱為解密(Decryption)。
所謂數(shù)據(jù)加密就是對(duì)原來的明文文件或數(shù)據(jù)按某種算法進(jìn)行處理,使其成為不可讀的一段代碼,稱為“密文”,使其只能在輸入相應(yīng)的密鑰之后才能顯示出本來的內(nèi)容,這樣可以保護(hù)數(shù)據(jù)不被竊取。
圖1:密鑰置換函數(shù)PC—1(8×7)
圖2: 密鑰置換輸出的劃分
圖3: 循環(huán)左移示意圖
圖4:壓縮置換PC-2
數(shù)據(jù)加密技術(shù)一般分為兩大類:對(duì)稱加密算法和非對(duì)稱加密算法。
對(duì)稱式數(shù)據(jù)加密就是加密和解密使用同一個(gè)密鑰。
對(duì)稱加密算法,交易雙方要使用同樣的鑰匙,安全性得不到保證。用戶每次使用對(duì)稱加密算法時(shí),都要使用唯一鑰匙,這會(huì)使得收發(fā)雙方所擁有的鑰匙數(shù)量很多,密鑰管理困難,使用成本增高。
非對(duì)稱式加密算法需要兩個(gè)密鑰進(jìn)行加密和機(jī)密,這兩個(gè)密鑰分別是公開密鑰(public key)和私有密鑰(private key)。加密和解密使用不同的加密算法。例如:兩個(gè)用戶要加密交換數(shù)據(jù),首先雙方交換公鑰,一方用對(duì)方的公鑰加密,另一方用自己的私鑰解密。顯然,采用不對(duì)稱加密算法,收發(fā)信雙方在通信之前,收信方必須將自己早已隨機(jī)生成的公鑰送給發(fā)信方,而自己保留私鑰。
由于不對(duì)稱算法擁有兩個(gè)密鑰,因而特別適用于分布式系統(tǒng)中的數(shù)據(jù)加密。
3.1DES的工作方式
圖5:子密鑰產(chǎn)生過程
DES(Data Encryption Standard)是IBM公司開發(fā)的單密鑰對(duì)稱加密解密算法。該算法利用56+8奇偶檢驗(yàn)位(第8,16,24,32,40,48,56,64位)=64位的密鑰對(duì)以64位為單位的塊數(shù)據(jù)進(jìn)行加密和解密。
3.2DES算法分析
3.2.1創(chuàng)建16個(gè)子密鑰
當(dāng)用戶輸入的密碼長度為0時(shí),使用缺省的64位密碼,當(dāng)用戶輸入的密碼長度大于8字節(jié)時(shí),前8個(gè)字節(jié)為有效的密碼。
在加密時(shí)首先設(shè)定的密鑰被轉(zhuǎn)化為64位的二進(jìn)制,然后按照密鑰置換函數(shù)PC—1(8×7)進(jìn)行壓縮置換,變成56位,將其置換后的輸出分為前28位C0和后28位D0兩部分。再將2部分進(jìn)行16輪的循環(huán)左移及壓縮置換PC-2(8×6),最后生成16個(gè)48位的密鑰。
(1)壓縮置換到56位。
假設(shè)密鑰:K(64位)=133457799BBCDFF1
即:K=00010011 00110100 010110111 01111001 10011011 10111100 11011111 11110001
其中:第8、16、24、32、40、48、56、64位是奇偶校驗(yàn)位,不參加運(yùn)算,實(shí)際密鑰為65位
對(duì)K(64位)用PC—1(8×7)進(jìn)行置換,去掉8個(gè)校驗(yàn)位,如圖1所示。
這樣,由K(64位),得到:
K’(56位)=1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111
(2)C0 和D0的分類。經(jīng)過PC-1置換后,將置換后的輸出分為前28位C0和后28位D0兩部分,如圖2所示。
C0(28位)=1111000 0110011 0010101 0101111
D0(28位)=0101010 1011001 1001111 0001111
(3)再將兩部分按照表進(jìn)行16輪的循環(huán)左移,如圖3所示。
C1、D1分別為C0和D0左移1位,C3、D3分別為C2、D2左移2位….C16、D16分別為C15、D15左移一位,得到的C1D1-C16D16為:
C1=1110000 1100110 0101010 1011111
D1=1010101 0110011 0011110 0011110
C2=1100001 1001100 1010101 0111111
D2=0101010 1100110 0111100 0111101
…….
(4)壓縮置換到48位。每進(jìn)行一次循環(huán)左移,就按表進(jìn)行壓縮置換,得到一個(gè)子密鑰。置換后的輸出數(shù)據(jù)位數(shù)要比置換前的位數(shù)要少。原來的8行7列(56位)數(shù)據(jù)被壓縮成8行6列(48位)數(shù)據(jù)。在置換過程中,第9、18、22、25、35、38、43、54位共8位數(shù)據(jù)被丟掉,如圖4所示。
置換過程如下圖5所示:
Kn=PC—2(CnDn(56位))
最終得到16個(gè)子密鑰,每個(gè)48位:
K1=000110 110000 001011 101111 111111 000111 000001 110010
K2=011110 011010 111011 011001 110110 111100 100111 100101
……
K16=110010 110011 110110 001011 000011 100001 011111 110101
3.2.2數(shù)據(jù)加密
DES算法對(duì)固定大小的數(shù)據(jù)塊進(jìn)行加密和解密操作,不夠64位的數(shù)據(jù)塊需要采用填充機(jī)制補(bǔ)到6 4位。如果該明文串為M= m1m2…m64,明文串經(jīng)過長度都為48位的16個(gè)子密鑰K加密,最后生成長度為64位的密文E。
(1)IP初始置換。
假設(shè)有明文M=0123456789ABCDEF,即
M=0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
對(duì)M運(yùn)用IP置換后為:
IP=1100 1100 0000 0000 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010
該64位串被分為左半部分L0和右半部分R0兩部分,各32位,用于f函數(shù)的16輪迭代運(yùn)算的首次迭代的初始輸入。
L0=1101 1100 0000 0000 1100 1100 1111 1111
R0=1111 0000 1010 1010 1111 0000 1010 1010
(2)數(shù)據(jù)加密:通過將原來的32位數(shù)據(jù)中的某些位重復(fù)出現(xiàn)達(dá)到擴(kuò)展的目的。擴(kuò)展置換通過將32、1、4、5、8、9、12、13、6、17、20、21、24、25、28、29共16位分別放置在兩個(gè)位置,從而將32位數(shù)據(jù)擴(kuò)展成48位。
擴(kuò)展后的48位與K1進(jìn)行異或,通過S盒子轉(zhuǎn)換為32位。
將異或運(yùn)算后得到的48位數(shù)據(jù)分為8個(gè)6位的塊,將每塊通過對(duì)應(yīng)的S盒產(chǎn)生一個(gè)4位的輸出。S盒接收6位的輸入,經(jīng)過置換后輸出4位的數(shù)據(jù)。
輸出結(jié)果再通過一個(gè)P盒置換產(chǎn)生一個(gè)32位的輸出。最后P盒置換的結(jié)果與左半部分進(jìn)行異或運(yùn)算,再將左右部分交換,再進(jìn)入下次迭代。
在完成完全相同的16輪運(yùn)算后,將得到的數(shù)據(jù)和在一起,將L16與R16的位置交換,再經(jīng)過一個(gè)末置換函數(shù)IP-1即可得到64位的密文。
3.2.3數(shù)據(jù)解密
DES的解密過程和加密過程完全類似,只是將16圈的子密鑰K1、k2….k16的順序顛倒過來,即第一圈用K16,即第二圈用K15,依次類推。
數(shù)據(jù)安全問題涉及企業(yè)及公司的利益,加強(qiáng)數(shù)據(jù)安全更是迫在眉睫,數(shù)據(jù)安全不僅僅是數(shù)據(jù)加密技術(shù)和加密算法,還涉及其他方面的技術(shù)與知識(shí):如黑客技術(shù)、入侵檢測(cè)技術(shù)等。因此一個(gè)完善的數(shù)據(jù)加密安全保護(hù)系統(tǒng),不僅能夠根據(jù)具體需求對(duì)安全技術(shù)進(jìn)行有效的取舍,還能對(duì)單位的業(yè)務(wù)數(shù)據(jù)進(jìn)行充分的保護(hù)。
[1]William Stallings、白國強(qiáng).網(wǎng)絡(luò)安全基礎(chǔ):應(yīng)用于標(biāo)準(zhǔn)(第5版)[M].清華大學(xué)出版社,2014.
[2]陽憲惠.網(wǎng)絡(luò)化控制系統(tǒng)-現(xiàn)場(chǎng)總線技術(shù)(第2版)[M].清華大學(xué)出版社,2014.
[3]劉雨棣,雷新穎.計(jì)算機(jī)控制技術(shù)[M].西安交通大學(xué)出版社.2013.
[4]陳文革.計(jì)算機(jī)網(wǎng)絡(luò)[M].西安交通大學(xué)出版社,2013.
[5]斯特凡諾·巴薩尼.移動(dòng)Ad Hoc網(wǎng)絡(luò)[M].西安交通大學(xué)出版社,2012.
[6]賴英旭,楊震,劉靜.網(wǎng)絡(luò)安全協(xié)議[M].清華大學(xué)出版社,2012.
[7]張堯?qū)W,郭國強(qiáng),王曉春,趙艷標(biāo).計(jì)算機(jī)網(wǎng)絡(luò)與Internet教程(第2版)[M].清華大學(xué)出版社,2010.
[8]沈鑫剡.計(jì)算機(jī)網(wǎng)絡(luò)工程.清華大學(xué)出版社[M].2013.
[9]楊云江,高建瓴,黃斌,李可.網(wǎng)絡(luò)工程應(yīng)用技術(shù).清華大學(xué)出版社[M],2012.
[10]張健.密碼學(xué)原理及應(yīng)用技術(shù)[M].清華大學(xué)出版社,2011.