袁 科,王籽霖,杜展飛,賀新征,賈春福,3*,何 源
(1.河南大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,河南 開封 475004;2.河南省空間信息處理工程研究中心,河南 開封 475004;3.南開大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,天津 300350;4.河南大學(xué) 國際教育學(xué)院,河南 鄭州 450046)
時(shí)控性加密(timed-release encryption,TRE)作為一種可指定未來解密時(shí)間的密碼原語,可用于時(shí)間敏感性場(chǎng)景?,F(xiàn)實(shí)生活中的很多場(chǎng)景都需要提前指定解密時(shí)間的服務(wù),比如密封投標(biāo)、網(wǎng)絡(luò)競(jìng)賽、密文檢索、云端保密數(shù)據(jù)定時(shí)獲取等。TRE由May于1993年提出,并由Rivest等于1996年對(duì)該密碼原語進(jìn)行完善,奠定了TRE的基礎(chǔ)。后續(xù)研究者不斷提出各種完善TRE和擴(kuò)展TRE應(yīng)用領(lǐng)域的方案。
TRE最初的構(gòu)造方法分為時(shí)間鎖難題(time-lock puzzles,TLP)和可信代理兩類,后來代理又演變出基于交互式時(shí)間服務(wù)器和基于非交互式時(shí)間服務(wù)器的方法。其中:TLP方法需要耗費(fèi)大量算力且解密時(shí)間很難做到精確性;基于可信代理的方法中,可信代理知道解密消息的密鑰,需要服務(wù)器完全可信,這在現(xiàn)實(shí)中很難做到;基于交互式時(shí)間服務(wù)器的方法無上述問題,但無法保護(hù)接收者身份隱私;基于非交互式時(shí)間服務(wù)器的方法可保證用戶身份隱私,也是后續(xù)大部分具有時(shí)間服務(wù)器的TRE方案采用的方式。非交互式時(shí)間服務(wù)器模式由Chan等于2005年首次提出,在該方案中,時(shí)間服務(wù)器與收發(fā)雙方均無交互,以此實(shí)現(xiàn)收發(fā)雙方的匿名性。2008年,Cheon等將安全TRE公鑰密碼系統(tǒng)的概念進(jìn)行形式化,并證明使用基于身份加密(identity-based encryption,IBE)構(gòu)造的非交互TRE方案都可實(shí)現(xiàn)安全TRE。2010年,Paterson等首次提出一種可將解密時(shí)間控制在一個(gè)指定時(shí)間區(qū)間的非交互TRE。2015年,袁科等將非交互TRE技術(shù)用于解決云環(huán)境下的文件分享問題。2021年,Huang等提出一種基于屬性和時(shí)間參數(shù)控制的從云端向用戶群共享數(shù)據(jù)的非交互廣義TRE方案。
上述非交互式時(shí)間服務(wù)器模式中,時(shí)間服務(wù)器采用周期性地廣播時(shí)間陷門,以實(shí)現(xiàn)時(shí)間陷門的分發(fā),因此可保證接收者身份的隱私性。 但該方法存在的問題是:1)若時(shí)間服務(wù)器廣播的時(shí)間跨度太大,會(huì)導(dǎo)致細(xì)粒度不夠,部分用戶的解密時(shí)間無法滿足;2)若跨度太小,會(huì)導(dǎo)致時(shí)間服務(wù)器負(fù)擔(dān)很大且網(wǎng)絡(luò)流量大大增加。并且,在問題1)情況下,如果讓無對(duì)應(yīng)時(shí)間陷門的用戶直接交互式地向時(shí)間服務(wù)器進(jìn)行查詢,又會(huì)暴露查詢者身份。針對(duì)此問題,目前尚無解決方案。 因此,亟需設(shè)計(jì)出一種新的TRE方案,在時(shí)間服務(wù)器粗粒度廣播時(shí)間陷門滿足大部分用戶需求的前提下,實(shí)現(xiàn)用戶匿名查詢?nèi)我馄渌麜r(shí)間的陷門??商峁┠涿L問性的洋蔥路由(onion routing,OR)技術(shù)可為研究者們提供一種解決思路。
洋蔥路由通過構(gòu)造洋蔥路由路徑來傳遞信息,路徑上的每個(gè)路由節(jié)點(diǎn)均只能獲得上一跳和下一跳的信息,以此保證用戶的身份隱私,但存在節(jié)點(diǎn)失效的問題。2007年,Kate等基于配對(duì)進(jìn)行洋蔥路由電路的構(gòu)造,在保持其余節(jié)點(diǎn)不變的情況下,通過替換失效節(jié)點(diǎn)信息來解決節(jié)點(diǎn)失效問題。但該方案在解決節(jié)點(diǎn)失效時(shí)需重新加密備選節(jié)點(diǎn),耗時(shí)較大。目前的洋蔥路由方案均存在不能快速解決節(jié)點(diǎn)失效的問題。而廣播加密(broadcast encryption,BE)是一種能夠?qū)崿F(xiàn)多個(gè)用戶可解密的高效加密技術(shù),可為路由節(jié)點(diǎn)失效問題提供一種解決思路。
綜上,本文提出一種時(shí)控性加密匿名查詢機(jī)制(anonymous query timed-release encryption,AQ-TRE),以解決時(shí)控性加密中接收者的身份隱私保護(hù)問題,使得接收者能夠匿名與時(shí)間服務(wù)器進(jìn)行交互獲得陷門而不被識(shí)別身份。在該方案中,基于洋蔥路由和廣播加密技術(shù),實(shí)現(xiàn)在TRE方案中匿名查詢時(shí)間陷門的同時(shí),避免洋蔥路由節(jié)點(diǎn)失效問題的出現(xiàn)。
對(duì)本文所用的數(shù)學(xué)及密碼學(xué)知識(shí)進(jìn)行簡(jiǎn)要說明。
有限域上的離散對(duì)數(shù)問題(discrete logarithm problem,DLP)和有限域橢圓曲線群上的離散對(duì)數(shù)問題(elliptic curve DLP,ECDLP)是公鑰密碼學(xué)算法和很多密碼協(xié)議的安全性保證。
定義1
(DLP問題) 假設(shè)p
和q
為 兩個(gè)素?cái)?shù),G
為階為p
的有限域 Z上的乘法群,其生成元為g
。給定一個(gè)元素y
∈G
,求解整數(shù)x
∈Z, 使得y
=g
。定義2
(ECDLP問題) 假設(shè)p
和q
為 兩個(gè)素?cái)?shù),G
為橢圓曲線群的一個(gè)p
階加法子群,其生成元為P
。給定一個(gè)元素Q
∈G
, 求解x
∈Z,使得Q
=xP
。定義3
(雙線性對(duì)問題) 假設(shè)G
和G
為有限域上的兩個(gè)p
階群,其中,G
為橢圓曲線離散對(duì)數(shù)加法群,G
為離散對(duì)數(shù)乘法群,p
為素?cái)?shù)。則雙線性映射e
:G
×G
→G
滿足以下性質(zhì):1)雙線性。對(duì)于所有的P
,Q
,R
∈G
,有:2)非退化性。如果P
為G
的 生成元,則e
(P
,Q
)是G
的生成元。3)可計(jì)算性。對(duì)于G
中 任意的P
和Q
,存在一個(gè)有效的算法計(jì)算e
(P
,Q
)。根據(jù)以上雙線性對(duì)的基本性質(zhì),可以推導(dǎo)出本方案需要用到的雙線性性質(zhì):
雙線性迪菲-赫爾曼(bilinear Diffie-Hellman,BDH)問題在TRE的方案設(shè)計(jì)中具有重要作用。
定義4
(BDH問題) 給定P
,aP
,bP
,cP
∈G
,其中(a
,b
,c
)∈Z,計(jì)算w
=e
(P
,P
)∈G
,其中,e
為一個(gè)雙線性映射,P
為G
的 生成元,群G
和G
如定義3所述。若Pr[A
(P
,aP
,bP
,cP
)=e
(P
,P
)]≥ε ,則敵手A
解決BDH問題的優(yōu)勢(shì)為 ε ,而ε 可以忽略不計(jì)。ID
為用戶生成公私鑰對(duì)。基本操作包括Setup和Extact兩個(gè)算法。KGC運(yùn)行BDH參數(shù)生成器來生成兩個(gè)群和一個(gè)雙線性對(duì)。它選擇一個(gè)任意生成器,并定義兩個(gè)雜湊函數(shù)H
:{0,1}→G
和H
:G
→{0,1}。1)Setup即系統(tǒng)初始化。KGC選擇一個(gè)隨機(jī)數(shù)s
并設(shè)置P
=sP
。然后,KGC公布系統(tǒng)參數(shù)params
={G
,G
,q
,P
,P
,H
,H
}, 并將s
作為主密鑰保存。2)Extact即私鑰提取。用戶向KGC提交其身份信息標(biāo)志ID
。KGC計(jì)算Q
=H
(ID
)作為用戶的公鑰,并向用戶返回其私鑰S
=sQ
。給出基于廣播加密和洋蔥路由的時(shí)控性加密匿名查詢模型以及具體方案。
該模型的目標(biāo)是,通過洋蔥路由實(shí)現(xiàn)用戶匿名查詢時(shí)間陷門,即任一授權(quán)用戶向時(shí)間服務(wù)器請(qǐng)求時(shí)間陷門,時(shí)間服務(wù)器向用戶返回時(shí)間陷門而不能獲得用戶的具體身份信息。為了解決所選洋蔥路由節(jié)點(diǎn)失效的問題,本文基于廣播加密和洋蔥路由技術(shù),給出解決方案。
假設(shè)所有用戶和時(shí)間服務(wù)器(time server,TS)均視為洋蔥路由網(wǎng)絡(luò)中的一個(gè)節(jié)點(diǎn)。路由節(jié)點(diǎn)將自己的公鑰等節(jié)點(diǎn)信息提交給目錄服務(wù)器(directory server,DS)。在臨近指定的解密時(shí)間,用戶Bob通過洋蔥路由匿名向時(shí)間服務(wù)器發(fā)送時(shí)間陷門請(qǐng)求,時(shí)間服務(wù)器接收到陷門請(qǐng)求后,按原路將對(duì)應(yīng)時(shí)間的時(shí)間陷門S
返回給Bob。構(gòu)造洋蔥的具體過程為:Bob通過其洋蔥代理(onion proxy,OP)節(jié)點(diǎn)從目錄服務(wù)器DS中選擇足夠的路由節(jié)點(diǎn),并獲得它們的節(jié)點(diǎn)信息。OP利用所選節(jié)點(diǎn)信息對(duì)陷門請(qǐng)求時(shí)間T
進(jìn)行層層加密構(gòu)造形如式(3)~(5)的洋蔥(onion),加密順序與節(jié)點(diǎn)在電路中出現(xiàn)的順序相反。式(3)為最內(nèi)層陷門請(qǐng)求密文,由時(shí)間服務(wù)器的公鑰ts
進(jìn)行加密。式(4)為洋蔥明文:
式中:IP
、IP
、IP
為下層節(jié)點(diǎn)地址;C
為下層節(jié)點(diǎn)均可解密的洋蔥密文;K
為反向密鑰,是一種由用戶生成的對(duì)稱密鑰,被各中間節(jié)點(diǎn)保存并用于返回時(shí)對(duì)數(shù)據(jù)進(jìn)行層層加密。式(5)為對(duì)洋蔥明文進(jìn)行廣播加密獲得的洋蔥密文,每層洋蔥路由節(jié)點(diǎn)均可對(duì)其解密并剝?nèi)ヒ粚印?p>在洋蔥傳遞的同時(shí),構(gòu)建一條從發(fā)送者到接收者的路由路徑。且每一層洋蔥都具有備用洋蔥節(jié)點(diǎn)以避免節(jié)點(diǎn)失效,而用戶對(duì)于每層洋蔥只需要進(jìn)行一次廣播加密,位于該層內(nèi)的所有節(jié)點(diǎn)均可使用自己的私鑰進(jìn)行解密。本文稱此種基于洋蔥路由的時(shí)控性加密匿名查詢方案為AQ-TRE系統(tǒng),如圖1所示。
圖1 AQ-TRE系統(tǒng)Fig. 1 AQ-TRE system
定義5
交互式AQ-TRE系統(tǒng)包括發(fā)送方、接收方用戶、時(shí)間服務(wù)器、目錄服務(wù)器、密鑰生成中心KGC和洋蔥路由節(jié)點(diǎn)6個(gè)實(shí)體,以及算法8元組ξ=(Setup,BE_KeyGen,User_KeyGen,TRE_Enc,BE_Enc,BE_Dec,TS_Rel,TRE_Dec)。其中8個(gè)算法簡(jiǎn)述如下:1)Setup即系統(tǒng)初始化。輸入安全參數(shù),生成時(shí)間服務(wù)器的公私鑰對(duì) (ts
,ts
),并輸出通用系統(tǒng)參數(shù)。2)BE_KeyGen即所有路由節(jié)點(diǎn)的密鑰生成。生成廣播加密的主密鑰s
和各路由節(jié)點(diǎn)的公私鑰對(duì)(Q
,S
)。3)User_KeyGen即TRE用戶密鑰生成。生成各用戶的公私鑰對(duì) (upk
,usk
)。4)TRE_Enc即TRE發(fā)送方消息加密。使用t
s
和upk
生成消息M
在時(shí)間T
后才能解密的密文C
。5)BE_Enc即路由節(jié)點(diǎn)廣播加密。使用Q
、P
和P
等參數(shù),生成所選節(jié)點(diǎn)均可解密的洋蔥密文。6)BE_Dec即路由節(jié)點(diǎn)解密。使用S
等參數(shù),生成密文C
對(duì)應(yīng)的洋蔥明文O
。7)TS_Rel即時(shí)間陷門生成和原路返回。使用參數(shù)t
s
生 成時(shí)間T
對(duì)應(yīng)的時(shí)間陷門S
。8)TRE_Dec即接收方在指定時(shí)間解密。使用S
和usk
等參數(shù),生成密文C
所對(duì)應(yīng)的明文M
。AQ-TRE具體的構(gòu)造方案包括下述8個(gè)算法的構(gòu)造:
1)系統(tǒng)初始化Setup。給定一個(gè)安全參數(shù)k
∈Z,系統(tǒng)執(zhí)行系列操作:① 輸入k
,生成一個(gè)素?cái)?shù)p
、同為p
階的加法群G
和乘法群G
,以及一個(gè)雙線性映射e
:G
×G
→G
。② 選擇雜湊函數(shù)H
:{0,1}→G
,
H
:G
→{0,1}。其中l
為明文長度。明文空間為M
={0,1},密文空間為C
=G
×{0,1}。 隨機(jī)選擇一個(gè)生成元P
∈G
,其階為大素?cái)?shù)p
。時(shí)間服務(wù)器隨機(jī)生成一個(gè)數(shù)s
∈Z作為其私鑰,并公開時(shí)間服務(wù)器公鑰t
s
=sP
。③ 輸出系統(tǒng)參數(shù)params
={p
,G
,G
,e
,l
,P
,ts
,H
,H
}。2)所有路由節(jié)點(diǎn)的密鑰生成BE_KeyGen。對(duì)于任意一個(gè)路由節(jié)點(diǎn),KGC執(zhí)行下列操作:
① 計(jì)算節(jié)點(diǎn)公鑰Q
=H
(ID
)∈G
。② 設(shè)置節(jié)點(diǎn)私鑰S
=s
Q
,其中s
∈Z為隨機(jī)選擇的主私鑰,并設(shè)置主公鑰P
=s
P
。③通過某種安全方式將主公鑰和各公私鑰對(duì)發(fā)至相應(yīng)節(jié)點(diǎn)用戶。
之后,節(jié)點(diǎn)用戶將主公鑰及其公鑰提交給目錄服務(wù)器。
3)TRE用戶密鑰生成User_KeyGen。用戶生成隨機(jī)數(shù)u
∈Z,作為該用戶私鑰u
sk
=u
∈Z,輸入公共參數(shù)P
,計(jì)算出該用戶的公鑰u
pk
=uP
。4)TRE發(fā)送方消息加密TRE_Enc。給定消息M
、用戶公鑰u
pk
=uP
、時(shí)間服務(wù)器公鑰t
s
=sP
和發(fā)布時(shí)間T
={0,1},發(fā)送方隨機(jī)選取r
∈Z,生成密文C
=〈U
,V
〉=〈rP
,M
⊕H
(K
)〉 ,其中,U
=rP
,K
=e
(rH
(T
),uP
+sP
)=e
(H
(T
),P
)。5)路由節(jié)點(diǎn)廣播加密BE_Enc。OP從目錄服務(wù)器處獲取所需的9個(gè)節(jié)點(diǎn)信息(主公鑰、節(jié)點(diǎn)公鑰、節(jié)點(diǎn)IP),并將所選節(jié)點(diǎn)分為3組以構(gòu)造3層的洋蔥。每組節(jié)點(diǎn)用戶組U
=(u
|u
=ID
,i
=1,2,3),且每個(gè)節(jié)點(diǎn)都有一對(duì)公私鑰 (Q
,S
)。其中,每層洋蔥的構(gòu)造均使用BE_Enc加密內(nèi)層洋蔥,以保證每層路由節(jié)點(diǎn)都可以進(jìn)行解密。在對(duì)每層洋蔥進(jìn)行加密時(shí),OP隨機(jī)選取r
∈Z并根據(jù)該層節(jié)點(diǎn)公鑰,計(jì)算該層洋蔥明文構(gòu)造如式(4)所示,對(duì)應(yīng)的洋蔥密文如式(5)所示。6)路由節(jié)點(diǎn)解密BE_Dec。節(jié)點(diǎn)收到基于廣播加密的洋蔥后,使用其私鑰S
,計(jì)算依次得到內(nèi)層洋蔥明文O
、O
、O
并獲得對(duì)應(yīng)的反向密鑰K
、
K
、
K
。本方案使用3層基于廣播加密的洋蔥,層層解密獲得最內(nèi)層洋蔥密文為陷門請(qǐng)求C
=E
(T
) ,之后,將C
發(fā)送給時(shí)間服務(wù)器。7)時(shí)間陷門生成和原路返回TS_Rel。當(dāng)C
′在臨近解密時(shí)間到達(dá)時(shí)間服務(wù)器(由于接收方是在臨近解密時(shí)間發(fā)起的時(shí)間陷門查詢)時(shí),時(shí)間服務(wù)器解密獲得請(qǐng)求時(shí)間T
,同時(shí)構(gòu)造了一條從用戶代理到時(shí)間服務(wù)器的路徑,其中每個(gè)節(jié)點(diǎn)都擁有本節(jié)點(diǎn)的上一跳和下一跳的信息。時(shí)間服務(wù)器根據(jù)T
生成時(shí)間陷門S
=s
·H
(T
),使用其私鑰加密后按照原路返回陷門信息,路徑中每個(gè)節(jié)點(diǎn)使用對(duì)應(yīng)的反向密鑰K
進(jìn)行加密并發(fā)送給上一跳節(jié)點(diǎn)。8)接收方在指定時(shí)間解密TRE_Dec。OP接收到回復(fù)洋蔥后,使用各層洋蔥對(duì)應(yīng)的密鑰及時(shí)間服務(wù)器的公鑰進(jìn)行解密,獲得時(shí)間陷門S
。接收方根據(jù)給定的密文C
=〈U
,V
〉, 使用其私鑰u
和 時(shí)間陷門S
計(jì)算M
=V
⊕H
(K
)輸出明文 。
以上為算法的具體設(shè)計(jì),需要說明的是,在洋蔥傳遞過程中,洋蔥持有者U
通過依次向下層的3個(gè)路由節(jié)點(diǎn)發(fā)送會(huì)話請(qǐng)求的方式來確認(rèn)響應(yīng)節(jié)點(diǎn);確認(rèn)后,停止發(fā)送會(huì)話請(qǐng)求并向該節(jié)點(diǎn)發(fā)送洋蔥密文。其中會(huì)話請(qǐng)求由雜湊承諾來實(shí)現(xiàn)。確認(rèn)響應(yīng)節(jié)點(diǎn)的方式為:U
向O
發(fā) 送一個(gè)隨機(jī)數(shù)r
∈Z,
O
接 收到r
則返回h
=H
(r
),
U
校 驗(yàn)h
是 否等于H
(r
),若相等則視為響應(yīng)成功。給出本方案的安全模型。在本文提出的AQ-TRE方案中,假定所選洋蔥節(jié)點(diǎn)和時(shí)間服務(wù)器都是“誠實(shí)但好奇的”:它們都能按照規(guī)則要求履行自己的職責(zé),不會(huì)主動(dòng)地相互勾結(jié),但都試圖通過自己所獲得的信息,分析并推測(cè)查詢用戶的身份信息。本方案中的其他實(shí)體(如目錄服務(wù)器和KGC),對(duì)用戶的匿名性無法構(gòu)成威脅。而惡意攻擊者會(huì)監(jiān)聽通信信道,企圖非法獲得用戶的身份信息以及破壞通信。
下面針對(duì)AQ-TRE方案可能遇到的威脅進(jìn)行安全性分析,以證明本方案的安全性足以保證用戶在保持匿名前提下能夠成功進(jìn)行時(shí)間陷門的查詢。
定理1
本方案中所選洋蔥路由節(jié)點(diǎn)和時(shí)間服務(wù)器能夠推測(cè)出查詢用戶的身份信息的概率是可忽略的。證明:對(duì)于路由節(jié)點(diǎn)而言,本方案使用的洋蔥路由網(wǎng)絡(luò),其中的每個(gè)節(jié)點(diǎn)都只能知道該節(jié)點(diǎn)的上一跳和下一跳路由節(jié)點(diǎn),并按照自己的職責(zé)對(duì)洋蔥進(jìn)行轉(zhuǎn)發(fā),很難知道整個(gè)路由的信息,從而無法得知洋蔥的構(gòu)造者也就是發(fā)送者的身份。每個(gè)洋蔥節(jié)點(diǎn)均無法確定本節(jié)點(diǎn)在路徑中的位置,以及是否為路徑中的關(guān)鍵節(jié)點(diǎn)(入口節(jié)點(diǎn)或出口節(jié)點(diǎn)),從而無法接受賄賂。
對(duì)于時(shí)間服務(wù)器而言,由于其接收到的是層層解密后的陷門請(qǐng)求,只能獲得傳遞給自己消息的節(jié)點(diǎn)的信息;在返回陷門時(shí),也只能按照原路徑發(fā)給最后一跳路由節(jié)點(diǎn)。與時(shí)間服務(wù)器交互的只有最后一跳的路由節(jié)點(diǎn),因此其無法推斷發(fā)送請(qǐng)求的用戶身份信息。定理得證。
定理2
本方案中竊聽者根據(jù)竊聽內(nèi)容可推測(cè)出的信息是可忽略的/可以防止監(jiān)聽攻擊。證明:本方案在洋蔥網(wǎng)絡(luò)內(nèi)部進(jìn)行陷門請(qǐng)求消息的傳遞時(shí),可以防止監(jiān)聽攻擊。在請(qǐng)求陷門階段,竊聽攻擊者在洋蔥路由網(wǎng)絡(luò)內(nèi)竊聽到的信息只能反映相鄰兩個(gè)洋蔥路由器之間的通信,而無法獲得整個(gè)路徑的路由信息。洋蔥路由網(wǎng)絡(luò)內(nèi)部的數(shù)據(jù)在進(jìn)行傳輸?shù)臅r(shí)候是經(jīng)過層層加密的,即在網(wǎng)絡(luò)內(nèi)部傳輸?shù)臄?shù)據(jù)至少經(jīng)過了一次加密(使用時(shí)間服務(wù)器公鑰ts
進(jìn)行加密)。攻擊者在不知道時(shí)間服務(wù)器私鑰的情況下不可能構(gòu)造出所請(qǐng)求陷門的時(shí)間。在返回陷門階段,即使在極端情況下,攻擊者獲得了路徑上所有洋蔥路由節(jié)點(diǎn)的信息,仍無法在沒有用戶私鑰的情況下解密消息。而在洋蔥路由網(wǎng)絡(luò)之外,竊聽攻擊者獲得的密文是使用ECC加密算法加密過的,要獲得其中的密文就意味著他必須要破譯ECC加密算法。而對(duì)于目前的技術(shù)來說,破解ECC加密算法是非常困難的。從而保證了本方案在洋蔥路由網(wǎng)絡(luò)之外亦可以防止監(jiān)聽攻擊。定理得證。
定理3
本方案中路由節(jié)點(diǎn)共謀攻擊成功的概率是可忽略的。證明:假設(shè)攻擊者提前在路由節(jié)點(diǎn)中部署大量惡意節(jié)點(diǎn)進(jìn)行共謀攻擊。這些惡意節(jié)點(diǎn)在未被攻擊者啟用時(shí)依靠真實(shí)的身份信息偽裝成可信節(jié)點(diǎn),并在被攻擊者啟用時(shí)試圖通過互相共享信息以獲得所傳遞的消息或分析出消息來源。本方案中使用的是基于廣播加密的洋蔥路由路徑構(gòu)造方式,選擇節(jié)點(diǎn)的方式是隨機(jī)的。另外,路由節(jié)點(diǎn)在收到洋蔥之前不知道自己是否為被選取節(jié)點(diǎn)。
假設(shè)目錄服務(wù)器中共有m
個(gè)節(jié)點(diǎn),其中,惡意節(jié)點(diǎn)的數(shù)量為n
,用戶需從中選擇9個(gè)節(jié)點(diǎn)來構(gòu)造洋蔥。當(dāng)用戶選擇的節(jié)點(diǎn)中惡意節(jié)點(diǎn)的數(shù)量大于或等于3時(shí),攻擊者可發(fā)動(dòng)共謀攻擊。其成功的概率為:由此可知,如果n
值遠(yuǎn)小于m
值,則攻擊者攻擊成功的概率可以忽略不計(jì)。在現(xiàn)實(shí)應(yīng)用中,除非攻擊者不計(jì)代價(jià)地部署惡意節(jié)點(diǎn),否則n
遠(yuǎn)小于m
。由此,理智的攻擊者不會(huì)發(fā)起共謀攻擊。因此,本方案可抗路由節(jié)點(diǎn)共謀。定理得證。定理4
本方案可以抵御重放攻擊。證明:在本方案中,每個(gè)節(jié)點(diǎn)收到洋蔥并將其解密后均可獲得對(duì)應(yīng)的反向密鑰,該反向密鑰存在一個(gè)有效期,時(shí)間到達(dá)之前,節(jié)點(diǎn)將保存該反向密鑰,在收到重放攻擊所發(fā)送的洋蔥時(shí),解密獲得相同的反向密鑰后將丟棄該洋蔥,不予傳遞。以此來保證基于Tor的TRE陷門請(qǐng)求始終是新鮮的、限時(shí)的,可以對(duì)抗重放攻擊。定理得證。
定理5
本方案與一般Tor方案相比具有較強(qiáng)的魯棒性。證明:本方案的目標(biāo)是向時(shí)間服務(wù)器發(fā)送請(qǐng)求并及時(shí)接受返回陷門以解密消息。若惡意攻擊者想要進(jìn)行暴力攻擊,其成功攻擊具有時(shí)間限制,攻擊者需在一定時(shí)間內(nèi)完成破解。若攻擊者想要通過惡意破壞某些節(jié)點(diǎn)以達(dá)到目的,本方案中的廣播加密技術(shù)可以解決這一問題,即若某一或某些節(jié)點(diǎn)被攻擊者惡意破壞,本方案可以自動(dòng)使用備用節(jié)點(diǎn)構(gòu)建路徑且無需重新加密。定理得證。
綜上所述,本方案可以抵抗單點(diǎn)推測(cè)、監(jiān)聽攻擊、共謀攻擊、重放攻擊并具有較強(qiáng)的魯棒性,安全性足夠保證用戶在保持匿名的前提下成功地進(jìn)行時(shí)間陷門的查詢。
將AQ-TRE方案與現(xiàn)有的解決了節(jié)點(diǎn)失效的洋蔥路由方案,即Kate等的基于配對(duì)的洋蔥路由(pairing-based onion routing,PB-OR)方案,進(jìn)行解決節(jié)點(diǎn)失效的耗時(shí)比較。為了對(duì)比更直觀,列舉各方案中的基本操作,并計(jì)算其對(duì)應(yīng)耗時(shí)。
本文的程序運(yùn)行環(huán)境為:Intel(R) Core(TM) i7-2600 CPU 3.4 GHz處理器,8 GB內(nèi)存,Microsoft Visual Studio 2010。在此運(yùn)行環(huán)境中,基于MIRACL大數(shù)運(yùn)算庫并以987 654 321為隨機(jī)數(shù)種子進(jìn)行運(yùn)算。具體地,橢圓曲線采用的是有限域F
(q
為一個(gè)512位的大素?cái)?shù))上的超奇異橢圓曲線E
:y
=x
+1modq
(其素?cái)?shù)階p
為一個(gè)160位的素?cái)?shù));雙線性映射采用Tate對(duì)算法,將上述橢圓曲線離散對(duì)數(shù)子群映射到F
上的離散對(duì)數(shù)子群(階數(shù)仍為素?cái)?shù)p
)。運(yùn)算得出1次G
上的點(diǎn)乘運(yùn)算 PM的運(yùn)行時(shí)間大約為1.855 2 ms。為使計(jì)算結(jié)果不與計(jì)算機(jī)性能相關(guān),以 PM的耗時(shí)為基本比重,計(jì)算AQ-TRE和PB-OR方案中相關(guān)基本運(yùn)算相對(duì)于 PM運(yùn)算的計(jì)算成本如表1所示。表1中,BP表示雙線性配對(duì)運(yùn)算, PA表示G
上的加減運(yùn)算,Exp表示G
上的冪運(yùn)算, Xor 表示 l bp
長的比特串異或運(yùn)算, Mul表 示G
上的乘法運(yùn)算, M ul 表 示 Z上的模乘運(yùn)算,H
表示將任意長度的二進(jìn)制字符串映射到G
,
H
表示將G
元素映射到由0和1組成的 lbp
長度的字符串。表1 相關(guān)基本運(yùn)算相對(duì)于點(diǎn)乘運(yùn)算的計(jì)算成本統(tǒng)計(jì)
Tab. 1 Calculation cost of related basic operations relative to the point multiplication operation
基本運(yùn)算 符號(hào) 計(jì)算成本雙線性配對(duì) BP 3.372 1 G1上的點(diǎn)乘運(yùn)算 PMec 1 G1上的加(減)法運(yùn)算 PAec 0.007 1 G2上的冪運(yùn)算 Expdl 0.319 5 lb p長的比特串異或運(yùn)算 Xor 0.000 5 G2上的乘法運(yùn)算 Muldl 0.002 6 Z?p上的模乘運(yùn)算 Mul 0.000 6{0,1}?→G1雜湊函數(shù): H1 0.336 8 G2 →{0,1}lb p雜湊函數(shù): H2 0.072 0
為進(jìn)行效率對(duì)比,假設(shè)在PB-OR方案中構(gòu)造的是3層洋蔥路由,且為了達(dá)到與本方案同樣的效率,因此需要假設(shè)每層洋蔥均失效兩次。失效節(jié)點(diǎn)表現(xiàn)為發(fā)送消息無反應(yīng),不涉及解密操作,由發(fā)送者重新選擇備用節(jié)點(diǎn)并發(fā)送。為了更加精確,本文將AQ-TRE方案中的BE_Enc和BE_Dec階段與PB-OR方案創(chuàng)建電路階段時(shí)的加密和解密階段進(jìn)行比較。
在AQ-TRE方案中,假設(shè)用戶已經(jīng)選擇所需9個(gè)節(jié)點(diǎn)的信息(主公鑰、公鑰、IP地址),并將其分為3組,每組節(jié)點(diǎn)均使用廣播加密進(jìn)行加密,即BE_Enc階段,需要進(jìn)行以下操作:Q
+Q
,Q
=Q
+Q
, 共包含4個(gè) P A操作,計(jì)算成本為0.028 4;②U
=r
P
,U
=r
Q
,U
=r
Q
,共包含3個(gè)PM操 作,計(jì)算成本為3;③V
=O
⊕H
(e
(P
,r
Q
)),包含1個(gè) PM、1個(gè)BP、1個(gè)H
、1個(gè) X or操作,計(jì)算成本為4.444 6;綜上,總成本為7.473 0。由于每層洋蔥均需要進(jìn)行一次廣播加密,故BE_Enc階段的計(jì)算總成本為7.473 0×3=22.419 0。將構(gòu)建好的洋蔥發(fā)送給每層路由節(jié)點(diǎn)后,有效節(jié)點(diǎn)需要使用自己的私鑰進(jìn)行解密操作O
=V
⊕H
(e
(U
,S
)·e
(P
,U
+U
?U
)),共涉及2個(gè)BP、2個(gè) P A、 1個(gè)H
、 1個(gè) X or 、 1個(gè) M ul操作,故BE_Dec階段的計(jì)算成本為6.833 5×3=20.500 5。因此,AQ-TRE方案解決節(jié)點(diǎn)失效的相對(duì)耗時(shí)共為42.919 5。對(duì)于PB-OR方案,在其加密階段,假設(shè)用戶對(duì)電路中的路由節(jié)點(diǎn)選擇完畢,則需對(duì)其中每個(gè)節(jié)點(diǎn)進(jìn)行以下操作P
=rU
, γ=e
(U
,Q
), 其中涉及1個(gè) PM、1個(gè)Mul、1個(gè) Exp、1個(gè)BP操作,計(jì)算成本為4.692 2×3=14.0766。生成洋蔥后發(fā)送給路由節(jié)點(diǎn),節(jié)點(diǎn)需使用用戶假名rU
和自己的私鑰d
計(jì)算e
(rU
,d
),其中涉及1個(gè)BP操作3.372 1。對(duì)于PB-OR方案的加密階段,每一個(gè)節(jié)點(diǎn)失效時(shí),需重新加密該更新節(jié)點(diǎn)共1+2+3=6次。故加密階段每層節(jié)點(diǎn)失效兩次的計(jì)算成本為2×(14.076 6+6×4.692 2)=84.459 6。對(duì)于PB-OR方案的解密階段,每一個(gè)節(jié)點(diǎn)失效時(shí),重復(fù)前面所有的操作即共解密0+1+2=3次。故解密階段每層節(jié)點(diǎn)失效兩次的計(jì)算成本為2×(3.372 1×3)=20.232 6。因此,PB-OR方案解決節(jié)點(diǎn)失效的相對(duì)耗時(shí)共為104.692 2。基于表1,對(duì)比AQ-TRE和PB-OR方案解決節(jié)點(diǎn)失效的計(jì)算成本,如表2所示。
表2 AQ-TRE和PB-OR計(jì)算成本的比較
Tab. 2 Comparison of calculated costs between AQ-TRE and PB-OR
方案 基本操作 成本合計(jì)加密階段 解密階段AQ-TRE 3(4PMec+4PAec+BP+H2+Xor)3(2BP+2PAec+H2+Xor+Muldl) 42.919 5 PB-OR 18(PMec+Mul+Expdl+BP) 6BP 104.692 2
由表2可以看出,在上述場(chǎng)景下,AQ-TRE方案與PB-OR方案相比,時(shí)間效率提高了約59%。實(shí)際上,本方案可以解決每層洋蔥失效兩個(gè)節(jié)點(diǎn)的情況,而保持效率不變,同時(shí)又具有很好的可擴(kuò)展性。
另外,為展示本方案中節(jié)點(diǎn)個(gè)數(shù)與節(jié)點(diǎn)失效導(dǎo)致的路徑失效概率的關(guān)系及節(jié)點(diǎn)個(gè)數(shù)與計(jì)算復(fù)雜度的關(guān)系,將本方案中每層選取的節(jié)點(diǎn)個(gè)數(shù)由3個(gè)擴(kuò)展到n
個(gè),上述關(guān)系如圖2所示。圖2 不同節(jié)點(diǎn)個(gè)數(shù)的路徑失效概率和計(jì)算復(fù)雜度Fig. 2 Path failure probability and computational complexity of different number of nodes
由圖2可知,隨著每層節(jié)點(diǎn)數(shù)量的增加,路徑的失效概率呈指數(shù)下降,而計(jì)算復(fù)雜度呈線性上升。因此,在使用本方案進(jìn)行匿名查詢時(shí),可根據(jù)實(shí)際需求對(duì)節(jié)點(diǎn)數(shù)進(jìn)行適當(dāng)調(diào)整。AQ-TRE方案在n
取3且無節(jié)點(diǎn)失效的情況下的整體計(jì)算成本如表3所示。表3 AQ-TRE方案的計(jì)算成本
Tab. 3 Calculation cost of AQ-TRE scheme
算法 基本操作 計(jì)算成本Setup PMec 2 2 2.336 8 User_KeyGen PMec 1 TRE_Enc 2PMecPAec Xor+H1+H2 BE_KeyGen H12PMec++ +BP+ 5.788 5 BE_Enc 3(4PMec PAec H2Xor)+4 +BP+ + 22.419 0 BE_Dec 3(2BP 2PAec H2Xor+Muldl)+ + + 20.500 5 TS_Rel PMec+H1 1.336 8 TRE_Dec PMecPAec Xor+H1+H2+ +BP+ 4.788 5合計(jì) — 60.170 1
為了解決用戶匿名查詢時(shí)間陷門的問題,本文提出一種匿名查詢方案AQ-TRE。在AQ-TRE方案中,用戶通過在洋蔥路由網(wǎng)絡(luò)中構(gòu)造的路由路徑將陷門請(qǐng)求發(fā)送至?xí)r間服務(wù)器,時(shí)間服務(wù)器接收到請(qǐng)求后按照原路返回時(shí)間陷門給用戶。該方案的每一個(gè)實(shí)體均無法獲得用戶的身份信息,實(shí)現(xiàn)了匿名查詢。同時(shí),針對(duì)洋蔥路由可能存在的節(jié)點(diǎn)失效問題引入廣播加密方法,提高了解決節(jié)點(diǎn)失效問題的效率。安全性分析表明,本方案在所提的安全模型下,能夠抵抗單點(diǎn)推測(cè)、監(jiān)聽攻擊、重放攻擊以及共謀攻擊?;贛IRACL大數(shù)運(yùn)算庫,與解決節(jié)點(diǎn)失效相關(guān)方案進(jìn)行效率對(duì)比實(shí)驗(yàn),結(jié)果表明本方案效率更高。同時(shí),將本方案中的每層節(jié)點(diǎn)數(shù)進(jìn)行擴(kuò)展以展示在實(shí)際應(yīng)用中節(jié)點(diǎn)數(shù)對(duì)路徑失效概率以及計(jì)算復(fù)雜度的影響,并給出本方案的整體計(jì)算成本。
本文基于洋蔥路由設(shè)計(jì)TRE的匿名查詢時(shí)間陷門的方案,但目前洋蔥路由網(wǎng)絡(luò)是由因特網(wǎng)用戶自愿組成的,可靠性有待提高。因此,在未來的工作中,考慮將區(qū)塊鏈中的節(jié)點(diǎn)來代替洋蔥路由網(wǎng)絡(luò)中的節(jié)點(diǎn),利用區(qū)塊鏈的不可否認(rèn)性可靠地完成時(shí)間陷門的查詢。