開放接口的安全驗證方案(AES+RSA)


AES算法流程

對於發送方,它首先創建一個AES私鑰,並用口令對這個私鑰進行加密。然后把用口令加密后的AES密鑰通過Internet發送到接收方。發送方解密這個私鑰,並用此私鑰加密明文得到密文,密文和加密后的AES密鑰一起通過Internet發送到接收方。接收方收到后再用口令對加密密鑰進行解密得到AES密鑰,最后用解密后的密鑰把收到的密文解密成明文。

RSA算法實現流程

首先,接收方創建RSA密匙對,即一個公鑰和一個私鑰,公鑰被發送到發送方,私鑰則被保存在接收方。發送方在接收到這個公鑰后,用該公鑰對明文進行加密得到密文,然后把密文通過網絡傳輸給接收方。接收方在收到它們后,用RSA私鑰對收到的密文進行解密,最后得到明文。

AES與RSA相結合數據加密方案

RSA算法是公開密鑰系統的代表,其安全性建立在具有大素數因子的合數,其因子分解困難這一法則之上的。Rijndael算法作為新一代的高級加密標准,運行時不需要計算機有非常高的處理能力和大的內存,操作可以很容易的抵御時間和空間的攻擊,在不同的運行環境下始終能保持良好的性能。這使AES將安全,高效,性能,方便,靈活性集於一體,理應成為網絡數據加密的首選。相比較,因為AES密鑰的長度最長只有256比特,可以利用軟件和硬件實現高速處理,而RSA算法需要進行大整數的乘冪和求模等多倍字長處理,處理速度明顯慢於AES[5];所以AES算法加解密處理效率明顯高於RSA算法。在密鑰管理方面,因為AES算法要求在通信前對密鑰進行秘密分配,解密的私鑰必須通過網絡傳送至加密數據接收方,而RSA采用公鑰加密,私鑰解密(或私鑰加密,公鑰解密),加解密過程中不必網絡傳輸保密的密鑰;所以RSA算法密鑰管理要明顯優於AES算法。
從上面比較得知,由於RSA加解密速度慢,不適合大量數據文件加密,因此在網絡中完全用公開密碼體制傳輸機密信息是沒有必要,也是不太現實的。AES加密速度很快,但是在網絡傳輸過程中如何安全管理AES密鑰是保證AES加密安全的重要環節。這樣在傳送機密信息的雙方,如果使用AES對稱密碼體制對傳輸數據加密,同時使用RSA不對稱密碼體制來傳送AES的密鑰,就可以綜合發揮AES和RSA的優點同時避免它們缺點來實現一種新的數據加密方案。

具體過程是先由接收方創建RSA密鑰對,接收方通過Internet發送RSA公鑰到發送方,同時保存RSA私鑰。而發送方創建AES密鑰,並用該AES密鑰加密待傳送的明文數據,同時用接受的RSA公鑰加密AES密鑰,最后把用RSA公鑰加密后的AES密鑰同密文一起通過Internet傳輸發送到接收方。當接收方收到這個被加密的AES密鑰和密文后,首先調用接收方保存的RSA私鑰,並用該私鑰解密加密的AES密鑰,得到AES密鑰。最后用該AES密鑰解密密文得到明文。

AES+RSA結合最佳實踐

基本要求

  1. 保證傳輸數據的安全性

  2. 保證數據的完整性

  3. 能夠驗證客戶端的身份

基本流程

1
2
3
4
5
6
7
8
9
10
11
請求:
1. 服務器端(server)和客戶端(client)分別生成自己的密鑰對
2. server和client分別交換自己的公鑰
3. client生成AES密鑰(aesKey)
4. client使用自己的RSA私鑰(privateKey)對請求明文數據(params)進行數字簽名
5. 將簽名加入到請求參數中,然后轉換為json格式
6. client使用aesKey對json數據進行加密得到密文(data)
7. client使用sever的RSA公鑰對aesKey進行加密(encryptkey)
8. 分別將data和encryptkey作為參數傳輸給服務器端

服務器端進行請求響應時將上面流程反過來即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM