一、對稱加密
加密和解密同用一個密鑰的方式就叫對稱加密,也稱為共享密鑰加密
例如:A和B是進行通信的雙方
假設A手握一把密鑰 key1,那么A需要克隆一把相同的密鑰 key1'
在第一次通信中,A將報文連同 key1'一起發送給B
此后:A和B則分別使用 key1、key1' 分別對接收/發送的報文進行解密/加密
對稱密鑰加密的優點在於:
加密算法公開、計算量小、加密速度快
缺點在於:
1、轉發密鑰的通信若被監聽,則密鑰可能落入攻擊者之手
2、通信雙方需要使用其他人不知道的密鑰,這會使得雙方持有的鑰匙數量巨大,難以管理和維護
二、非對稱加密
通信雙方使用一把私有密鑰和一把公開密鑰,也稱為公開密鑰加密
顧名思義:任何人都可以獲得公開密鑰,但私有密鑰不能讓其他人知道
例如:B希望自己發送給A的報文被加密
假設A手握公鑰 key2 和私鑰 key2'
首先,A將報文主體連同 key2 一起發送給B
此后,B向A發送的報文都將使用 key2 加密
而被 key2 上鎖的報文 只有A手上的 key2' 才能解密
同理:當A想要回復B時,正好相反
此時A就使用B的公鑰對數據進行加密
而B就用自己的私鑰進行解密
非對稱加密很好地解決了對稱加密的問題:
它消除了通信雙方交換密鑰的需要,進一步保證了通信的安全性
然而,非對稱加密的加密解密速度非常慢,算法復雜
HTTPS采用的混合加密機制 則充分利用了兩者的優勢
三、混合加密機制
在交換密鑰的環節使用非對稱加密,之后的通信則使用對稱加密
例如:A手握一對非對稱密鑰(公鑰key3、私鑰key3'),B手握一對對稱密鑰(key4、key4')
階段1:交換密鑰-使用非對稱加密
1、A將公鑰 key3 發送給B
2、B將下一階段加密/解密用的 key4' 放在報文中,並使用公鑰 key3 對報文進行加密
3、A使用私鑰 key3' 解密報文,得到 key4'
階段2:數據通信-使用對稱加密
A和B分別使用 key4' 和 key4對接收/發送的報文進行解密/加密
一方面,第一階段的非對稱加密 保證了對稱密鑰的安全性
另一方面,第二階段的對稱加密 可以提高加密/解密處理的速度,提高數據傳輸的效率
然而,這種混合加密機制還是存在一些問題
那就是:無法證明第一階段派發的公鑰 是貨真價實的公鑰
解決方式:請看 簡述HTTPS(三):數字證書