傳輸層安全協議抓包分析之SSL/TLS

t30x31 8年前發布 | 10K 次閱讀 SSL協議 網絡技術

1. 協議介紹

SSL/TLS是保護計算機網絡通訊安全的一類加密協議,它們在傳輸層上給原先非安全的應用層協議提供加密保護,如非安全的HTTP協議即可被SSL/TLS保護形成安全的HTTPS協議。

SSL、TLS協議其實是有所差異的,TLS協議是繼承了SSL協議并寫入RFC,標準化后的產物。因此,通常使用SSL來指代SSL協議和TLS協議。

SSL (Secure Socket Layer)安全套接字層協議

? SSL通過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通訊。

? 分為SSL記錄協議和SSL握手協議。

TLS(Transport Layer Security)傳輸層安全協議

? 用于兩個應用程序之間提供保密性和數據完整性。

? 分為TLS記錄協議和TLS握手協議。

區別:

? SSL是Netscape開發的專門用戶保護Web通訊的,目前版本為3.0。

? TLS 1.0是IETF(工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規范之上,是SSL 3.0的后續版本。兩者差別極小,可以理解為SSL 3.1,它是寫入了RFC的

2. SSL/TLS在TCP/IP協議棧的位置

SSL/TLS協議在傳輸層上封裝了應用層的數據,因此可以在不需要修改應用層協議的前提下給不安全的應用層協議提供一定的安全保障。

3. SSL/TLS協議棧

4. SSL/TLS協議運作流程

5. SSL/TLS握手階段抓包解析

本次實驗使用瀏覽器訪問 https://www.baidu.com ,使用WireShark抓包獲取其中的SSL/TLS握手階段的數據包并簡要分析。

1) 客戶端發送ClientHello

客戶端發起握手協商操作,它將發送一個ClientHello消息給服務器,消息中明確了其所支持的SSL/TLS版本、Cipher suite加密算法組合等,可以讓服務器選擇,并提供了一個客戶端隨機數,用于以后生成會話密鑰使用。

2) 服務器返回ServerHello

服務器將返回一個ServerHello消息,該消息包含了服務器選擇的協議版本、加密算法,以及服務器隨機數、會話ID等內容。其中,服務器選擇的協議版本應小于等于客戶端ClientHello中的協議版本。

本次實驗中服務器確認使用TLS 1.2版本的協議,并選擇TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256加密算法組合。

3) 服務器發送Certificate

服務器發送ServerHello消息,選擇好協議版本和加密算法組合后,將發送Certificate消息,該消息包含了服務器的證書等信息,可通過證書鏈認證該證書的真實性。根據選擇的加密算法組合的不同,服務器證書中的公鑰也可被用于加密后面握手過程中生成的Premaster secret。

4) 服務器發送ServerKeyExchange

服務器發送ServerKeyExchange消息,消息中包含了服務器這邊的EC Diffie-Hellman算法相關參數。此消息一般只在選擇使用DHE 和DH_anon等加密算法組合時才會由服務器發出。

5) 服務器發送ServerHelloDone

服務器發送ServerHelloDone消息,告知客戶端服務器這邊握手相關的消息發送完畢。

6) 客戶端發送ClientKeyExchange

客戶端發送ClientKeyExchange消息,消息中包含客戶端這邊的EC Diffie-Hellman算法相關參數,然后服務器和客戶端都可根據接收到的對方參數和自身參數運算出Premaster secret,為生成會話密鑰做準備。

7) 客戶端發送ChangeCipherSpec

客戶端向服務器發送ChangeCipherSpec消息,通知服務器此消息以后客戶端會以加密方式發送數據。

8) 客戶端發送Finished

客戶端使用之前握手過程中獲得的服務器隨機數、客戶端隨機數、Premaster secret計算生成會話密鑰,然后使用該會話密鑰加密之前所有收發握手消息的Hash和MAC值,發送給服務器,服務器將相同的會話密鑰(使用相同方法生成)解密此消息,校驗其中的Hash和MAC值。

9) 服務器發送ChangeCipherSpec

服務器發送ChangeCipherSpec消息,通知客戶端此消息以后服務器會以加密方式發送數據。

10) 服務器發送Finished

服務器使用會話密鑰加密(生成方式與客戶端相同,使用握手過程中獲得的服務器隨機數、客戶端隨機數、Premaster secret計算生成)之前所有收發握手消息的Hash和MAC值,發送給客戶端去校驗。

若客戶端服務器都校驗成功,握手階段完成,雙方將按照SSL記錄協議的規范使用協商生成的會話密鑰加密發送數據。

6. 參考資料

https://en.wikipedia.org/wiki/Transport_Layer_Security

http://www.cnblogs.com/happyhippy/archive/2007/05/14/746476.html

http://blog.csdn.net/fw0124/article/details/40983787

 

來自:http://www.freebuf.com/articles/network/116497.html

 

 本文由用戶 t30x31 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!