◆鐘焰濤 黃萬巧 楊炎 張瑤 郝琦
(1.深圳市網(wǎng)安計算機安全檢測技術有限公司廣東 518071;2.廣東安證計算機司法鑒定所廣東 518071)
隨著互聯(lián)網(wǎng)在人們?nèi)粘I鐣钪袘迷絹碓綇V泛,網(wǎng)絡攻擊事件也日漸普遍,并逐漸引發(fā)網(wǎng)絡安全相關風險。為了保障互聯(lián)網(wǎng)絡的安全性,安全協(xié)議應運而生。其中傳輸層安全( transport layer security,TLS)協(xié)議是應用最廣的安全通信協(xié)議[1],該協(xié)議基于網(wǎng)絡傳輸層,并為應用層提供服務,其作用是為點對點的通信雙方建立安全通信信道。目前該協(xié)議的最新版本是1.3版[2],于2018年8月由IETF(國際互聯(lián)網(wǎng)工程任務組)正式發(fā)布。新版本通過支持強度更高的密碼算法具有更高的安全性,同時具有降低網(wǎng)絡延遲等優(yōu)良特性。
自TLS 1.3草案階段起直到協(xié)議的正式發(fā)布,已經(jīng)有許多針對該協(xié)議的安全性分析成果。Bhargavan和Leurent[21]對TLS1.2 客戶端身份驗證的證書轉(zhuǎn)發(fā)攻擊進行了研究,并進一步將攻擊擴展到針對TLS 1.3服務器身份驗證和通道綁定的證書。研究成果公開后,為避免上述攻擊對協(xié)議安全性的影響,IETF修訂了最終發(fā)布的協(xié)議正式版。Krawczyk[23]提出一個能將單向認證密鑰交換協(xié)議轉(zhuǎn)變?yōu)榛ハ嗾J證密鑰交換協(xié)議的協(xié)議編譯器,并針對TLS 1.3協(xié)議引入廣義的密鑰交換模型。Li等[22]提出一個新的安全模型,并證明TLS1.3在該模型中的安全性。Dowling 等[20]在2015年的ACM CCS 會議上對基于Diffie-Hellman 的握手協(xié)議進行分析,并提出“多級密鑰交換安全”概念,證明其可以結(jié)合任意密鑰協(xié)議,記錄層所使用的會話密鑰安全性得以證明。Bhargavan等[24]分析了TLS1.3 記錄協(xié)議,并基于參數(shù)計算了協(xié)議中不同密碼套件的具體安全性指標,完成可證明安全的 TLS1.3記錄協(xié)議的工程實現(xiàn)。
基于密碼技術的網(wǎng)絡安全防護措施受到量子計算發(fā)展的大力沖擊[3]。前述對 TLS1.3協(xié)議的安全性分析都沒有考慮到量子計算攻擊的影響。量子計算機能夠通過運行量子算法快速解決一些經(jīng)典計算機無法有效解決的數(shù)學問題,對當前廣泛應用的密碼體系產(chǎn)生嚴重威脅。量子算法中最著名的是Shor算法[4]和Grover算法[5],其中Shor算法可以在多項式時間內(nèi)解決大整數(shù)分解問題、離散對數(shù)問題,嚴重威脅在TLS1.3中所使用的RSA[6]、ECDSA[7]等密碼算法的安全性。
本文針對量子算法發(fā)展的現(xiàn)狀,使用 ProVerif工具[8]對 TLS1.3協(xié)議進行分析,并依據(jù)分析結(jié)果,提出在TLS1.3協(xié)議中使用基于格密碼方案來實現(xiàn)抗量子計算攻擊,提升協(xié)議的安全性和運行效率。
TLS1.3協(xié)議由三部分組成:握手協(xié)議、警告協(xié)議和記錄協(xié)議。如圖1所示,該協(xié)議在TCP /IP協(xié)議簇中的位置介于應用層、TCP層之間,可用于封裝上層多種應用協(xié)議。
圖1 TLS1.3協(xié)議在TCP/IP協(xié)議族中的位置
TLS 1.3的握手協(xié)議用于通信雙方生成會話狀態(tài)參數(shù),包括密碼算法名、TLS協(xié)議版本、雙方標識、密碼算法公開參數(shù)等信息。握手協(xié)議成功之后,TLS的記錄協(xié)議使用由握手協(xié)議生成的安全參數(shù)進行安全通信。數(shù)據(jù)發(fā)送方將上層數(shù)據(jù)傳輸單元進行合理分片,對數(shù)據(jù)分片有選擇性地壓縮,進一步對數(shù)據(jù)分片計算消息認證碼MAC、加密,得到TLS層的數(shù)據(jù)傳輸單元,交給下層協(xié)議進行傳輸;對應的,數(shù)據(jù)接收方收到加密數(shù)據(jù)快后,將數(shù)據(jù)塊解密后驗證MAC碼,并重組為上層數(shù)據(jù)傳輸單元后遞交給上層應用協(xié)議。
Shor算法是開創(chuàng)性的整數(shù)分解算法[4],該算法在1994年提出以后吸引了眾多研究,同時也掀起了量子計算機研究的熱潮。Shor算法充分展現(xiàn)了量子算法在解決某些經(jīng)典問題時的計算優(yōu)勢,算法核心思想是利用因子分解問題的特殊結(jié)構(gòu),把整數(shù)因子分解問題變換為求特定函數(shù)周期的問題,并使用量子算法快速地求解函數(shù)周期,進而找到整數(shù)的分解因子。
因為互聯(lián)網(wǎng)中廣泛使用的RSA公鑰密碼體制、Diffie Hellman密鑰交換協(xié)議、橢圓曲線公鑰密碼體系所依賴的數(shù)學困難問題可以很容易轉(zhuǎn)化為前述特定函數(shù)周期問題,因此Shor算法對密碼學有重大影響,嚴重威脅現(xiàn)有的網(wǎng)絡信息安全格局[17]。
盡管大規(guī)模通用的量子計算機能不能實現(xiàn)、什么時候才能實現(xiàn)還存在較大爭議,但各國政府、大型研究機構(gòu)均已發(fā)起了設計抵抗量子計算模型的公鑰密碼算法的研究計劃,希望能夠用抗量子攻擊的密碼算法逐步替代現(xiàn)有密碼算法,以確保量子計算時代的信息安全。該研究方向通常被稱為“后量子密碼學(Post-Quantum Cryptogra- phy)”[9],是目前非?;钴S的新興密碼學研究方向。美國國家安全局(NSA)2015年8月宣布抗量子密碼算法的遷移計劃[10];同年NIST發(fā)起舉行了“后量子網(wǎng)絡安全研討會”,并于2017征集后量子公鑰密碼算法[11],力圖推進后量子密碼學的標準化工作,目前已經(jīng)初見成效。
用于構(gòu)建后量子密碼系統(tǒng)的底層數(shù)學工具包括:糾錯碼[13]、哈希函數(shù)[12]、超奇異橢圓曲線同源問題[16]、格[14]、多變量方程[15]等。其中基于格的密碼是最通用的一類,在格密碼中幾乎可以實現(xiàn)所有經(jīng)典密碼概念。本文使用基于格密碼方案對TLS1.3協(xié)議進行改進,實現(xiàn)協(xié)議的抗量子計算攻擊安全性。
使用協(xié)議分析工具 Proverif軟件[8](版本:2.01)模擬量子計算攻擊場景下的TLS1.3協(xié)議。當攻擊者具有量子計算能力時,可以使用量子算法破解RSA問題和離散對數(shù)問題,實現(xiàn)對協(xié)議中所使用的數(shù)字簽名算法和密鑰協(xié)商協(xié)議進行攻擊,計算出簽名私鑰并從公開參數(shù)獲取臨時秘密值,并破壞 Diffie-Hellman密鑰協(xié)商協(xié)議的安全性。以下代碼模擬攻擊者的密鑰破解能力和秘密值破解能力:
fun Quantum_attack1(pubkey):privkey.
fun Quantum_attack2(elli_curve_para):secrete_value.
服務器進程為證明自己身份,使用私鑰進行簽名并將簽名值發(fā)送給客戶進程,如下述代碼所示:
out(io,sign(sk_sign,Transcript-Hash (Handshake Context,Certificate)));
經(jīng)Proverif模擬仿真,發(fā)現(xiàn)上述攻擊者能夠破壞協(xié)議的實體認證性,即能夠仿冒服務器與客戶端交互完成協(xié)議會話;并且能夠破壞會話密鑰的機密性,即能夠獲取握手協(xié)議中協(xié)商的密鑰。上述兩種攻擊的攻擊路徑如圖2和圖3所示。
如圖2所示,攻擊者使用量子計算能力直接從TLS握手的消息中獲取會話密鑰。
如圖 3,攻擊者利用量子計算能力從驗證公鑰中恢復簽名密鑰,并利用該密鑰仿冒服務器。
圖2 攻破TLS1.3會話密鑰機密性的攻擊路徑
圖3 攻破TLS1.3握手協(xié)議認證性的攻擊路徑
為使用基于格密碼體制實現(xiàn)抗量子攻擊安全性,需要對握手協(xié)議和記錄協(xié)議分別進行改進,使協(xié)議能夠?qū)崿F(xiàn)基于格的數(shù)字簽名和哈希算法。
(1)改進握手協(xié)議
-TLS客戶端發(fā)送的 ClientHello消息、服務器端發(fā)送的ServerHello消息的密碼套件包含 HKDF(HMAC-based Extract-and-Expand Key Derivation Function)函數(shù)列表,在該密碼套件中增加SWIFFT函數(shù)[18]作為備選HKDF函數(shù)之一;
-TLS客戶端發(fā)送的 ClientHello消息可擴展字段signature_algorithms_cert、signature_algorithms中增加 NTRU[19]簽名算法作為備選簽名算法之一;
-TLS服務器和客戶(可選)發(fā)送的證書認證消息中,使用NTRU算法進行數(shù)字簽名運算;
-TLS客戶端和服務器(可選)收到對方發(fā)來的證書認證消息后,使用NTRU算法驗證數(shù)字簽名正確性和證書的合法性。
(2)改進記錄協(xié)議
在通信雙方完成TLS握手之后,記錄協(xié)議對數(shù)據(jù)進行數(shù)據(jù)時,使用SWIFFT函數(shù)計算MAC碼,實現(xiàn)消息認證。
SWIFFT哈希算法是基于格的可證明安全哈希算法,采用快速傅里葉變換實現(xiàn)迭代過程中高效的多項式乘法運算。NTRU簽名算法是基于格的輕量級簽名算法,工作在環(huán)R=Z[x]/(xn-1)上,安全性依賴于格中的最短向量問題,該問題目前無法被經(jīng)典算法及量子算法解決,即使是具有量子計算的攻擊者也無法偽造NTRU算法生成的數(shù)字簽名。在 Proverif協(xié)議仿真過程中,將 Quantum_attack1函數(shù)和Quantum_attack2函數(shù)移除,模擬攻擊者無法通過量子計算能力幫助獲取簽名私鑰以及獲取臨時秘密值。
圖4展示了改進協(xié)議的Proverif仿真結(jié)果。結(jié)果表明,量子計算攻擊者在仿真實驗中無法獲取有效的攻擊路徑,無法對改進協(xié)議實施有效的攻擊。
圖4 TLS改進協(xié)議的安全性分析
為分析改進方案的運算性能,使用 C++語言分別模擬一對客戶端和服務器結(jié)點使用TLS1.3改進協(xié)議和原協(xié)議進行握手的過程,兩個結(jié)點之間單個數(shù)據(jù)包傳輸、接收和處理時間設定為滿足均值為200ms的指數(shù)分布。改進協(xié)議使用NTRU簽名方案和SWIFFT哈希算法分別代替原協(xié)議中的 RSA簽名方案和 sha256哈希算法,其中NTRU簽名方案和SWIFFT哈希算法使用現(xiàn)有的開源軟件包實現(xiàn)[25,26]。模擬平臺軟硬配置如表1所示。
表1 實驗平臺配置
圖 5對比了在不同會話并發(fā)數(shù)場景下原方案和改進方案的握手協(xié)議完成所需時間,由圖2可以看出,在1~104并發(fā)數(shù)時,改進后協(xié)議的TLS握手所需時間均低于原協(xié)議握手所需時間。改進協(xié)議計算效率更高的原因在于NTRU算法和SWIFFT算法采用矩陣乘法,RSA算法采用模冪算法,sha256使用Merkle-Damgard迭代結(jié)構(gòu),矩陣乘法運算和后兩者相比,具有運算速度更快的特點,因此握手過程密碼學運算所需時間較少,整個握手協(xié)議所需時間也就更少,效率較高。
圖5 方案性能比較
本文提出了抗量子攻擊的TLS1.3協(xié)議改進方案。首先通過仿真分析展示量子計算有效解決離散對數(shù)問題和求解大整數(shù)分解的能力對TLS1.3協(xié)議安全性具有巨大威脅,進一步提出使用基于格的密碼算法對TLS1.3握手協(xié)議進行改進,使用NTRU算法實現(xiàn)發(fā)送方證書驗證消息的數(shù)字簽名和接收方對證書信息的簽名驗證,并使用SWIFFT算法對握手協(xié)議上下文的哈希計算。安全性分析表明,改進協(xié)議能夠抵抗量子計算攻擊。仿真實驗結(jié)果表明,改進協(xié)議握手執(zhí)行過程所需時間比原協(xié)議更少,效率更高。