楊曉暉,莊海晶
(河北大學(xué) 網(wǎng)絡(luò)空間安全與計(jì)算機(jī)學(xué)院,河北 保定 071000)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展和大數(shù)據(jù)應(yīng)用的增加,數(shù)字信息傳遞已成為人類交流的一種重要形式。但是,數(shù)字信息傳遞有很多潛在的安全隱患。潛在的攻擊者可以構(gòu)建通信分析圖,統(tǒng)計(jì)分析出通信雙方或者竊取信息,進(jìn)行重放攻擊等,這些攻擊行為嚴(yán)重破壞節(jié)點(diǎn)的通信,威脅用戶的隱私。研究人員揭示了各種可以讓對(duì)手通過(guò)網(wǎng)絡(luò)入侵獲取私人或其他敏感信息的方式,比如所謂的電話號(hào)碼[1]或IP地址[2]。因此,隱私的最終目標(biāo)不僅是要保護(hù)信息的內(nèi)容,而且要保護(hù)通信方的身份、通信的實(shí)際時(shí)間以及通信過(guò)程中的特定用戶參與?;谏鲜鲈?對(duì)匿名通信系統(tǒng)等隱私保護(hù)協(xié)議的研究勢(shì)在必行。在匿名通信系統(tǒng)中,對(duì)手在任何時(shí)候都不能知道參與者的身份。此外,對(duì)手不應(yīng)該知道發(fā)送和接收實(shí)體以及消息是否有價(jià)值[3]。然而目前的通信系統(tǒng)并不能提供對(duì)信息的不可追溯性和不可聯(lián)系性的基本保護(hù)。這些保護(hù)對(duì)調(diào)查自由、言論自由以及越來(lái)越多的網(wǎng)絡(luò)隱私都至關(guān)重要[4-5]。在監(jiān)視和廣泛分析行為以及數(shù)據(jù)泄漏等安全事件頻繁發(fā)生時(shí),保護(hù)數(shù)據(jù)隱私,防止用戶身份信息泄露變得越來(lái)越重要[6-9]。
匿名通信作為信息傳遞時(shí)隱私保護(hù)的關(guān)鍵手段之一,已成為研究的熱點(diǎn)[10]。匿名通信是一種在網(wǎng)絡(luò)通信過(guò)程中隱藏信息發(fā)送者和接收者的一種方法。匿名通信指采取一定的措施隱蔽通信流中的通信關(guān)系,使竊聽(tīng)者難以獲取或推知通信雙方的關(guān)系及內(nèi)容。匿名通信的目的就是隱蔽通信雙方的身份或通信關(guān)系,保護(hù)網(wǎng)絡(luò)用戶的個(gè)人通信隱私。匿名通信在神經(jīng)網(wǎng)絡(luò)[11]、云計(jì)算[12]和物聯(lián)網(wǎng)[13]中迅速發(fā)展。
針對(duì)匿名通信的研究,文中的貢獻(xiàn)如下:
(1) 提出一種新的預(yù)處理階段標(biāo)識(shí)符協(xié)商方案,通過(guò)橢圓曲線迪菲-赫爾曼(Elliptic Curve Diffie-Hellman,ECDH)密鑰交換,讓網(wǎng)絡(luò)中每?jī)蓚€(gè)成員都能協(xié)商出僅有對(duì)方知道的惟一通信標(biāo)識(shí)符,同時(shí)協(xié)商出加密消息的對(duì)稱密鑰。改進(jìn)后的方案簡(jiǎn)化且更有效地利用了預(yù)處理階段。
(2) 在匿名通信階段,通過(guò)讓發(fā)送者設(shè)置變化量,并將變化量作為密文的一部分傳輸給接收者,發(fā)送者和接收者根據(jù)相同的變化量改變標(biāo)識(shí)符,將標(biāo)識(shí)符動(dòng)態(tài)化。動(dòng)態(tài)標(biāo)識(shí)符能有效抵抗重放攻擊和統(tǒng)計(jì)攻擊。
(3) 設(shè)置專門的追查機(jī)構(gòu),將去除匿名的權(quán)利從用戶轉(zhuǎn)移到追查機(jī)構(gòu),防止惡意用戶拒絕去除匿名。
如今人們逐漸意識(shí)到網(wǎng)絡(luò)安全和數(shù)據(jù)隱私的重要性,針對(duì)通信過(guò)程中用戶身份數(shù)據(jù)的泄露在多個(gè)網(wǎng)絡(luò)架構(gòu)和不同的網(wǎng)絡(luò)應(yīng)用場(chǎng)景中都有很多的研究。
對(duì)于點(diǎn)對(duì)點(diǎn)(Peer To Peer Lending,P2P)網(wǎng)絡(luò)的匿名通信研究,SUN等[14]提出將節(jié)點(diǎn)分為3種不同類型的節(jié)點(diǎn)協(xié)同進(jìn)行信息傳輸,由此進(jìn)行P2P網(wǎng)絡(luò)的匿名通信。對(duì)于車載隨意移動(dòng)網(wǎng)絡(luò),DIAB等[15]通過(guò)提出集成隧道維護(hù)算法,使得匿名傳遞消息的同時(shí),消息的發(fā)送和接收不會(huì)被中斷。MARIA等[16]提出匿名身份驗(yàn)證以檢查車輛的合法性,同時(shí)能夠在漫游的情況下為車輛提出基于區(qū)塊鏈的切換身份驗(yàn)證。對(duì)于社交網(wǎng)絡(luò), BUCCAFURRI等[17]提出的一種基于協(xié)作方法的匿名通信協(xié)議,所提出的方案不僅對(duì)社交網(wǎng)絡(luò)提供商隱藏了消息的內(nèi)容,而且還隱藏了通信本身。
撇開(kāi)匿名通信的具體應(yīng)用場(chǎng)景,在計(jì)算機(jī)網(wǎng)絡(luò)上對(duì)于匿名通信的研究,可以追溯到1981年CHAUM等[18]提出的一種MIX-net機(jī)制,該機(jī)制通過(guò)多個(gè)MIX節(jié)點(diǎn)來(lái)混淆信息,隱藏身份。接著,CHAUM等[19]又提出一種DC-net機(jī)制,該方法基于標(biāo)準(zhǔn)密碼技術(shù),能夠抵御少數(shù)不誠(chéng)實(shí)節(jié)點(diǎn)存在的情況下的故障分析攻擊。但是這種機(jī)制要求節(jié)點(diǎn)在給定時(shí)間段內(nèi)同時(shí)進(jìn)行匿名通信操作。之后提出了洋蔥網(wǎng)絡(luò)[20-21],基于洋蔥路由算法,通過(guò)在公密鑰加密系統(tǒng)中進(jìn)行分層消息加密來(lái)實(shí)現(xiàn)匿名。XIA等[22]改進(jìn)了洋蔥網(wǎng)絡(luò),將洋蔥混合網(wǎng)絡(luò)嵌入到逐跳路由中,設(shè)計(jì)了一種混合路由方法。該方法可以保證節(jié)點(diǎn)故障情況下的持久的路由能力,防止靜態(tài)中間混合失敗時(shí)導(dǎo)致消息丟失、通信失敗甚至去匿名化攻擊。但是路由網(wǎng)絡(luò)難以抵抗流量分析攻擊[23],且要求每個(gè)節(jié)點(diǎn)都是誠(chéng)實(shí)的,不然惡意節(jié)點(diǎn)能夠串通起來(lái)破壞網(wǎng)絡(luò)。JIANG等[3]在2018年提出Acibe,該模型通過(guò)基于身份的加密方案(Identity-Based Encrypted,IBE)對(duì)消息進(jìn)行加密,且允許用戶在每個(gè)時(shí)間段內(nèi)上傳和下載多條消息,能夠解決DC-net機(jī)制要求節(jié)點(diǎn)同時(shí)通信的問(wèn)題。但是,該方案的通信效率會(huì)隨著通信數(shù)量的增加而顯著降低。為提高通信效率,方案[4,10]通過(guò)增加預(yù)處理階段來(lái)進(jìn)行一些必要操作,通過(guò)預(yù)處理階段的操作可以減少匿名通信階段的通信計(jì)算時(shí)間。
Aitac模型[10]中,在預(yù)處理階段,通過(guò)要求匿名組的每?jī)蓚€(gè)成員都協(xié)商對(duì)應(yīng)的通信標(biāo)識(shí),從而減少通信階段下載的密文數(shù)量,降低匿名通信的成本,同時(shí)提高擴(kuò)展性。在該預(yù)處理階段中,為了協(xié)商通信標(biāo)識(shí),需要匿名組中的每個(gè)用戶都為其余的N-1個(gè)用戶生成一個(gè)標(biāo)識(shí)符nij,并用對(duì)應(yīng)的用戶Uj的公鑰加密該標(biāo)識(shí)符。為保證標(biāo)識(shí)符的完整性,還對(duì)標(biāo)識(shí)符進(jìn)行哈希,將哈希結(jié)果附加到密文中。接著,每個(gè)用戶都將生成的N-1個(gè)標(biāo)識(shí)符nij上傳到公共版中,為了讓每個(gè)用戶獲得其余用戶給其設(shè)置的惟一nij,需要匿名組中的每個(gè)用戶下載公共板上的所有密文,然后解密所有自己可以解密的密文來(lái)獲得其他用戶給自己設(shè)置的標(biāo)識(shí)符。在后續(xù)匿名通信階段,用戶根據(jù)密文前綴的標(biāo)識(shí)符nij選擇發(fā)送給自己的密文進(jìn)行下載。但是,Aitac由于所設(shè)置的標(biāo)識(shí)符的不變性,可能沒(méi)辦法很好地抵抗重放攻擊和統(tǒng)計(jì)攻擊。文中方案在此基礎(chǔ)上進(jìn)行改進(jìn)。
G和Gt為素?cái)?shù)p階乘法循環(huán)群,其中g(shù)為G的生成元。e:G×G→Gt為雙線性映射,擁有以下性質(zhì):
(1) 雙線性:對(duì)于任意?a,b∈Zp,都有(ga,gb)=e(g,g)ab。
(2) 可計(jì)算性:對(duì)于任意?u,v∈G都能在多項(xiàng)式時(shí)間內(nèi)計(jì)算出e(u,v)。
(3) 非退化性:e(g,g)≠1Gt,其中1Gt為Gt的單位元。
此外,e還因?yàn)闈M足e(ga,gb)=e(g,g)ab=e(gb,ga),而具有對(duì)稱性。
ECDH是橢圓曲線加密算法(Elliptic Curve Cryptography,ECC)+迪菲-赫爾曼算法(Diffe_Hellman,DH),安全性由橢圓曲線離散對(duì)數(shù)難題來(lái)保證。交換雙方可以在不共享任何秘密的情況下協(xié)商出一個(gè)密鑰。ECC是建立在基于橢圓曲線的離散對(duì)數(shù)問(wèn)題上的密碼體制,給定橢圓曲線上的一個(gè)點(diǎn)P,一個(gè)整數(shù)k,求解Q=kP容易;給定一個(gè)點(diǎn)P、Q,知道Q=kP,求整數(shù)k卻是一個(gè)難題。ECDH工作過(guò)程如下(以Alice和Bob為例):
(1) 選取一條橢圓曲線(橢圓曲線E,階N,基點(diǎn)G)。
(2) Alice生成隨機(jī)整數(shù)a,計(jì)算A=aG。Bob生成隨機(jī)整數(shù)b,計(jì)算B=bG。
(3) Alice將A傳遞給Bob;Bob將B傳遞給Alice。傳遞可公開(kāi),由于橢圓曲線的離散對(duì)數(shù)問(wèn)題是難題,攻擊者計(jì)算不出a和b。
(4) Bob收到Alice傳遞的A,計(jì)算Q=bA;Alice收到Bob傳遞的B,計(jì)算Q′=aB。
(5) Alice、Bob雙方即得一致的密鑰Q:
Q=bA=b(aG)=a(bG)=aB=Q′ 。
(1)
在提議的模型中,提出一種新的預(yù)處理階段協(xié)商方案,通過(guò)ECDH密鑰交換,讓網(wǎng)絡(luò)中每?jī)蓚€(gè)成員都能協(xié)商出僅有對(duì)方知道的惟一通信標(biāo)識(shí)符,同時(shí)協(xié)商出對(duì)稱密鑰。能顯著降低在預(yù)處理階段的通信消耗和提高獲取通信方標(biāo)識(shí)符的效率。在匿名通信階段,通過(guò)標(biāo)識(shí)符的動(dòng)態(tài)變化的方式,能有效抵抗重放攻擊和統(tǒng)計(jì)攻擊。Aitac模型提出可追溯性,其可追溯性是以用戶自己選擇去除匿名性使其可被追溯為前提,但是考慮到惡意用戶不會(huì)主動(dòng)去除匿名性而致身份暴露,提議的模型通過(guò)改變密文結(jié)構(gòu)和增加一個(gè)追查機(jī)構(gòu)對(duì)惡意用戶進(jìn)行追蹤。方案中常用到的符號(hào)如表1所示。
表1 常用的符號(hào)
匿名通信模型如圖1所示,模型中存在5種類型的實(shí)體:發(fā)送者、接收者、公共板、密鑰生成中心(Key Generation Center,KGC)和追查機(jī)構(gòu)。
圖1 匿名通信模型
(1) 發(fā)送者:消息的發(fā)送方。負(fù)責(zé)加密消息,維護(hù)標(biāo)識(shí)符,生成密文。
(2) 接收者:消息的接收方。根據(jù)標(biāo)識(shí)符選擇自己的消息進(jìn)行下載,解密密文,獲得消息。
(3) 公共板:消息上傳到公共板中,進(jìn)行集中混淆。接收者通過(guò)標(biāo)識(shí)符從公共板中下載消息。
(4) 密鑰生成中心:負(fù)責(zé)所有匿名組中成員和追查機(jī)構(gòu)的公私鑰的生成。
(5) 追查機(jī)構(gòu):在需要解除消息的匿名性時(shí),能夠找到消息的所屬者。
表2 Ui“用戶-標(biāo)識(shí)符”映射表
開(kāi)始是預(yù)處理階段,預(yù)處理階段是為了匿名通信階段做準(zhǔn)備,匿名組中的所有用戶會(huì)做相同的動(dòng)作,因此在該階段沒(méi)有匿名的需求。首先密鑰中心生成非對(duì)稱密鑰分發(fā)給匿名組中所有成員和追查機(jī)構(gòu)。接著用戶通過(guò)ECDH密鑰交換,協(xié)商出Ui和Uj的對(duì)稱密鑰K,接著雙方再計(jì)算出通信標(biāo)識(shí)符nij和nji。每個(gè)用戶都會(huì)維護(hù)一個(gè)“用戶標(biāo)識(shí)符”映射表。以用戶Ui為例,如表2所示。
在匿名通信時(shí),發(fā)送者將消息加密上傳到公共板中,接收者根據(jù)密文前綴中的標(biāo)識(shí)符過(guò)濾出傳輸給自己的密文進(jìn)行下載。在檢索到有屬于自己的密文時(shí),用戶僅下載屬于自己的密文,不需要下載與自己無(wú)關(guān)的密文進(jìn)行下載和解密。這樣可減少匿名通信階段下載和解密密文的負(fù)擔(dān)。但是,如果使用靜態(tài)標(biāo)識(shí)符(在預(yù)處理階段設(shè)置好后不再改變),則很容易遭受重放攻擊,造成系統(tǒng)壓力過(guò)大,或遭受統(tǒng)計(jì)攻擊,造成身份泄露。
考慮重放攻擊的情況。攻擊者從公共版中下載密文,假設(shè)攻擊者下載的密文標(biāo)識(shí)符為n′,攻擊者沒(méi)有對(duì)應(yīng)的密鑰不能解密密文中的信息,但是攻擊者大量將該密文重復(fù)上傳到公共板中或提取標(biāo)識(shí)符n′后邊附加自己的消息。若該標(biāo)識(shí)符n′對(duì)應(yīng)用戶Ux,用戶Ux發(fā)現(xiàn)公共版中有大量屬于自己的密文,于是進(jìn)行下載。但是下載后發(fā)現(xiàn),已接收過(guò)該密文或n′所對(duì)應(yīng)的發(fā)送者與簽名所映射的發(fā)送者不一致,則該密文是無(wú)效密文,只能丟棄。用戶Ux被動(dòng)下載大量無(wú)效密文,導(dǎo)致正確密文無(wú)法被下載。超過(guò)系統(tǒng)規(guī)定時(shí)間后,正確密文被拋棄,用戶Ux被攻擊,無(wú)法下載屬于自己的正確密文。
考慮標(biāo)識(shí)符泄露的情況。攻擊者監(jiān)視公共版中的密文上傳下載情況,發(fā)現(xiàn)用戶Ux頻繁地下載標(biāo)識(shí)符為n′的密文,那么n′很大概率為用戶Ux的其中一個(gè)標(biāo)識(shí)符。攻擊者若長(zhǎng)期進(jìn)行監(jiān)測(cè)和統(tǒng)計(jì)分析,很可能得到標(biāo)識(shí)符和用戶的映射關(guān)系,造成身份泄露。為了解決以上的問(wèn)題,提議的方案將靜態(tài)標(biāo)識(shí)符改為動(dòng)態(tài)標(biāo)識(shí)符。
在需要的時(shí)候,追查機(jī)構(gòu)可以根據(jù)密文,追查出消息的所屬者。
匿名通信模型的安全性涉及以下幾個(gè)方面:
(1) 匿名通信模型的魯棒性。在匿名通信模型的各個(gè)階段,都能抵御來(lái)自惡意方的攻擊。例如重放攻擊、中間人攻擊和統(tǒng)計(jì)攻擊等。
(2) 消息m的安全性。消息m的安全性包括消息m來(lái)源的正確性、消息m的完整性和消息m的機(jī)密性。消息m來(lái)源的正確性是要驗(yàn)證該消息所屬發(fā)送者身份的正確性,而不是未經(jīng)認(rèn)證的惡意攻擊者偽造的消息。文中采用基于身份的簽名方法SM 9來(lái)確保消息m來(lái)源的正確性。消息m的完整性是指數(shù)據(jù)正確無(wú)誤,使數(shù)據(jù)免受未授權(quán)的毀壞。文中采用哈希驗(yàn)證的方式來(lái)保證消息m的完整性;消息m的機(jī)密性是匿名通信方案的基礎(chǔ)。文中采用公鑰加密的方式保證消息m的機(jī)密性。
(3) 發(fā)送者和接收者的匿名性。發(fā)送者的匿名性是在匿名通信過(guò)程中,除了消息發(fā)送者和接收者外,匿名組中其余N-2個(gè)用戶無(wú)法知道公共版上該消息的發(fā)送者和接收者的身份。在需要去除消息的匿名時(shí),追蹤機(jī)構(gòu)可以進(jìn)行匿名的去除;接收者的匿名性是在匿名通信中,只有發(fā)送者知道消息接收者的身份,匿名組的其他成員都不知道接收者的身份。
提議的模型包含預(yù)處理階段、匿名通信階段和身份追蹤。
4.3.1 預(yù)處理階段
文中方案的預(yù)處理階段包含以下幾個(gè)部分:
(1) 設(shè)置階段。該階段生成系統(tǒng)公共參數(shù)。設(shè)E為一個(gè)p階循環(huán)群,基點(diǎn)為Q。設(shè)G1和G2是階為素?cái)?shù)q的加法循環(huán)群,GT是階為素?cái)?shù)q的乘法循環(huán)群。存在一個(gè)雙線性映射e:G1×G2→GT。P1為群G1的生成元,P2為群G2的生成元。公共參數(shù)為PG=(E,p,Q,G1,G2,GT,P1,P2,e)。
(2) 密鑰生成。主密鑰生成:密鑰生成中心隨機(jī)選擇Ks∈[1,q-1]作為主私鑰,計(jì)算主公鑰Ps=[Ks]P2;用戶和追查機(jī)構(gòu)簽名加密公私鑰生成:公鑰是實(shí)體的惟一標(biāo)識(shí)PKi=ID,私鑰SKi=[Ks(H(ID)+Ks)-1]P1。
(3)標(biāo)識(shí)符nij生成和傳輸。在這個(gè)階段中,匿名組中的每個(gè)用戶Ui(i=1,2,…,N)為其余N-1個(gè)用戶生成隨機(jī)整數(shù)uij(j=1,2,…,N;j≠i),計(jì)算Aij=uijQ,然后分別發(fā)送給其余的N-1個(gè)用戶。如圖2所示,假設(shè)用戶Ui和用戶Uj(i,j∈N,i≠j)。Ui選擇隨機(jī)整數(shù)a,計(jì)算Aij=aQ。同理,Uj選擇隨機(jī)整數(shù)b,計(jì)算Aji=bQ。Ui將Aij發(fā)送給Uj,Uj將Aji發(fā)送給Ui。Ui計(jì)算K=aAji=abQ。Uj計(jì)算K=bAij=baQ。預(yù)處理階段沒(méi)有匿名,因此通信雙方知道對(duì)方的ID。接著,Ui和Uj用雙方的公鑰對(duì)K進(jìn)行哈希,獲得他們雙方的通信標(biāo)識(shí)符:
圖2 協(xié)商對(duì)稱密鑰和標(biāo)識(shí)符(以Ui和Uj為例)
nij=H(PKj‖K) ,
(2)
nji=H(PKi‖K) 。
(3)
Ui想要給Uj發(fā)消息,用nij作為標(biāo)識(shí)符,對(duì)于Ui,nij是發(fā)送標(biāo)識(shí)符,對(duì)于Uj,nij是接收標(biāo)識(shí)符。而Uj想要給Ui發(fā)消息,用nji作為標(biāo)識(shí)符;對(duì)于Uj,nji是發(fā)送標(biāo)識(shí)符;對(duì)于Ui,nji是接收標(biāo)識(shí)符。
為了保證協(xié)商標(biāo)識(shí)符的安全性,抵抗中間人攻擊,Ui在傳輸中間數(shù)據(jù)Aij時(shí)要加上公私鑰簽名機(jī)制來(lái)進(jìn)行鑒別。簽名采用基于身份的簽名算法SM 9。發(fā)送方產(chǎn)生隨機(jī)數(shù)r∈[1,q-1],計(jì)算簽名如下:
h=H(Aij‖e(P1,Ps)r) ,
(4)
S=[r-h]SKi。
(5)
為保證Aij的完整性,將Aij與對(duì)方的公鑰連接進(jìn)行哈希。因此最終傳輸?shù)闹虚g數(shù)據(jù)為
cAij=(s1,c1,c2)=((h,S),Aij,H(PKj‖Aij)) 。
(6)
Uj收到數(shù)據(jù)后,進(jìn)行簽名驗(yàn)證,計(jì)算如下:
P=[H(PKi)]P2+Ps,
(7)
u=e(S′,P) ,
(8)
z=e(P1,Ps)h′。
(9)
若H(Aij‖zu)=h′,則驗(yàn)證成功;接著進(jìn)行完整性驗(yàn)證,若H(PKj‖A′ij)=H(PKj‖Aij),則驗(yàn)證成功,說(shuō)明中間數(shù)據(jù)Aij正確傳輸。
4.3.2 匿名通信階段
匿名通信由以下4個(gè)步驟組成,如圖3所示。
圖3 匿名通信
(1) 密文加密。提議的方案采用對(duì)稱加密進(jìn)行消息的加密。Ui找到預(yù)備階段協(xié)商的接收方Uj對(duì)應(yīng)的標(biāo)識(shí)符nij作為密文的前綴。對(duì)于消息m,發(fā)送方Ui通過(guò)預(yù)處理階段協(xié)商的對(duì)稱密鑰K快速計(jì)算密文K(m)。將消息m和nij連接后進(jìn)行哈希H(m‖nij)并放在第3個(gè)參數(shù)作為消息認(rèn)證碼,用來(lái)保證消息的完整性。為了防止中間人攻擊,要對(duì)密文進(jìn)行簽名以對(duì)發(fā)送方身份進(jìn)行驗(yàn)證。簽名采用基于身份的簽名算法SM 9。發(fā)送方產(chǎn)生隨機(jī)數(shù)r∈[1,q-1],計(jì)算
h=H(H(m)‖e(P1,Ps)r) ,
(10)
S=[r-h]SKi。
(11)
簽名為
σi=(h,S) 。
(12)
為了實(shí)現(xiàn)后續(xù)的可追蹤,發(fā)送者查詢追蹤機(jī)構(gòu)的公鑰,使用該公鑰對(duì)簽名σ、消息摘要H(m)和發(fā)送者的公鑰,即發(fā)送者的身份標(biāo)識(shí)PKi進(jìn)行加密。結(jié)果作為密文的第6個(gè)參數(shù),即
T=PK′(σ,H(m),PKi) 。
(13)
為了抵抗重放攻擊和防止標(biāo)識(shí)符泄露,設(shè)計(jì)了動(dòng)態(tài)標(biāo)識(shí)符。每次發(fā)送者在生成密文時(shí),隨機(jī)選擇一個(gè)數(shù)t。t即為下一次通信密文的變化量。發(fā)送者將t加密后放在密文的第2個(gè)參數(shù)的位置,同時(shí)更新自己維護(hù)的“用戶-標(biāo)識(shí)符”映射表。
密文c結(jié)構(gòu)如圖4所示。
圖4 密文c結(jié)構(gòu)
(2) 發(fā)送者上傳密文。發(fā)送者將密文c上傳到公共版中,在上傳步驟中,每個(gè)用戶至少上傳1次密文。發(fā)送者上傳密文后,會(huì)馬上進(jìn)行該密文對(duì)應(yīng)的標(biāo)識(shí)符更新。更新標(biāo)識(shí)符的算法如下:
nij=nij+H(t) 。
(14)
新標(biāo)識(shí)符由舊標(biāo)識(shí)符和經(jīng)過(guò)哈希的變化量t相加而得。
(3) 接收者下載密文。在下載階段,接收者過(guò)濾密文前綴,根據(jù)密文前綴中的標(biāo)識(shí)符nij,找到屬于自己的密文進(jìn)行下載。在此階段,每個(gè)用戶需要至少下載1次密文。若用戶沒(méi)有在公共版中找到屬于自己的密文,則隨機(jī)下載一個(gè)。
(4) 接收者解密密文。接收者Uj根據(jù)標(biāo)識(shí)符nij找到自己的密文并進(jìn)行下載。下載和驗(yàn)證完消息的完整性后,接收者進(jìn)行標(biāo)識(shí)符更新,設(shè)定新標(biāo)識(shí)符算法如式(14)。發(fā)送者和接收者使用相同的變化量進(jìn)行更新,更新后的標(biāo)識(shí)符相同。之前的標(biāo)識(shí)符在驗(yàn)證完消息的完整性后拋棄。這樣若有惡意攻擊者進(jìn)行重放攻擊,使用過(guò)期的標(biāo)識(shí)符上傳數(shù)據(jù)到公共版上,接收者會(huì)忽略該密文不會(huì)進(jìn)行下載。這種動(dòng)態(tài)標(biāo)識(shí)符的方式,也讓攻擊者無(wú)法通過(guò)監(jiān)視用戶上傳下載密文中的標(biāo)識(shí)符的數(shù)量和頻率,來(lái)推測(cè)用戶與標(biāo)識(shí)符的映射關(guān)系,造成身份泄露。
接收者下載完密文c后,首先用預(yù)處理階段協(xié)商的對(duì)稱密鑰K進(jìn)行解密,獲得消息m′。然后,為驗(yàn)證發(fā)送方的身份,要進(jìn)行簽名的驗(yàn)證。接收者通過(guò)nij找到發(fā)送方的PKi。在這里強(qiáng)調(diào)一下,只有通信雙方能通過(guò)nij知道對(duì)方的身份,別人是不能通過(guò)nij知道通信雙方的身份的。接著,接收者計(jì)算
P=[H(PKi)]P2+Ps,
(15)
u=e(S′,P) ,
(16)
z=e(P1,Ps)h′。
(17)
若
H(H(m)‖zu)=h′
(18)
成立,則發(fā)送者的身份驗(yàn)證通過(guò)。為驗(yàn)證解密的消息的完整性,對(duì)消息和此次更新前的標(biāo)識(shí)符連接并進(jìn)行哈希H(m′‖nij),若
H(m′‖nij)=c4,
(19)
則消息完整性得以確認(rèn),消息是正確的。
4.3.3 身份追蹤
為防止匿名濫用,對(duì)匿名網(wǎng)絡(luò)通信設(shè)置了可追蹤的機(jī)制??紤]到作惡的用戶不會(huì)主動(dòng)解除匿名,文中方案將解除匿名的權(quán)力賦予追查機(jī)構(gòu)。追查機(jī)構(gòu)收到申請(qǐng)需要解除匿名的匿名消息c=(c1,c2,c3,c4,c5,c6)。追查機(jī)構(gòu)提取出T,用自己的私鑰對(duì)T進(jìn)行解密SK′(PK′(σ,H(m),PKi))。追查機(jī)構(gòu)解密后,得到簽名σ、哈希后的消息H(m)和PKi。追查機(jī)構(gòu)進(jìn)行簽名的驗(yàn)證,追查機(jī)構(gòu)計(jì)算式(15)~(17)。若式(18)成立,則可確認(rèn)該條消息的發(fā)送者為PKi。
驗(yàn)證正確性實(shí)際上就是驗(yàn)證zu=e(P1,Ps)r。證明如下:
zu=e(P1,Ps)he(S,P)=
e(P1,P2)Kshe([r-h]SKi,[H(PKi)]P2+Ps)=
e(P1,P2)Kshe([r-h][Ks(H(ID)+Ks)-1]P1,[H(PKi)]P2+KsP2)=
e(P1,P2)Kshe([r-h][Ks(H(ID)+Ks)-1]P1,[H(PKi)+Ks]P2=
e(P1,P2)Kshe(P1,P2)(r-h)(Ks(H(ID)+Ks)-1)(H(PKi)+Ks)=
e(P1,P2)Kshe(P1,P2)(r-h)Ks=e(P1,P2)rKs=e(P1,Ps)r。
(20)
根據(jù)模型提出的3個(gè)安全目標(biāo)進(jìn)行分析:匿名通信模型的魯棒性、消息m的可信度和發(fā)送者接收者的匿名性。
5.2.1 匿名通信模型的魯棒性
(1) 協(xié)商標(biāo)識(shí)符安全性。預(yù)處理階段進(jìn)行對(duì)稱密鑰和標(biāo)識(shí)符的協(xié)商。該方案在該階段能夠抵抗中間人攻擊。證明如下。
(21)
(22)
因此,說(shuō)明中間數(shù)據(jù)接收不正確,接收者會(huì)拋棄數(shù)據(jù),中間人攻擊失敗。
(2) 匿名通信安全性。匿名通信過(guò)程中,該方案能抵抗重放攻擊。證明如下。
(23)
(24)
因此Uj不會(huì)接收該惡意數(shù)據(jù),也不會(huì)更新標(biāo)識(shí)符。
匿名通信過(guò)程中如果采用靜態(tài)的標(biāo)識(shí)符,很可能會(huì)造成標(biāo)識(shí)符無(wú)效身份泄露。文中方案能防止標(biāo)識(shí)符無(wú)效造成的身份泄露。證明如下。
(3) 身份追蹤安全性。該方案能保證身份追蹤的安全性,證明如下。
5.2.2 消息m的安全性
消息m的安全性包括消息m來(lái)源的正確性、消息m的完整性和消息m的機(jī)密性。消息m來(lái)源的正確性由基于身份簽名方案的安全性保證,只要基于身份簽名方案是安全的,那么消息m的來(lái)源就是可保證的。文中采用SM9作為簽名方案,該方案可以對(duì)簽名進(jìn)行驗(yàn)證,保證消息發(fā)送者身份的正確性。消息m的完整性由哈希算法保證,只要
H(m′‖nij)=c4,
(25)
那么消息完整性可以得到保證。消息m的機(jī)密性由對(duì)稱加密方案的安全性進(jìn)行保證。文中采用SM4作為對(duì)稱加密方案。只要加密方案是安全的,消息就是安全的。
5.2.3 發(fā)送者和接收者的匿名性
公共板的集中特性可以保證匿名性。所有上傳密文在公共版中集中混淆,因此不知道那條消息是誰(shuí)發(fā)出,發(fā)給誰(shuí)。提出的方案可以保證對(duì)于匿名組其他用戶,消息中的標(biāo)識(shí)符無(wú)法與任何用戶進(jìn)行對(duì)應(yīng),無(wú)法通過(guò)標(biāo)識(shí)符找出發(fā)送者和匿名者。在消息的上傳和下載階段,要求所有用戶至少進(jìn)行1次上傳和下載,這可以確保沒(méi)有“只有一個(gè)用戶上傳”或“只有一個(gè)用戶下載”這樣的情況,從而保證發(fā)送者和接收者的匿名性。
對(duì)于上述幾個(gè)方面的描述,將所提出的模型與Acibe模型[3]、Aitac模型[10]和DC-net模型[19]進(jìn)行了比較。模型的安全性比較如表3所示。
表3 不同模型的安全性比較
文中方案采用的密碼庫(kù)是由北京大學(xué)自主開(kāi)發(fā)的國(guó)產(chǎn)商用密碼開(kāi)源庫(kù)GmSSL,實(shí)驗(yàn)環(huán)境是Ubuntu 18.04(64bit),Intel(R) Core(TM) i5-10505 CPU @ 3.20 GHz 3.19 GHz,4 GB RAM。消息的長(zhǎng)度設(shè)置為 128 B,用戶數(shù)最大為40。將模型的性能與Acibe[3]和Aitac[10]進(jìn)行了比較。忽略了上傳和下載階段的通信成本,并在一個(gè)通信周期中逐步將消息數(shù)增加到1 000條。觀察通信時(shí)間隨消息數(shù)的增加而變化,得到時(shí)間成本。
在預(yù)處理階段,由于Acibe沒(méi)有該階段,因此在該階段文中僅和Aitac進(jìn)行比較。由于提出的方案改變了協(xié)商標(biāo)識(shí)符的方式,因此當(dāng)用戶數(shù)增加時(shí)需要處理的“協(xié)商標(biāo)識(shí)符”消息數(shù)量較少,如圖5所示。因?yàn)樵趨f(xié)商時(shí),Aitac需要每個(gè)節(jié)點(diǎn)去下載處理其余節(jié)點(diǎn)生成的所有(O(N2))“協(xié)商標(biāo)識(shí)符”消息,因此要處理的消息數(shù)隨用戶數(shù)的增加呈非線性增加,提出的方案只用處理有效的對(duì)應(yīng)其余節(jié)點(diǎn)的O(N)個(gè)“協(xié)商標(biāo)識(shí)符”消息,要處理的消息數(shù)隨用戶數(shù)的增加呈線性增加,減小了每個(gè)節(jié)點(diǎn)的處理壓力。方案也有利于節(jié)點(diǎn)的擴(kuò)展,在這個(gè)階段同時(shí)進(jìn)行了對(duì)稱密鑰的協(xié)商。
圖5 標(biāo)識(shí)符協(xié)商時(shí)處理的消息數(shù)
圖6是密鑰生成的時(shí)間消耗。在密鑰生成時(shí),Aitac和提出的方案只需要在預(yù)處理階段為每個(gè)節(jié)點(diǎn)進(jìn)行密鑰生成,在后續(xù)通信階段密鑰不改變,因此密鑰生成所花費(fèi)的時(shí)間與消息數(shù)量無(wú)關(guān),只與參與的用戶數(shù)有關(guān)。而Acibe要求每次通信周期都重新計(jì)算用戶的密鑰,因此其密鑰生成時(shí)間成本會(huì)隨消息數(shù)量的增加而增加,這樣可以大大簡(jiǎn)化私鑰生成的計(jì)算,提高匿名通信的效率。
圖6 密鑰生成的時(shí)間消耗
圖7是消息加密的時(shí)間消耗。在匿名通信階段,提出的方案用在預(yù)處理階段協(xié)商的對(duì)稱密鑰對(duì)消息進(jìn)行對(duì)稱加密,對(duì)消息采用對(duì)稱加密的加密方式比起非對(duì)稱密鑰可大大提高加密效率。
圖7 消息加密的時(shí)間消耗
圖8是解密的時(shí)間消耗。消息解密時(shí),提出的方案和Aitac都要求用戶只需要通過(guò)標(biāo)識(shí)符過(guò)濾屬于自己的消息進(jìn)行解密,而Acibe要求用戶將公共板中的消息全部進(jìn)行下載再解密,即要處理O(NM)的消息,因此,提出的方案和Aitac解密的時(shí)間消耗大大減少。同時(shí),提出的方案采用的加密方式是對(duì)稱加密,解密時(shí)的時(shí)間效率會(huì)更高。實(shí)驗(yàn)時(shí)假設(shè)有40個(gè)用戶,不同模型在不同階段的時(shí)間消耗如表4所示。
圖8 消息解密的時(shí)間消耗
表4 不同模型不同階段的時(shí)間消耗比較
文中提出一種基于動(dòng)態(tài)標(biāo)識(shí)符協(xié)商方法的匿名通信模型。該模型提出一種新的預(yù)處理階段協(xié)商方案,通過(guò)ECDH密鑰交換,讓網(wǎng)絡(luò)中每?jī)蓚€(gè)成員都能協(xié)商出僅有對(duì)方知道的惟一通信標(biāo)識(shí)符以及對(duì)稱密鑰。該方案能顯著降低在預(yù)處理階段的通信消耗和提高獲取通信方標(biāo)識(shí)符的效率。在匿名通信階段,通過(guò)標(biāo)識(shí)符的動(dòng)態(tài)變化的方式,能有效抵抗重放攻擊和統(tǒng)計(jì)攻擊。同時(shí)設(shè)置專門的追查機(jī)構(gòu),并改變匿名通信階段時(shí)的密文結(jié)構(gòu),將去除匿名的權(quán)利從用戶轉(zhuǎn)移到追查機(jī)構(gòu),防止惡意用戶拒絕去除匿名,由此進(jìn)行惡意用戶身份追蹤。實(shí)驗(yàn)和分析表明,提出的方案具有有效性和可行性。但是由于標(biāo)識(shí)符是動(dòng)態(tài)改變的,同一個(gè)發(fā)送者在同一個(gè)通信周期發(fā)送多條消息時(shí),接收者下載下一條同一發(fā)送者所發(fā)送的消息時(shí),需要等待計(jì)算新的標(biāo)識(shí)符,這種情況的下載效率會(huì)受到一定程度的影響。筆者會(huì)在接下來(lái)的工作中進(jìn)行研究和改進(jìn)。