HTTPS 原理 對稱加密 非對稱加密 CA證書
先介紹對稱加密
通信的雙方,使用同一個secretKey,可以對密文進行解密,得到明文。
問題:在開放的internet如何交換secretKey,這本身就是個問題。這個交換的過程也是需要加密的。這就套娃了無解了。
再介紹非對稱加密
通信雙方各自有一個公鑰,還有私鑰;私鑰只有自己知道,公鑰全世界都知道;非對稱加密算法,保證了用公鑰加密的信息,可以用 對應的 私鑰解密。
比如:Curry和Klay 需要進行通信。
Curry有私鑰privateKeyCurry 和公鑰publicKeyCurry
Klay有私鑰privateKeyKlay 和 公鑰publicKeyKlay
只有Curry知道自己的私鑰privateKeyCurry
只有Klay知道自己的私鑰privateKeyKlay
但是全世界都知道他們的公鑰。
這個視頻 打了個比方,就像一個信箱,全世界都可以知道Curry和Klay的信箱地址(公鑰),但是隻有他們自己可以用信箱鑰匙(私鑰)打開信箱獲取信息(解密)
HTTPS就是結合了對稱加密和非對稱加密
Curry 和 Klay 通信
需要先約定一個解密的祕鑰。(之前說只用對稱加密無法解決這個約定問題)
於是我們用非對稱加密來解決這個約定問題。
Curry 對 Klay 說: 讓我們約定對稱加密的祕鑰是 symmetricKey吧。於是Curry 找到Klay的公鑰(全世界都知道),然後用他的公鑰publicKeyKlay對symmetricKey 進行加密,發給Klay;
Klay收到加密的密文,用自己的私鑰privateKeyKlay解密,得到了Curry提供的symmetricKey。
約定好了symmetricKey,從此以後他倆就可以愉快地使用對稱加密,都用symmetricKey加密、解密要傳輸的信息了。
還有啥問題?
- 通信的中間過程有可能信息被篡改
- 攻擊者Durant可以僞裝成Klay跟你進行通信
如何解決這些問題?
這時候就需要CA證書了。
CA證書由第三方權威機構頒發,每個公司需要去申請這個證書。
當Klay開了一家叫Klay的公司,他就去花大價錢申請了一個CAKlay證書。CA這個權威機構會對Klay公司的證書明文做一些hash得到摘要,再進行加密(用CA權威機構的私鑰),得到一個簽名。
通信過程中,Curry先找Klay公司要證書,Klay公司返回證書明文以及證書籤名,Curry拿到證書明文,使用相同的hash得到摘要abstractFromKlay;然後Curry客戶端內用CA機構的公鑰對簽名進行解密,得到證書摘要(abstractFromCA),比較abstractFromCA和abstractFromKlay,如果一致則說明證書有效
流程圖
這個流程圖很不錯