翁云翔
(武漢郵電科學(xué)研究院湖北武漢430070)
基于DES和RSA的混合加密算法研究與設(shè)計(jì)
翁云翔
(武漢郵電科學(xué)研究院湖北武漢430070)
文中基于研究設(shè)計(jì)適合于實(shí)際工程中使用的加密算法的目的,采用了分析與比較的方法,首先研究了目前常用的對(duì)稱加密算法DES以及非對(duì)稱加密算法RSA,然后分析比較了它們的優(yōu)缺點(diǎn),進(jìn)而綜合安全性和效率設(shè)計(jì)出適合于在實(shí)際工程中應(yīng)用的RSA、DES混合加密算法,最后結(jié)合實(shí)際JAVA工程中的應(yīng)用,得出了該算法兼有加密、解密速度快和密匙分配管理簡(jiǎn)便安全優(yōu)點(diǎn)的結(jié)論。
加密;DES;RAS;混合加密算法;JAVA
隨著信息社會(huì)的發(fā)展,人們?cè)谙硎苄畔①Y源所帶來(lái)的巨大便利的同時(shí),也面臨著信息安全問題的嚴(yán)峻考驗(yàn)。如何對(duì)企業(yè)項(xiàng)目中重要信息的進(jìn)行加密保護(hù),防止項(xiàng)目中傳輸?shù)男畔⒈黄平猓岣咂髽I(yè)和用戶隱私的安全性,避免用戶信息被盜取引起的糾紛,是當(dāng)前信息安全領(lǐng)域的一個(gè)重要課題[1-2]。
一個(gè)加密算法系統(tǒng)由所有可能的明文、密鑰、密文、加密算法和解密算法組成,其組成部分的安全性都基于密鑰的安全性,而不是基于算法的細(xì)節(jié)安全性。這就表明密鑰是加密算法系統(tǒng)的核心。
加密算法根據(jù)密鑰可以分為兩類,即為對(duì)稱加密算法和非對(duì)稱加密算法。對(duì)稱加密算法,例如AES算法、DES算法等,其特征是:加密、解密密鑰是相同的。而非對(duì)稱加密算法,例如RSA算法、ECC算法等,其包含兩個(gè)密鑰:公開密鑰,也叫加密密鑰,是公開的,并由第三方管理;私有密鑰,也叫解密密鑰,由使用此系統(tǒng)的人自己保管。并且在非對(duì)稱算法中,是無(wú)法從公開密鑰推出私有密鑰的[3]。
1.1DES算法的概述
DES[4]算法又稱數(shù)據(jù)加密標(biāo)準(zhǔn),其英文全稱為Data Encryption Standard。它是IBM公司1972年研制出的一種對(duì)稱加密算法,并于1976年被美國(guó)聯(lián)邦政府的國(guó)家標(biāo)準(zhǔn)局確定為聯(lián)邦資料處理標(biāo)準(zhǔn)(FIPS),隨后在國(guó)際上廣泛流傳開來(lái)。至今,它仍在國(guó)際信息安全的舞臺(tái)上扮演著十分重要的角色。
DES是一個(gè)對(duì)稱算法的同時(shí),也是一個(gè)分組加密算法。它將要加密的數(shù)據(jù)以64位為一組分組后進(jìn)行加密。它的密匙長(zhǎng)度為64位,但其算法規(guī)定64位中每個(gè)第8位都用作奇偶校驗(yàn)位,所以實(shí)際密匙長(zhǎng)度為56位。由于密匙可以是任意的56位數(shù),所以DES算法的安全性依賴于密匙。
1.2DES算法的原理
DES的加密算法流程圖如圖1所示。
圖1DES加密算法流程圖
DES算法流程如圖:首先將明文按照64位一組進(jìn)行分組操作,然后對(duì)每個(gè)分組的數(shù)據(jù)用初始置換進(jìn)行移位變換。每組數(shù)據(jù)移位變換后,得到一個(gè)亂序的64位明文數(shù)據(jù),將該亂序數(shù)據(jù)分成左、右各32位的兩部分,記作L0和R0。經(jīng)過16次迭代運(yùn)算后,得到L16、R16。將最后一次迭代后的數(shù)據(jù)作為輸入,對(duì)其進(jìn)行逆置換,即得到密文輸出。逆置換為初始置換的逆運(yùn)算。對(duì)于每次迭代中要用到的48位子密鑰,它們是根據(jù)64位初始密鑰K移位并迭代生成的。
1.3DES算法的優(yōu)缺點(diǎn)
DES算法加密效率高,實(shí)現(xiàn)簡(jiǎn)單,適合于較長(zhǎng)數(shù)據(jù)的加密。但由于較短的密碼長(zhǎng)度,隨著計(jì)算機(jī)技術(shù)的發(fā)展,其安全性已遭受嚴(yán)重威脅。另外由于DES算法采用單密鑰體制,必須將不同的密匙提前分配傳輸給不同的通信對(duì)象,才能確保通信能夠進(jìn)行。這就造成了密匙傳輸過程中的安全隱患問題,以及密匙變更時(shí)帶來(lái)的種種麻煩。并且不同通信對(duì)象需要產(chǎn)生和保管不同的密匙,所以對(duì)這些密匙進(jìn)行分配管理的難度也十分大。
2.1RSA算法的概述
RSA[5]公鑰加密算法由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)3人一起在1977年提出的,RSA就是他們3人姓氏開頭字母拼在一起組成的,該算法于1987年首次公布。
RSA是目前最有影響力的公鑰加密算法,它能夠抵御到目前為止已知的絕大部分密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。
2.2RSA算法的原理
RSA算法是基于一個(gè)公認(rèn)的數(shù)論事實(shí):求兩個(gè)大素?cái)?shù)的乘積十分容易,但是要想將乘積進(jìn)行因式分解則十分困難。所以,可以將兩個(gè)大素?cái)?shù)的乘積公開作為公共密匙,而把素?cái)?shù)作為私有密匙產(chǎn)生因子。那么想利用公開密鑰和密文中破解出明文就相當(dāng)于分解兩個(gè)大素?cái)?shù)之積,是非常困難的。故RSA算法的安全性基于大素?cái)?shù)乘積分解因子的難度。
建立RSA加密系統(tǒng)過程如下:
2)計(jì)算乘積n=pq和ω(n)=(p-1)(q-1)。
3)任意選取加密密鑰e1,使e1和(p-1)(q-1)互質(zhì),即gcd(e,ω(n))=1。
4)計(jì)算解密密鑰e2,以滿足e1e2=1modω(n),即e1與e2互逆,e2與n是互質(zhì)的。
5)加密函數(shù)為:C(x)=e1mmod n,解密函數(shù)為:M(x)=e2cmod n,其中m是明文,c是密文。
6){e1,n}為公共密鑰,e2為私有密鑰,一般n的長(zhǎng)度是大于等于1 024位的。
RSA加密數(shù)據(jù)明文M時(shí),首先會(huì)將明文M分成大小合適的數(shù)據(jù)分組,然后每個(gè)分組分別進(jìn)行加密,每個(gè)分組的長(zhǎng)度均應(yīng)該比n的位要小。
李某,女性,26歲,未婚,大專學(xué)歷,某小學(xué)教師,因失眠、多疑、頭痛、煩躁易怒來(lái)院就診?;颊?年來(lái)由于男友太出色,時(shí)常害怕男友離開自己,看見男友與其他異性在一起會(huì)懷疑兩人的關(guān)系,不由自主的聯(lián)想,焦躁不安,甚至不肯聽男友解釋,大發(fā)脾氣,以至于晚上失眠、情緒差,最近2個(gè)月情況更甚,患者特別敏感,外界小小的刺激即可引起患者強(qiáng)烈的感覺,怕聲、怕光、怕冷、怕熱。一點(diǎn)聲音,一點(diǎn)嘈雜,光線稍微強(qiáng)一些,也會(huì)引起患者的煩躁和不安。天氣稍冷一點(diǎn),就得添衣服,略為熱一點(diǎn),馬上脫衣服,穿多了不行,穿少了也不行。有時(shí)對(duì)疼痛也很敏感,因而怕驗(yàn)血,怕打針。
圖2RSA加密解密流程圖
2.3RSA算法的優(yōu)缺點(diǎn)
相對(duì)于DES加密算法,RSA算法有許多優(yōu)點(diǎn)。首先通信雙方不需提前傳輸密鑰,保密性好,并且便于密鑰管理和分配;另外公鑰密碼可以用于生成數(shù)字簽名,進(jìn)而鑒明傳輸信息者的唯一身份。但是,RSA的安全性是基于大素?cái)?shù)乘積分解困難的基礎(chǔ)上的。因此,素?cái)?shù)越大,因式分解越困難,密碼破解就越難,安全性提高的同時(shí)解密強(qiáng)度也提高了。相對(duì)于DES算法來(lái)說(shuō),RSA算法在計(jì)算上開銷非常巨大,進(jìn)而導(dǎo)致了其效率遠(yuǎn)遠(yuǎn)低于DES算法。
從前面對(duì)RSA以及DES的研究可以看出:DES算法雖然加、解密的效率高,但是用于加密的密匙需要額外的通道傳輸,分配管理困難;而RSA算法雖然便于管理密匙,但是加、解密的效率較低。通過對(duì)DES算法和RSA算法的優(yōu)缺點(diǎn)分析,我們可以采用取其之長(zhǎng),補(bǔ)己之短的方法,使二者優(yōu)缺點(diǎn)互補(bǔ),提出采用基于DES和RSA的混合加密體制。其核心思想是:利用DES算法對(duì)數(shù)據(jù)進(jìn)行加+與密匙整合后一起進(jìn)行傳輸。這樣既能解決DES算法密鑰分配管理的問題,又能解決RSA加密、解密效率低的問題。
3.1混合加密過程設(shè)計(jì)
RSA、DES混合加密過程設(shè)計(jì)如下:
1)每次傳遞信息,都會(huì)先使用隨機(jī)數(shù)生成函數(shù)生成一個(gè)64位的DES會(huì)話密匙K,此密匙僅會(huì)在此次傳輸過程中使用,以此達(dá)到一次一密的作用。
2)從公共密匙管理服務(wù)器或者其他方式獲取公共密匙e1和n。
3)使用公共密匙和RSA算法加密初始密匙K,得到加密后的密匙CK。
4)使用初始密匙K和DES算法加密要傳輸?shù)男畔?,得到密文CM。
5)將密文CM和密匙CK按照任意指定規(guī)則(例如移位等)整合后為最終的密文C,然后進(jìn)行傳輸。
圖3 混合加密流程圖
3.2混合解密過程設(shè)計(jì)
RSA、DES混合解密過程設(shè)計(jì)如下:
1)接受整合密文C,按照指定的規(guī)則分解密文分別獲取DES加密信息后得到的密文CM以及RSA加密密匙得到的密文CK。
2)從公共密匙管理服務(wù)器或者其他方式獲取公共密匙n。
3)使用公共密匙n以及私有的密匙e2,RSA解密得到初始的DES會(huì)話密匙K。
4)使用初始密匙K和DES算法解密密文CM,得到所要傳輸?shù)男畔⒚魑摹?/p>
圖4 混合解密流程圖
3.3實(shí)際工程中的應(yīng)用
在實(shí)際的JAVA Web項(xiàng)目中,加密算法常常用來(lái)加密敏感信息,保證系統(tǒng)信息安全。例如,Web項(xiàng)目中需要完成一個(gè)用戶密碼找回模塊便于用戶使用綁定的郵箱和手機(jī)號(hào)來(lái)找回密碼。由于用戶找回密碼是在不需要登錄的情況下進(jìn)行的,所以用戶發(fā)送的找回請(qǐng)求信息必須加密,不然請(qǐng)求信息被非法攔截或者篡改,就會(huì)造成用戶的個(gè)人信息泄露甚至整個(gè)數(shù)據(jù)庫(kù)的信息泄露。
項(xiàng)目最開始使用的是DES加密算法,加密后轉(zhuǎn)換為十六進(jìn)制傳輸,DES密匙保存在服務(wù)器的底層配置文件中。但后來(lái)發(fā)現(xiàn)由于密匙固定,算法單一,很容易通過重復(fù)請(qǐng)求獲取不同密文,對(duì)比后推算出使用的是單一DES算法,然后被暴力破解。
為了找到更加安全有效的加密算法,通過對(duì)RSA以及DES算法的研究,設(shè)計(jì)出了上面的混合加密算法。按照設(shè)計(jì)的混合加密算法,在Web工程中使用JAVA[6]編寫了該混合加密算法流程的公共類以便工程其他模塊共用,該公共類要引用RSA和DES兩個(gè)加密算法類。其核心代碼如下:
3.4混合解密算法的優(yōu)點(diǎn)
通過在實(shí)際工程中使用所設(shè)計(jì)的混合算法,發(fā)現(xiàn)其有以下優(yōu)點(diǎn):
1)DES的會(huì)話密匙每次隨機(jī)生成,且只使用一次,達(dá)到了一次一密的效果。
2)使用RSA加密會(huì)話密匙后與明文加密后生成的密文整合后一起發(fā)送,無(wú)需準(zhǔn)備另外通道發(fā)送DES會(huì)話密匙。
3)整個(gè)加密解密過程,密匙的管理分配與RSA算法相同,只需要對(duì)私有密匙進(jìn)行保密保存,密匙的管理分配簡(jiǎn)單化了。
4)使用速率較高DES加密要傳輸?shù)臄?shù)據(jù)量較大的明文,而使用RSA加密數(shù)據(jù)量較小的會(huì)話密匙,這樣使得信息傳輸系統(tǒng)的效率得到了保障。
5)混合加密使得破解的成本和難度大大增加,信息傳輸系統(tǒng)的安全性得到了保障。
6)密文整合部分使得該混合加密系統(tǒng)有了更多擴(kuò)展的可能性。
通過在實(shí)際Web工程中的設(shè)計(jì)與應(yīng)用,發(fā)現(xiàn)所設(shè)計(jì)的DES和RSA混合加密體制兼有加密、解密速度快的常規(guī)密碼體制的優(yōu)點(diǎn),以及不需要進(jìn)行密鑰分配且保密管理的密鑰量也較少的公開密碼體制的優(yōu)點(diǎn),從而構(gòu)成了相對(duì)比較理想的加密體制。并且該混合加密體制可以通過密文整合部分輕松擴(kuò)展。綜上所述,所設(shè)計(jì)的混合加密算法在實(shí)際應(yīng)用中能夠滿足工程對(duì)效率、安全性以及可擴(kuò)展性的需要,達(dá)到了設(shè)計(jì)要求。
[1]周學(xué)廣,劉藝.信息安全學(xué)[M].北京:機(jī)械工業(yè)出版社,2003
[2]徐明,等.網(wǎng)絡(luò)信息安全[M],西安電子科技大學(xué)出版社,2006.5
[3]BehrouzA.Forouzan.密碼學(xué)與網(wǎng)絡(luò)安全[M].清華大學(xué)出版社,2009
[4]郭寧,張有志,孫英明.對(duì)稱式密碼體制數(shù)據(jù)加密算法的分析[J].山東工業(yè)大學(xué)學(xué)報(bào),2001,31(4):365-369.
[5]郭寧,張有志.非對(duì)稱式密碼體制數(shù)據(jù)加密算法的分析[J].山東工業(yè)大學(xué)學(xué)報(bào),2001,31(2):147-151.
[6]Bruce Eckel.Java編程思想[M].第4版.北京:機(jī)械工業(yè)出版社,2007.
Research and design of hybrid encryption algorithm based on DES and RSA
WENG Yun-xiang
(Wuhan Research Institution of Telecommunication,Wuhan 430070,China)
Based on the purpose of researching and designing an encryption algorithm fit for practical engineering,this paper firstly study the DES encryption algorithm and the RSA encryption algorithm,then analyze and compare their advantages and disadvantages,and then design the DES and RSA hybrid encryption algorithm,by using the method of analysis and comparison.At last,combining with the application in practical JAVA projects,the conclusion is drawn that the algorithm has the advantages of simple encryption,decryption speed,and key distribution management.
encryption;DES;RSA;hybrid encryption algorithm;JAVA
TN211
A
1674-6236(2016)17-0042-03
2015-09-06稿件編號(hào):201509049
翁云翔(1991-),男,湖北竹溪人,碩士研究生。研究方向:信號(hào)與信息處理、互聯(lián)網(wǎng)。