黃杰彬,王立斌
(華南師范大學(xué) 計(jì)算機(jī)學(xué)院, 廣東 廣州 510631)
密鑰交換(Key Exchange,KE)協(xié)議是確保互聯(lián)網(wǎng)安全的核心構(gòu)件之一,用于公開(kāi)不可信的網(wǎng)絡(luò)信道下通信雙方進(jìn)行會(huì)話(huà)密鑰協(xié)商。在保障安全性的前提下,效率一直是該類(lèi)協(xié)議的主要設(shè)計(jì)目標(biāo)之一[1-3]。此前,協(xié)議主體的加密運(yùn)算過(guò)程是引發(fā)通信延遲產(chǎn)生的主要原因,但隨著計(jì)算設(shè)備和相關(guān)算法的不斷優(yōu)化,此類(lèi)影響已大幅降低。進(jìn)而,有效負(fù)載數(shù)據(jù)發(fā)送前建立臨時(shí)會(huì)話(huà)密鑰所需的往返時(shí)間(Round-Trip Time,RTT)成為協(xié)議效率考量的重要指標(biāo)。
傳統(tǒng)的認(rèn)證密鑰交換(Authenticated Key Ex-change,AKE)協(xié)議設(shè)計(jì)往往具有較高的RTT時(shí)延。如廣泛使用的傳輸層安全(Transport Layer Secu-rity,TLS)協(xié)議標(biāo)準(zhǔn)[2],其舊版(TLS1.0,1.1和1.2)的握手協(xié)議需要2-RTT時(shí)延進(jìn)行臨時(shí)會(huì)話(huà)密鑰協(xié)商。即使是經(jīng)典的高效AKE協(xié)議HMQV[4],其建立臨時(shí)會(huì)話(huà)密鑰也需要兩個(gè)報(bào)文發(fā)送時(shí)間,即1-RTT的傳輸時(shí)延。
0-RTT密鑰交換協(xié)議是確保網(wǎng)絡(luò)通信安全和高效的重要密碼學(xué)構(gòu)件。該類(lèi)協(xié)議允許客戶(hù)端在會(huì)話(huà)發(fā)起的首個(gè)報(bào)文時(shí)間內(nèi)建立臨時(shí)會(huì)話(huà)密鑰,因此,無(wú)需任何報(bào)文交換便可加密傳輸有效負(fù)載數(shù)據(jù),從而最小化通信連接時(shí)延。QUIC(Quick UDP Internet Connection)協(xié)議[5]是首個(gè)實(shí)際應(yīng)用的0-RTT密鑰交換協(xié)議,得到了學(xué)者們的廣泛關(guān)注并開(kāi)展了許多相關(guān)研究[1-3,5-10]。隨后,TLS1.3[2]標(biāo)準(zhǔn)制訂明確了當(dāng)前密鑰交換協(xié)議的主要設(shè)計(jì)目標(biāo)有實(shí)現(xiàn)零往返時(shí)長(zhǎng)的密鑰交換協(xié)議、協(xié)議必須具備前向安全性及舊有協(xié)議應(yīng)遷移至更高效的密碼體制等3個(gè)方面。
在后量子時(shí)代,RSA問(wèn)題、Diffie-Hellman(DH)問(wèn)題等傳統(tǒng)的數(shù)論難題,存在概率性多項(xiàng)式時(shí)間的求解算法[11],導(dǎo)致現(xiàn)有的0-RTT密鑰交換協(xié)議設(shè)計(jì)不具備后量子安全性。
強(qiáng)安全的0-RTT密鑰交換協(xié)議分析與設(shè)計(jì)的主要工作內(nèi)容包括以下3個(gè)方面。
1)分析總結(jié)該領(lǐng)域當(dāng)前的發(fā)展?fàn)顩r,包括協(xié)議設(shè)計(jì)和安全模型定義等,指出若干亟待解決的問(wèn)題。
2)分析當(dāng)前存在的問(wèn)題,給出一種0-RTT密鑰交換協(xié)議的強(qiáng)安全模型定義。
3)針對(duì)后量子安全的0-RTT密鑰交換協(xié)議設(shè)計(jì),在新模型的指導(dǎo)下,給出格密碼體制下該協(xié)議設(shè)計(jì)的若干思路。
根據(jù)協(xié)議的構(gòu)造方式不同,現(xiàn)有0-RTT密鑰交換協(xié)議可分為基于Diffie-Hellman(DH)密鑰交換的0-RTT密鑰交換協(xié)議、基于預(yù)共享密鑰(Pre-share Key)模式的0-RTT密鑰交換協(xié)議和基于可穿刺加密(Puncturable Encryption)協(xié)議的0-RTT密鑰交換協(xié)議等3類(lèi)。
QUIC協(xié)議[5]是基于DH密鑰交換的0-RTT密鑰交換協(xié)議。該協(xié)議假設(shè)客戶(hù)端在實(shí)際的密鑰交換進(jìn)行前,通過(guò)之前與服務(wù)器發(fā)生的會(huì)話(huà),已緩存了相關(guān)的服務(wù)器配置信息。該配置信息實(shí)際包含一個(gè)由服務(wù)器簽名認(rèn)證的半靜態(tài)DH公鑰,并且對(duì)應(yīng)秘密指數(shù)在有效期內(nèi)(通常為兩天)存儲(chǔ)于服務(wù)器本身。通信發(fā)生時(shí),客戶(hù)端基于該半靜態(tài)DH公鑰可實(shí)時(shí)建立起臨時(shí)會(huì)話(huà)密鑰K1,用于首輪通信內(nèi)有效負(fù)載數(shù)據(jù)(payload)的對(duì)稱(chēng)認(rèn)證加密(Authenticated Encrypt,AE),達(dá)到0-RTT通信時(shí)延的要求。由于K1的建立未有服務(wù)器生成的臨時(shí)信息參與,不具備前向安全性,攻擊者通過(guò)后續(xù)的服務(wù)器秘密指數(shù)泄露可計(jì)算出該密鑰(會(huì)話(huà)結(jié)束后的相當(dāng)長(zhǎng)時(shí)間內(nèi)),解密監(jiān)聽(tīng)協(xié)議報(bào)文。因此,后續(xù)協(xié)議過(guò)程需要將通信會(huì)話(huà)密鑰升級(jí)到前向安全的主密鑰K2。具體協(xié)議過(guò)程如圖1所示。
圖1 QUIC協(xié)議
隨后,Hale和Jager等人基于非交互式密鑰交換(Non-Interactive Key Exchange,NIKE)協(xié)議和數(shù)字簽名,給出了0-RTT密鑰交換協(xié)議的首個(gè)通用構(gòu)造方案[1]。但該方案使用的NIKE構(gòu)件在實(shí)現(xiàn)上依賴(lài)經(jīng)典密碼體制的Paring結(jié)構(gòu),因此,通用性較差,在其他密碼體制下實(shí)例化較為困難。
TLS1.3的0-RTT握手協(xié)議[2-3]基于預(yù)共享密鑰模式設(shè)計(jì),本質(zhì)上是0-RTT的會(huì)話(huà)恢復(fù)協(xié)議。該協(xié)議在通信發(fā)生時(shí),首先使用1-RTT的密鑰交換協(xié)議建立會(huì)話(huà)密鑰,以此進(jìn)一步協(xié)商出Pre-share Key。該密鑰有效期與會(huì)話(huà)時(shí)長(zhǎng)綁定,并在會(huì)話(huà)重用時(shí)直接用于本輪通信數(shù)據(jù)的加密傳輸。同樣的,該類(lèi)協(xié)議存在前述的0-RTT密鑰前向安全性問(wèn)題,因此,在后續(xù)的協(xié)議過(guò)程中,將根據(jù)獲取的報(bào)文信息升級(jí)到前向安全的主密鑰K2。
2017年,Günther和Hale等人針對(duì)該類(lèi)協(xié)議0-RTT 密鑰的前向安全性問(wèn)題和重放攻擊問(wèn)題,提出了基于可穿刺加密的一次前向安全密鑰交換協(xié)議(Forward-Secret One-Pass Key Exchange Protocol,F(xiàn)SOPKE)[6]。該協(xié)議指出,解決問(wèn)題的關(guān)鍵在于服務(wù)器存儲(chǔ)和處理密鑰的方式,并基于層次化身份加密(Hierarchical Identity-based En-cryption,HIBE)協(xié)議和一次簽名(One-Time Sig-nature)方案,提出了實(shí)現(xiàn)FSOPKE的通用構(gòu)造方案。該方案在保持公鑰不變的情況下,私鑰信息實(shí)質(zhì)上是鏈?zhǔn)降亩鏄?shù),并且在每次密鑰協(xié)商后更新(舍棄當(dāng)前解密節(jié)點(diǎn),保留剪枝后的其余節(jié)點(diǎn)信息),使相同報(bào)文后續(xù)無(wú)法重新解密。該方案確實(shí)有效解決了0-RTT密鑰交換協(xié)議首輪通信的重放攻擊問(wèn)題和前向安全性問(wèn)題,但要求通信雙方建立起同步時(shí)鐘,以避免多次通信后服務(wù)器的長(zhǎng)期私鑰存儲(chǔ)過(guò)度增長(zhǎng)的問(wèn)題。
2018年,Derler和Jager等人基于布隆過(guò)濾器加密(Bloom Filter Encryption)給出了一種效率改進(jìn)的FSOPKE通用構(gòu)造方案[7],但該方案密鑰協(xié)商失敗的概率是不可忽略概率的。
目前,基于可穿刺加密的0-RTT 密鑰交換協(xié)議仍只是概念上的啟發(fā)性工作,盡管其明確了完善前向安全性和抗重放攻擊是可行的安全目標(biāo),但該類(lèi)協(xié)議目前效率較低,并且同步時(shí)鐘維護(hù)在現(xiàn)實(shí)計(jì)算環(huán)境中難以大范圍實(shí)現(xiàn)。
安全模型是分析協(xié)議安全性、指導(dǎo)協(xié)議設(shè)計(jì)的基礎(chǔ)理論工具,具體定義了協(xié)議的理論運(yùn)行環(huán)境、與攻擊者能力匹配的可查詢(xún)預(yù)言機(jī)和協(xié)議的具體安全目標(biāo)(通?;诓豢蓞^(qū)分性安全游戲)。借助安全模型的理論框架,協(xié)議安全性可與相關(guān)難題求解的困難性建立規(guī)約,從而滿(mǎn)足現(xiàn)代密碼學(xué)可證明安全的理論需要。因此,迫切需要通用和面向?qū)嵺`的0-RTT密鑰交換安全模型。
2014年,F(xiàn)ischlin和Günther旨在分析QUIC協(xié)議的安全性,提出了用于多階段密鑰交換協(xié)議安全性分析的安全模型定義[8]。該模型主要考究通信過(guò)程中,信道安全屬性變化的情況下密鑰交換協(xié)議和對(duì)稱(chēng)加密協(xié)議組合的安全性。該模型具有較高的通用性,可用于TLS1.3握手協(xié)議的安全性分析。但為描述各類(lèi)通信階段,該模型運(yùn)行環(huán)境需要維護(hù)大量階段狀態(tài)信息,規(guī)范細(xì)節(jié)十分復(fù)雜。一方面其安全證明不直觀且易于出錯(cuò);另一方面掩蓋了0-RTT密鑰交換協(xié)議的核心構(gòu)造思想,不適合指導(dǎo)具體的設(shè)計(jì)。該模型后續(xù)被進(jìn)一步拓展[9],用于分析多階段密鑰交換協(xié)議的重放攻擊問(wèn)題。
2016年,Krawczyk和Wee針對(duì)OPTLS協(xié)議定義了新的0-RTT密鑰交換安全模型[2]。該模型融合了經(jīng)典雙邊認(rèn)證密鑰交換協(xié)議的Canetti-Krawczyk安全模型[12](CK模型),但將安全性分析劃分為0-RTT密鑰和主密鑰兩個(gè)階段,不能考究各密鑰的相關(guān)性,無(wú)法整體分析協(xié)議的安全性。
2017年,Hale和Jager定義了一個(gè)簡(jiǎn)潔0-RTT 密鑰交換安全模型[1],主要針對(duì)現(xiàn)有單邊認(rèn)證形式為主體的0-RTT密鑰交換協(xié)議。保持結(jié)構(gòu)清晰的前提下,該模型完善地考慮了該類(lèi)協(xié)議的主要安全目標(biāo),強(qiáng)調(diào)了協(xié)議整體安全的強(qiáng)密鑰獨(dú)立性(Strong Key Independence)和主密鑰的前向安全性,但在信息泄露安全上刻畫(huà)較為薄弱,未考慮實(shí)踐計(jì)算環(huán)境下存在的中間信息泄露問(wèn)題。
2018年,Günther和Hale等人針對(duì)FSOPKE協(xié)議的提出建立了新的安全模型[6]。該模型針對(duì)性較強(qiáng),主要面向基于可穿刺加密的完善前向安全性0-RTT密鑰交換協(xié)議設(shè)計(jì)。
綜合以上,現(xiàn)階段的0-RTT密鑰交換安全模型定義或過(guò)度考慮適用性,存在模型定義過(guò)于復(fù)雜的問(wèn)題;或針對(duì)性過(guò)強(qiáng),僅適合某單一類(lèi)型的0-RTT密鑰交換協(xié)議分析。Hale和Jager等人提出的安全模型[1]盡管已有較好的通用性并適合指導(dǎo)具體的協(xié)議設(shè)計(jì),但該模型沒(méi)有很好地對(duì)攻擊者信息泄露能力進(jìn)行刻畫(huà),其存在對(duì)攻擊者能力限定過(guò)強(qiáng),與實(shí)踐攻擊情形不匹配的問(wèn)題,仍具有改進(jìn)的空間。
首先給出服務(wù)器單邊認(rèn)證形式下,0-RTT密鑰交換協(xié)議的概念定義。
定義1服務(wù)器單邊認(rèn)證的0-RTT密鑰交換協(xié)議由以下4個(gè)算法構(gòu)成。
1)Gen(1λ)→(Kpj,Ksj)。該算法為概率性多項(xiàng)式時(shí)間算法,用于生成服務(wù)器Sj的公私鑰對(duì),輸入安全參數(shù)λ,輸出公私鑰對(duì)(Kpj,Ksj)。
針對(duì)0-RTT密鑰交換協(xié)議,Hale和Jager等人定義了簡(jiǎn)潔0-RTT密鑰交換安全模型[1](以下簡(jiǎn)稱(chēng)HJ模型),其本質(zhì)是傳統(tǒng)的一輪AKE安全模型的變體。該模型描述了該類(lèi)協(xié)議的主要安全目標(biāo),并強(qiáng)調(diào)了強(qiáng)密鑰獨(dú)立性,即0-RTT臨時(shí)會(huì)話(huà)密鑰K1和K2相互獨(dú)立,其中一個(gè)密鑰泄露不影響另一密鑰的安全性,以及主密鑰K2的前向安全性。
不同于傳統(tǒng)AKE安全模型,HJ模型的會(huì)話(huà)標(biāo)識(shí)單獨(dú)使用客戶(hù)端預(yù)言機(jī)或服務(wù)器預(yù)言機(jī)表示,從而使會(huì)話(huà)歸屬方清晰且會(huì)話(huà)標(biāo)識(shí)更加簡(jiǎn)單。但是在模擬執(zhí)行環(huán)境時(shí),客戶(hù)端預(yù)言機(jī)需要維持相關(guān)的中間狀態(tài)信息以記錄當(dāng)前的匹配服務(wù)器,而且僅能保存當(dāng)前會(huì)話(huà)狀態(tài),之前的會(huì)話(huà)信息將丟失,不便于匹配會(huì)話(huà)的概念表達(dá)。該種標(biāo)識(shí)方式在HJ模型中是合理的,因?yàn)槠浒踩x中明確攻擊者挑戰(zhàn)服務(wù)器密鑰時(shí),必須有真實(shí)客戶(hù)端預(yù)言機(jī)的會(huì)話(huà)信息與之匹配。這意味著攻擊者僅能對(duì)首輪協(xié)議報(bào)文進(jìn)行被動(dòng)攻擊,否則是無(wú)意義的。實(shí)際上,0-RTT密鑰交換協(xié)議首輪報(bào)文信息內(nèi)包含有加密的負(fù)載數(shù)據(jù),攻擊者通過(guò)部分篡改報(bào)文的主動(dòng)攻擊方式存在獲取該數(shù)據(jù)的可能。因此,該定義不能很好地刻畫(huà)攻擊者在現(xiàn)實(shí)環(huán)境下的攻擊能力。
在信息泄露安全定義上,HJ模型未完善考慮現(xiàn)實(shí)環(huán)境中存在的信息泄露問(wèn)題,攻擊者不具備State Reveal的預(yù)言機(jī)查詢(xún)功能,與現(xiàn)實(shí)環(huán)境中攻擊者通過(guò)木馬病毒等方式入侵實(shí)體監(jiān)聽(tīng)內(nèi)存信息的攻擊方式不匹配。除此之外,該模型在攻擊者挑戰(zhàn)服務(wù)器密鑰信息時(shí),安全定義上未考慮攻擊者是否對(duì)服務(wù)器發(fā)起過(guò)Corrupt查詢(xún),在會(huì)話(huà)新鮮性的定義上不嚴(yán)謹(jǐn)。
新安全模型旨在解決上述HJ模型存在的相關(guān)問(wèn)題,以指導(dǎo)更面向?qū)嵺`的強(qiáng)安全0-RTT密鑰交換協(xié)議設(shè)計(jì)。
針對(duì)信息泄露安全的形式化定義,首先明確現(xiàn)實(shí)計(jì)算環(huán)境中主要存在的信息泄露方式,即實(shí)踐網(wǎng)絡(luò)環(huán)境下,攻擊者通過(guò)木馬病毒等方式入侵通信實(shí)體可監(jiān)聽(tīng)內(nèi)存獲取協(xié)議中間計(jì)算信息,或通過(guò)邊信道攻擊等方式獲取當(dāng)前會(huì)話(huà)密鑰,或攻擊者為內(nèi)部人員,具有某一實(shí)體的長(zhǎng)期公私鑰信息。
指導(dǎo)抗信息泄露的0-RTT密鑰交換協(xié)議設(shè)計(jì),需要精確刻畫(huà)該類(lèi)威脅的強(qiáng)安全模型,明確信息泄露安全的形式化定義。傳統(tǒng)雙邊認(rèn)證密鑰交換協(xié)議的CK模型[12]在給予攻擊者通信鏈路控制能力的同時(shí),還定義了攻擊者獲取信息泄露的3種預(yù)言機(jī)查詢(xún)能力。
1)StateReveal。攻擊者指定某未完成會(huì)話(huà)的會(huì)話(huà)標(biāo)識(shí),獲得該會(huì)話(huà)的中間狀態(tài)信息(不包括長(zhǎng)期密鑰信息)。該預(yù)言機(jī)匹配攻擊者入侵通信實(shí)體,監(jiān)聽(tīng)內(nèi)存協(xié)議中間狀態(tài)信息過(guò)程。
2)KeyReveal。攻擊者指定某完成會(huì)話(huà)的會(huì)話(huà)標(biāo)識(shí),獲得該會(huì)話(huà)達(dá)成的臨時(shí)協(xié)商密鑰。該預(yù)言機(jī)匹配現(xiàn)實(shí)場(chǎng)景下的會(huì)話(huà)密鑰泄露。
3)Corrupt。攻擊者指定某一通信實(shí)體,獲得長(zhǎng)期密鑰信息在內(nèi)的所有會(huì)話(huà)信息,并可偽裝成該用戶(hù)。該預(yù)言機(jī)描述現(xiàn)實(shí)中攻擊者為內(nèi)部人員的攻擊方式。
區(qū)別于傳統(tǒng)密鑰交換協(xié)議的雙邊認(rèn)證形式,現(xiàn)有0-RTT密鑰交換協(xié)議主要是服務(wù)器單邊認(rèn)證形式,客戶(hù)端不具備長(zhǎng)期的公私密鑰信息。因此,引入以上的信息泄露安全定義時(shí),應(yīng)根據(jù)單邊認(rèn)證的協(xié)議形式適應(yīng)性修改。如果定義太強(qiáng),則難以構(gòu)造滿(mǎn)足安全定義的協(xié)議設(shè)計(jì);反之太弱,則無(wú)法指導(dǎo)抵抗實(shí)踐攻擊類(lèi)型的協(xié)議設(shè)計(jì)。因此,需遵循原則:會(huì)話(huà)密鑰泄露不影響其他會(huì)話(huà)安全:包括0-RTT臨時(shí)密鑰K1和主密鑰K2;中間狀態(tài)值泄露不影響到其他會(huì)話(huà)安全,如臨時(shí)密鑰信息和部分中間計(jì)算值;服務(wù)器長(zhǎng)期私鑰泄露不影響其泄露之前發(fā)生會(huì)話(huà)的安全性。
基于HJ模型,給出一種新的0-RTT 密鑰交換強(qiáng)安全模型。新模型沿用CK模型的符號(hào)標(biāo)記以便于匹配會(huì)話(huà)等相關(guān)概念表述,在保留強(qiáng)密鑰獨(dú)立性和主密鑰前向安全性的屬性刻畫(huà)前提下,允許攻擊者通過(guò)StateReveal預(yù)言機(jī)查詢(xún)獲取服務(wù)器的中間計(jì)算信息。此外,新模型允許攻擊者主動(dòng)攻擊客戶(hù)端發(fā)送的首輪協(xié)議報(bào)文,以更精確地刻畫(huà)實(shí)際攻擊情形。
運(yùn)行環(huán)境令λ為安全參數(shù),將客戶(hù)端和服務(wù)器模擬為概率性多項(xiàng)式時(shí)間圖靈機(jī)。假設(shè)客戶(hù)端數(shù)量d=poly(λ),標(biāo)記為Ci,i∈[d]。服務(wù)器數(shù)量l=poly(λ),標(biāo)記為Sj,j∈[l]。各服務(wù)器均擁有一對(duì)長(zhǎng)期的公私鑰(Kpj,Ksj),j∈[l]??蛻?hù)端不具有長(zhǎng)期公私鑰??蛻?hù)端可獲取各服務(wù)器的長(zhǎng)期公鑰Kp1,…,Kpl。
會(huì)話(huà)客戶(hù)端Ci被初始化執(zhí)行一個(gè)0-RTT協(xié)議實(shí)例,稱(chēng)為會(huì)話(huà)。
會(huì)話(huà)標(biāo)識(shí)使用四元組(Pa,Pb,Mout,Min)標(biāo)識(shí)會(huì)話(huà),其中,P分別表示客戶(hù)端Ci和服務(wù)器Sj,Pa是會(huì)話(huà)的擁有者,Pb為對(duì)等方,Mout表示Pa發(fā)送給Pb的報(bào)文,Min表示Pa接收到來(lái)自Pb的報(bào)文。每個(gè)會(huì)話(huà)由唯一的會(huì)話(huà)標(biāo)識(shí)確定。
匹配會(huì)話(huà)會(huì)話(huà)sid=(Pa,Pb,Mout,Min)和會(huì)話(huà)sid*=(P′b,P′a,Mout′,Min′)為匹配會(huì)話(huà),當(dāng)且僅當(dāng)以下條件成立
Pa=P′a且Pb=P′b
Mout=Min′且Min=Mout′
攻擊者基本能力對(duì)概率性多項(xiàng)式時(shí)間攻擊者A,使用查詢(xún)Send預(yù)言機(jī)的方式形式化定義攻擊者控制通信鏈路的能力。
1)Send(Ci,Sj)。攻擊者在客戶(hù)端Ci處激活會(huì)話(huà)初始化,Sj為該會(huì)話(huà)對(duì)等方,客戶(hù)端Ci根據(jù)協(xié)議生成首輪的協(xié)議報(bào)文,返回客戶(hù)端Ci發(fā)出的報(bào)文信息或錯(cuò)誤信號(hào)“⊥”。
2)Send(Sj,Ci,Mout)。攻擊者在服務(wù)器端Sj激活會(huì)話(huà),其中,Mout是客戶(hù)端Ci發(fā)出的協(xié)議報(bào)文,根據(jù)協(xié)議執(zhí)行過(guò)程,返回服務(wù)器Sj發(fā)出的報(bào)文信息或錯(cuò)誤信號(hào)“⊥”。
3)Send(Ci,Sj,Mout,Min)。攻擊者激活客戶(hù)端Ci處會(huì)話(huà),其中,Min和Mout分別是服務(wù)器Sj的接收?qǐng)?bào)文和響應(yīng)報(bào)文。根據(jù)協(xié)議定義,客戶(hù)端Ci完成會(huì)話(huà)或返回錯(cuò)誤信號(hào)“⊥”。
攻擊者獲取信息泄露此處形式化定義概率性多項(xiàng)式時(shí)間攻擊者A獲取信息泄露預(yù)言機(jī),具體如下。
1)KeyReveal(sid,tmp)。依攻擊者發(fā)起查詢(xún),檢查該階段會(huì)話(huà)sid擁有者是否生成臨時(shí)會(huì)話(huà)密鑰K1。若是則返回K1,否則返回錯(cuò)誤信號(hào)“⊥”。
2)KeyReveal(sid,main)。依攻擊者發(fā)起查詢(xún),檢查該階段會(huì)話(huà)sid擁有者是否生成主密鑰K2。若是則返回K1,否則返回錯(cuò)誤信號(hào)“⊥”。
3)StateReveal(sid)。返回會(huì)話(huà)sid擁有者協(xié)議執(zhí)行過(guò)程中的中間狀態(tài)信息,包括臨時(shí)隨機(jī)數(shù)和中間計(jì)算值。
4)Corrupt(Sj)。根據(jù)輸入的服務(wù)器身份標(biāo)識(shí)Sj,返回該服務(wù)器的長(zhǎng)期私鑰KSj。
與此同時(shí),攻擊者A為區(qū)分隨機(jī)密鑰和真實(shí)會(huì)話(huà)密鑰,進(jìn)行以下某一查詢(xún),且攻擊者僅能選擇其中一種查詢(xún)。
1) Test(sid,tmp)。攻擊者僅能發(fā)起一次該查詢(xún)。若會(huì)話(huà)sid擁有者的臨時(shí)會(huì)話(huà)密鑰K1為空,或會(huì)話(huà)sid擁有者為服務(wù)器且與對(duì)等方臨時(shí)會(huì)話(huà)密鑰K1不等,返回錯(cuò)誤信號(hào)“⊥”;否則,隨機(jī)選取b←{0,1},當(dāng)b=0時(shí),返回會(huì)話(huà)擁有者根據(jù)協(xié)議執(zhí)行計(jì)算得到的臨時(shí)會(huì)話(huà)密鑰K1。當(dāng)b=1時(shí),則返回與臨時(shí)會(huì)話(huà)密鑰K1等長(zhǎng)同分布的隨機(jī)比特串K′1。
2)Test(sid,main)。攻擊者只能發(fā)起一次該詢(xún)問(wèn)。若會(huì)話(huà)sid擁有者的主密鑰K2為空,返回錯(cuò)誤信號(hào)“⊥”;否則,隨機(jī)選取b←{0,1},當(dāng)b=0時(shí),返回會(huì)話(huà)擁有者根據(jù)協(xié)議執(zhí)行計(jì)算得到的主密鑰K2。當(dāng)b=1時(shí),則返回與臨時(shí)會(huì)話(huà)密鑰K1等長(zhǎng)同分布的隨機(jī)比特串K′2。
現(xiàn)實(shí)中的攻擊行為可通過(guò)上述預(yù)言機(jī)查詢(xún)的組合和限制進(jìn)行描述。下面先給出會(huì)話(huà)新鮮性的形式化定義。
2)如果攻擊者A發(fā)起Test(sid,main)查詢(xún),則有:攻擊者A未查詢(xún)KeyReveal(sid,main),或sid*存在且未查詢(xún)KeyReveal(sid*,main);攻擊者A未查詢(xún)StateReveal(sid),或sid*存在且未查詢(xún)KeyReveal(sid*);攻擊者A在Test(sid,main)查詢(xún)發(fā)起前,未對(duì)會(huì)話(huà)sid的服務(wù)器端Sj發(fā)起過(guò)Corrupt(Sj)查詢(xún)。
定義攻擊者獲得該安全游戲勝利的優(yōu)勢(shì)為
0-RTT密鑰交換安全對(duì)0-RTT密鑰交換協(xié)議∏,若任意的概率性多項(xiàng)式時(shí)間攻擊者A,獲得上述安全游戲勝利的概率為關(guān)于安全參數(shù)λ的可忽略函數(shù)negl(λ),即
則稱(chēng)協(xié)議∏是0-RTT密鑰交換安全的。
針對(duì)現(xiàn)有通用構(gòu)造過(guò)度依賴(lài)經(jīng)典密碼體制Paring結(jié)構(gòu)的問(wèn)題,基于強(qiáng)安全模型,提出一種新的通用構(gòu)造方案,以期具有更好的通用性和高效實(shí)例化可能,用于指導(dǎo)后量子安全的強(qiáng)安全0-RTT密鑰交換協(xié)議設(shè)計(jì)。
基于Hale和Jager等人的0-RTT密鑰交換通用構(gòu)造[1],提出一種新的通用構(gòu)造方案。
Hale與Jager等人的通用構(gòu)造方案使用了“NIKE+數(shù)字簽名”的協(xié)議構(gòu)件進(jìn)行設(shè)計(jì),并且在HJ模型[1]下可證明安全。然而,該方案使用的NIKE構(gòu)件在實(shí)現(xiàn)上依賴(lài)經(jīng)典密碼體制的Paring結(jié)構(gòu),存在效率較低、難以實(shí)例化的問(wèn)題[13]。其次,在該協(xié)議中,服務(wù)器的簽名信息未與客戶(hù)端發(fā)送的臨時(shí)公鑰綁定,在強(qiáng)安全模型下存在平行會(huì)話(huà)攻擊:攻擊者通過(guò)StateReveal查詢(xún)可獲取服務(wù)器端的中間計(jì)算信息,包括本次通信中服務(wù)器生成的臨時(shí)私鑰、臨時(shí)公鑰和認(rèn)證該臨時(shí)公鑰的服務(wù)器簽名,借此可偽裝為服務(wù)器與其他客戶(hù)端建立通信。該種攻擊方式一方面難以發(fā)現(xiàn),另一方面泄露了后續(xù)會(huì)話(huà)長(zhǎng)期使用的主密鑰,因而危害性較大。
針對(duì)NIKE構(gòu)件通用性較差的問(wèn)題,并且考慮該類(lèi)協(xié)議在客戶(hù)端不具備長(zhǎng)期公私鑰情況下,通過(guò)單個(gè)協(xié)議報(bào)文協(xié)商0-RTT會(huì)話(huà)密鑰的協(xié)議需求,新構(gòu)造將使用各密碼體制下均易于構(gòu)造的密鑰封裝機(jī)制(Key Encapsulation Mechanism,KEM)作為首輪通信協(xié)議的主要設(shè)計(jì)構(gòu)件。
在新協(xié)議中,由服務(wù)器返回的通信報(bào)文需要服務(wù)器進(jìn)行身份認(rèn)證并建立前向安全的主密鑰,因此,新構(gòu)造將使用文獻(xiàn)[14]的密鑰封裝機(jī)制(Signcryption KEM,SC-KEM)作為該輪協(xié)議的主要設(shè)計(jì)構(gòu)件,原因是上述討論的平行會(huì)話(huà)攻擊實(shí)質(zhì)上與簽密方案(Signcryption Scheme)的多方安全問(wèn)題[15-16]一致,可通過(guò)加密過(guò)程引入通信雙方身份標(biāo)識(shí)解決。但是,廣義密碼學(xué)定義的KEM僅可封裝隨機(jī)的臨時(shí)會(huì)話(huà)密鑰,不能指定加密內(nèi)容,嚴(yán)格意義上無(wú)法滿(mǎn)足該條件,而SC-KEM在安全模型定義上已考慮了多方安全[17-19],可用于解決該問(wèn)題。
新模型允許客戶(hù)端對(duì)首輪會(huì)話(huà)發(fā)起主動(dòng)攻擊,為避免攻擊者通過(guò)部分修改首輪協(xié)議信息(簡(jiǎn)單替換客戶(hù)端臨時(shí)生成的公鑰)構(gòu)造出新鮮會(huì)話(huà)并查詢(xún)KeyReveal預(yù)言機(jī)直接獲取0-RTT會(huì)話(huà)密鑰,新構(gòu)造將使用抗碰撞的哈希函數(shù)對(duì)首輪報(bào)文信息進(jìn)一步綁定。
1)Gen(1λ)→(Kp,Ks)。給定安全參數(shù)1λ,服務(wù)器使用KEM以及SCKEM的密鑰生成算法,按以下方式生成長(zhǎng)期公私鑰,即
Ktmp←KDEC(KKEMsj,Ctmp)
注意,如果Ktmp=⊥,即協(xié)商報(bào)文不合法,服務(wù)器Sj則終止該會(huì)話(huà),不生成會(huì)話(huà)密鑰。
注意,如果Kmain=⊥,即協(xié)商報(bào)文不合法,客戶(hù)端Ci則終止該會(huì)話(huà),不生成會(huì)話(huà)密鑰。
相比于Hale和Jager等人的構(gòu)造,新方案使用的KEM和SCKEM均是易于構(gòu)造的。其中,SCKEM可直接通過(guò)任意的簽密方案進(jìn)行實(shí)例化,如簡(jiǎn)單的“公鑰加密+數(shù)字簽名”樸素構(gòu)造,此外也可通過(guò)“Tag-KEM+數(shù)字簽名”方案[19]進(jìn)行實(shí)現(xiàn)。
結(jié)合通用構(gòu)造方案,提出格密碼體制下后量子安全的0-RTT密鑰交換協(xié)議的若干設(shè)計(jì)思路。
格密碼(Lattice Cryptography)作為近年發(fā)展成熟的基礎(chǔ)密碼理論,有成為后量子密碼技術(shù)標(biāo)桿的趨勢(shì)。在計(jì)算上,格密碼通常僅涉及簡(jiǎn)單的整數(shù)加法乘法運(yùn)算,數(shù)學(xué)概念簡(jiǎn)單直觀,計(jì)算效率優(yōu)勢(shì)明顯。安全層面上,格上的相關(guān)難題尚不存在可預(yù)見(jiàn)的結(jié)構(gòu)弱點(diǎn),量子計(jì)算下也是求解困難的。
經(jīng)典格密碼體制下的主流協(xié)議,主要基于平均情況困難問(wèn)題的短整數(shù)解問(wèn)題(Short Integer Solution Problem,SIS)和帶誤差學(xué)習(xí)問(wèn)題(Learn-ing with Errors Problem,LWE)設(shè)計(jì),均可量子規(guī)約到格上最壞情況困難問(wèn)題的最短線(xiàn)性無(wú)關(guān)向量問(wèn)題,安全性基礎(chǔ)完備,但存在通信數(shù)據(jù)和密鑰體積較大的先天性劣勢(shì)。目前,高效格密碼協(xié)議設(shè)計(jì)主要基于模短整數(shù)解問(wèn)題(Module-SIS Problem,MSIS)和模帶誤差學(xué)習(xí)問(wèn)題[20-21](Module-LWE Problem,MLWE)。該類(lèi)難題盡管暴露了更多的結(jié)構(gòu)特征,但仍未有多項(xiàng)式時(shí)間的量子求解算法,存儲(chǔ)和運(yùn)算上的解決方案也更加高效。
根據(jù)前文討論,實(shí)例化格密碼體制的0-RTT密鑰交換協(xié)議需重點(diǎn)關(guān)注該體制下KEM和SC-KEM協(xié)議的具體實(shí)現(xiàn)。其中,SC-KEM可通過(guò)公鑰加密方案、KEM和數(shù)字簽名等構(gòu)件實(shí)現(xiàn),并且在格密碼體制下已有一些高效方案被提出[22-26]。參考當(dāng)前由美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(National Institute of Stan-dards and Technologies)推進(jìn)的后量子密碼標(biāo)準(zhǔn)競(jìng)選,目前在格密碼體制下已有多種高效的KEM和數(shù)字簽名方案,如基于LWE的實(shí)用Frodo KEM[27],基于MLWE設(shè)計(jì)的Kyber[28](包含公鑰加密方案和KEM),基于MSIS及MLWE的高效簽名方案CRYSTALS-Dilithium[26]等,均可用于通用構(gòu)造的實(shí)例化。
實(shí)例化格密碼體制下的數(shù)字簽名方案時(shí),可參考基于格陷門(mén)算法的Hash and Sign通用構(gòu)造[29]。此外,新型的Gadget陷門(mén)算法[30-31]由于具有多種效率優(yōu)化策略并且適配多項(xiàng)式環(huán)結(jié)構(gòu)格,可用于上述的算法優(yōu)化。
分析和總結(jié)了現(xiàn)有0-RTT 密鑰交換協(xié)議的研究工作,設(shè)計(jì)了一種0-RTT 密鑰交換安全模型,相對(duì)于現(xiàn)有的模型,該模型對(duì)攻擊者的能力刻畫(huà)更精確。在該模型的指導(dǎo)下,提出了一種0-RTT密鑰交換協(xié)議的通用構(gòu)造,并給出了格密碼體制下協(xié)議設(shè)計(jì)的若干思路。基于此,該領(lǐng)域仍存在一些問(wèn)題有待解決,將是今后工作推進(jìn)的重點(diǎn),總結(jié)如下。
1)后量子安全協(xié)議設(shè)計(jì)。目前僅提出了格密碼體制下的若干協(xié)議設(shè)計(jì)思路,仍未具體實(shí)例化。在確保高效和安全性的基礎(chǔ)上,應(yīng)進(jìn)一步考慮其他后量子安全密碼體制下的具體設(shè)計(jì)策略,并給出緊致的安全性規(guī)約證明。
2)量子計(jì)算下的安全模型設(shè)計(jì)?,F(xiàn)有安全模型未考慮量子環(huán)境下的攻擊者能力,應(yīng)通過(guò)引入量子隨機(jī)預(yù)言機(jī)[32]等方式進(jìn)一步強(qiáng)化0-RTT 密鑰交換協(xié)議的安全模型形式化定義。
以上研究對(duì)后量子時(shí)代的網(wǎng)絡(luò)通信安全具有重要影響和實(shí)踐意義,相關(guān)工作有必要適時(shí)展開(kāi),為量子時(shí)代的網(wǎng)絡(luò)通信提供更強(qiáng)而有力的理論保障。