使用wireshark分析SSL/TLS


一、基本概念

  SSL:(Secure Socket Layer,安全套接字層),位於可靠的面向連接的網絡層協議和應用層協議之間的一種協議層。SSL通過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通訊。該協議由兩層組成:SSL記錄協議和SSL握手協議。

    TLS:(Transport Layer Security,傳輸層安全協議),用於兩個應用程序之間提供保密性和數據完整性。該協議由兩層組成:TLS記錄協議和TLS握手協議。

    SSL/TLS位於傳輸層和應用層之間,應用層數據不再直接傳遞給傳輸層,而是傳遞給SSL層,SSL層對從應用層收到的數據進行加密,並增加自己的SSL頭。

 

1、不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文傳播,帶來了三大風險。

(1) 竊聽風險(eavesdropping):第三方可以獲知通信內容。

(2) 篡改風險(tampering):第三方可以修改通信內容。

(3) 冒充風險(pretending):第三方可以冒充他人身份參與通信。

 

2、SSL/TLS協議是為了解決這三大風險而設計的,希望達到:

(1) 所有信息都是加密傳播,第三方無法竊聽。

(2) 具有校驗機制,一旦被篡改,通信雙方會立刻發現。

(3) 配備身份證書,防止身份被冒充。

 

3、SSL/TLS協議的基本過程是這樣的:

(1) 客戶端向服務器端索要並驗證公鑰。

(2) 雙方協商生成"對話密鑰"。

(3) 雙方采用"對話密鑰"進行加密通信。

前兩步又稱為“握手階段(handshake)”

 

4、握手階段的詳細過程

可分為5步(使用Diffie – Hellman算法):
第一步,瀏覽器給出協議版本號、一個客戶端生成的隨機數(Client random),以及客戶端支持的加密方法。
第二步,服務器確認雙方使用的加密方法,使用的tls版本號和一個隨機數。
第三部,並給出數字證書、以及一個服務器運行Diffie-Hellman算法生成的參數,比如pubkey。
第四部,瀏覽器獲取服務器發來的pubkey,計算出另一個pubkey,發給服務器。
第五部,服務器發給瀏覽器一個session ticket。

 

 二、步驟

 (1)客戶端向服務器提供以下信息

 

(2)服務器回答給客戶端以下信息

4

 

(3)客戶端發送給服務器

服務器發送給客戶端
服務器端發送change_cipher_specfinished消息。到這里握手結束。

 

 

下面是一個server證書采用DSA算法的握手過程。由於采用了DH算法交換密鑰,多了server_key_exchange這一步。

 

 

 的WireShark抓到TLS數據包后的顯示結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM