謝 濤,滕濟凱
(1.密碼科學技術國家重點實驗室,北京 100878;2.青島理工大學 理學院,山東 青島 266033)
在群組通信環(huán)境中,用戶需要在公開的不安全的網絡上發(fā)送消息。群組密鑰協(xié)商協(xié)議為群組用戶提供了一個共享的會話密鑰,該會話密鑰可以用來實現(xiàn)機密性和完整性,因此,群組密鑰協(xié)商協(xié)議在實現(xiàn)群組通信安全方面起到了非常重要的作用。在傳統(tǒng)的群組密鑰協(xié)商協(xié)議中[1-5],群組成員建立一個共同的密鑰。在群組密鑰協(xié)商協(xié)議中,通信輪數(shù)對協(xié)議效率的影響非常大,因為在一輪中,每個用戶都要收到其他所有的用戶的消息后,才能計算并發(fā)送下一輪的消息,因此,應當盡可能減少協(xié)議的輪數(shù)。一輪群組密鑰協(xié)商協(xié)議在文獻[6-8]提出。在這些傳統(tǒng)的群組密鑰協(xié)商協(xié)議中,群組成員建立一個共享的會話密鑰,只有群組成員能夠加密消息給其它群組成員。在2009年,Wu等人[9]提出了非對稱群組密鑰協(xié)商協(xié)議(Asymmetric Group Key Agreement,ASGKA)的概念,并且提出構造一輪非對稱群組密鑰協(xié)商的總通用方法,并且在該通用構造方法下設計了一個一輪ASGKA協(xié)議。在ASGKA協(xié)議中,群組成員建立一個任何人都可以獲得的共同的加密密鑰,并且計算互不相同的解密密鑰。每個解密密鑰能夠用來解密用相應的加密密鑰加密的消息。因此,任何獲取加密密鑰的主體都可以給群組成員發(fā)送加密的消息,只有群組成員才可以解密消息。Wu等人[9]提的具體的協(xié)議沒認證功能,在2010年,Zhang等人[10]在Wu等人的通用構造下[9]提出了一個基于身份的一輪非對稱群組密鑰協(xié)商協(xié)議,該協(xié)議具有認證性,因此具有更強的安全保障。2011年,Zhang等人[11]提出了一個一輪并且考慮了更多安全屬性的非對稱群組密鑰協(xié)商協(xié)議。協(xié)議[9-11]都是靜態(tài)的,沒有考慮群組成員發(fā)生變化時,怎樣更新加密密鑰和群組成員的解密密鑰。2012年,Zhao[12]等人提出了動態(tài)非對稱ASGKA的通用構造方法,但是該方法需要兩輪通信完成協(xié)議。
在ASGKA協(xié)議中,群組成員可以將自己的解密密鑰直接拷貝給群組外的成員或者合謀產生一個非法的解密密鑰,這個合謀產生的非法的解密密鑰和任何一個合謀者的解密密鑰不同,但是能夠正確解密,這個過程稱為合謀攻擊。在非對稱群組密鑰協(xié)商協(xié)議中,因為群組成員持有不同的解密密鑰,而且解密密鑰和用戶的身份相關,所以合謀者可以被識別。當發(fā)現(xiàn)一個非法的解密盒以后,識別其中至少一個合謀者的過程稱為叛逆追蹤。叛逆追蹤[13]最早是在廣播加密中引入用來打擊合謀者。文獻[13]指出,合謀者可以被追蹤的一個必要條件是用戶的解密密鑰必須滿足非模糊性。非模糊性是指兩個交集為空的用戶的集合不應產生相同的解密密鑰。關于叛逆追蹤的詳細描述見文獻[13-15]。2015年,Teng[16]對ASGKA協(xié)議的通用構造方法提出了一個合謀攻擊,而且證明合謀者不可追蹤。
在這篇文章中,采用文獻[16]中的方法對文 獻[10]中的協(xié)議做了合謀攻擊,而且證明參與該合謀攻擊的合謀者是無法追蹤的。
本節(jié)描述文獻[9]中介紹的ASGKA協(xié)議和相關概念。
Eurocrypt09上提出的ASGKA 協(xié)議的通用構造方法包括如下幾個算法:
-公開參數(shù)生成:給定一個安全參數(shù),輸出公開參數(shù)。
-群組建立:決定群組成員{u1,u2,…,un}。假設ID1,ID2,…,IDn為u1,u2,…,un的身份。
-群組密鑰協(xié)商:每個用戶ui用他的私鑰skn產生簽名σi(IDj),然后廣播σi(IDj)(1≤j≤n, j≠i)。
-加密/解密:dki是IDi在公鑰pk下的簽名,同時也是和pk相對應的解密密鑰。
一個基于聚合簽名的廣播(Aggregatable Signature-Based Broadcast,ASBB)方案既是一個簽名方案也是一個廣播方案。它由如下算法構成:
-參數(shù)生成(λ):給定一個安全參數(shù)λ,輸出公開參數(shù)π。
-密鑰生產(π):輸入π,輸出一對公/私鑰 (pk,sk)。
-簽名(pk,sk,s):輸入公私鑰對(pk,sk)和任意串s,輸出s的簽名σ。
-驗證(pk,s,σ):輸入公鑰pk和串s的簽名σ,輸出0/1。
-加密(pk,m):輸入公鑰pk和消息m,輸出密文c。
-解密(pk,σ,s,c):輸入公鑰pk,串s的簽名σ和密文c,輸出消息m。
一個ASBB方案是密鑰同態(tài)的,如果對任意公/私鑰對(pk,sk),(pk′,sk′),任意消息串s和簽名σ=sign(pk,sk,s),σ′=sign(pk′,sk′,s),下列條件滿足:
(1)驗證(pk?pk′,s,σ⊙σ′)=1。
(2)解密(pk?pk′,σ⊙σ′,s,c)=m,其中?:Γ×?!?,是公鑰空間Γ上的運算;⊙:Ω×Ω→Ω是簽名空間Ω上的運算。
Teng[16]對ASGKA的通用構造的合謀攻擊如下:
不失一般性,假設u1,u2,...,ul(l≥2)是合謀者。他們能夠按如下方式用他們的解密密鑰產生一個非法解密密鑰。
每個簽名σij為σai,j(1≤j≤l),其中σ簽名為空間的生成元。令σ=sign(pk′,sk′,s)$為某個串s的簽名,其中pk′是一個公鑰,sk′是相應的私鑰。這樣,每個σij=sign(pk′aij,sk′aij,s)(1≤j≤l)是串s的一個簽名。因此,該非法解密密鑰也是一個合法的簽名。因為用來構造協(xié)議的ASBB方案是密鑰同態(tài)的,σ[i1,i2,…,il1],[il1+1,il1+2,…,il]是公鑰(pk′si1?pk′si2?相應的解密密鑰。
這部分對文獻[10]中的協(xié)議做合謀攻擊,并且證明合謀者不可追蹤。該協(xié)議采用了基于身份的密碼系統(tǒng)。
-系統(tǒng)參數(shù)生成:給定一個安全參數(shù)λ,KGC選擇兩個階位素數(shù)q的乘法群G1和G2,定義可計算的非退化雙線性對e:G1×G1→G2,選擇G的一個生成元g。KGC還隨機選擇假設k∈Z*q作為系統(tǒng)主密鑰,將g1=gk作為它的公鑰,KGC選擇hash函數(shù)H1,H2:{0,1}*→G1,H3:G2→{0,1}ζ,其中ζ是二進制明文長度。系統(tǒng)公開參數(shù)為:(G1,G2,e,g,g1,H1,H2,H3)。
-私鑰提取算法:該算法輸入用戶的身份標識IDi,輸出該用戶的私鑰其中idi=H1(IDi)。群組密鑰協(xié)商:每個用戶Ui隨機選擇ηi∈Z*p, 計算ri=gηi,fj=H2( j),zi,j=sifηij和對ri的簽名ρi,然后用Ui公布ri,zi,j,(1≤j≤n, j≠i)。
群組加密密鑰提取:用戶檢查所有的消息-簽名對(r1,ρ1),(r2,ρ2),…,(rn,ρn),如果所以的簽名都是合法的,計算群組加密密鑰
解密密鑰提取:每個用戶Ui驗證的消息-簽名對(rj,ρj)(1≤j≤n, j≠i),如果檢驗通過,計算他的解密密鑰為并且檢查e(di,g)=e(fi,w)Q是否成立。如果成立,Ui接受di;否則拒絕di。
加密:對一個明文m∈{0,1}ζ,任意有公開參數(shù)和群組加密密鑰的主體隨機選擇。
ρ∈Z*q,計算密文為c=(c1,c2,c3),其中c1=gρ,c2=wρ,c3=m⊕H3(Qρ)。
解密:一旦收到密文c=(c1,c2,c3),Ui能夠解密出明文為m=c3⊕H3(e(di,c1)e( fi-1,c2))。
對這個具體協(xié)議的合謀攻擊過程如下:
不失一般性,我們假設用戶u′1,u′2,...,u′l(l≥2)是合謀者,他們按如下方式合謀產生一個非法解密密鑰:
他們隨機選擇tij∈Zp*(1≤j≤l),使 得ti1+ti2…+til1-til1+1…-tl=1并計算非法的解密密鑰為:
這樣,我們有:
用d[i1,i2…,il1],[il1+1,il1+2…,il],能夠從c=(c1,c2,c3)中將m解密,因為:
因此,合謀攻擊是成功的。
在下面的定理中,證明了參加上述攻擊具體協(xié)議的合謀者是不可追蹤的。
定理2:參加上述攻擊具體協(xié)議的合謀者是不可追蹤的。
至少一個解:
本文采用文獻[16]中對非對稱群組密鑰協(xié)商協(xié)議的合謀攻擊方法應用到文獻[10],而且嚴格地證明了參加攻擊的叛逆者是不可追蹤的。