傳輸層安全協議
出自 MBA智库百科(https://wiki.mbalib.com/)
- 傳輸層安全協議(Transport Layer Security Protocol,TLSP)
目錄 |
什麼是傳輸層安全協議[1]
傳輸層安全協議(Secure Sockets Layer,縮寫作SSL)是一種安全協議,目的是為互聯網通信,提供安全及數據完整性保障。當伺服器和客戶機進行通信,TLS確保沒有第三方能竊聽或盜取信息。TLS是SSL的後續協議。
TLSP的構成[1]
TLSP由2層構成:TLS記錄協議和TLS握手協議。TLS記錄協議使用機密方法,如數據加密標準(DES),來保證連接安全。TLS記錄協議也可以不使用加密技術。TLS握手協議使伺服器和客戶機在數據交換之前進行相互鑒定,並協商加密演算法和密鑰。
TLS協議是基於Netscape的SSL3.0協議的;但是,TLS和SSL不能同時使用。TLS協議包含一個允許TLS實現退到SSL3.0的機制。最新的瀏覽器版本都支持TLS。1996年頒佈的TLSWorkingGroup繼續在TLS協議及相關應用中使用。
TLSP的保護方式[2]
TLSP有兩種辦法向通信協議提供保護。第一個辦法是給用TLS加密的通信分配一個新埠(比如埠80和443)。第二個辦法是對通信協議進行升級,在裡面加上TLS協議的功能。
TLSP與SSL的區別[3]
- (1)版本號不同。
雖然TLS的記錄格式與SSL的記錄格式相同,且頭中各域的含義也相同,但其版本值不同。TLS版本中,主版本號為3,從版本號為1。
- (2)消息認證碼不同。
TLS和SSL的MAC模式有兩點不同:演算法不同及MAC計算範圍不同。TLS使用由RFC2104定義的HMAC演算法,且TLS中MAC的計算不僅包含了SSL中MAC計算的各個域,還增加了一個體現協議版本號的域TLSCompressed。
- (3)偽隨機函數不同。
TLS使用稱為PRF的偽隨機函數將密碼擴展成生成密鑰的數據分組,其目的是使用相對較小的共用密碼值,生成較長的數據分組,以防止對Hash函數和MAC的攻擊。同時為了保證PRF的足夠安全,PRF同時使用了MD5和SHA一1兩種Hash函數。
- (4)報警消息不同。
TLS支持除無證書外的SSL定義的所有報警消息,並且還定義了許多附加的消息,主要有如下消息。
- 解密失敗消息(decryption_failed):使用不正確的方法解密密文,或長度不是分組長度的整數倍,或填充值不正確。
- 記錄溢出消息(record_overflow):接收的TLS記錄中的載荷長度超過214 + 2048位元組,或密文解密後長度超過214+1024。
- 拒絕訪問消息(access_denied):接收到合法證書,但發送者拒絕進行協商訪問。
- 解碼出錯消息(decode_error):由於域超出了指定範圍或消息長度不正確使得消息不被解碼。
- 輸出限制消息(export_restricition):密鑰長度的輸出限制無法達成一致。
- 協議版本消息(protocol_version):客戶端試圖協商的協議版本可以識別但不被支持。
- 安全不足消息(insufficient_security):伺服器需要的安全級別客戶端無法支持時協商失敗的返回值,以代替握手失敗。
- 中間出錯消息(internal_error):與對方或協議正確性無關的中間環節出錯,使得無法繼續操作。
- 解密出錯消息(decrypt_error):握手密碼訪問失敗,包括無法驗證簽名、解密密鑰交換或校驗完成的消息。
- 用戶取消消息(user_canceled):握手由於某些與協議錯誤的無關原因而被取消。
- (5)密碼組不同。
TLS和SSL提供的密碼組有一些小的差別。其中,對於密鑰交換演算法,TLS支持除Fortezza外的所有SSL定義的密鑰交換演算法;對於對稱加密演算法,TLS包括除Fortezza外的所有SSL定義的對稱加密演算法。
- (6)客戶端證書類型不同。
TLS定義的證書類型中不包括在SSL中定義的rsa_ephemeral_dh、dss_ephem_eral_dh及fortezza_kea證書類型,且TLS不包含Fortezza模式,僅使用rsa_sign和dss_sign類型對Diffie_Hellman參數加密。
- (7)證書驗證及完成消息不同。
TLS證書驗證消息(certificate{verify)中,MD5和SHA-1的Hash值只根據握手消息計算,而SSL中Hash值的計算還包含主密鑰和填充值。與SSL中的完成消息(Finished)相比,TLS中的完成消息基於共用主密鑰、先前的握手消息以及標識伺服器或客戶端標簽的Hash數據。
- (8)密碼計算方法不同。
TLS中次密鑰的計算方法與SSL中的相同,但TLS主密鑰是次密鑰和兩個隨機Hello值的Hash值,其計算方法與SSL中的不同。
- (9)填充值不同。
SSL在加密前,採用填充域使得用戶數據為加密所需分組長度的最小整數倍。而在TLS中,填充域長度不超過255個位元組,使用戶數據為加密所需分組長度的任意整數倍。其可變的填充值可以防止基於交換消息長度分析的攻擊。