曾潤(rùn)智, 王立斌
華南師范大學(xué) 計(jì)算機(jī)學(xué)院, 廣州510631
無(wú)證書(shū)公鑰密碼學(xué)(Certificateless Public Key Cryptography, CL-PKC) 是基于身份公鑰密碼學(xué)(Identity-based Public Key Cryptography, ID-PKC) 的一個(gè)變種, 最初由Al-Riyami 與Paterson 提出[1]以解決ID-PKC 的密鑰托管問(wèn)題. 在傳統(tǒng)ID-PKC 中, 用戶身份信息(如電子郵箱) 可直接作為用戶公鑰, 因此無(wú)需證書(shū)與公鑰綁定, 使得ID-PKC 免去與證書(shū)相關(guān)的復(fù)雜操作; 而用私鑰鑰完全由可信第三方密鑰生成中心(Key Generation Center, KGC) 負(fù)責(zé)生成, 這導(dǎo)致密鑰托管問(wèn)題. CL-PKC 通過(guò)增加用戶自主生成的本地私密信息來(lái)弱化對(duì)KGC 的依賴. 在CL-PKC 中, KGC 依然存在并持有系統(tǒng)主密鑰,其負(fù)責(zé)為用戶生成部分私鑰; 用戶在本地生成一個(gè)秘密值, 然后根據(jù)部分私鑰和秘密值組成長(zhǎng)期私鑰并生成長(zhǎng)期公鑰. CL-PKC 用戶在私鑰生成中有一定的自主性, 因此在一定程度上解決ID-PKC 的密鑰托管問(wèn)題.
無(wú)證書(shū)認(rèn)證密鑰交換(Certificateless Authencated Key Exchange, CL-AKE) 是在無(wú)證書(shū)體制下的認(rèn)證密鑰交換, 其主要解決如何在無(wú)證書(shū)環(huán)境下雙方進(jìn)行帶認(rèn)證密鑰協(xié)商的問(wèn)題, 是重要的無(wú)證書(shū)密碼構(gòu)件之一. 由于CL-PKC 不存在證書(shū), 惡意攻擊者可進(jìn)行公鑰替換以偽裝合法用戶; 另外, CL-PKC 假設(shè)KGC 不完全可信, 其可能會(huì)使用系統(tǒng)主密鑰竊取用戶的某些私密信息. 因此相較于傳統(tǒng)的認(rèn)證密鑰交換協(xié)議, CL-AKE 協(xié)議設(shè)計(jì)需要考慮的攻擊更多, 協(xié)議的運(yùn)算也更復(fù)雜. 本文重點(diǎn)關(guān)注高效、安全CL-AKE協(xié)議的設(shè)計(jì).
第一種CL-AKE 協(xié)議由Al-Riyami 等人提出[1], 該協(xié)議的安全性未在嚴(yán)格定義的安全模型下證明.為嚴(yán)格定義CL-AKE 協(xié)議的安全性, Swason 提出了e2CK 模型[2], 該模型基于eCK 模型[3]. Lippold等人增強(qiáng)了e2CK 模型[4], 并提出了第一種可證明安全的CL-AKE 協(xié)議. 以上協(xié)議都使用雙線性配對(duì),使得協(xié)議不高效. Yang 等人[5]重新定義e2CK 模型, 使得該模型可更清晰地刻畫(huà)公鑰替換攻擊、前向安全等概念. 為了精簡(jiǎn)描述CL-AKE 安全模型, 本文對(duì)文獻(xiàn)[5] 中的模型進(jìn)行一定的修改, 并依然稱此模型為e2CK 模型.
無(wú)雙線性配對(duì)CL-AKE 協(xié)議的一種設(shè)計(jì)思路源于Fiore 等人提出的基于身份的認(rèn)證密鑰交換協(xié)議[6]. 在該協(xié)議中, KGC 使用主秘密為用戶身份標(biāo)識(shí)構(gòu)造Schnorr 簽名[7]并作為用戶的私鑰. 雖然該協(xié)議存在漏洞[8], 但現(xiàn)有許多無(wú)雙線性配對(duì)的CL-AKE 協(xié)議[9–12]仍借鑒該設(shè)計(jì)思想, 其中部分方案如文獻(xiàn)[9] 也仍然存在類似Fiore 等人協(xié)議的缺陷: 攻擊者可通過(guò)特殊構(gòu)造的假公鑰和臨時(shí)會(huì)話信息, 將密鑰計(jì)算中用戶的部分私鑰信息“消元”[10,12], 從而在未知用戶部分私鑰的情況下偽裝任意用戶. 近年來(lái)部分CL-AKE 協(xié)議[13,14]依然存在類似漏洞, 其攻擊方式可參考文獻(xiàn)[10].
設(shè)計(jì)CL-AKE 協(xié)議的關(guān)鍵問(wèn)題是, 如何在會(huì)話密鑰計(jì)算中設(shè)計(jì)合適的信息糾纏, 使攻擊者無(wú)法通過(guò)公鑰替換進(jìn)行偽裝, 同時(shí)兼顧效率與可證明安全性. Sun 等人方案[10]和Shan 等人方案[12]在密鑰計(jì)算中加入復(fù)雜的信息糾纏來(lái)解決公鑰替換導(dǎo)致的消元問(wèn)題. 然而, 為了使安全證明成功, 這些方案存在冗余的計(jì)算. 以Shan 等人的方案[12]為例, 為了使協(xié)議安全性歸約到Gap Diffie-Hellman 假設(shè), 其密鑰計(jì)算包括了冗余的臨時(shí)信息與用戶長(zhǎng)期信息的糾纏, 這制約著協(xié)議的運(yùn)行效率與優(yōu)化. 本文試圖解決該問(wèn)題.
預(yù)計(jì)算可用于優(yōu)化AKE 協(xié)議的運(yùn)行效率[15]. 以KEA+協(xié)議[16]、OAKE 協(xié)議族[15]為例, 這些協(xié)議將會(huì)話中可離線計(jì)算的部分進(jìn)行預(yù)計(jì)算, 從而減少不必要的在線計(jì)算, 提高了運(yùn)行效率. 本文嘗試使用預(yù)計(jì)算技巧來(lái)提高CL-AKE 協(xié)議的運(yùn)行效率.
本文提出一種高效的無(wú)證書(shū)認(rèn)證密鑰交換協(xié)議OPPRE, 并在隨機(jī)預(yù)言機(jī)模型下給出其e2CK 安全性證明. 協(xié)議OPPRE 在確保安全性的同時(shí), 避免冗余的會(huì)話臨時(shí)信息與用戶長(zhǎng)期信息的糾纏, 從而在允許預(yù)計(jì)算的前提下, 該協(xié)議有較高的效率. 同時(shí)協(xié)議OPPRE 還擁有抗公鑰替換攻擊、前向安全、抗密鑰泄露偽裝、抗未知密鑰共享等安全屬性. 經(jīng)過(guò)對(duì)比分析, 協(xié)議OPPRE 有較好的安全性和通信、計(jì)算效率.
設(shè)S 為一個(gè)集合, s ←$S 指從集合S 中均勻隨機(jī)抽樣一個(gè)元素s; 若U 是一個(gè)用戶, 則IDU指用戶U 的用戶標(biāo)識(shí)符, 以下假定用戶標(biāo)識(shí)符和用戶一一對(duì)應(yīng).
在無(wú)證書(shū)密鑰交換中, KGC 擁有系統(tǒng)主秘密, 并進(jìn)行系統(tǒng)參數(shù)的建立; KGC 根據(jù)用戶U 的標(biāo)識(shí)符IDU, 使用系統(tǒng)主秘密來(lái)生成用戶U 的部分私鑰. 每個(gè)用戶在本地生成秘密值, 然后將秘密值和其部分私鑰組合為其長(zhǎng)期私鑰, 用戶公鑰根據(jù)長(zhǎng)期私鑰生成. 用戶之間根據(jù)公共信息及自身私密信息進(jìn)行密鑰交換,具體例子可參考本文提出的無(wú)證書(shū)認(rèn)證密鑰協(xié)議OPPRE (圖1).
本文的安全性證明使用到以下難題假設(shè), 設(shè)G 是階為q 的循環(huán)群且其生成元為P:
CDH 問(wèn)題(Computational Diffie-Hellman Problem): 給定(aP,bP), 求abP. 其中a,b ←$Z?q.
DDH 問(wèn)題(Decisional Diffie-Hellman Problem): 給定(aP,bP,cP), 判定是否有CDH(aP,bP) =cP(即cP =abP) 成立. 其中a,b,c ←$Z?q.
GDH 問(wèn)題(Gap Diffie-Hellman Problem): 給定(aP,bP) 和DDH 預(yù)言機(jī), 求解CDH(aP,bP). 其中, a,b ←$Z?q; 給定任意(aP,bP,cP), DDH 預(yù)言機(jī)可判定是否有CDH(aP,bP) = cP. GDH 假設(shè)定義為: 對(duì)于任意多項(xiàng)式時(shí)間攻擊者, GDH 問(wèn)題可解的概率是可忽略的.
本文對(duì)Yang 等人優(yōu)化的e2CK 模型[5]進(jìn)行一定的修改, 并在修改得到的模型上進(jìn)行協(xié)議安全性證明. 本節(jié)僅粗略描述e2CK 模型的內(nèi)容并指出修改的部分, 具體細(xì)節(jié)請(qǐng)參考文獻(xiàn)[5].
e2CK 安全模型定義為攻擊者與模擬者的安全游戲, 攻擊者控制整個(gè)信道, 模擬者負(fù)責(zé)生成公共信息和用戶信息并模擬CL-AKE 協(xié)議的運(yùn)行. 攻擊者可發(fā)出如下幾種類型的問(wèn)詢:
? Send: 攻擊者通過(guò)該類問(wèn)詢控制用戶之間的消息傳遞, 并指定用戶在會(huì)話中使用的公鑰. 其中,Send0、Send1、Send2分別模擬會(huì)話初始方發(fā)送信息、應(yīng)答方接受并應(yīng)答信息、初始方接受信息的行為.
? Reveal: 該問(wèn)詢?cè)试S攻擊者泄露相關(guān)的秘密信息, 如會(huì)話臨時(shí)秘密、用戶的部分私鑰、秘密值、KGC 主秘密、完整會(huì)話的會(huì)話密鑰等;
完全泄露與會(huì)話新鮮性的定義: CL-AKE 協(xié)議會(huì)話包含臨時(shí)秘密、用戶部分私鑰和秘密值三種秘密信息, 如果會(huì)話中三種秘密全部泄露, 則稱該會(huì)話完全泄露; 一個(gè)會(huì)話是新鮮的, 當(dāng)且僅當(dāng)該會(huì)話未完全泄露且未被Reveal 問(wèn)詢, 同時(shí): 若匹配會(huì)話存在, 則要求匹配會(huì)話也未完全泄露; 若匹配會(huì)話不存在, 則要求會(huì)話對(duì)等方的部分私鑰及秘密值未同時(shí)泄露. 注意, 若用戶的公鑰被替換, 則在會(huì)話中認(rèn)為該用戶的秘密值被泄露.
安全游戲分為兩個(gè)階段. 在階段1 中, 攻擊者可發(fā)出上述任意問(wèn)詢, 當(dāng)攻擊者發(fā)出Test 問(wèn)詢后, 游戲進(jìn)入階段2; 在階段2 中攻擊者可繼續(xù)進(jìn)行上述除Test 之外的問(wèn)詢. 安全游戲結(jié)束時(shí), 攻擊者猜測(cè)從Test 問(wèn)詢返回的密鑰是sid*的會(huì)話密鑰還是隨機(jī)密鑰. 如果攻擊者猜測(cè)成功并且會(huì)話sid*是新鮮的, 則稱攻擊者成功攻擊該CL-AKE 協(xié)議.
本節(jié)安全模型通過(guò)Send 問(wèn)詢來(lái)刻畫(huà)公鑰替換攻擊(詳見(jiàn)第4 節(jié)), 而不是通過(guò)提供“公鑰替換問(wèn)詢”來(lái)刻畫(huà), 這是本文安全模型與其原始版本[5]的主要區(qū)別. 兩種刻畫(huà)公鑰替換攻擊的能力是等價(jià)的, 因?yàn)樗鼈兌荚试S攻擊者欺騙合法用戶使用假公鑰進(jìn)行會(huì)話建立. 本文通過(guò)Send 問(wèn)詢刻畫(huà)公鑰替換攻擊的好處為: 一方面, 公鑰(來(lái)自用戶或來(lái)自攻擊者) 包含在Send 問(wèn)詢的輸入中, 標(biāo)明用戶在本次會(huì)話中所使用的公鑰, 攻擊者不再需要額外的問(wèn)詢來(lái)進(jìn)行公鑰替換, 這簡(jiǎn)化了證明過(guò)程并清晰地刻畫(huà)了公鑰替換攻擊; 另外一方面, 不需要定義額外的事件來(lái)判斷攻擊者是否發(fā)出公鑰替換攻擊, 從而簡(jiǎn)化證明過(guò)程. 原始版本[5]的模型需要定義事件ReplacePK 來(lái)判斷是否發(fā)生公鑰替換.
直觀上, e2CK 安全的CL-AKE 協(xié)議要求: 若會(huì)話及其匹配會(huì)話不被完全泄露, 則會(huì)話密鑰不泄露;若不存在匹配會(huì)話(對(duì)等方不存在對(duì)應(yīng)臨時(shí)秘密), 則要求在會(huì)話不被完全泄露, 且會(huì)話對(duì)等方部分私鑰及秘密值不同時(shí)泄露的情況下, 會(huì)話密鑰不泄露.
本節(jié)從抵抗攻擊、效率、可證明安全性等角度給出CL-AKE 協(xié)議設(shè)計(jì)思想, 并在此思想基礎(chǔ)上提出一種高效的CL-AKE 協(xié)議.
設(shè)xU,sU,tU分別是用戶U 的秘密值、部分私鑰、會(huì)話臨時(shí)秘密, XU,SU,TU分別是對(duì)應(yīng)的公開(kāi)信息, 具體含義可參考OPPRE 協(xié)議1. 以用戶A 與用戶B 的密鑰交換為例:
? 協(xié)議需要保證認(rèn)證密鑰交換的安全屬性, 如認(rèn)證性、抗長(zhǎng)期/短期秘密泄露偽裝、前向安全性等. 因此A 的會(huì)話密鑰計(jì)算必須包含: xA,sA與XB,SB的糾纏、tA與XB,SB的糾纏、tA與TB的糾纏.
? 為抵抗公鑰替換攻擊, 協(xié)議需要確保, 無(wú)論攻擊者如何構(gòu)造XB,TB, 會(huì)話密鑰始終有tA,sA,xA與SB的糾纏. 否則攻擊者可將SB消元從而在未知sB的情況下向A 偽裝B. 文獻(xiàn)[9,13,14] 中的協(xié)議不能達(dá)到該要求, 因此存在漏洞.
? 在保證安全性的前提下, 協(xié)議需要盡量降低計(jì)算量. 從上述內(nèi)容知, tA,sA,xA必須都與TB,SB,XB有糾纏. 為提高效率, 可考慮混合糾纏, 比如(tA+xA)(TB+SB). 然而混合糾纏的設(shè)計(jì)必須與可證明安全緊密結(jié)合, 以防出現(xiàn)類似文獻(xiàn)[9] 的情況.
根據(jù)上述思想, 本文嘗試從可預(yù)計(jì)算的角度來(lái)設(shè)計(jì)高效、安全的協(xié)議. 考慮如下信息糾纏:
KA1,KA2用以抵抗私鑰泄露偽裝, 同時(shí)確保前向安全性; KA3,KA4,KA5一方面確保攻擊者無(wú)法將SB完全消元, 另一方面保證可借助隨機(jī)預(yù)言機(jī)技巧來(lái)完成安全性證明, 其中KA3,KA4不包含臨時(shí)信息, 因此可進(jìn)行預(yù)計(jì)算降低計(jì)算量. 綜上, 本文提出一種高效的無(wú)證書(shū)認(rèn)證密鑰交換協(xié)議OPPRE (optimal precomputation). 下節(jié)給出協(xié)議OPPRE 的詳細(xì)描述.
系統(tǒng)建立: 給定安全參數(shù), KGC 生成一個(gè)階為素?cái)?shù)q 的循環(huán)群G 及其生成元P, 并選擇兩個(gè)哈希函數(shù)h:{0,1}l×G →Z?q,H :{0,1}l×{0,1}l×G9→{0,1}n, 其中l(wèi) 是身份標(biāo)識(shí)符的長(zhǎng)度, n 是會(huì)話密鑰的長(zhǎng)度, H 作為密鑰導(dǎo)出函數(shù). KGC 隨機(jī)抽取s ←$Z?q作為主秘密, 并計(jì)算系統(tǒng)公鑰Ppub=sP, 最后公開(kāi)系統(tǒng)參數(shù)Params=(l,n,q,P,G,Ppub,h,H).
用戶部分私鑰生成: 給定IDU,KGC 隨機(jī)抽取rU←$Z?q并計(jì)算RU=rUP,sU=rU+h(IDU,RU)s.然后KGC 通過(guò)安全信道返回sU,RU給用戶U.
用戶秘密值及公鑰生成: 用戶IDU隨機(jī)生成xU←$Z?q作為秘密值, 其公鑰為XU= xUP. 用戶完整的私鑰為(xU,sU).
密鑰交換過(guò)程: 設(shè)用戶A 為會(huì)話發(fā)起方, B 為應(yīng)答方, 雙方密鑰交換過(guò)程如下:
首先A 隨機(jī)選擇tA←$Z?q, 計(jì)算TA=tAP, 發(fā)送MA=(IDA,XA,RA,TA) 給B.
圖1 OPPRE 協(xié)議Figure 1 OPPRE protocol
由以下等式知A 與B 可建立相同會(huì)話密鑰:
證明: 給定GDH 問(wèn)題實(shí)例(aP,bP), 現(xiàn)構(gòu)造算法S 求解abP. S 首先生成系統(tǒng)主密鑰, 并生成系統(tǒng)參數(shù)、用戶公私鑰等信息.
我們通過(guò)分類A 在游戲中未泄露的信息來(lái)完成安全證明. 設(shè)A 選取(Role,IDi,IDj,X?i,X?j,T?i,T?j)為測(cè)試會(huì)話, 其中, 會(huì)話擁有者為i, Xi,Xj是會(huì)話中使用的公鑰, T?i,T?j是會(huì)話中使用的臨時(shí)會(huì)話公鑰, Role 標(biāo)識(shí)用戶是會(huì)話初始方I 還是應(yīng)答方R. 設(shè)x?i,x?j,t?i,t?j,s?i,s?j為i,j 相應(yīng)的秘密信息,K?1,K?2,K?3,K?4,K?5為測(cè)試會(huì)話的會(huì)話主秘密(如圖1), 現(xiàn)分類及難題嵌入方法如下:
? 類型1: x?i,x?j未泄露, 令X?i=aP,X?j=bP.
? 類型2: x?i,t?j未泄露, 令X?i=aP,T?j=bP.
? 類型3: x?i,s?j未泄露, 令X?i=aP,S?j=bP.
? 類型4: t?i,x?j未泄露, 令T?i=aP,X?j=bP.
? 類型5: t?i,t?j未泄露, 令T?i=aP,T?j=bP.
? 類型6: t?i,s?j未泄露, 令T?i=aP,S?j=bP.
? 類型7: s?i,x?j未泄露, 令S?i=aP,X?j=bP.
? 類型8: s?i,t?j未泄露, 令S?i=aP,T?j=bP.
? 類型9: s?i,s?j未泄露, 令S?i=aP,S?j=bP.
為完美模擬協(xié)議的運(yùn)行, S 需要維護(hù)5 個(gè)表hlist,Hlist,Slist,Clist,NClist. 其中表hlist 用于存儲(chǔ)A與隨機(jī)預(yù)言機(jī)h 的交互, 表Hlist 用于存儲(chǔ)A 與隨機(jī)預(yù)言機(jī)H 的交互, 表Slist 表用于存儲(chǔ)Send0的內(nèi)容, 表Clist 用于存儲(chǔ)所有會(huì)話主秘密完整的會(huì)話及其會(huì)話密鑰, 表NClist 用于存儲(chǔ)會(huì)話主秘密缺失的會(huì)話及其會(huì)話密鑰.
以下我們僅給出類型6 下的安全性證明, 該類型的規(guī)約最復(fù)雜. 其它8 種類型的證明類似.
類型 6: S 從 p 個(gè)用戶中隨機(jī)抽取兩個(gè)用戶 i,j, 并猜測(cè)它們的第 k 次會(huì)話 (Role,IDi,IDj,X?i,X?j,T?i,T?j) 作為挑戰(zhàn)會(huì)話. 不失一般性, 假設(shè)i 作為測(cè)試會(huì)話的初始方.
在類型6 下, S 無(wú)t?i,s?j(分別為a,b), 因此需要以如下方式構(gòu)造S?j對(duì)應(yīng)的R?j: 首先隨機(jī)選擇l?j←$Z?q, 計(jì)算R?j= S?j(即bP)?l?jPpub, 并令h(IDj,R?j) = l?j. 然后將s?j作為測(cè)試會(huì)話參與方j(luò) 的部分私鑰, R?j作為j 的部分私鑰對(duì)應(yīng)的公共信息. A 問(wèn)詢的模擬如下:
Send0(IDU,IDV): 此問(wèn)詢下IDU作為初始方. 如果(IDU,IDV) = (IDi,IDj), 且該會(huì)話是i 與j 的第k 次會(huì)話, 即測(cè)試會(huì)話, 則S 在表Slist 中存入(IDi,IDj,⊥,T?i(= aP)) 并返回T?i; 否則, 隨機(jī)選取tU←$Z?q, 計(jì)算TU=tUP 并返回給A, 然后S 在表Slist 中存入(IDU,IDV,tU,TU).
Send1(IDU,IDV,XV,TV): 此問(wèn)詢下IDU作為應(yīng)答方. S 檢查表Clist、表NClist 中是否已存在相關(guān)會(huì)話, 存在則返回⊥, 否則S 隨機(jī)選取tU←$Z?q, 計(jì)算TU= tUP 并返回給A. 然后分成多個(gè)情況來(lái)繼續(xù)模擬:
(3) 其它情況: 類似上述情況進(jìn)行處理.
Send2(IDU,IDV,XU,XV,TU,TV): 該問(wèn)詢的模擬與Send1類似. 以情況(IDU,IDV,XU,XV,TU,TV) = (IDi,IDj,X?i,X?j,T?i,T?j) 為例, S 無(wú) t?i,s?j,x?j,t?j, 無(wú)法計(jì)算 K?1,K?2,K?5中的 t?i(T?j+X?j),t?i(T?j+S?j),t?iT?j. S 可類似Send1的情況2 進(jìn)行處理.
H 問(wèn)詢:(IDV,IDU,XV,XU,TV,TU,K′1,K′2,K′3,K′4,K′5): 隨機(jī)預(yù)言機(jī)H 的模擬需要與Send 問(wèn)詢、SessionKeyReveal 問(wèn)詢的模擬一致. 當(dāng)A 發(fā)出了問(wèn)詢, S 首先檢查該問(wèn)詢?cè)诒鞨list 中是否已存在應(yīng)答,如果有則返回; 否則S 按如下情況處理:
(1) 情況1: 表Clist 不存在會(huì)話(IDV,IDU,XV,XU,TV,TU,?,?,?,?,?,?), 且表NClist 也不存在該會(huì)話. 此時(shí)S 隨機(jī)選取SK ←${0,1}n, 返回SK 并在表H 中記錄該問(wèn)詢.
(2) 情況2: 表Clist 中存在會(huì)話(IDV,IDU,XV,XU,TV,TU,?,?,?,?,?,SK). S 取出分量K1,···,K5, 若K′1=K1,··· ,K′5=K5, 則S 直接返回SK; 否則類似情況1 處理.
(3) 情況3: 表NClist 存在會(huì)話(IDV,IDU,XV,XU,TV,TU,?,?,?,?,?,SK). 此時(shí)S 取出該會(huì)話的K#值(# 代表有缺失). S 通過(guò)DDH 預(yù)言機(jī), 判斷A 此次問(wèn)詢中是否含有K#中缺失的值,如果有則更新NCL 列表中的這些K#值, 如果所有的缺失值都獲得, 則將該會(huì)話從表NClist 中刪除, 在表Clist 中記錄該會(huì)話.
特別地, 當(dāng)(IDV,IDU,XV,XU,TV,TU) = (IDi,IDj,X?i,X?j,T?i,T?j), S 可通過(guò)類似Send1、Send2的處理方式, 獲得s?jX?i,t?iT?j等缺失值. 如果S 獲得t?iS?j或者s?jT?i, 可直接返回該值作為GDH 解并停止模擬.
協(xié)議的認(rèn)證性: 協(xié)議OPPRE 具有隱式認(rèn)證性, 即僅建立會(huì)話的雙方(長(zhǎng)期秘密未完全泄露) 擁有相同的會(huì)話密鑰, 其中“隱式” 指雙方無(wú)法確定對(duì)方是否已建立相同會(huì)話密鑰. 由上述證明知, 若攻擊者不同時(shí)擁有用戶的部分私鑰與秘密值(對(duì)應(yīng)攻擊類型1、3、7、9), 則攻擊者無(wú)法計(jì)算會(huì)話密鑰. 因此, 協(xié)議OPPRE 具有隱式認(rèn)證性. 在消息交換中加入報(bào)文認(rèn)證碼的發(fā)送可使OPPRE 協(xié)議達(dá)到顯式認(rèn)證[17].
本節(jié)給出對(duì)協(xié)議OPPRE 的優(yōu)化及效率分析, 與相關(guān)協(xié)議在效率、消息長(zhǎng)度、安全性等方面作對(duì)比.對(duì)比時(shí)使用橢圓曲線群來(lái)對(duì)G 進(jìn)行實(shí)例化, 并對(duì)所有協(xié)議進(jìn)行同等的預(yù)計(jì)算優(yōu)化. 對(duì)比如表1.
表1 協(xié)議效率對(duì)比Table 1 Comparison of protocols efficiency
表1 符號(hào)解釋: Em指橢圓曲線群G 上一次點(diǎn)乘運(yùn)算的開(kāi)銷, Ea指G 上一次點(diǎn)加運(yùn)算的開(kāi)銷, Th指一次哈希運(yùn)算的開(kāi)銷, |G| 指一個(gè)G 元素的大小, |Z?q| 指一個(gè)Z?q元素的大小. RA和TA作為消息的一部分進(jìn)行考慮.
CL-AKE 協(xié)議的預(yù)計(jì)算.在實(shí)際運(yùn)行中, CL-AKE 用戶需要從公共目錄中獲取對(duì)方的公鑰, 其中目錄中的公鑰可能過(guò)時(shí)或被替換, 但這不影響CL-AKE 協(xié)議的預(yù)計(jì)算, 因?yàn)閰f(xié)議會(huì)話的建立是在線的, 而公鑰的獲取、更新、替換等操作都是離線的, 用戶可在未建立會(huì)話的期間進(jìn)行公鑰的更新、預(yù)計(jì)算等. 另外,SU作為長(zhǎng)期信息可被緩存.
協(xié)議OPPRE 的效率優(yōu)化: 以用戶A 與用戶B 的密鑰交換為例. (xA,sA)是A 的長(zhǎng)期私鑰, XB,SB作為B 的長(zhǎng)期信息可被A 緩存, 因此KA3,KA4可被預(yù)計(jì)算. KA1,KA2,KA5的構(gòu)造需要3 次點(diǎn)乘法, 2 次點(diǎn)加法.
由表1 的對(duì)比可知, 與其它協(xié)議相比, 協(xié)議OPPRE 在安全和效率上達(dá)到更好的平衡.
本文根據(jù)e2CK 模型特點(diǎn), 給出CL-AKE 協(xié)議的設(shè)計(jì)思路, 并根據(jù)該思路提出了一種高效的無(wú)證書(shū)密鑰交換協(xié)議OPPRE, 該協(xié)議在隨機(jī)預(yù)言機(jī)模型下具有e2CK 安全性. 協(xié)議OPPRE 避免冗余的會(huì)話臨時(shí)秘密與長(zhǎng)期秘密的糾纏, 從而在保證可證明安全性的前提下, 協(xié)議可通過(guò)預(yù)計(jì)算提高運(yùn)行效率. 因此,協(xié)議OPPRE 在效率、安全性需求較高的實(shí)際場(chǎng)景中(如Ad-Hoc 網(wǎng)絡(luò))有較好的應(yīng)用價(jià)值.