TLS 是一種安全協定,可為網際網路通信提供私密性和資料完整性。實施 TLS 是構建安全 web 應用的一個標準實踐。
閱讀本文後,您將能夠:
複製文章連結
Transport Layer Security, or TLS, is a widely adopted security protocol designed to facilitate privacy and data security for communications over the Internet. A primary use case of TLS is encrypting the communication between web applications and servers, such as web browsers loading a website. TLS can also be used to encrypt other communications such as email, messaging, and voice over IP (VoIP). In this article we will focus on the role of TLS in web application security.
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 encryption can help protect web applications from data breaches and other attacks. Today, TLS-protected HTTPS is a standard practice for websites. The Google Chrome browser gradually cracked down on non-HTTPS sites, and other browsers have followed suit. Everyday Internet users are more wary of websites that do not feature the HTTPS padlock icon.
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 憑證?在 Cloudflare Diagnostic Center 查看某個網站是否使用了 TLS 加密。