基於wireshark抓包解析TLS1.2的通訊過程

以訪問www.sina.com.cn爲例,抓包解析TLS1.2到底是如何通信的;

wireshark抓包內容及簡單說明:

10	0.042384	192.168.10.97	101.71.100.123	TLSv1.2	264	Client Hello
12	0.059895	101.71.100.123	192.168.10.97	TLSv1.2	1506	Server Hello
16	0.060412	101.71.100.123	192.168.10.97	TLSv1.2	1386	Certificate, Server Key Exchange, Server Hello Done
18	0.063282	192.168.10.97	101.71.100.123	TLSv1.2	180	Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message
19	0.073250	101.71.100.123	192.168.10.97	TLSv1.2	312	New Session Ticket, Change Cipher Spec, Encrypted Handshake Message
20	0.073250	101.71.100.123	192.168.10.97	TLSv1.2	123	Application Data

image.png

  • Client Hello:客戶端向服務端打招呼;攜帶各種信息供服務端選擇;

  • Server Hello:服務端迴應客戶客戶端的招呼信息;結合客戶端、服務端的信息,選擇合適的加密套件;

  • Certificate:服務端向客戶端發送自己的數字證書(此證書包含服務端的公鑰),以實現客戶端驗證身份;

  • Server Key Exchange:服務端向客戶端發送基於選擇的加密套件生成的公鑰(此公鑰是經過私鑰簽名認證的);

  • Server Hello Done:服務端向客戶端表示響應結束;

  • Client Key Exchange:客戶端向服務端發送經過公鑰加密的Pre-Master;

  • Change Cipher Spec:告知服務端/客戶端,以後的通信都是加密的;

  • Encrypted Handshake Message:基於協商生成的密鑰,加密握手信息讓服務端/客戶端進行認證;雙方認證無誤開始通信;

  • New Session Ticket:是優先SSL連接的一種方法,此種不做特別說明

身份驗證過程:

  • 權威ca會用自己的私鑰加密服務器的公鑰;

  • 當客戶端訪問服務器的時候,服務端會向客戶端發送自己的證書,由內置在瀏覽器的ca公鑰進行解密,得到服務端的公鑰;

  • 由此驗證公鑰,私鑰,從而達到驗證身份的目的;

數字證書作用參考:https://www.cnblogs.com/yaowen/p/8509573.html

客戶端Client Hello階段:

作用:客戶端向服務端發送建立連接請求;

此時,客戶端會攜帶支持的版本號、支持的加密套件、客戶端隨機數(用於協商對稱加密的密鑰)、支持的HTTP協議

image.png

服務端Server Hello階段:

作用:根據客戶端所攜帶的內容,確定建立連接版本、加密套件,生成服務端隨機數(用於協商對稱加密的密鑰)

如下圖,可以看到確定的加密套件是:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

image.png

服務端Certificate, Server Key Exchange, Server Hello Done階段:

Certificate:向客戶端發送由權威ca簽發的證書,以驗證身份;

    image.png

Server Key Exchange:基於Server Hello階段選擇的ECDHE交換密鑰算法,發送它生成的橢圓曲線的公鑰(經過簽名的)

    image.png

Server Hello Done:服務端結束打招呼階段

協商對稱加密密鑰的過程說明:

  • ECDHE算法會根據客戶端的隨機數、服務端的隨機數、Pre-Master(也是一個隨機數)生成對稱加密的密鑰;

  • Pre-Master(此隨機數非常重要)由ECDHE根據Client Random、Server Random生成;

  • 到此,客戶端/服務端都知道了客戶端的隨機數、服務端的隨機數、Pre-Master;

  • 由此客戶端/服務端生成的對稱加密密鑰是一致的,但還是會發送一條由此密鑰加密的消息讓對方進行驗證;

客戶端Client Key Exchange, Change Cipher Spec, Encrypted Handshake Message階段:

Client Key Exchange:基於協商選擇的ECDHE交換密鑰算法,發送它生成的橢圓曲線的公鑰;

    image.png

Change Cipher Spec:變更密碼規範協議,它非常簡單,就是一條通知消息,告知對方以後的通信都是加密的;

Enctypted Handshare Message:生成對稱加密密鑰之後,發送一條加密的數據,讓服務端解密驗證;

服務端New Session Ticket, Change Cipher Spec, Encrypted Handshake Message階段:

New Session Ticket:TLS建立連接的優化方法,此處不說;

Change Cipher Spec:告訴客戶端以後的通信是加密的;

Enctypted Handshare Message:發送一條經過密鑰加密的數據,讓客戶端驗證;驗證通過則開始進行加密通信;

Applicatiion Data:表示客戶端/服務端已經開始基於TLS進行通信了;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章