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