文/李新宇
TLS 1.3概述及多重握手安全性研究
文/李新宇
TLS 1.3是IETF正在制定的TLS 新標(biāo)準(zhǔn)。TLS 自標(biāo)準(zhǔn)化至今已有近20年的時(shí)間,自1999年TLS 1.0標(biāo)準(zhǔn)頒布,到后來的TLS 1.1(2006年)和目前得到廣泛使用的TLS 1.2(2008年),TLS是保障網(wǎng)絡(luò)傳輸安全最重要的安全標(biāo)準(zhǔn)之一。然而,廣泛的應(yīng)用也使得TLS成為了攻擊的“眾矢之的”,這些攻擊或利用TLS設(shè)計(jì)本身存在的不足(如幸運(yùn)十三攻擊[1]、三次握手攻擊[2]、跨協(xié)議攻擊[3]等),或利用TLS所用密碼原語本身的缺陷(如RC4加密[4]、RSA-PKCS#1 v1.5加密[5]等),或利用TLS實(shí)現(xiàn)庫中的漏洞(如心臟出血攻擊[6]等)。
面對(duì)這一系列的攻擊,一直以來我們采取的措施是“打補(bǔ)丁”,即針對(duì)新的攻擊做新的修補(bǔ)。然而,由于TLS的應(yīng)用規(guī)模過于龐大,不斷地打補(bǔ)丁在如此大規(guī)模的實(shí)際應(yīng)用中并不容易全面實(shí)施。除此之外,交互雙方必須運(yùn)行復(fù)雜的TLS握手協(xié)議才能開始傳輸信息,很多情況下我們希望在握手輪數(shù)和握手延遲方面可以有更多的選擇。出于以上以及其他種種因素的考慮,IETF從2014年開始著手制定一個(gè)“clean”的TLS1.3。
TLS 1.3的制定過程是“透明”的,即IETF發(fā)布的草案中會(huì)留下若干問題,相關(guān)領(lǐng)域的專家學(xué)者可以就這些問題或者自己有疑問的其他問題通過郵件系統(tǒng)進(jìn)行在線討論[7],而討論結(jié)果也會(huì)在更新后的草案版本中有所體現(xiàn)。目前最新發(fā)布的草案版本是TLS 1.3 draft 19[8](2017年3月)。
除此之外,近兩年也出現(xiàn)了一系列對(duì)TLS 1.3草案的分析工作[9-13],在標(biāo)準(zhǔn)正式頒布之前,這對(duì)于我們對(duì)TLS的全面理解以及TLS安全防護(hù)的設(shè)計(jì)是大有幫助的。
有一個(gè)比較有趣的細(xì)節(jié),TLS新標(biāo)準(zhǔn)的名字并不是TLS 2.0或者其他名字,而是TLS 1.3,即延續(xù)了TLS 1.0、1.1和1.2的名稱。這說明1.3是之前版本的升級(jí),TLS 協(xié)議的大致框架并未發(fā)生本質(zhì)改變。圖1、2為TLS 1.2和TLS 1.3握手協(xié)議的對(duì)比(細(xì)節(jié)請(qǐng)參照標(biāo)準(zhǔn)文檔)。然而,TLS 1.3是TLS標(biāo)準(zhǔn)更新過程中變動(dòng)最大的一次,除了對(duì)運(yùn)行過程中的若干問題如密碼套件的選擇、密鑰的計(jì)算方式、握手消息的發(fā)送方式等做了更改之外,TLS 1.3還增加了新的握手模式,以滿足不同應(yīng)用場(chǎng)景的需求。
圖1 TLS 1.2握手框架
圖2 TLS 1.3握手框架
與之前版本類似,TLS 1.3協(xié)議可分為握手協(xié)議和記錄協(xié)議,前者負(fù)責(zé)密碼組件的協(xié)商以及安全信道的建立,后者則是在已建立的安全信道中傳輸秘密信息。TLS 1.3設(shè)計(jì)的第一個(gè)重要目標(biāo)就是避免之前版本存在的缺陷,為此,一部分相關(guān)的改動(dòng)如下:
(1)禁止使用RSA密鑰傳輸算法。
(2)禁止一些安全性較弱的密碼原語如MD5的使用。
(3)不再支持重協(xié)商握手模式。
(4)握手消息采取了加密操作,如圖2中標(biāo)有{}的部分。
(5)實(shí)現(xiàn)了握手協(xié)議和記錄協(xié)議的密鑰分離。
(6)實(shí)現(xiàn)了會(huì)話密鑰與整個(gè)握手消息的綁定。
(7)記錄層只能使用AEAD(Authenticated Encryption with Additional Data)認(rèn)證加密模式。
相應(yīng)的改動(dòng)還有很多,新發(fā)布的草案中也會(huì)明確說明相比之前版本所做的改動(dòng)。這些改動(dòng)不僅可以避免之前版本存在的問題,如上述(6)使得TLS可以避免三次握手攻擊。同時(shí),也使得TLS的可證明安全分析工作更加方便,如上述(5)使得TLS 1.3可以實(shí)現(xiàn)密鑰不可區(qū)分性質(zhì)的證明,而在TLS1.2中,由于握手協(xié)議和記錄協(xié)議的重疊,無法實(shí)現(xiàn)這一目標(biāo)的證明。
從目前發(fā)布的最新草案來看,TLS 1.3主要支持四種握手模式:(1)基于(EC)DHE密鑰交換的握手模式;(2)基于PSK的會(huì)話重啟,由預(yù)共享密鑰PSK進(jìn)行快速簡短的握手;(3)會(huì)話重啟與(EC)DHE結(jié)合的握手,可以提供前向安全性;(4)基于PSK的0-RTT(round-trip time)握手,客戶端利用PSK導(dǎo)出密鑰,在第一輪就發(fā)送秘密數(shù)據(jù),降低了握手的延遲。在此之后還可以繼續(xù)進(jìn)行(EC)DHE的密鑰交換完成完整的握手(該步為可選)。注意到,0-RTT握手第一輪中加密數(shù)據(jù)所使用的密鑰并沒有服務(wù)器的貢獻(xiàn),因此可能存在重放攻擊。另外,握手模式(4)與(2)或者(3)的區(qū)別僅在于是否在第一輪就傳輸秘密數(shù)據(jù)。
另外,TLS 1.3還定義了一種特殊的認(rèn)證方式:后握手認(rèn)證(post-handshake authentication)。在TLS握手過程中,客戶端的認(rèn)證是可選的,所謂后握手認(rèn)證指的是指握手結(jié)束后,允許服務(wù)器在任何時(shí)刻向客戶端發(fā)起身份認(rèn)證的申請(qǐng),作為回復(fù),客戶端會(huì)發(fā)送證書以及對(duì)本次連接握手內(nèi)容的簽名,除此之外,還會(huì)發(fā)送密鑰確認(rèn)消息以提供對(duì)整個(gè)握手消息和會(huì)話密鑰的確認(rèn)。該條認(rèn)證消息是在記錄層的安全信道中傳輸?shù)摹?/p>
TLS 1.3 draft 19發(fā)布之后,起草者Eric Rescorla在討論列表中列出了仍待解決的問題供大家討論[14],由此可見TLS 新標(biāo)準(zhǔn)的制定工作仍然在進(jìn)行中,而對(duì)于TLS 1.3的研究也會(huì)成為未來的熱點(diǎn)方向。與此同時(shí),TLS 1.2仍然是目前甚至未來相當(dāng)一段時(shí)間內(nèi)被普遍使用或者兼容的TLS 版本,這可能導(dǎo)致TLS 1.2對(duì)TLS 1.3的安全性帶來影響,這也是未來研究的重要方向。
TLS (Transport Layer Security)作為 SSL (Secure Sockets Layer)協(xié)議的后繼者,是目前網(wǎng)絡(luò)通信中應(yīng)用最廣泛的密碼協(xié)議,也是把密碼學(xué)應(yīng)用到實(shí)際中最重要、最典型的實(shí)例之一。TLS 1.2是目前最常用的TLS版本,主要用于保護(hù)通過HTTPs傳輸?shù)男畔?,為各種應(yīng)用提供安全的通信信道,比如電子貨幣交易、郵件傳輸、VPN以及手機(jī)安卓應(yīng)用等等。
鑒于TLS 1.2及之前版本存在一系列的攻擊,比如重協(xié)商攻擊、幸運(yùn) 13 攻擊、三次握手攻擊、BEAST攻擊、Heartbleed等,IETF 目前正在制定TLS新版本即TLS 1.3,目前最新發(fā)布的草案是draft-18。
TLS 1.2和已發(fā)布的TLS 1.3草案均支持多種握手模式,TLS 1.2支持完整握手、會(huì)話重啟握手、重協(xié)商握手等三種握手模式,TLS 1.3 draft 10(本文是針對(duì)TLS 1.3 draft 10所做的工作)支持完整握手、 0-RTT、基于 PSK 的會(huì)話重啟、會(huì)話重啟與 DHE 的結(jié)合等四種模式。除此之外,不同模式的握手并不是完全獨(dú)立的,而是存在一定的關(guān)聯(lián)并且可以組合運(yùn)行,如運(yùn)行TLS 1.2完整握手之后,可以利用完整握手產(chǎn)生的中間密鑰(成為主密鑰)進(jìn)行接下來的會(huì)話重啟握手。然而,不同模式的握手協(xié)議的組合運(yùn)行可能會(huì)導(dǎo)致實(shí)際的攻擊,如2014年Bhargavan等利用TLS 1.2三種不同模式的握手協(xié)議的順序運(yùn)行提出了針對(duì) TLS 1.2 的三次握手攻擊,可以造成在第三次握手完成之后敵手對(duì)客戶端的冒充攻擊。目前,雖然 TLS 每一種獨(dú)立的握手模式的安全性得到了很好的研究,但是組合情況下的安全性仍然是一個(gè)待解決的問題。
圖3 TLS1.3多重握手協(xié)議實(shí)例
我們首先利用多層、多階段的“樹”狀結(jié)構(gòu)給出多重握手(密鑰交換)協(xié)議的正式定義,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一個(gè)會(huì)話 (即一次握手協(xié)議),每個(gè)會(huì)話分為多個(gè)階段,每個(gè)階段均會(huì)產(chǎn)生相應(yīng)的會(huì)話密鑰。除此之外,一個(gè)會(huì)話可能會(huì)使用位于上層的相關(guān)會(huì)話中建立或者傳輸?shù)拿荑€材料,而同一層的會(huì)話是獨(dú)立、并行運(yùn)行的。圖3給出了TLS 1.3多重握手協(xié)議的一個(gè)實(shí)例,其中粗線表示的是“完整握手+ 0-RTT + 基于PSK 的會(huì)話重啟”多重握手組合運(yùn)行模式,在這種情況下,第二層的0-RTT 握手使用的Server onfiguration 信息來源于上層的完整握手,而基于PSK 的會(huì)話重啟握手使用的PSK 來源于上層的0-RTT 會(huì)話產(chǎn)生的RMS。
然后,為了對(duì)多重握手協(xié)議進(jìn)行安全性分析,我們提出了多重握手安全模型——多層多階段的安全模型。作為BR模型的擴(kuò)展,多重握手安全模型主要具有以下性質(zhì):該模型中,協(xié)議的每次執(zhí)行包含多個(gè)會(huì)話(握手),每次會(huì)話的模式也可能是不同的,而且相鄰會(huì)話之間可能存在安全關(guān)聯(lián);該模型考慮了介于靜態(tài)密鑰和臨時(shí)密鑰之間的半靜態(tài)(semi-static) 密鑰,出發(fā)點(diǎn)是TLS 1.3的0-RTT握手模式;模型考慮了同一個(gè)會(huì)話中不同階段會(huì)話密鑰的相關(guān)性以及位于不同層的會(huì)話之間的密鑰相關(guān)性;模型還刻畫了多種認(rèn)證模式即無認(rèn)證、單向認(rèn)證以及雙向認(rèn)證的并行運(yùn)行。模型中定義的安全目標(biāo)為會(huì)話匹配與密鑰安全性,前者提供了直觀上的安全保障,比如匹配會(huì)話擁有相同的會(huì)話密鑰,誠實(shí)會(huì)話的會(huì)話記錄的不可碰撞性等性質(zhì);后者則保證了會(huì)話密鑰的不可區(qū)分性。
最后,利用多重握手模型,我們對(duì)TLS多重握手協(xié)議進(jìn)行了安全性分析。首先給出了TLS 1.3多重握手協(xié)議的安全性證明,該結(jié)果確認(rèn)了TLS 1.3安全設(shè)計(jì)的可靠性;之后,我們說明,與對(duì)TLS 1.3的分析類似,多重握手模型也適用于TLS 1.2多重握手協(xié)議的安全性分析,分析表明,該模型可以識(shí)別針對(duì)TLS 1.2的三次握手攻擊,進(jìn)一步證明了模型的有效性。
目前,TLS 1.3仍在制定過程中,相比于draft 10版本,目前的TLS 1.3對(duì)上述幾種握手模式如0-RTT的運(yùn)行做出了一些更改,也加入了新的功能如post-handshake認(rèn)證功能。這些更改對(duì)于TLS安全性的影響也是我們未來重點(diǎn)關(guān)注的對(duì)象。
(責(zé)編:楊潔)
[1]AlFardan N J, Paterson K G. Lucky thirteen: Breaking the TLS and DTLS record protocols[C]. Proceedings of 2013 IEEE Symposium on Security and Privacy (S&P), 2013. 526-540.
[2]Bhargavan K, Lavaud A D, Fournet C, et al. Triple handshakes and cookie cutters:Breaking and fixing authentication over TLS [C]. Proceedings of 2014 IEEE Symposium on Security and Privacy (S&P), 2014. 98-113.
[3]Mavrogiannopoulos N, Vercauteren F, Velichkov V, et al. A cross-protocol attack on the TLS protocol[C]//Proceedings of the 2012 ACM conference on Computer and communications security. ACM, 2012: 62-72.
[4]AlFardan N J, Bernstein D J, Paterson K G, et al. On the Security of RC4 in TLS [C].Proceedings of 22nd USENIX Security Symposium, 2013. 305-320.
[5]Bleichenbacher D. Chosen ciphertext attacks against protocols based on the RSA encryption standard PKCS #1 [C]. Advances in Cryptology—CRYPTO’98, 1998. 1-12.
[6]Codenomicon. The Heartbleed Bug [EB/OL]. http://heartbleed.com, April 2014.
[7]https://www.ietf.org/mail-archive/Web/tls/current/maillist.html.
[8]Rescorla E. The Transport Layer Security (TLS) Protocol Version 1.3 - draft-ietf-tlstls13-09[S]. https://tools.ietf.org/html/draft-ietf-tls-tls13-19, March, 2017.
[9]Dowling B, Fischlin M, Günther F, et al. A cryptographic analysis of the TLS 1.3 handshake protocol candidates [C]. Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS), 2015. 1197-1210.
[10]Cremers C, Horvat M, Scott S, et al. Automated analysis and verification of TLS 1.3:0-RTT, resumption and delayed authentication[C]//Security and Privacy (SP), 2016 IEEE Symposium on. IEEE, 2016: 470-485.
[11]Fischlin M, Günther F, Schmidt B, et al. Key confirmation in key exchange: a formal treatment and implications for TLS 1.3[C]//Security and Privacy (SP), 2016 IEEE Symposium on.IEEE, 2016: 452-469.
[12]Li X, Xu J, Zhang Z, et al. Multiple handshakes security of TLS 1.3 candidates[C]//Security and Privacy (SP), 2016 IEEE Symposium on. IEEE, 2016: 486-505.
[13]Krawczyk H, Wee H. The OPTLS protocol and TLS 1.3[C]//Security and Privacy(EuroS&P), 2016 IEEE European Symposium on. IEEE, 2016: 81-96.
[14]https://www.ietf.org/mail-archive/Web/tls/current/msg22593.html.
為中國科學(xué)院軟件研究所)
李新宇
本科、碩士就讀于中國科學(xué)技術(shù)大學(xué),現(xiàn)為中國科學(xué)院軟件研究所在讀博士生,目前的研究方向主要為密碼協(xié)議的設(shè)計(jì)與安全性分析。