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