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 工作原理和 TCP 握手機制HTTPTCP
- 真正“搞”懂HTTPS協議17之TLS握手HTTP協議TLS
- https與TLS/SSL 握手協議、record protocol簡介HTTPTLS協議Protocol
- HTTPS協議詳解(四):TLS/SSL握手過程HTTP協議TLS
- HTTPS工作原理HTTP
- undo機制工作原理描述的:
- HTTPS 加密演算法原理機制解析HTTP加密演算法
- UAV MOF工作原理之Agent注入機制原理
- 三次握手機制
- springMVC 的工作原理和機制SpringMVC
- [HTTPS]SSL/TLSHTTPTLS
- SSL/TLS 握手過程詳解TLS
- 基於ECDHE的TLS握手流程TLS
- SSL/TLS 握手優化詳解TLS優化
- HTTPS代理的工作原理HTTP
- 理解 HTTPS 的工作原理HTTP
- tls/ssl工作原理及相關技術TLS
- 容器的工作原理和隔離機制
- https/tcp ssh/tlsHTTPTCPTLS
- 深入淺出HTTPS工作原理HTTP
- 深入理解HTTPS工作原理HTTP
- https加密機制HTTP加密
- 網路 HTTPS機制HTTP
- 圖文詳解 HDFS 的工作機制及其原理
- SSL/TLS協議執行機制的概述TLS協議
- Handler機制原理
- JavaScript 工作原理之九-網頁訊息推送通知機制JavaScript網頁
- Android的訊息機制之ThreadLocal的工作原理Androidthread
- 相機工作原理
- 聊聊HTTPS和SSL/TLS協議HTTPTLS協議
- HTTPS的安全通訊機制HTTP
- HTTPS 加密與認證機制HTTP加密
- Zookeeper watch機制原理
- handler機制的原理
- Android Handler訊息傳遞機制:圖文解析工作原理Android
- Android 原始碼分析 --Handler 機制的實現與工作原理Android原始碼
- 徹底搞懂HTTPS的加密機制HTTP加密
- TCP三次握手原理TCP