李亞榮,李 虓,葛麗霞,何明星
1.西華大學(xué) 理學(xué)院,成都 610039
2.西華大學(xué) 計(jì)算機(jī)與軟件工程學(xué)院,成都 610039
隨著互聯(lián)網(wǎng)技術(shù)的日漸成熟,人類進(jìn)入大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)技術(shù)給人們帶來了的便利的同時(shí),也帶來了前所未有的安全性挑戰(zhàn)。密碼學(xué)是信息安全的核心,為信息安全提供了重要的理論支持。簽密是繼簽名和加密之后又一個(gè)新的密碼學(xué)原語,于1997年被Zheng等人[1]提出。簽密能在一個(gè)邏輯步驟內(nèi)同時(shí)實(shí)現(xiàn)簽名和加密兩種功能,能同時(shí)提供機(jī)密性、完整性、認(rèn)證性和不可否認(rèn)性四種安全性質(zhì)。此后,大量的的簽密方案[2-5]被陸續(xù)提出。
在實(shí)際網(wǎng)絡(luò)應(yīng)用傳輸中,經(jīng)常需要廣播一條或者多條消息給多個(gè)接收者。多接收者簽密以加密且認(rèn)證的方式廣播一個(gè)或多個(gè)消息給多個(gè)接收者,每個(gè)接收者用自己的私鑰獨(dú)自解簽密從而獲得消息。多接收者簽密解決了使用傳統(tǒng)公鑰算法安全分發(fā)多消息、組播密鑰時(shí)需要多次加密傳輸?shù)膯栴}。然而,在已有的多接收者簽密方案[6-8]中還存在著一些問題,比如發(fā)送方和接收者的身份匿名性、解密公平性等等。為了解決身份的匿名性,2011年,龐遼軍等人[9]基于拉格朗日內(nèi)插值多項(xiàng)式提出一個(gè)匿名的多接收者簽密方案。2015年,Pang等人使用新的多項(xiàng)式技術(shù)來代替拉格朗日插值多項(xiàng)式,提出了一個(gè)新的匿名的基于身份的多接收者簽密方案[10],將接收者的身份信息進(jìn)行混合,保證接收者的身份匿名性。
多接收者簽密實(shí)例中,有時(shí)需要給不同的接收者發(fā)送不同的消息,消息長度會(huì)很大。公鑰加密技術(shù)運(yùn)算速度較慢,適合加密短消息,而對(duì)稱加密技術(shù)運(yùn)算速度較快,可以加密長消息?;旌霞用芗夹g(shù)是公鑰加密技術(shù)和對(duì)稱加密技術(shù)的結(jié)合,可以實(shí)現(xiàn)對(duì)長消息的加密,在實(shí)際的安全通信中,使用混合加密會(huì)更安全高效。
混合簽密最早于2004年由Cramer等人[11]提出,其對(duì)混合簽密作了形式化的定義。2005年,Dent等人[12]給出了混合簽密的具體算法和安全模型的形式化定義。2013年,黎仁峰等人[13]提出一種多方混合簽密方案,但方案一次只能發(fā)送同一個(gè)消息給多個(gè)接收者。2016年,王彩芬針對(duì)文獻(xiàn)[13]基于離散對(duì)數(shù)提出了一個(gè)改進(jìn)的方案[14],改進(jìn)方案通過一次廣播發(fā)送多條消息給多個(gè)接收者。
2016年,王彩芬等人提出一個(gè)基于離散對(duì)數(shù)的多消息多接收者混合簽密方案[14],這里簡記為M-DLHSC方案。方案簡介如下:
系統(tǒng)設(shè)置G1是中生成元為g、階為素?cái)?shù)q的循環(huán)群。密鑰生成中心(KGC)定義了4個(gè)Hash函數(shù):G1;一個(gè)密鑰導(dǎo)出函數(shù)最后KGC公開系統(tǒng)參數(shù):params={G1,q,h1,h2,h3,h4,KDF}。
密鑰生成算法KGC隨機(jī)選擇n),計(jì)算生成n名接收者的公/私鑰對(duì)(pkri,skri),其中,將(pkri,skri)發(fā)送給接收者并公開 pkri。
簽密算法給定(params,pks,sks,pkr1,pkr2,…,pkrn),發(fā)送者按照如下步驟簽密n條消息給n名接收者:
(1)從G1中均勻隨機(jī)選擇r,r1,其中
(2)計(jì)算δ=gr1modp;
(7)計(jì)算φ=(φ1,φ2,…,φn),其中
(10)計(jì)算 K=KDF(r);
(11)計(jì)算C=Enck(M);
解簽密算法接收者執(zhí)行以下算法:
(2)計(jì)算 β′=h4(φ′0,φ);
(3)驗(yàn)證β'=β是否成立,如果成立,則說明密文σ確實(shí)由合法的發(fā)送者發(fā)出,且φ'0=φ0,如果不成立,則停止通信;
(5)計(jì)算 K=KDF(r);
(6)計(jì)算 M=DecK(C);
M-DLHSC方案[14]存在密鑰泄露問題,任一合法接收者都可以通過計(jì)算得到發(fā)送者的私鑰,具體分析如下。
合法接收者 IDi收到密文 σ=(C,ω)=(C,φ,β,x,δ)后:
(1)運(yùn)行解簽密算法步驟(1)~(6),得到消息 M 和r;
M-DLHSC方案[14]被攻擊的主要原因是方案的不可偽造性證明中的DL實(shí)例選擇有錯(cuò)誤。離散對(duì)數(shù)困難性(DL)假設(shè),即尋找 a( 0 ≤a ≤q ) ),使得 ga=d 成立,這里a的值是事先未知的。而在 M-DLHSC方案[14]證明中,DL實(shí)例中的d被設(shè)定成了d=φ0,而φ0是算法中的已有的值(φ0=gt),t值是可以事先算出來的。也就是說這里所選的DL實(shí)例不是困難性問題。
針對(duì)M-DLHSC方案[14]中存在的密鑰泄露問題,本文基于雙線性對(duì)提出了一個(gè)基于身份的混合簽密方案。方案具體如下:
系統(tǒng)設(shè)置該算法由密鑰生成中心(KGC)完成。輸入?yún)?shù)1k,輸出系統(tǒng)主密鑰s,KGC保密s。 G1是生成元為P、階為素?cái)?shù)q的循環(huán)加群,k是安全參數(shù)。KGC定義4個(gè)Hash函數(shù):,雙線性映射:,一個(gè)密鑰導(dǎo)出函數(shù)最后KGC公開系統(tǒng)參數(shù):e,KDF}。
密鑰生成算法該算法生成用戶的密鑰,由KGC完成。KGC計(jì)算用戶IDi的公鑰QIDi=H1(IDi)和私鑰
簽密算法該算法為n個(gè)接收者生成簽密,由簽密者IDS完成。
(9)密鑰封裝ω=(φ,U,Y,V);
(10)輸出簽密密文σ=<C,ω>。
驗(yàn)證算法接收者收到密文σ=<C,ω>后,計(jì)算h=H4(C,U,φ,Y)并驗(yàn)證等式
是否成立。如果不成立,則拒絕接受該簽密;否則接受該簽密。
解簽密算法接收者執(zhí)行以下算法:
(3)計(jì)算 M=DecK(C);
在隨機(jī)預(yù)言機(jī)模型[15]下,改進(jìn)方案的機(jī)密性和不可偽造性分別由定理1和定理2給出。
4.2.1 機(jī)密性
證明C接收一個(gè)隨機(jī)的Gap-BDH問題實(shí)例(P,aP,bP,cP,T),他的目標(biāo)是判斷T=e(P,P)abc。C作為子程序并扮演游戲中A的挑戰(zhàn)者。
初始階段C設(shè)定Ppub=aP(C并不知道a,a扮演系統(tǒng)主密鑰),將系統(tǒng)參數(shù) params=<e,G1,G2,q,P,Ppub,H1,H2,H3,H4>發(fā)送給敵手A。A接收到系統(tǒng)參數(shù)后,選擇n個(gè)挑戰(zhàn)身份L1,L2,L3,L4這4張列表分別跟蹤A對(duì)預(yù)言機(jī)H1,H2,H3和H4的詢問,且L1,L2,L3,L4最初為空。
階段1A向C進(jìn)行如下詢問和挑戰(zhàn):
H1詢問對(duì)于第 i次非重復(fù) H1(IDi)詢問,i∈[1,qH1],如果 L1中存在元組,則返回 QIDi,否則C做如下步驟:如果 IDi∈TID*,那么C回答H1(IDi)=bP,并將插入列表L1中(其中表示C不知道b的值);否則,C選擇隨機(jī)數(shù),計(jì)算并返回QIDi給A。
密鑰提取詢問對(duì)于每次新的IDi詢問,如果IDi∈TID*,那么C不能回答這個(gè)詢問,模擬終止;否則C查找列表 L1得到 Qi和 ηi,計(jì)算并返回私鑰。
H2詢問C首先查找列表L2,如果存在包含詢問目標(biāo)的元組,則返回相應(yīng)的輸出結(jié)果給A;否則,C選擇一個(gè)恰當(dāng)?shù)碾S機(jī)數(shù)作為應(yīng)答結(jié)果返回給A,并將包含詢問和相應(yīng)的值存入輸出列表中。
H3詢問對(duì)于每次新的H3(Ti)的詢問C檢查列表L3,如果 L3中存在元組 (IDi,Ti,μi),則返回 μi。如果L3中不存在這樣的元組,C使DBDH預(yù)言機(jī)檢查元組(aP,bP,cP,Ti)。如果該預(yù)言機(jī)返回“真”,結(jié)束游戲,因?yàn)镃已經(jīng)獲得e(P,P)abc=Ti;否則C隨機(jī)選擇并將(IDi,Ti,μi)插入列表L3中。
H4詢問C首先查找列表L4,如果存在包含詢問目標(biāo)的元組,則返回相應(yīng)的輸出結(jié)果給A;否則,C選擇一個(gè)恰當(dāng)?shù)碾S機(jī)數(shù)作為應(yīng)答結(jié)果返回給A,并將包含詢問和相應(yīng)的值存入輸出列表中。
簽密詢問A發(fā)起對(duì)發(fā)送者IDS,接收者及的多消息簽密詢問。C通過密鑰提取詢問獲得身份IDS對(duì)應(yīng)的私鑰SIDS,通過公鑰詢問獲得所有接收者的公鑰。運(yùn)行算法Signcryption(params,,最后將密文σ發(fā)送給A。
解簽密詢問A選擇一個(gè)接收者身份對(duì)一個(gè)密文σ=(C,ω)發(fā)起詢問,C執(zhí)行以下的步驟:
(1)執(zhí)行解簽密的驗(yàn)證部分,如果驗(yàn)證方程不成立,那么返回錯(cuò)誤符號(hào)這個(gè)過程可能需要進(jìn)行公鑰詢問和H4詢問。
挑戰(zhàn)A決定何時(shí)進(jìn)入挑戰(zhàn)階段。A生成兩個(gè)等長的明文消息和m′n}。C選擇一個(gè)簽密者IDS(其私鑰為SIDs=aQIDs=ηs?aP=ηsPpub),并隨機(jī)選擇,其中 γ∈{0,1},對(duì)n個(gè)挑戰(zhàn)身份作如下步驟構(gòu)造一個(gè)挑戰(zhàn)密文:
(1)C設(shè)置Y*=cP;
(4)隨機(jī)選取 μi∈{0,1}l,i=1,2,…,n,r1∈{0,1}l以及
(6)K=KDF(r1),C=EncK(M);
(7)計(jì)算 h=H4(C,U,φ,Y);
(8)計(jì)算 U*=r2Ppub, V*=(r2+h)SIDS;
(10)最終生成一個(gè)目標(biāo)密文 σ*=<C*,ω*>,并將密文σ*返回給A。
階段2A可以像階段1那樣執(zhí)行多項(xiàng)式有界次適應(yīng)性詢問。C像在階段1那樣回答這些詢問,但是不能發(fā)起對(duì)挑戰(zhàn)身份信息的私鑰提取詢問,以及對(duì)挑戰(zhàn)密文σ*的解簽密詢問。
猜測A輸出猜測值γ′∈{0,1},游戲結(jié)束。如果A能以ε的優(yōu)勢猜出γ′=γ,那么C就可以計(jì)算e(SID*i,Y)=e(sQID*i,Y)=e(abP,cP)=e(P,P)abc=T,從而解決了Gap-BDH問題。
下面分析C的優(yōu)勢。如果下列事件發(fā)生,C模擬失?。?/p>
E1:A對(duì)目標(biāo)身份IDj(j∈{1,2,…,n})執(zhí)行了私鑰提取詢問。
E2:A通過H3的詢問就得到DBDH問題實(shí)例的正確解答。
4.2.2 不可偽造性
證明C接收一個(gè)隨機(jī)的CDH問題實(shí)例(P,aP,bP),它的目標(biāo)是計(jì)算abP。C把A作為子程序并扮演A的挑戰(zhàn)者。
初始階段C設(shè)定Ppub=aP(C并不知道a,a扮演系統(tǒng)主密鑰),將系統(tǒng)參數(shù) params=<e,G1,G2,q,P,Ppub,H1,H2,H3,H4>發(fā)送給A。敵手A選擇挑戰(zhàn)身份IDS。
階段1A接收到系統(tǒng)參數(shù)后,向C進(jìn)行如下詢問和挑戰(zhàn):
H1詢問對(duì)于第i次非重復(fù)H1(IDi)詢問,i∈[1,qH1],如果L1中存在元組(IDi,QIDi,ηi),則返回QIDi,否則C做如下步驟:如果IDi=IDS那么C回答H1(IDi)=bP,并將插入列表L1中(其中⊥表示C不知道b的值);否則,C選擇隨機(jī)數(shù),計(jì)算QIDi=ηiP并返回QIDi給A。
密鑰提取詢問對(duì)于每次新的IDi詢問,C查找L1得到QIDi和ηi。如果IDi=IDS,那么C不能回答這個(gè)詢問,模擬終止;否則計(jì)算 Si=aQIDi=a?ηiP=ηi?aP=ηiPpub,并返回給A。
H2、H3、H4詢問C首先查找列表 L2、L3、L4,如果存在包含詢問目標(biāo)的元組,則返回相應(yīng)的輸出結(jié)果給A;否則,C選擇一個(gè)恰當(dāng)?shù)碾S機(jī)數(shù)作為應(yīng)答結(jié)果返回給A,并將包含詢問和相應(yīng)的值存入輸出列表中。
簽密詢問A發(fā)起對(duì)發(fā)送者 IDl,接收者及 M={m1,m2,…,mn}的多消息簽密詢問。C可以通過私鑰提取詢問獲得身份IDl對(duì)應(yīng)的私鑰SIDl,通過公鑰詢問獲得其他環(huán)成員公鑰和接收者公鑰,然后運(yùn)行算法Signcryption(params,M,SIDl,{QID*i}),最后將簽密密文σ發(fā)送給A。
偽造敵手A對(duì)挑戰(zhàn)身份IDS按下面的方式偽造一個(gè)挑戰(zhàn)密文。
如果這個(gè)偽造是成功的,A贏得游戲。
如果A能以不可忽略的優(yōu)勢ε在時(shí)間t內(nèi)產(chǎn)生相應(yīng)簽密密文贏得游戲,根據(jù)分叉引理,C可以重復(fù)A行為,通過控制隨機(jī)預(yù)言機(jī)H4的輸出,在時(shí)間2t內(nèi)輸出簽密密文σ*和σ*′。注意這里,顯然,就解決了CDH問題。
下面分析C的優(yōu)勢:
(1)如果事件E1發(fā)生,C模擬失?。篍1:A對(duì)目標(biāo)身份IDS執(zhí)行了私鑰提取詢問。顯然
(2)敵手在偽造簽名時(shí),需要在G1中尋找V*滿足等式e(V*,P)=e(QIDS,U*+hPpub)的V*。此概率小于等于1/q。
本文分析了王彩芬等人的基于離散對(duì)數(shù)的多消息多接收者混合簽密方案[9]的安全性,發(fā)現(xiàn)該方案存在著密鑰泄露問題。在基于身份的密碼體制下,提出了一個(gè)改進(jìn)的多消息多接收者混合簽密方案。改進(jìn)的方案解決了王彩芬等人的方案[9]的缺陷,其機(jī)密性和不可偽造性在隨機(jī)預(yù)言機(jī)模型下得到了證明。