Security
SSL 和 TLS 之間的確切協議級別差異是什麼?
在提出這個概述問題之後,這是一次技術性的深入探討。
SSL 和 TLS 之間的協議區別是什麼?
真的有足夠的差異來保證改名嗎?(對於較新版本的 TLS,將其稱為“SSLv4”或 SSLv5)
SSLv2 和 SSLv3 完全不同(現在兩者都被認為是不安全的)。SSLv3 和 TLSv1.0 非常相似,但有一些區別。
您可以將 TLSv1.0 視為 SSLv3.1(實際上這就是交換記錄中發生的情況)。將TLSv1.0與TLSv1.1和TLSv1.2進行比較更容易,因為它們都已在 IETF 中進行了編輯,並且或多或少遵循相同的結構。SSLv3 由不同的機構 (Netscape) 編輯,這使得發現差異變得更加困難。
以下是一些差異,但我懷疑我可以將它們全部列出:
- 在
ClientHello
消息(客戶端發送的第一條消息,用於啟動握手)中,版本{3,0}
為 SSLv3、{3,1}
TLSv1.0 和{3,2}
TLSv1.1。ClientKeyExchange
不同的。- MAC/HMAC 不同(TLS 使用 HMAC,而 SSL 使用早期版本的 HMAC)。
- 密鑰派生不同。
Finished
在 SSLv3 中發送 SSL/TLS 消息後,可以直接發送客戶端應用程序數據。在 TLSv1 中,它必須等待伺服器的Finished
消息。- 密碼套件列表不同(其中一些已從
SSL_*
to重命名TLS_*
,保持相同的 ID 號)。- 關於新的重新談判延期也存在分歧。
我強烈推薦Eric Rescorla 的書 - SSL and TLS: Designing and Building Secure Systems , Addison-Wesley, 2001 ISBN 0-201-61598-3,如果你真的想要更多細節的話。我從這本書中了解到了上面提到的一些要點。作者在解釋一些 SSL/TLS 消息時偶爾會提到 SSLv3 和 TLS 之間的區別(僅在本書編寫時為 v1.0),但您確實需要這些消息的背景說明才能有機會理解(此處不適合從本書中複製/粘貼)。