一、Https介紹
HTTPS 是 HyperText Transfer Protocol Secure 縮寫,相較於 HTTP,突出了安全!因爲在網絡信息傳輸過程中服務端和客戶端的信息都會被 SSL,TSL 加密,在傳輸的過程中,即便被截取了,別人也不知道你們的會話內容是什麼,只有收發方纔有對應的密鑰去解開,再對內容進行迴應。其中的原理就是:服務端和客戶端都有兩把鑰匙:公鑰和私鑰,公鑰用來加密數據,同時只能用自己的私鑰去解開,這樣及時公鑰被截獲,密文內容也破解不了。
HTTP: 直接通過明文在瀏覽器和服務器之間傳遞信息。
HTTPS: 採用 對稱加密 和 非對稱加密 結合的方式來保護瀏覽器和服務端之間的通信安全。
對稱加密
對稱加密: 加密和解密都是同一個密鑰。
非對稱加密
非對稱加密: 密鑰成對出現,分爲公鑰和私鑰,公鑰和私鑰之間不能互相推導,公鑰加密需要私鑰解密,私鑰加密需要公鑰解密。
兩種加密區別
對稱加密速度快,非對稱加密速度慢 (相對慢 100 倍)。
對稱加密相對非對稱加密不安全,只要密鑰暴露和,明文傳遞沒有區別;非對稱加密可以將公鑰暴露,供客戶端加密,服務端使用私鑰解密。
二、Https加密流程
SSL: 在 TCP 協議之上,應用層之下運作,是用來傳輸敏感信息的。使用 SSL 連接的 URL 地址以 https 開頭,而不是 http。
- 瀏覽器使用 Https 的 URL 訪問服務器,建立 SSL 鏈接。
- 服務器接收到 SSL 鏈接後,發送非對稱加密的公鑰 A 給瀏覽器。
- 瀏覽器生成隨機數,作爲對稱加密的密鑰 B。
- 瀏覽器使用服務器返回的公鑰 A,對自己生成的對稱加密密鑰 B 進行加密,得到密鑰 C。
- 瀏覽器將密鑰 C 發送給服務器
- 服務器使用自己的私鑰 D 對接受的密鑰 C 進行解密,得到對稱加密密鑰 B。
- 瀏覽器和服務器之間使用密鑰 B 作爲對稱加密密鑰進行通信。
通過上面的流程瀏覽器和服務器之間共享一個對稱加密密鑰 B,而且不會被人監聽和攔截到,之後的消息傳遞,使用密鑰 B 進行對稱加密。
優點: 非對稱加密只使用了一次,後續所有的通信消息都是用對稱加密,效率比非對稱加密高。
三、數字證書
1.非對稱加密的缺點:
當服務器發送公鑰給客戶端, 中間人截獲公鑰 ,將 中間人自己的公鑰 冒充服務器的公鑰發送給客戶端。之後客戶端會用 中間人的的公鑰 來加密自己生成的 對稱密鑰 。然後把加密的密鑰發送給服務器,這時中間人又把密鑰截取,中間人用自己的私鑰把加密的密鑰進行解密,解密後中間人就能獲取 對稱加密的密鑰 。
注意: 非對稱加密之所以不安全,因爲客戶端不知道這把公鑰是不是屬於服務器的。
2.認證中心 (CA):
一個擁有公信力、大家都認可的認證中心,數字證書認證機構。
-
服務器在給客戶端傳輸公鑰的過程中,會把 公鑰和服務器的個人信 息通過 hash 算法 生成 信息摘要 。
-
爲了 防止信息摘要被調換 ,服務器會採用 CA 提供的私鑰 對信息摘要進行加密來形成 數組簽名 。
-
最後會把原來沒 Hash 算法 之前的 個人信息、公鑰及、數字簽名 合併在一起,形成 數字證書。
-
客戶端拿到 數字證書 之後,使用 CA 提供的公鑰 對數字證書裏的數字簽名進行解密來得到信息摘要,然後對數字證書裏服務器的公鑰及個人信息進行 Hash 得到 另一份信息摘要 。
-
最後將 兩份信息摘要對比, 如果一樣則證明是服務器,否則就是中間人。