Https工作原理&TLS握手機制
Https工作原理&TLS握手機制
@Kyunban Wong
HTTPS是在HTTP的基礎上提供了資料加密的支援,儲存了資料的私密性、完整性,並且可以用來認證客戶端和服務端的身份。
在普通的HTTP中,資料是明文傳輸的,很容易出現中間人偽裝資料,面對客戶端偽裝成服務端,面對服務端偽裝成客戶端,進行竊取資料。
在HTTPS中則使用了**非對稱公鑰機制,**對資料進行了加密,又能驗證對方身份,基本避免中間人攻擊。
HTTPS的加密是通過TLS(Transport Layer Security)安全傳輸層協議來實現的。在客戶端和服務端正常通訊之前,會有一個握手過程(這個握手過程會根據Key交換演算法的不同而不同,如RSA,Diffie Hellman,以下的講解以RSA為例,由伺服器提供單向認證(也就是存在雙向認證的)):
- 首先,瀏覽器發起ClientHello訊息,訊息中包括:TLS版本、加密演算法集、隨機數(客戶諯產生);
- 接著,伺服器響應一個ServerHello訊息,訊息中包括:TLS版本、加密演算法集、隨機數(伺服器產生);
- 再接著,伺服器繼續傳送一個Certificate訊息,附加伺服器的證書;
- 最後,伺服器傳送一個ServerHelloDone訊息;
- 瀏覽器在收到伺服器發來的證書後,驗證是否是受信任的機構簽發的,是否是真實的伺服器;
- 認證伺服器的身份後,瀏覽器使用證書中附帶的公鑰生成premaster secret作為ClientKeyExchange,並使用公鑰加密生成的premaster secret傳給伺服器;
- 伺服器接著使用私鑰解密得到premaster secret;
- 然後,瀏覽器和伺服器使用premaster secret和之前收到的對方的隨機數生成相同的master key,用於加密和解密後續所有的通訊;
- 接著,瀏覽器向伺服器傳送ChangeCipherSpec訊息,然後傳送用master key加密的Finished訊息;
- 伺服器接收並驗證,接著伺服器向瀏覽器傳送ChangeCipherSpec訊息,然後傳送用master key加密的Finished訊息;
- 瀏覽器接收並驗證。至此TLS握手完成。
相關文章
- 真正“搞”懂HTTPS協議17之TLS握手HTTP協議TLS
- HTTPS協議詳解(四):TLS/SSL握手過程HTTP協議TLS
- https與TLS/SSL 握手協議、record protocol簡介HTTPTLS協議Protocol
- HTTPS工作原理HTTP
- springMVC 的工作原理和機制SpringMVC
- [HTTPS]SSL/TLSHTTPTLS
- HTTPS代理的工作原理HTTP
- UAV MOF工作原理之Agent注入機制原理
- 深入淺出HTTPS工作原理HTTP
- 深入理解HTTPS工作原理HTTP
- SSL/TLS 握手過程詳解TLS
- 基於ECDHE的TLS握手流程TLS
- https加密機制HTTP加密
- 容器的工作原理和隔離機制
- 網路 HTTPS機制HTTP
- 圖文詳解 HDFS 的工作機制及其原理
- valid/ready握手機制及verilog程式碼
- HTTPS的安全通訊機制HTTP
- HTTPS 加密與認證機制HTTP加密
- JavaScript 工作原理之九-網頁訊息推送通知機制JavaScript網頁
- Android Handler訊息傳遞機制:圖文解析工作原理Android
- 徹底搞懂HTTPS的加密機制HTTP加密
- Zookeeper watch機制原理
- MapReduce之MapTask工作機制APT
- NameNode和SecondaryNameNode工作機制
- TCP三次握手原理TCP
- 多型的機制原理多型
- springcloud eureka原理和機制SpringGCCloud
- HTTPS加密過程和TLS證書驗證HTTP加密TLS
- Android10_原理機制系列_事件傳遞機制Android事件
- 計算機基本工作原理計算機
- https的原理HTTP
- HDFS成員的工作機制
- HashMap原理(二) 擴容機制及存取原理HashMap
- 如何判斷https使用了哪個版本的TLS?HTTPTLS
- https如何工作的HTTP
- HTTPS工作流程HTTP
- HTTP快取機制及原理HTTP快取