傳輸層安全性( TLS ) 是一種加密協議,旨在為計算機網絡上的通信提供安全保障。該協議廣泛應用于電子郵件、即時消息和IP 語音等應用中,但其在保護HTTPS 方面的應用最為廣泛。
TLS 協議的主要目的是通過使用加密技術(例如使用證書)在兩個或多個通信計算機應用程序之間提供安全性,包括隱私性(機密性)、完整性和真實性。它在表示層運行,本身由兩層組成:TLS 記錄和 TLS握手協議。
與之密切相關的數據報傳輸層安全性( DTLS ) 是一種通信協議,可為基于數據報的應用程序提供安全性。在技術寫作中,當“( D ) TLS ”適用于兩個版本時,通常會提到它。
描述
客戶端-服務器應用程序使用 TLS協議以一種旨在防止竊聽和篡改的方式通過網絡進行通信。
由于應用程序可以使用或不使用 TLS(或 SSL)進行通信,因此客戶端必須請求服務器建立 TLS 連接。實現此目的的主要方法之一是使用不同的端口號進行 TLS 連接。端口 80 通常用于未加密的HTTP流量,而端口 443 是用于加密HTTPS流量的常用端口。另一種機制是向服務器發出特定于協議的STARTTLS請求,以將連接切換到 TLS - 例如,在使用郵件和新聞協議時。
一旦客戶端和服務器同意使用 TLS,它們就會使用握手程序協商有狀態連接。協議使用非對稱密碼握手來建立密碼設置,以及會話特定的共享密鑰,使用對稱密碼對進一步的通信進行加密。在此握手過程中,客戶端和服務器就用于建立連接安全性的各種參數達成一致:
- 當客戶端連接到啟用 TLS 的服務器并請求安全連接時,握手開始,并且客戶端提供支持的密碼套件(密碼和哈希函數)列表。
- 從此列表中,服務器選擇它也支持的密碼和哈希函數,并將該決定通知客戶端。
- 然后,服務器通常會以數字證書的形式提供身份證明。證書包含服務器名稱、保證證書真實性的受信任證書頒發機構(CA) 以及服務器的公共加密密鑰。
- 客戶端在繼續之前確認證書的有效性。
- 要生成用于安全連接的會話密鑰,客戶端可以執行以下操作之一:
- 使用服務器的公鑰加密一個隨機數,并將結果發送給服務器(只有服務器才能使用其私鑰解密);然后雙方使用該隨機數生成唯一的會話密鑰,用于會話期間的后續數據加密和解密,或者
- 使用Diffie-Hellman 密鑰交換安全地生成一個隨機且唯一的會話密鑰,用于加密和解密,該密鑰具有前向保密的附加屬性:如果服務器的私鑰將來被泄露,則它不能用于解密當前會話,即使該會話被第三方攔截和記錄。
這樣就結束了握手并開始建立安全連接,該連接使用會話密鑰進行加密和解密,直到連接關閉。如果上述任何一個步驟失敗,則 TLS 握手失敗,并且不會創建連接。
TLS 和 SSL 不能簡單地歸入OSI 模型或TCP/IP 模型中的任何單個層。TLS 運行于“某些可靠的傳輸協議( TCP)之上”,這意味著它位于傳輸層之上。它為更高層提供加密,這通常是表示層的功能。但是,應用程序通常將 TLS 用作傳輸層,即使使用 TLS 的應用程序必須主動控制發起 TLS 握手和處理交換的身份驗證證書。
當受 TLS 保護時,客戶端和服務器之間的連接將具有以下所有屬性:?
- 該連接是私密的(或具有保密性),因為使用對稱密鑰算法來加密傳輸的數據。此對稱加密的密鑰是針對每個連接唯一生成的,并且基于在會話開始時協商的共享密鑰。在傳輸第一個字節的數據之前,服務器和客戶端會協商使用哪種加密算法和加密密鑰的詳細信息(見下文)。共享密鑰的協商既安全(協商的密鑰對竊聽者不可用,也無法獲得,即使是將自己置于連接中間的攻擊者也無法獲得),又可靠(沒有攻擊者可以在協商期間修改通信而不被發現)。
- 可以使用公鑰加密技術來驗證通信雙方的身份。此驗證對于服務器來說是必需的,對于客戶端來說是可選的。
- 該連接是可靠的(或具有完整性),因為傳輸的每條消息都包括使用消息認證碼進行的消息完整性檢查,以防止在傳輸過程中發生未檢測到的數據丟失或更改。
TLS 支持多種不同的方法來交換密鑰、加密數據和驗證消息完整性。因此,TLS 的安全配置涉及許多可配置參數,并且并非所有選項都提供上面列表中描述的所有隱私相關屬性。
有人試圖破壞 TLS 試圖提供的通信安全性,并且該協議已多次修訂以應對這些安全威脅。在發現潛在的安全漏洞后,網絡瀏覽器開發人員已多次修改其產品以防御這些漏洞。
|
協議 |
發布 |
地位 |
|---|---|---|
|
SSL 1.0 |
未發表 |
未發表 |
|
SSL 2.0 |
1995 |
2011 年已棄用(RFC 6176) |
|
SSL 3.0 |
1996 |
2015 年已棄用(RFC 7568) |
|
TLS 1.0 |
1999 |
2021 年棄用 ( RFC 8996 ) |
|
TLS 1.1 |
2006 |
2021 年棄用 ( RFC 8996 ) |
|
TLS 1.2 |
2008 |
自 2008 年開始使用 |
|
TLS 1.3 |
2018 |
自 2018 年開始使用 |
(SSL 和 TLS 協議)
數據報傳輸層安全性
數據報傳輸層安全性(簡稱 DTLS)是一種相關通信協議,它允許基于數據報的應用程序以專門設計的方式進行通信,從而為它們提供安全性以防止竊聽、篡改或消息偽造。DTLS 協議基于面向流的傳輸層安全性 (TLS) 協議,旨在提供類似的安全保障。但是,與 TLS 不同,它可以與大多數面向數據報的協議一起使用,包括用戶數據報協議(UDP)、數據報擁塞控制協議(DCCP)、無線接入點控制和配置(CAPWAP)、流控制傳輸協議(SCTP) 封裝和安全實時傳輸協議(SRTP)。
由于 DTLS 協議數據報保留了底層傳輸(應用程序)的語義,因此它不會受到與流協議相關的延遲的影響,但是應用程序必須處理數據包重新排序、數據報丟失以及大于數據報網絡數據包大小的數據。由于 DTLS 使用 UDP 或 SCTP 而不是 TCP,因此在用于創建 VPN 隧道時, 它避免了TCP 崩潰問題。
2006 年最初發布的 DTLS 1.0 版并不是一份獨立文檔。它是作為 TLS 1.1 的一系列增量版本發布的。[ 11 ]同樣,2012 年發布的后續 DTLS 是 TLS 1.2 的增量版本。它被賦予了 DTLS 1.2 的版本號以匹配其 TLS 版本。最后,2022 年的 DTLS 1.3 是 TLS 1.3 的增量版本。與之前的兩個版本一樣,DTLS 1.3 旨在提供“與 TLS 1.3 相當的安全保證,但順序保護/不可重放性除外”。
許多VPN 客戶端(包括Cisco AnyConnect 和 InterCloud Fabric、 OpenConnect、ZScaler隧道、F5 Networks Edge VPN Client、和 Citrix Systems NetScaler)都使用 DTLS 來保護 UDP 流量。此外,所有現代 Web 瀏覽器都支持用于WebRTC的 DTLS-SRTP 。
- 07-21
- 07-21
- 07-14
- 07-14
- 07-07
- 07-07
- 06-23
- 06-23
最新內容
- 04-14
- 02-17
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
知識庫
