TLS與SSL的差異
- 版本號:TLS記錄格式與SSL記錄格式相同,但版本號的值不同,TLS的版本1.0使用的版本號為SSLv3.1。
- 報文鑑別碼:SSLv3.0和TLS的MAC算法及MAC計算的範圍不同。 TLS使用了RFC-2104定義的HMAC算法。 SSLv3.0使用了相似的算法,兩者差別在於SSLv3.0中,填充字節與密鑰之間採用的是連接運算,而HMAC算法採用的是異或運算。但是兩者的安全程度是相同的。
- 偽隨機函數:TLS使用了稱為PRF的偽隨機函數來將密鑰擴展成數據塊,是更安全的方式。
- 報警代碼:TLS支持幾乎所有的SSLv3.0報警代碼,而且TLS還補充定義很多報警代碼,如解密失敗(decryption_failed)、記錄溢出(record_overflow)、未知CA(unknown_ca)、拒絕訪問(access_denied)等。
- 密文族和客戶證書:SSLv3.0和TLS存在少量差別,即TLS不支持Fortezza密鑰交換、加密算法和客戶證書。
- certificate_verify和finished消息:SSLv3.0和TLS在用certificate_verify和finished消息計算MD5和SHA-1散列碼時,計算的輸入有少許差別,但安全性相當。
- 加密計算:TLS與SSLv3.0在計算主密值(master secret)時採用的方式不同。
- 填充:用戶數據加密之前需要增加的填充字節。在SSL中,填充後的數據長度要達到密文塊長度的最小整數倍。而在TLS中,填充後的數據長度可以是密文塊長度的任意整數倍(但填充的最大長度為255字節),這種方式可以防止基於對報文長度進行分析的攻擊。
TLS的主要增強內容
TLS的主要目標是使SSL更安全,並使協議的規範更精確和完善。 TLS 在SSL v3.0 的基礎上,提供了以下增強內容:
- 更安全的MAC算法
- 更嚴密的警報
- “灰色區域”規範的更明確的定義
TLS對於安全性的改進
對於消息認證使用密鑰散列法:TLS 使用“消息認證代碼的密鑰散列法”(HMAC),當記錄在開放的網絡(如Internet)上傳送時,該代碼確保記錄不會被變更。 SSLv3.0還提供鍵控消息認證,但HMAC比SSLv3.0使用的(消息認證代碼)MAC 功能更安全。
增強的偽隨機功能(PRF):PRF生成密鑰數據。在TLS中,HMAC定義PRF。 PRF使用兩種散列算法保證其安全性。如果任一算法暴露,只要第二種算法未暴露,則數據仍然是安全的。
改進的已完成消息驗證:TLS和SSLv3.0都對兩個端點提供已完成的消息,該消息認證交換的消息沒有被變更。然而,TLS將此已完成消息基於PRF和HMAC值之上,這也比SSLv3.0更安全。
一致證書處理:與SSLv3.0不同,TLS試圖指定必須在TLS之間實現交換的證書類型。
特定警報消息:TLS提供更多的特定和附加警報,以指示任一會話端點檢測到的問題。 TLS還對何時應該發送某些警報進行記錄。
參考:SSL/TLS原理详解