TLS 交握通訊協定
傳輸層安全性 (TLS) 交握通訊協議負責建立或繼續安全會話所需的驗證和密鑰交換。 建立安全 會話時,交握通訊協定會管理下列各項:
- 加密套件交涉
- 伺服器驗證,並選擇性地驗證用戶端
- 會話金鑰資訊交換。
加密套件交涉
用戶端和伺服器會連絡,並選擇將在整個訊息交換中使用的加密套件。
認證
在 TLS 中,伺服器向客戶端證明其身分識別。 用戶端可能也需要向伺服器證明其身分識別。 PKI 是使用此驗證的基礎,公開/私鑰組。 用於驗證的確切方法是由交涉的加密套件所決定。
金鑰交換
用戶端和伺服器會交換隨機數和稱為「前置主要密碼」的特殊數位。 這些數位會結合額外的數據,允許客戶端和伺服器建立其共用密碼,稱為「主要密碼」。 用戶端和伺服器會使用主要密碼來產生寫入 MAC 秘密,這是用於 哈希的會話密鑰,而寫入金鑰是用於加密 會話密鑰。
使用 TLS 建立安全會話
TLS 交握通訊協定牽涉到下列步驟:
- 用戶端會將 「Client hello」 訊息傳送至伺服器,以及客戶端的隨機值和支援的加密套件。
- 伺服器會藉由將 「Server hello」 訊息傳送至用戶端,以及伺服器的隨機值來回應。
- 伺服器會將其憑證傳送至客戶端進行驗證,並可能向用戶端要求憑證。 伺服器會傳送“Server hello done” 訊息。
- 如果伺服器已向用戶端要求憑證,用戶端就會傳送它。
- 用戶端會建立隨機的 Pre-Master Secret,並使用從伺服器的憑證公鑰進行加密,並將加密的 Pre-Master Secret 傳送至伺服器。
- 伺服器會收到前置主密碼。 伺服器和客戶端都會根據「主要密碼」產生主要密碼和 會話密鑰,。
- 用戶端會將「變更加密規格」通知傳送至伺服器,以指出用戶端會開始使用新的 會話密鑰,哈希 和加密訊息。 用戶端也會傳送「用戶端已完成」訊息。
- 伺服器會收到「變更加密規格」,並使用 會話密鑰,將其記錄層安全性狀態切換為 對稱加密。 伺服器會將「伺服器已完成」訊息傳送給用戶端。
- 用戶端和伺服器現在可以透過已建立的安全通道交換應用程式數據。 從客戶端到伺服器以及從伺服器傳送到用戶端的所有訊息都會使用會話金鑰來加密。
使用 TLS 繼續安全會話
用戶端會使用要繼續的會話會話標識碼,傳送「Client hello」訊息。
伺服器會檢查其會話快取中是否有相符的會話標識碼。 如果找到相符專案,而且伺服器能夠繼續會話,則會傳送具有會話標識碼的 “Server hello” 訊息。
注意
如果找不到會話標識符相符專案,伺服器會產生新的會話標識符,而 TLS 用戶端和伺服器會執行完整的交握。
用戶端和伺服器必須交換「變更加密規格」訊息,並傳送「用戶端已完成」和「伺服器已完成」訊息。
用戶端和伺服器現在可以透過安全通道繼續應用程式資料交換。