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