使用wireshark分析SSL/TLS

1、基本概念算法

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

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

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

 

一、不使用SSL/TLS的HTTP通訊,就是不加密的通訊。全部信息明文傳播,帶來了三大風險。網絡

(1) 竊聽風險(eavesdropping):第三方能夠獲知通訊內容。session

(2) 篡改風險(tampering):第三方能夠修改通訊內容。dom

(3) 冒充風險(pretending):第三方能夠冒充他人身份參與通訊。加密

 

二、SSL/TLS協議是爲了解決這三大風險而設計的,但願達到:spa

(1) 全部信息都是加密傳播,第三方沒法竊聽。設計

(2) 具備校驗機制,一旦被篡改,通訊雙方會馬上發現。

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

 

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

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

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

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

前兩步又稱爲「握手階段(handshake)」

 

四、握手階段的詳細過程

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

 

 2、步驟

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

 

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

4

 

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

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

 

 

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

 

 

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

相關文章
相關標籤/搜索