隨着密碼分析技術的提升,新的數據加密標準AES取代了過期的DES。文章在闡述AES/RSA加密算法的基礎上,分別給出了利用AES/RSA實現客戶端/服務器端網絡數據傳輸的加密流程。最後在比較AES算法和RSA算法基礎上,將AES與RSA相結合提出一種新的數據加密方案。
算法
隨着Internet網的普遍應用,信息安全問題日益突出,以數據加密技術爲核心的信息安全技術也獲得了極大的發展。目前的數據加密技術根據加密密鑰類型可分私鑰加密(對稱加密)系統和公鑰加密(非對稱加密)系統[1]。對稱加密算法是較傳統的加密體制,通訊雙方在加/解密過程當中使用他們共享的單一密鑰,鑑於其算法簡單和加密速度快的優勢,目前仍然是主流的密碼體制之一。最經常使用的對稱密碼算法是數據加密標準(DES)算法,可是因爲DES密鑰長度較短,已經不適合當今分佈式開放網絡對數據加密安全性的要求。最後,一種新的基於Rijndael算法對稱高級數據加密標準AES取代了數據加密標準DES。非對稱加密因爲加/解密鑰不一樣(公鑰加密,私鑰解密),密鑰管理簡單,也獲得普遍應用。RSA是非對稱加密系統最著名的公鑰密碼算法。安全
用Nr表示對一個數據分組加密的輪數(加密輪數與密鑰長度的關係如表1所示)。在輪函數的每一輪迭代中,包括四步變換,分別是字節代換運算(ByteSub())、行變換(ShiftRows())、列混合(MixColumns())以及輪密鑰的添加變換AddRoundKey()[3],其做用就是經過重複簡單的非線形變換、混合函數變換,將字節代換運算產生的非線性擴散,達到充分的混合,在每輪迭代中引入不一樣的密鑰,從而實現加密的有效性。
表1 是三種不一樣類型的AES加密密鑰分組大小與相應的加密輪數的對照表。加密開始時,輸入分組的各字節按表2 的方式裝入矩陣state中。如輸入ABCDEFGHIJKLMNOP,則輸入塊影射到如表2的狀態矩陣中。服務器
表1:
網絡
表2:分佈式
對於發送方,它首先建立一個AES私鑰,並用口令對這個私鑰進行加密。而後把用口令加密後的AES密鑰經過Internet發送到接收方。發送方解密這個私鑰,並用此私鑰加密明文獲得密文,密文和加密後的AES密鑰一塊兒經過Internet發送到接收方。接收方收到後再用口令對加密密鑰進行解密獲得AES密鑰,最後用解密後的密鑰把收到的密文解密成明文。圖1中是這個過程的實現流程。函數
圖1:性能
RSA是在1977年發明RSA密碼系統的三我的的名字的首字母的縮寫,他們是:Ron Rivest、Adi Shamir和Leonard Adleman。它是第一個公鑰加密算法,在不少密碼協議中都有應用,如SSL和S/MIME。RSA算法是基於大質數的因數分解的公匙體系。簡單的講,就是兩個很大的質數,一個做爲公鑰,另外一個做爲私鑰,如用其中一個加密,則用另外一個解密。密鑰長度從40到2048位可變,密鑰越長,加密效果越好,但加密解密的開銷也大。RSA算法可簡單描述以下:加密
首先,接收方建立RSA密匙對,即一個公鑰和一個私鑰,公鑰被髮送到發送方,私鑰則被保存在接收方。發送方在接收到這個公鑰後,用該公鑰對明文進行加密獲得密文,而後把密文經過網絡傳輸給接收方。接收方在收到它們後,用RSA私鑰對收到的密文進行解密,最後獲得明文。圖2是整個過程的實現流程。blog
圖2:內存
RSA算法是公開密鑰系統的表明,其安全性創建在具備大素數因子的合數,其因子分解困難這一法則之上的。Rijndael算法做爲新一代的高級加密標準,運行時不須要計算機有很是高的處理能力和大的內存,操做能夠很容易的抵禦時間和空間的攻擊,在不一樣的運行環境下始終能保持良好的性能。這使AES將安全,高效,性能,方便,靈活性集於一體,理應成爲網絡數據加密的首選。相比較,由於AES密鑰的長度最長只有256比特,能夠利用軟件和硬件實現高速處理,而RSA算法須要進行大整數的乘冪和求模等多倍字長處理,處理速度明顯慢於AES[5];因此AES算法加解密處理效率明顯高於RSA算法。在密鑰管理方面,由於AES算法要求在通訊前對密鑰進行祕密分配,解密的私鑰必須經過網絡傳送至加密數據接收方,而RSA採用公鑰加密,私鑰解密(或私鑰加密,公鑰解密),加解密過程當中沒必要網絡傳輸保密的密鑰;因此RSA算法密鑰管理要明顯優於AES算法。
從上面比較得知,因爲RSA加解密速度慢,不適合大量數據文件加密,所以在網絡中徹底用公開密碼體制傳輸機密信息是沒有必要,也是不太現實的。AES加密速度很快,可是在網絡傳輸過程當中如何安全管理AES密鑰是保證AES加密安全的重要環節。這樣在傳送機密信息的雙方,若是使用AES對稱密碼體制對傳輸數據加密,同時使用RSA不對稱密碼體制來傳送AES的密鑰,就能夠綜合發揮AES和RSA的優勢同時避免它們缺點來實現一種新的數據加密方案。加解密實現流程如圖(3)。
圖3:
具體過程是先由接收方建立RSA密鑰對,接收方經過Internet發送RSA公鑰到發送方,同時保存RSA私鑰。而發送方建立AES密鑰,並用該AES密鑰加密待傳送的明文數據,同時用接受的RSA公鑰加密AES密鑰,最後把用RSA公鑰加密後的AES密鑰同密文一塊兒經過Internet傳輸發送到接收方。當接收方收到這個被加密的AES密鑰和密文後,首先調用接收方保存的RSA私鑰,並用該私鑰解密加密的AES密鑰,獲得AES密鑰。最後用該AES密鑰解密密文獲得明文。
轉
http://wubaoguo.com/2015/08/21/%E5%BC%80%E6%94%BE%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81%E6%96%B9%E6%A1%88(AES+RSA)/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io