Authentication

TLS 1.3 如何在不使用公鑰驗證伺服器是否有私鑰的情況下提供身份驗證?

  • November 7, 2022

在 TLS 1.2 握手中,在檢查證書後,使用證書中的公鑰對數據進行加密以創建對稱加密密鑰,因此在知道私鑰的因素上進行身份驗證,因為需要解密那個數據。

在 TLS 1.3 中,公鑰不能用於加密創建對稱加密密鑰所需的數據,因為該數據包含在客戶端發送的第一條消息中,並且客戶端在收到伺服器發送的證書之前無法知道公鑰響應第一條消息。

由於公鑰不用於加密生成對稱加密密鑰所需的數據或任何其他數據,因此私鑰知識因素消失了。

TLS 1.3 如何提供身份驗證,如果不使用公鑰來驗證一方是否擁有私鑰,那麼使用 PKI 和公鑰證書有什麼意義?

…證書中的公鑰用於加密數據以創建對稱加密密鑰,因此身份驗證發生在知道私鑰的因素上,因為需要解密該數據。

這不是身份驗證。您所描述的是 RSA 密鑰交換,它在 TLS 1.3 中被刪除,甚至被認為在 TLS 1.2 中已經過時。

伺服器知道私鑰的證明是通過CertificateVerify消息完成的,該消息(稍微簡化)是對先前在握手中發送的消息的簽名(使用私鑰)。這意味著它還包括客戶端隨機數據,因此不能在另一次握手中簡單地重播。

引用自:https://crypto.stackexchange.com/questions/102626