關于HTTPS的加密流程詳解
HTTPS加密
HTTPS的混合加密
我們知道加密方式有三種
- 對稱加密
- 非對稱加密
- 混合加密
HTTPS采用的就是對稱加密和非對稱加密的混合加密方法。
- 混合加密解決了信息的機密性,防止數(shù)據(jù)被竊聽
- 摘要算法實現(xiàn)了數(shù)據(jù)的完成性,防止了數(shù)據(jù)被篡改
- 數(shù)字證書提供了身份驗證,防止了被冒充風險
在通信建立前采用非對稱加密的方式交換「會話秘鑰」,后續(xù)就不再使用非對稱加密。
在通信過程中全部使用對稱加密的「會話秘鑰」的方式加密明文數(shù)據(jù)。
采用「混合加密」的方式的原因:
- 對稱加密只使用一個密鑰,運算速度快,密鑰必須保密,無法做到安全的密鑰交換。
- 非對稱加密使用兩個密鑰:公鑰和私鑰,公鑰可以任意分發(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)客戶端生產的隨機數(shù)(Client Random
),后面用于生產「會話秘鑰」。
(3)客戶端支持的密碼套件列表,如 RSA 加密算法。
2. SeverHello
服務器收到客戶端請求后,向客戶端發(fā)出響應,也就是 SeverHello
。服務器回應的內容有如下內容:
(1)確認 SSL/ TLS 協(xié)議版本,如果瀏覽器不支持,則關閉加密通信。
(2)服務器生產的隨機數(shù)(Server Random
),后面用于生產「會話秘鑰」。
(3)確認的密碼套件列表,如 RSA 加密算法。
(4)服務器的數(shù)字證書。
3.客戶端回應
客戶端收到服務器的回應之后,首先通過瀏覽器或者操作系統(tǒng)中的 CA 公鑰,確認服務器的數(shù)字證書的真實性。
如果證書沒有問題,客戶端會從數(shù)字證書中取出服務器的公鑰,然后使用它加密報文,向服務器發(fā)送如下信息:
(1)一個隨機數(shù)(pre-master key
)。該隨機數(shù)會被服務器公鑰加密。
(2)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。
(3)客戶端握手結束通知,表示客戶端的握手階段已經(jīng)結束。這一項同時把之前所有內容的發(fā)生的數(shù)據(jù)做個摘要,用來供服務端校驗。
上面第一項的隨機數(shù)是整個握手階段的第三個隨機數(shù),這樣服務器和客戶端就同時有三個隨機數(shù),接著就用雙方協(xié)商的加密算法,各自生成本次通信的「會話秘鑰」。
4. 服務器的最后回應
服務器收到客戶端的第三個隨機數(shù)(pre-master key
)之后,通過協(xié)商的加密算法,計算出本次通信的「會話秘鑰」。然后,向客戶端發(fā)生最后的信息:
(1)加密通信算法改變通知,表示隨后的信息都將用「會話秘鑰」加密通信。
(2)服務器握手結束通知,表示服務器的握手階段已經(jīng)結束。這一項同時把之前所有內容的發(fā)生的數(shù)據(jù)做個摘要,用來供客戶端校驗。
至此,整個 SSL/TLS 的握手階段全部結束。接下來,客戶端與服務器進入加密通信,就完全是使用普通的 HTTP 協(xié)議,只不過用「會話秘鑰」加密內容。
到此這篇關于關于HTTPS的加密流程詳解的文章就介紹到這了,更多相關HTTPS的加密流程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
windows下Idea使用git clone failed. Could not read from remote r
這篇文章主要介紹了windows下Idea使用git clone failed. Could not read from remote repository.,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09老生常談Session和Cookie之間區(qū)別與聯(lián)系(必看篇)
下面小編就為大家分享一篇老生常談Session和Cookie之間區(qū)別與聯(lián)系,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11HTTP協(xié)議入門_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了HTTP協(xié)議入門的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07使用git?config?--global設置用戶名和郵件問題
這篇文章主要介紹了使用git?config?--global設置用戶名和郵件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05