SSL/TLS 協定知多少 - 基礎篇
.jpg)
前言 SSL / TLS ? 最近筆者剛轉職,正要進行第一個專案 👾 在某次 Sync 的會議中突然被問到: 舊版本的 SSL/TLS 為什麼危險,應該知道吧? 腦中突然浮現:「啊!之前在看 Microsoft 官方文檔確實有看到這塊,它建議升版 o.o」 好了,問題來了! 那更深層次的問題,以及如何清楚解釋,我知道嗎? 於是就有了這篇的誕生 ☺ 讓我們看下去吧! 為什麼過去的 SSL/TLS 舊版協定比較危險? 先聊聊什麼是 SSL/TLS SSL(Secure Sockets Layer)/ TLS(Transport Layer Security) 是一種用來 加密網路連線 的安全協定,用來確保你和網站之間傳輸的資料 不會被偷看、不會被竄改。 TLS 是 SSL 的後續版本,目前已發展到 TLS 1.3,具備更高的安全性與效能;舊版本如 SSL 3.0、TLS 1.0 和 1.1 已被淘汰,現代網站多採用 TLS 1.2 或 TLS 1.3 作為主流標準。 相關重點:SSL/TLS 握手(以 TLS 1.2 為例) 當 TLS 或 SSL 連線開始時,雙方會進行一個關鍵步驟叫做:「握手(Handshake)」。 這就像談戀愛前的「 確認彼此身分與溝通規則 」,要談情說愛之前,得先確定你是誰、我們怎麼講話、要不要加密、用哪種暗號(Cipher Suite)😇 握手的過程像是以下這樣: 關鍵澄清: 上方的圖片代表的是邏輯步驟,實際上這五個步驟不等於五個「RTT(Round Trip Time)」~ TLS 1.2 的實際 RTT 解釋如下: 在 TLS 1.2 中,完成一次完整握手大約需要「兩次往返(2-RTT)」的傳輸時間: 1. 第一個 RTT: Client 發送 Client Hello(我支援這些 Cipher Suites) Server 回應 Server Hello + 憑證 + Key Exchange + Hello Done 2. 第二個 RTT: Client 發送 Client Key Exchange + Change Cipher Spec + Finished Server 回應 Change Cipher Spec ...