一抬虽、為什么使用TLS
在SSL/TLS出現(xiàn)之前,很多應用層協(xié)議(http纵菌、ftp阐污、smtp等)都存在著網(wǎng)絡安全問題,例如大家所熟知的http協(xié)議产艾,在傳輸過程中使用的是明文信息疤剑,傳輸報文一旦被截獲便會泄露傳輸內(nèi)容;傳輸過程中報文如果被篡改闷堡,無法輕易發(fā)現(xiàn);無法保證消息交換的對端身份的可靠性疑故。為了解決此類問題杠览,人們在應用層和傳輸層之間加入了SSL/TLS協(xié)議。
二纵势、什么是TLS
TLS(Transport Layer Security踱阿,安全傳輸層),TLS是建立在傳輸層TCP協(xié)議之上的協(xié)議钦铁,服務于應用層软舌,它的前身是SSL(Secure Socket Layer,安全套接字層)牛曹,它實現(xiàn)了將應用層的報文進行加密后再交由TCP進行傳輸?shù)墓δ堋?/p>
TLS的作用
TLS協(xié)議主要解決如下三個網(wǎng)絡安全問題佛点。
- 保密(message privacy),保密通過加密encryption實現(xiàn),所有信息都加密傳輸超营,第三方無法嗅探鸳玩;
- 完整性(message integrity),通過MAC校驗機制演闭,一旦被篡改不跟,通信雙方會立刻發(fā)現(xiàn);
- 認證(mutual authentication)米碰,雙方認證,雙方都可以配備證書窝革,防止身份被冒充;
TLS的發(fā)展過程
- 1995: SSL 2.0, 由Netscape提出吕座,這個版本由于設計缺陷聊闯,并不安全,很快被發(fā)現(xiàn)有嚴重漏洞米诉,已經(jīng)廢棄菱蔬。
- 1996: SSL 3.0. 寫成RFC,開始流行史侣。目前(2015年)已經(jīng)不安全拴泌,必須禁用。
- 1999: TLS 1.0. 互聯(lián)網(wǎng)標準化組織ISOC接替NetScape公司惊橱,發(fā)布了SSL的升級版TLS 1.0版
- 2006: TLS 1.1. 作為 RFC 4346 發(fā)布蚪腐。主要修復了CBC模式相關的如BEAST攻擊等漏洞
- 2008: TLS 1.2. 作為 RFC 5246 發(fā)布 。增進安全性税朴,目前應該主要部署的版本
- 2015之后: TLS 1.3回季,還在制訂中,支持0-rtt正林,大幅增進安全性泡一,砍掉了aead之外的加密方式
TLS是怎樣實現(xiàn)的
TLS協(xié)議可以分為兩部分
記錄協(xié)議(Record Protocol)
通過使用客戶端和服務端協(xié)商后的秘鑰進行數(shù)據(jù)加密傳輸。握手協(xié)議(Handshake Protocol)
客戶端和服務端進行協(xié)商觅廓,確定一組用于數(shù)據(jù)傳輸加密的秘鑰串鼻忠。
TLS握手過程
步驟 1. ClientHello – 客戶端發(fā)送所支持的 SSL/TLS 最高協(xié)議版本號和所支持的加密算法集合及壓縮方法集合等信息給服務器端。
步驟 2. ServerHello – 服務器端收到客戶端信息后杈绸,選定雙方都能夠支持的 SSL/TLS 協(xié)議版本和加密方法及壓縮方法帖蔓,返回給客戶端。
(可選)步驟 3. SendCertificate – 服務器端發(fā)送服務端證書給客戶端瞳脓。
(可選)步驟 4. RequestCertificate – 如果選擇雙向驗證塑娇,服務器端向客戶端請求客戶端證書。
步驟 5. ServerHelloDone – 服務器端通知客戶端初始協(xié)商結束劫侧。
(可選)步驟 6. ResponseCertificate – 如果選擇雙向驗證埋酬,客戶端向服務器端發(fā)送客戶端證書。
步驟 7. ClientKeyExchange – 客戶端使用服務器端的公鑰,對客戶端公鑰和密鑰種子進行加密奇瘦,再發(fā)送給服務器端棘催。
(可選)步驟 8. CertificateVerify – 如果選擇雙向驗證,客戶端用本地私鑰生成數(shù)字簽名耳标,并發(fā)送給服務器端醇坝,讓其通過收到的客戶端公鑰進行身份驗證。
步驟 9. CreateSecretKey – 通訊雙方基于密鑰種子等信息生成通訊密鑰次坡。
步驟 10. ChangeCipherSpec – 客戶端通知服務器端已將通訊方式切換到加密模式呼猪。
步驟 11. Finished – 客戶端做好加密通訊的準備。
步驟 12. ChangeCipherSpec – 服務器端通知客戶端已將通訊方式切換到加密模式砸琅。
步驟 13. Finished – 服務器做好加密通訊的準備宋距。
步驟 14. Encrypted/DecryptedData – 雙方使用客戶端密鑰,通過對稱加密算法對通訊內(nèi)容進行加密症脂。
步驟 15. ClosedConnection – 通訊結束后谚赎,任何一方發(fā)出斷開 SSL 連接的消息。