徐暢
摘要:文章通過(guò)分析和比較AES加密算法和RsA加密算法的實(shí)現(xiàn)過(guò)程和各自的特點(diǎn),提出了一種可以將這2種經(jīng)典加密算法相混合的、新的數(shù)據(jù)信息加密技術(shù)。這種混合加密技術(shù),可以充分發(fā)揮AES算法加密運(yùn)算速度快,RSA算法密匙容易分發(fā)和保管的特點(diǎn),更加有利于網(wǎng)絡(luò)傳輸數(shù)據(jù)的加密。
關(guān)鍵詞:信息安全;數(shù)據(jù)加密;AES算法;RSA算法
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,許多數(shù)據(jù)、文件的傳遞,都是通過(guò)開放的Internet網(wǎng)來(lái)實(shí)現(xiàn)的。許多網(wǎng)絡(luò)攻擊軟件可以很容易地監(jiān)聽到這些機(jī)密信息。重要、敏感數(shù)據(jù)有可能在傳輸過(guò)程中被非法竊取,造成泄密。因此,如何對(duì)重要數(shù)據(jù)信息進(jìn)行加密,就變成了現(xiàn)在急待解決的問(wèn)題。
1 數(shù)據(jù)加密算法簡(jiǎn)介
目前數(shù)據(jù)加密技術(shù)根據(jù)加密密鑰類型,可以分為單鑰密碼體制和公鑰密碼體制,也稱為對(duì)稱加密技術(shù)和非對(duì)稱加密技術(shù)。
對(duì)稱加密技術(shù)是指在加密、解密的過(guò)程中使用相同的密匙。常用的對(duì)稱加密技術(shù)有DES,3DES和AES。但是由于DES密鑰長(zhǎng)度較短,只有56位,加密強(qiáng)度較低,已經(jīng)開始被一種基于Rijndael算法的對(duì)稱高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)AES取代。
而非對(duì)稱加密技術(shù),它的加密與解密的密匙是不相同的,一個(gè)是公匙,一個(gè)是私匙。目前常用的非對(duì)稱加密技術(shù)主要有RSA和ECC,其中1024位的RSA是目前使用最為廣泛的非對(duì)稱加密技術(shù)。
1.1 AES加密算法
AES是美國(guó)標(biāo)準(zhǔn)與技術(shù)研究院針對(duì)數(shù)據(jù)的加密所制定的一種新的加密標(biāo)準(zhǔn)。AES是一個(gè)迭代、對(duì)稱的分組密碼,它的密匙長(zhǎng)度分為3種:128位,192位和256位,可以對(duì)128位的數(shù)據(jù)塊進(jìn)行加密和解密。
利用AES算法對(duì)數(shù)據(jù)進(jìn)行加密的具體實(shí)現(xiàn)過(guò)程,首先是由發(fā)送方創(chuàng)建一個(gè)AES密鑰,并用此密鑰加密明文得到密文;然后將密文和AES密鑰一起通過(guò)Internet網(wǎng)發(fā)送到接收方;接收方接收后,利用AES密鑰將收到的密文解密成明文。具體流程如圖1所示。
1.2 RSA加密算法
RSA算法是由Ronald等3人于1978年提出的一種由數(shù)論構(gòu)造的加密算法。一經(jīng)推出,就得到了廣泛認(rèn)可和使用,它是目前世界上最為完善和成熟的公鑰密碼體制。
利用RSA算法對(duì)數(shù)據(jù)進(jìn)行加密的具體實(shí)現(xiàn)過(guò)程,首先是由接收方創(chuàng)建一對(duì)RSA密匙,即一個(gè)RSA公鑰和一個(gè)RSA私鑰;通過(guò)Internet網(wǎng),接收方只將其中的RSA公鑰傳遞給發(fā)送方,而RSA私鑰繼續(xù)保留在接收方;發(fā)送方收到接收方傳遞過(guò)來(lái)的RSA公鑰后,利用這個(gè)公鑰對(duì)明文信息進(jìn)行數(shù)據(jù)加密,從而得到密文;接著把加密后的密文通過(guò)Internet網(wǎng)傳送給接收方.當(dāng)接收方收到發(fā)送方傳遞過(guò)來(lái)的密文以后,便用事先創(chuàng)建的RSA私鑰對(duì)密文信息進(jìn)行解密,最后得到明文。具體流程如圖2所示。
1.3 仿真實(shí)驗(yàn)及結(jié)果分析
事先制作兩個(gè)實(shí)驗(yàn)測(cè)試文本,大小分別為1923K和21840K。根據(jù)AES加密算法和RsA加密算法實(shí)現(xiàn)的具體流程,利用基于QT的C++開發(fā)平臺(tái)分別編寫代碼,來(lái)測(cè)試這兩種算法在加密和解密兩個(gè)實(shí)驗(yàn)測(cè)試文本時(shí)所耗費(fèi)的時(shí)間。實(shí)驗(yàn)結(jié)果,如表1所示。
實(shí)驗(yàn)結(jié)果分析:(1)在相同條件下,AES加密速度比解密速度快,RSA解密比加密慢很多;而無(wú)論加密還是解密,RSA都比AES慢很多,由于RSA進(jìn)行的是大數(shù)計(jì)算,無(wú)論是軟件還是硬件實(shí)現(xiàn),速度一直是一個(gè)較明顯的缺陷。(2)AES加密算法的優(yōu)點(diǎn):能夠直接用硬件去實(shí)現(xiàn),加密的程度較高,速度較快,對(duì)于加密大量數(shù)據(jù)非常的適用。缺點(diǎn):加、解密過(guò)程使用同一個(gè)密匙進(jìn)行,對(duì)于密匙的管理和保護(hù)較難。(3)RSA加密算法的優(yōu)點(diǎn):具有公鑰和私鑰兩個(gè)不同的密鑰,公鑰用于加密數(shù)據(jù),私鑰用于解密數(shù)據(jù),難于破解;并且不需要通過(guò)網(wǎng)絡(luò)傳送保密的密鑰。缺點(diǎn):加密的速度比較慢。
2 AES和RSA混合加密技術(shù)
2.1 AES和RSA兩種加密算法的比較
通過(guò)算法分析和前面的實(shí)驗(yàn),接下來(lái)從密鑰管理、運(yùn)算速度、簽名認(rèn)證和安全性能等方面比較AES和RSA兩種加密算法:
(1)密鑰管理:RSA算法是非對(duì)稱加密技術(shù),利用公鑰進(jìn)行加密,即使是和不同的對(duì)象之間進(jìn)行通信,關(guān)鍵還是要保管好自己的解密私鑰,所以在使用該算法時(shí),加密密鑰更換是很容易實(shí)現(xiàn)的;而AES算法是對(duì)稱加密技術(shù),在和不同的對(duì)象進(jìn)行通信的時(shí)候,AES需要產(chǎn)生和保管不同的密鑰,所以密鑰的更換較難實(shí)現(xiàn)。(2)運(yùn)算速度:AES算法的運(yùn)算速度要比RSA算法的運(yùn)算速度快。這是因?yàn)锳ES算法的密鑰長(zhǎng)度最大也就256位,利用硬件或軟件都能夠?qū)崿F(xiàn);而RSA算法,至少需要1024位才能確保安全,而在加、解密過(guò)程中會(huì)需要很多的運(yùn)算,因此RSA算法的運(yùn)算速度肯定要比AES算法要慢。(3)簽名認(rèn)證:RSA屬于非對(duì)稱密碼體制,利用RSA算法可以進(jìn)行數(shù)字簽名和身份認(rèn)證操作;AES不能實(shí)現(xiàn)數(shù)字簽名和身份認(rèn)證,這是由7:AES屬于對(duì)稱密碼體制。(4)安全性能:目前還沒有能夠完全破譯AES和RSA的良好方法,所以兩者的安全性都很好。
從以上4個(gè)方面的比較可以知道,對(duì)于大量的數(shù)據(jù)文件,由于RSA算法加密速度較慢,所以并不合適;而AES算法雖然加密速度很快,但是如何在開放的網(wǎng)絡(luò)傳輸環(huán)境中保管好AES密鑰,成為使用AES加密首先要考慮的問(wèn)題。因此,可以在傳遞數(shù)據(jù)的時(shí)候,使用AES算法加密傳輸數(shù)據(jù),同時(shí)使用RSA算法加密傳送AES密鑰,結(jié)合兩種加密算法各自的特點(diǎn),發(fā)揮優(yōu)點(diǎn),避免缺點(diǎn),從而得到了一種新的混合數(shù)據(jù)加密技術(shù)。
2.2 AES和RsA混合加密算法的設(shè)計(jì)與實(shí)現(xiàn)
AES和RSA混合加密算法加解密過(guò)程,如圖3所示。
接收方:(1)生成1024位的RSA密匙對(duì)。(2)向發(fā)送方傳遞RSA公匙。
發(fā)送方:(1)接收接收方發(fā)過(guò)來(lái)的RSA公匙密碼;(2)隨機(jī)生成AES密匙;(3)用AES密匙加密數(shù)據(jù),用RSA公匙加密AES密匙;(4)將加密后的AES密匙寫入數(shù)據(jù)文件的頭部,加密后的數(shù)據(jù)寫入數(shù)據(jù)文件的尾部;(5)將數(shù)據(jù)文件發(fā)送給接收方。
接收方:(1)接收發(fā)送方發(fā)過(guò)來(lái)的數(shù)據(jù)文件,并利用自己的RSA私鑰解密AES密匙。(2)利用解密后的AES密匙解密數(shù)據(jù)文件。
JAVA語(yǔ)言的安全性非常高,通過(guò)“SunJCF”提供了對(duì)各種加密技術(shù)的支持,包括DES,3DES,AES,RSA等數(shù)據(jù)加密技術(shù)。JAVA當(dāng)中的常用數(shù)據(jù)加密類有:KeyGenerator類用于獲得各類對(duì)稱加密技術(shù)的密匙;KeVPairGenerator類用于獲得非對(duì)稱加密技術(shù)的密匙;Cipher類是JAVA加密的主要類,用于按一定的算法對(duì)數(shù)據(jù)進(jìn)行加密、解密、包裝和返包裝。而AES和RSA混合加密算法利用JAVA語(yǔ)言可以較容易實(shí)現(xiàn)。
3 結(jié)語(yǔ)
文章首先介紹了經(jīng)典的對(duì)稱加密技術(shù)AES加密算法和非對(duì)稱加密技術(shù)RSA加密算法的實(shí)現(xiàn)過(guò)程;并通過(guò)算法分析和仿真實(shí)驗(yàn),從密鑰管理、運(yùn)算速度、簽名認(rèn)證和安全性能等方面比較了兩種加密算法各自的特點(diǎn),提出了將AES算法和RSA算法相結(jié)合,從而得到了一種新的數(shù)據(jù)加密技術(shù)。這種新的混合加密技術(shù)使得數(shù)據(jù)的加密速度得到了提高,并且降低了加密密鑰的管理難度,更加適合互聯(lián)網(wǎng)數(shù)據(jù)的加密和傳輸。