使用Wireshark分析TLS1 2

2022-03-26 12:53:22 字數 2018 閱讀 7601

概念掃盲

首先,先說下tls是什麼? tls是ssl協議的具體實現,ssl是乙個規範,tls是安裝ssl規範實現的。後面都說ssl/tls

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

(圖來自

詳細過程

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的握手階段已經完成了,接下來開始分段傳輸資料。

使用wireshark分析MQTT協議

網路上搜尋到兩種用wireshark工具分析mqtt協議的方法,都是使用wireshark外掛程式,一種是wireshark generic dissector 另一種是使用lua指令碼外掛程式 推薦使用這種方式 一 wireshark generic dissector 2 編輯.wsgd和.fd...

使用wireshark進行抓包分析

certificate,client key exchange,certificate verify,change cipher spec,encrypted handshake message change cipher spec,encrypted handshake message 首先放一張...

使用wireshark抓取TCP包分析1

目錄準備工作 傳輸結論 參考文獻 本篇文章是使用wireshrak對某個https請求的tcp包進行分析。通過抓包實際分析了解tcp包。在我自己機子上安裝的是wireshark2.2.6版本,隨機查詢了某個tcp連線,並跟蹤流。由於抓到的tcp是使用了https協議,建裡連線需要先進行認證,步驟如下...