網路安全

傳輸層安全(Transport Layer Security)

/ TLS spelled out: T-L-S /

當你在瀏覽器看到鎖頭與「https」時,背後在做事的東西就是 TLS。把它想成一根密封、防竄改的管子,鋪設在你的裝置與伺服器之間,架在普通(而且門戶大開)的網際網路連線之上。你透過這根管子送出的一切都被加密,使竊聽者只看到亂碼;都被保護,使任何竄改都會被偵測;並送往一個身分已被驗證的伺服器。TLS——較舊的 SSL 的後繼者,那個名字至今仍殘留——就是建立那根管子的協定。

它分兩個階段運作。先是交握:用戶端與伺服器協商要用哪些密碼演算法、伺服器出示它的數位憑證(用戶端透過 PKI 驗證它,確認伺服器身分並擊敗中間人),然後它們用公開金鑰密碼學安全地協商出一把新鮮的共享對稱連線金鑰——全程不曾以明文送出它。接著是資料階段:所有應用資料(你的 HTTP 請求、網頁、表單送出)都用那把快速的對稱金鑰加密,並用 MAC 或鑑別加密保護,再加上序號來阻止重放。交握為整段連線帶來機密性、完整性與伺服器鑑別。

為什麼重要,以及它沒承諾什麼:TLS 位於應用程式與 TCP 之間,所以幾乎任何協定都能「跑在 TLS 之上」而安全運作——HTTPS 就只是跑在 TLS 上的 HTTP,還有安全電子郵件等等。它是網際網路機密性的主力。但要精確看待它的保證。TLS 鑑別伺服器(也可選擇性地鑑別用戶端)並保護兩個端點之間的通道——它不擔保伺服器誠實、不擔保網站內容安全、也不擔保你的資料在抵達並於另一端解密之後仍受保護。一條連到釣魚網站的有效 TLS 連線,仍然是個釣魚網站。TLS 保護的是管子,不是管子兩端的人。

連到 https://shop.example 時,你的瀏覽器與伺服器進行交握:伺服器的憑證證明它真的是 shop.example,雙方推導出一把竊聽者算不出的共享連線金鑰,接著你的卡號便加密傳送。一個在路徑上的攻擊者只看到密文,也無法冒充這家商店。

先交握(鑑別+協商金鑰),再傳加密資料。

TLS 保護通道並鑑別伺服器——它不會讓伺服器誠實、也不會讓它的內容安全。鎖頭的意思是「加密送往這個具名的伺服器」,絕不是「這個網站可以信任」。

又称
TLSSSL傳輸層安全安全通訊端層