Public-Key
SSL/TLS 是否用於維護數據機密性?
在 SSL/TLS 中,我們使用對稱和非對稱密鑰來加密數據。這是否意味著密鑰用於加密數據(保持完整性)或為要發送的數據提供安全通道?
據我所知,散列算法——在 SSL 握手協議內部——用於提供數據完整性。因此,當數據通過 SSL/TLS 加密時,它們是否:
- 加密數據,如雜湊算法,或
- 加密數據,使數據不被竊聽?含義:它們提供了一個安全通道,這意味著它們使用對稱、非對稱密鑰來保護數據機密性(無竊聽)和散列以保持完整性?
第一個問題的答案是兩者兼而有之。
TLS 使用基於 HMAC 的自定義 PRF 從共享密鑰生成對稱密鑰和 MAC 密鑰。共享密鑰是在客戶端和伺服器之間的非對稱密鑰交換期間作為握手的一部分創建的。
PRF 生成所需長度的密鑰材料。該長度由密鑰大小和密鑰數量決定。這些與選擇的密碼套件有關。如果加密算法同時提供機密性和完整性(如 AES-GCM),則每方僅生成 1 個密鑰。如果使用 HMAC 來提供完整性,則會生成 2 個密鑰。PRF 還可以生成初始化向量。
為客戶端和伺服器生成不同的密鑰,因此為經過身份驗證的加密算法生成了 2 個密鑰,為需要 MAC 以確保完整性的算法生成了 4 個密鑰。用於加密傳輸中數據的密鑰與對稱算法一起使用。對於由 TLS 保護的數據,雜湊算法用於 MAC,而不是加密過程的一部分。