iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
佛心分享-IT 人自學之術

從零開始的 Linux 世界系列 第 19

【Day.19】從封包到握手,看懂 TLS 1.3 在幹嘛

  • 分享至 

  • xImage
  •  

昨天我們已經把 HTTPS 跑起來並看到 Wireshark 上的 Application Data,今天把那個黑盒子再打開一點!

首先,我們要用簡單的流程把握手概念講解清楚,再示範兩種在 Kali Linux 與 Windows 環境下把HTTPS 流量「解密回明文」的方法,最後來談談 MITM(中間人)攻擊與防護是什麼。主要是幫大家「梳理流程 + 可操作的步驟」,不會講到複雜的數學運算或推導。

TLS 握手流程

https://ithelp.ithome.com.tw/upload/images/20251003/20176048x0FYUYKEeC.png

  • 使用者打招呼(ClientHello):客戶端發出支援的 TLS 版本(例如:1.1、1.2、1.3)、Client-Random、Session ID、Ciphers 等。
  • 伺服器打招呼(ServerHello):伺服器回應選定的版本與套件,比如說:使用者決定以 TLS 1.3,那伺服器也會回應 TLS 1.3,並發出 Server-Random。GeoTrust效期),而這個憑證則是由 CA 公開平台 所頒發,客戶端驗證此憑證是否可信。一般常見的 CA 有:CertumSectigoGeoTrustRapidSSLTWCA
  • 打招呼結束(ServerHelloDone):伺服器表示其握手訊息已發送完畢(TLS1.3 流程簡化,部份訊息合併)。
  • 交換鑰匙(Key Exchange):雙方用 ECDHE / DH / RSA 等演算法協商 pre-master / shared secret,並由 Client-Random + Server-Random + pre-master 衍生 session keys(對稱金鑰)。
  • 交換加密套件(ChangeCipherSpec)與完成(Finished):雙方啟用對稱加密並互相驗證握手沒有被篡改。
  • Application Data:用對稱金鑰加密的 HTTP 請求/回應。

這邊可能有點小複雜,礙於文章篇幅不能講太冗,我覺得大家可以去看 David Bombal 的 Youtube 影片:TLS Handshake Deep Dive and decryption with Wireshark,他採訪一位來自西雅圖的網路工程師 Ed Harmoush。

裡面把所有的細節全部都講過一遍了,我覺得真的非常受用!推薦大家可以去看,片長約 1 小時。

如果你看完了影片,也知道 TLS 1.3 的運作原理後,不妨自己用 Kali Linux WireShark 和 Windows Packet Sender 實作一次看看。匯入伺服器金鑰後你就能看到 Application Data 被解密的結果囉!


上一篇
【Day.18】滲透測試的第二步:HTTPS 加密封包測試
下一篇
【Day.20】Wireshark 實作大解密:讓 TLS 封包變 HTTP!
系列文
從零開始的 Linux 世界20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言