初識對稱加密與非對稱加密實際項目中的運用

這是最近關于公司內部技術分享,對其進行的梳理,學習了關于信息傳輸過程中如何通過加密技術來保證信息傳輸的安全。

RSA+AES通信流程著


在了解其中的通訊流程之前,先來了解下對應的加密技術概念

對稱加密(Symmetric Cryptography)

對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的密鑰(secret key)。對稱加密有很多種算法,由于它效率很高,所以被廣泛使用在很多加密協議的核心當中,常見的對稱加密:DES、AES等。

非對稱加密(Asymmetric Cryptography)

非對稱加密為數據的加密與解密提供了一個非常安全的方法,它使用了一對密鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外泄,而公鑰則可以發給任何請求它的人。非對稱加密使用公鑰進行加密,而解密則需要另一個密鑰(私鑰)。

保險箱例子

有個比較生動的例子就是:公鑰就像是一個打開保險門的保險箱,這個打開門的保險箱,只要你要保存東西就會給你一個,你把保護的東西放進去,當你關上保險門的時候,自己將無法獲取到里面的東西(公鑰只負責加密,無法對已加密的信息進行解密)。在傳輸的過程中可以保證保險箱里面東西的安全,因為只有擁有鑰匙??(私鑰)的人才可以打開這個箱子,而這個鑰匙只會在特定的人手里,拿不到鑰匙是無法打開保險箱(可以想象這個保險箱無法暴力破解)。常見的加密方式:RSA。

我們假設的場景就是在信息傳輸的過程中,有可能會被黑客監聽你的傳輸內容,如何在有中間人監聽行為的情況下,還能保證傳輸信息的安全。

關于通訊流程這塊的設計:

獲取RSA公鑰過程

1. 客戶端通過請求服務端,獲取到RSA公鑰,公鑰是誰來請求都會給的,私鑰只會保存在服務端這邊,不會進行私鑰的傳輸。



利用RSA、AES進行加密與解密

2. 當客戶端拿到服務端的傳來RSA公鑰,就像前面說到的打開保險箱例子,我們拿這個公鑰對臨時隨機AES密鑰登陸信息(賬號、密碼等)進行RSA加密(關上保險箱)。我們知道在網絡傳輸中,賬號與密碼一般不允許通過明文來傳輸的,通過RSA加密,就算被中間人獲取到了RSA加密后的信息,中間人手上沒有對應的RSA私鑰,無法對其進行RSA解密,所以無法獲取到加密前的信息。中間人手上公鑰只能進行加密,無法對加密的信息進行解密。

3. 服務端獲取到RSA加密后的信息,通過手上的私鑰對其進行解密,獲取到對應加密前的信息(臨時隨機AES密鑰與賬號、密碼等),服務端拿到賬號密碼后登陸校驗其身份是否符合要求,當符合要求時會生成對應的正式AES密鑰與返回的用戶信息。這時需要用到之前從客戶端拿到的臨時隨機AES密鑰,對需要返回的正式AES密鑰與用戶信息進行AES加密(對稱加密),返回登陸信息后,客戶端通過臨時隨機AES密鑰進行AES解密,拿到服務端返回的正式AES密鑰與用戶信息。對稱加密這塊使用的都是同一的密鑰。

PS:這里可能會有疑問,就是為什么不直接通過RSA來傳輸信息呢?因為在使用RSA加密過程中,雖然安全性非常高,不過其對加密信息的長度與效率這塊都有很大的限制,打個比喻,可以想象對稱加密的效率是非對稱加密效率的1000倍。所以在通訊過程中,一般對關鍵信息進行RSA加密,其它的信息通訊一般使用非對稱加密。


正式AES密鑰進行網絡通訊

4. 最終客戶端拿到的正式AES密鑰服務端也有正式AES密鑰,它們之間的網絡通訊就是對網絡模塊的信息進行AES加密與解密,在此過程中,就能有效的保證傳輸信息的安全。網絡模塊中的簽名驗簽的過程為了保證傳輸的信息完整性,防止串改。簽名這塊也有有效性的限制,有些只能檢驗(驗簽)一次就失效了,所以就算被中間人拿到這些傳輸信息也無法再次對服務端發起請求。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容