
這是之後的技術深度探討本概述有人提出問題。
SSL 和 TLS 之間的協定有何區別?
真的有足夠的差異值得更名嗎? (相對於較新版本的 TLS 而言,將其稱為“SSLv4”或 SSLv5)
答案1
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_*
,TLS_*
保持相同的 ID 號碼)。 - 新版也存在差異重新協商延期。
我強烈推薦艾瑞克·雷斯科拉的書 -SSL 和 TLS:設計和建置安全系統,艾迪生·韋斯利,2001 ISBN 0-201-61598-3,如果您確實想要更多詳細資訊。我從這本書中了解到了上面提到的一些觀點。作者在解釋一些 SSL/TLS 訊息時偶爾會提到 SSLv3 和 TLS(僅在撰寫本書時為 v1.0)之間的差異,但您確實需要有關這些訊息的背景說明才能有機會理解(並且不適合從本書複製/貼上到此處)。
答案2
我只會回應其他答案,但重點可能略有不同。
有一個由 Netscape「擁有」的安全通訊端協議,稱為 SSL 版本 2。字段。對於SSL版本3,此欄位設定為0x03 0x00,即版本3.0。然後 IETF 決定創建自己的標準。可能是因為 SSL 存在一些智慧財產權不確定性,包括「SSL」是否是 Netscape 商標,當 IETF 發布該協議的下一版本時,他們給它起了自己的名稱:傳輸層安全協議或 TLS 版本 1.0。記錄格式和整體結構與SSL v3相同且一致。二進位版本號碼已更改為 0x03 0x01,正如其他人指出的那樣,存在一些細微的加密更改。此後出現了 TLS 版本 1.1 和 1.2,其內部協定編號為 0x03 0x02 和 0x03 0x03。
忽略 SSLv2,它基本上只是名稱變更以及隨著人們對安全性和效能變得更加聰明而發生的正常協定微調。
答案3
從根本上來說,這只不過是新版本協定的名稱變更。我認為其主要原因是為了將其與主要由 Netscape 在成為官方 IETF 標準追蹤協議後設計的舊的非正式標準區分開來。
正如您之前問題的答案中所述,這並不意味著 SSLv3 和 TLSv1.0 是相容的。引用 RFC 2246:
該協定與 SSL 3.0 之間的差異並不顯著,但差異足夠大,以至於 TLS 1.0 和 SSL 3.0 無法互通。
我想如果你真的想知道協議的確切差異,你必須閱讀標準並自己進行比較。
答案4
差異:
- TLS 完全運行在標準協定之上。 TLS 連線就像標準服務的未加密會話一樣啟動,但在某些時候它們開始協商加密。它需要擴展此協商的標準協定。
- 標準協定運行在 SSL 之上。 SSL 連線首先協商加密,然後在其上執行基本協定。