關于HTTPS的加密流程詳解
HTTPS加密
HTTPS的混合加密
我們知道加密方式有三種
- 對稱加密
- 非對稱加密
- 混合加密
HTTPS采用的就是對稱加密和非對稱加密的混合加密方法。
- 混合加密解決了信息的機密性,防止數據被竊聽
- 摘要算法實現了數據的完成性,防止了數據被篡改
- 數字證書提供了身份驗證,防止了被冒充風險
在通信建立前采用非對稱加密的方式交換「會話秘鑰」,后續(xù)就不再使用非對稱加密。
在通信過程中全部使用對稱加密的「會話秘鑰」的方式加密明文數據。
采用「混合加密」的方式的原因:
- 對稱加密只使用一個密鑰,運算速度快,密鑰必須保密,無法做到安全的密鑰交換。
- 非對稱加密使用兩個密鑰:公鑰和私鑰,公鑰可以任意分發(fā)而私鑰保密,解決了密鑰交換問題但速度慢。
HTTPS 是如何建立連接的?
SSL/TLS 協(xié)議基本流程:
- 客戶端向服務器索要并驗證服務器的公鑰。
- 雙方協(xié)商生產「會話秘鑰」。
- 雙方采用「會話秘鑰」進行加密通信。
前兩步也就是 SSL/TLS 的建立過程,也就是握手階段。
SSL/TLS 的「握手階段」涉及四次通信,可見下圖:

SSL/TLS 協(xié)議建立的詳細流程:
1. ClientHello
首先,由客戶端向服務器發(fā)起加密通信請求,也就是 ClientHello 請求。
在這一步,客戶端主要向服務器發(fā)送以下信息:
(1)客戶端支持的 SSL/TLS 協(xié)議版本,如 TLS 1.2 版本。
(2)客戶端生產的隨機數(Client Random),后面用于生產「會話秘鑰」。
(3)客戶端支持的密碼套件列表,如 RSA 加密算法。
2. SeverHello
服務器收到客戶端請求后,向客戶端發(fā)出響應,也就是 SeverHello。服務器回應的內容有如下內容:
(1)確認 SSL/ TLS 協(xié)議版本,如果瀏覽器不支持,則關閉加密通信。
(2)服務器生產的隨機數(Server Random),后面用于生產「會話秘鑰」。
(3)確認的密碼套件列表,如 RSA 加密算法。
(4)服務器的數字證書。
3.客戶端回應
客戶端收到服務器的回應之后,首先通過瀏覽器或者操作系統(tǒng)中的 CA 公鑰,確認服務器的數字證書的真實性。
如果證書沒有問題,客戶端會從數字證書中取出服務器的公鑰,然后使用它加密報文,向服務器發(fā)送如下信息:
(1)一個隨機數(pre-master key)。該隨機數會被服務器公鑰加密。
(2)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。
(3)客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時把之前所有內容的發(fā)生的數據做個摘要,用來供服務端校驗。
上面第一項的隨機數是整個握手階段的第三個隨機數,這樣服務器和客戶端就同時有三個隨機數,接著就用雙方協(xié)商的加密算法,各自生成本次通信的「會話秘鑰」。
4. 服務器的最后回應
服務器收到客戶端的第三個隨機數(pre-master key)之后,通過協(xié)商的加密算法,計算出本次通信的「會話秘鑰」。然后,向客戶端發(fā)生最后的信息:
(1)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。
(2)服務器握手結束通知,表示服務器的握手階段已經結束。這一項同時把之前所有內容的發(fā)生的數據做個摘要,用來供客戶端校驗。
至此,整個 SSL/TLS 的握手階段全部結束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的 HTTP 協(xié)議,只不過用「會話秘鑰」加密內容。
到此這篇關于關于HTTPS的加密流程詳解的文章就介紹到這了,更多相關HTTPS的加密流程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Visual Studio使用Git忽略不想上傳到遠程倉庫的文件
這篇文章主要介紹了Visual Studio使用Git忽略不想上傳到遠程倉庫的文件,本文通過圖文實例相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
vscode eslint插件報錯Parsing error: Invalid
這篇文章主要介紹了vscode eslint插件報錯Parsing error: Invalid ecmaVersion問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10

