使用Wireshark分析TLS1.2


概念掃盲

首先,先說下TLS是什么? TLS是SSL協議的具體實現,SSL是一個規范,TLS是安裝SSL規范實現的。后面都說SSL/TLS

SSL/TLS位於應用層和傳輸層之間,應用層還是可以用http、telnet等應用層協議,只是應用層的數據不是直接交給tcp,而是由tls管理,tls在頭部增加安全數據然后交給tcp。

 

 

 (圖來自https://www.cnblogs.com/lv6965/p/7859925.html

詳細過程

 

 

 1. 瀏覽器/客戶端給出協議版本號、客戶端生成的隨機數(Client random),以及客戶端支持的加密方法。

 2. 服務端確認雙方使用的加密方法,使用的tls版本號沒有問題,生產一個隨機數發給客戶端。

 3. 數字證書、以及一個服務器運行Diffie-Hellman算法生成的公鑰pubkey。

 4. 瀏覽器/客戶端獲取服務器發來的pubkey,計算出另一個pubkey,發給服務器。

 5. 服務器發給瀏覽器一個session ticket。

使用Wireshark抓包上面的過程

 

 

 第一步,

 

 

  看最后的Transport Layer Security,tls協議,可以看到有生成的隨機數,協議版本,支持的加密算法,Cipher 展開如下

 

 

 第二步,

    

 

 

 服務端發生server hello給客戶端,信息有版本信息,隨機數,服務端采用的加密算法。

第三步,

 

 

 

 Certificate:服務器發一個證書給客戶端,該證書用於客戶端確認服務器的身份。這個涉及客戶端對訪問服務端的身份認證,一般是服務器會從第三方認證機構獲得一個證書,客戶端請求服務端的時候,服務端根據這個證書,以及客戶端剛開始生成的隨機數生成一個證實給客戶端去第三方機構認證。如果客戶端的SSL需要驗證服務器的身份,會發送該消息(多數電子商務應用都需要服務器端身份驗證。服務器如果需要驗證客戶端的身份,那么服務器會發一個“Certificate Request”給瀏覽器,而在很多實現中,服務器一般不需要驗證客戶端的身份)。在這個Certificate包中,還告訴我們服務器和瀏覽器是通過Diffie-Hellman算法來生成最終的密鑰(也就是Sessionkey),其中下圖所示的pubkey是Diffie-Hellman算法中的一個參數,這個參數需要通過網絡傳給瀏覽器,即使它被截取也沒有影響安全性。

 

第四步

 

 

 瀏覽器收到服務器發來的Certificate包來之后,運行Diffie-Hellman算法生成一個pubkey,然后發送給服務器。通過這一步和上面Certificate兩個步驟,服務器和瀏覽器分別交換了pubkey,這樣他們就可以分別生成了一個一樣的sessionkey(具體的實現過程可以參考Diffie-Hellman算法的實現),如果你還不是很理解這個算法,那么這里你只需要知道服務器和瀏覽器向對方發送了pubkey之后,雙方就可以計算出相同的密鑰了,並且這個過程沒有安全問題。

第五步

完成上面的步驟,可以說TLS的握手階段已經完成了,接下來開始分段傳輸數據。

 

 

 

————————————————

原文鏈接:https://blog.csdn.net/liangyihuai/article/details/53098482


免責聲明!

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



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