TLS 是一種安全通訊協定,可為網際網路通訊提供私密性和資料完整性。實作 TLS 是構建安全 Web 應用程式的一個標準做法。
閱讀本文後,您將能夠:
複製文章連結
Transport Layer Security (TLS) 是一種廣泛採用的安全通訊協定,旨在促進網際網路通訊的私密性和資料安全性。TLS 的主要用例是對 Web 應用程式和伺服器之間的通訊(例如,Web 瀏覽器載入網站)進行加密。TLS 還可以用於加密其他通訊,如電子郵件、訊息傳遞和 IP 語音 (VOIP) 等。在本文中,我們將重點介紹 TLS 在 Web 應用程式安全中發揮的作用。
TLS 由網際網路工程任務組(Internet Engineering Task Force,IETF)提出,通訊協定的第一個版本於 1999 年發佈。最新版本是 TLS 1.3,發佈於 2018 年。
Netscape 開發了名為安全通訊端層(Secure Socket Layer,SSL)的上一代加密通訊協定,TLS 由此演變而來。TLS 1.0 版實際上最初作為 SSL 3.1 版開發,但在發佈前更改了通訊協定的名稱,以表明它不再與 Netscape 關聯。由於這個歷史原因,TLS 和 SSL 這兩個術語有時會互換使用。
HTTPS 是在 HTTP 通訊協定基礎上實施 TLS 加密,所有網站以及其他部分 Web 服務都使用該協定。因此,任何使用 HTTPS 的網站都使用 TLS 加密。
TLS 加密可協助保護 Web 應用程式免受資料外洩和其他攻擊。如今,受 TLS 保護的 HTTPS 已成為網站的標準做法。Google Chrome 瀏覽器逐漸對非 HTTPS 網站進行打擊,其他瀏覽器也紛紛效仿。日常網際網路使用者對沒有 HTTPS 掛鎖圖標的網站更加警惕。
TLS 通訊協定實現的功能有三個主要組成部分:加密、驗證和完整性。
網站或應用程式要使用 TLS,必須在其來源伺服器上安裝 TLS 憑證(由於上述命名混淆,該憑證也被稱為 SSL 憑證)。TLS 憑證由憑證頒發機構頒發給擁有網域的個人或企業。該憑證包含有關網域擁有者的重要資訊以及伺服器的公開金鑰,兩者對驗證伺服器身分都很重要。
TLS 連線是透過一個稱為 TLS 交握的流程啟動的。當使用者導覽到一個使用 TLS 的網站時,使用者裝置(也稱為用戶端裝置)和 Web 伺服器之間開始進行 TLS 交握。
在 TLS 交握過程中,使用者裝置和 Web 伺服器:
TLS 交握為每個通訊工作階段建立一個密碼套件。密碼套件是一組演算法,其中指定了一些細節,例如哪些共用加密金鑰(即工作階段金鑰)將用於該特定工作階段。TLS 也能在一個未加密的通道上設定匹配的工作階段金鑰,這要歸功於一種稱為公開金鑰加密的技術。
交握還處理驗證,其中通常包括伺服器向用戶端證明其身分。這是透過使用公開金鑰來完成的。公開金鑰是使用單向加密的加密金鑰,即任何擁有公開金鑰的人都可以解讀使用伺服器私密金鑰加密的資料,以確保其真實性,但只有原始發送方才可以使用私密金鑰加密資料。伺服器的公開金鑰是其 TLS 憑證的一部分。
一旦資料被加密並通過驗證,就會使用訊息驗證碼 (MAC) 對其簽名。接收方可以驗證 MAC 以確保資料的完整性。這有點像阿司匹林瓶子上的防篡改箔紙;由於購買時鋁箔是完整的,消費者知道沒有人動過他們的藥品。
TLS 的最新版本對 web 應用程式的效能幾乎沒有任何影響。
由於建立 TLS 連線涉及到的複雜過程,因此必須花費一些載入時間和計算能力。在傳輸任何資料之前,用戶端和伺服器必須來回通訊幾次,這將佔用 Web 應用程式寶貴的幾毫秒載入時間,以及用戶端和伺服器的一些記憶體。
然而,目前已有技術幫助緩解 TLS 交握造成的延遲。其一是 TLS 虛假啟動 (False Start),讓伺服器和用戶端在 TLS 交握完成前開始傳輸資料。另一種加速 TLS 的技術是 TLS 工作階段繼續執行,允許之前通訊過的用戶端和伺服器簡化交握過程。
這些改良幫助 TLS 成為一種非常快速的通訊協定,不會明顯影響載入時間。至於與 TLS 相關的計算成本,以今天的標準來看幾乎可以忽略不計。
2018 年發佈的 TLS 1.3 進一步提高了 TLS 的速度。TLS 1.3 中的 TLS 交握僅需要一次往返(即來回通訊),而不是以前的兩次,將交握過程所需時間縮短了幾毫秒。如果使用者以前已連接過網站,TLS 交握的往返次數為零,從而進一步加快了速度。
Cloudflare 向所有使用者提供免費的 TLS/SSL 憑證。任何沒有使用 Cloudflare 的使用者將必須向一家憑證機構獲取 SSL 憑證,而且往往需要付費,然後在其原始伺服器上安裝憑證。
要進一步瞭解 TLS/SSL 憑證的工作原理,請參閱什麼是 SSL 憑證?