不抓包,如何學的了HTTPS

測試背景

抓包工具:Wireshark算法

本機ip:10.129.135.155segmentfault

目標網站:https://segmentfault.com/服務器

握手過程

w14

抓包截圖session

w15

一目瞭然,No33,44,45,是TCP的三次握手,除此以外,創建TLS/SSL鏈接,也須要先創建握手dom

1. Client Hello

w16

主要向服務端傳遞的信息函數

  • Version:客戶端支持的版本
  • Random:客戶端生成的隨機數
  • Cipher Suites:客戶端支持的密碼套件
  • Compression Methods:客戶端支持的壓縮方法

2. Server Hello

w17

主要向客戶端傳遞選擇的版本,密碼套件和壓縮方法,以及服務端生成的隨機數工具

每一個密碼套件的名稱定義一個密鑰交換算法、一個批量加密算法、一個消息認證碼(MAC)算法,以及一個僞隨機函數(PRF)測試

在上面的例子中,網站

  • 密鑰交換算法:ECDHE_RSA
  • 批量加密算法:AES_128_GCM
  • 消息認證算法:SHA256
  • 僞隨機函數:TLS 1.2的僞隨機函數使用MAC算法的散列函數來建立一個主密鑰——鏈接雙方共享的一個48字節的私鑰

3. Certificate

w18

服務端向客戶端發送證書,ui

4. Server Key Exchange

w19

服務端向客戶端發送密鑰交換的額外數據

5. Server Hello Done

w20

服務端告訴客戶端消息發送完畢

6. Client Key Exchange

w21

客戶端傳遞交換密鑰所須要的信息

7. Encrypted Handshake Message

w22

客戶端的發送的消息已被加密

8. New Session Ticket

w23

9. Encrypted Handshake Message

w24

服務端發送的消息已被加密

密碼規格變動協議,Change Cipher Spec Protocol

w25

客戶端和服務端會前後向對方發送Change Cipher Spec Message,告之對方要切換密碼

HTTPS

解決的是

  1. 機密性的問題
  2. 完整性的問題
  3. 認證的問題

要確保機密性,可使用對稱密碼。

因爲對稱密碼的密鑰不能被攻擊者預測,所以咱們使用僞隨機數生成器來生成密鑰。

若要將對稱密碼的密鑰發送給通訊對象,可使用公鑰密碼或者Diffie-Hellman密鑰交換。

要識別篡改,對數據進行認證,可使用消息認證碼。消息認證碼是使用單向散列函數來實現。

要對通訊對象進行認證,可使用對公鑰加上數字簽名所生成的證書

相關問題

如何保證公鑰不被篡改?

將公鑰放在數字證書中,只要證書可信,公鑰就可信

公鑰加密計算量太大,如何減小耗用時間?

每一次對話(session),客戶端和服務端都生成一個「對話密鑰」,用它來加密信息。因爲「對話密鑰」是對稱加密,因此運算速度很是快,而服務器公鑰只用於加密「對話密鑰」自己,這樣就減小了加密運算的消耗時間

簡述SSL/TLS協議的基本過程

  1. 客戶端向服務端索要並驗證公鑰
  2. 雙方協商生成「對話密鑰」
  3. 對方採用「對話密鑰」進行加密通訊

SSL/TLS協議中第三次握手,客戶端的迴應

  1. 一個隨機數,該隨機數用服務器公鑰加密
  2. 密碼變動通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送
  3. 客戶端握手結束通知,表示客戶端的握手階段已經結束。這一項同時也是發送前面全部內容的hash值,用來供服務器校驗

SSL/TLS協議中的第四次握手,服務端的最後迴應

  1. 密碼變動通知,表示隨後的信息都將用雙方商定的加密方法和密鑰發送
  2. 服務端握手結束通知,表示服務端的握手階段已經結束。這一項同時也是發送前面全部內容的hash值,用來供客戶端校驗

三個隨機數

w26

w27

會話密鑰是經過三個隨機數生成的,是對稱密碼的密鑰,也是非對稱密碼的明文

消息認證碼

消息認證碼,Message authentication code,MAC,是一種確認完整性並進行認證的技術

消息認證碼的輸入包括任意長度的消息和一個發送者與接收者之間共享的密鑰,它能夠輸出固定長度的數據,這個數據稱爲MAC值

消息認證碼是一種與密鑰相關聯的單向散列函數

消息認證碼的侷限在於沒法防止否定,服務端也有密鑰,能夠生成MAC

w28

數字簽名

公鑰密碼包括一個有公鑰和私鑰組成的密鑰對,其中公鑰用於加密,私鑰用於解密

數字簽名的過程當中,用私鑰加密來生成簽名,用公鑰解密來驗證簽名

w29

w31

w31

證書

爲公鑰加上數字簽名

公鑰證書,Public-Key Certificate,PKC

認證機構,Certification Authority,CA,可以認定公鑰確實屬於此人

證書通常包括,簽名對象的信息包括公鑰,數字簽名的算法,數字簽名

w32

公鑰基礎設施,PKI

Public-Key Infrastructure,是爲了可以有效地運用公鑰而制定的一系列規範的總和

參考資料

相關文章
相關標籤/搜索