許盛偉 任雄鵬 袁 峰 郭春銳 楊 森
1(北京電子科技學(xué)院 北京 100070)2(西安電子科技大學(xué)通信工程學(xué)院 陜西 西安 710071)
根據(jù)認(rèn)證用戶的公鑰形式的不同,可以將公鑰密碼體制分為四種:基于證書(shū)、基于身份、基于無(wú)證書(shū)、基于自認(rèn)證的公鑰密碼體制[1]。隨著移動(dòng)互聯(lián)網(wǎng)和通信技術(shù)的發(fā)展,基于身份的密碼體制的輕便易用性使其具有巨大的應(yīng)用潛力。
1984年Shamir[2]首次提出基于身份的公鑰密碼體制的思想,直至2001年Boneh[3]提出第一個(gè)基于身份的加密算法。2007年12月國(guó)家密碼管理局組織專家完成了標(biāo)識(shí)密碼算法的標(biāo)準(zhǔn)化工作,2008年確定了SM9密碼算法型號(hào),2014年完成了SM9算法曲線的選定工作,2016年國(guó)家密碼管理局正式發(fā)布SM9為密碼行業(yè)標(biāo)準(zhǔn)算法[4]。2017年11月SM9標(biāo)識(shí)簽名算法成為ISO/IEC國(guó)際標(biāo)準(zhǔn)[5],2018年4月在ISO/IECJTC1/SC27國(guó)際網(wǎng)絡(luò)安全標(biāo)準(zhǔn)化工作會(huì)議上SM9標(biāo)識(shí)加密算法、SM9密鑰協(xié)商協(xié)議獲得國(guó)際標(biāo)準(zhǔn)提案立項(xiàng)[6],對(duì)于推動(dòng)國(guó)產(chǎn)密碼算法在國(guó)際上的應(yīng)用具有重大意義。由于IBC體制下用戶私鑰均由密鑰產(chǎn)生中心集中生成,導(dǎo)致了密鑰托管和私鑰安全分發(fā)問(wèn)題,其安全性只達(dá)到了Girauit等[7]提出的Level1,這將嚴(yán)重阻礙其未來(lái)的發(fā)展。
針對(duì)身份密碼體制的密鑰托管和私鑰安全分發(fā)問(wèn)題截止目前已有大量研究[8]。Sui等[9]基于雙線性對(duì)提出了可分離且匿名的標(biāo)識(shí)私鑰分發(fā)方案,系統(tǒng)需要本地注冊(cè)中心LRA和KGC兩個(gè)責(zé)任主體,分發(fā)私鑰時(shí)不需要安全通道,任何竊聽(tīng)者都無(wú)法知道申請(qǐng)私鑰者的身份,但該方案中存在消息完整性保護(hù)攻擊和潛在的KGC泄漏攻擊。文獻(xiàn)[10-11]針對(duì)上述問(wèn)題分別基于雙線性對(duì)給出改進(jìn)的私鑰分發(fā)方案。但是上述方案均未解決密鑰托管問(wèn)題。Wang等[12]給出了關(guān)于BF-IBE的基于秘密共享的密鑰分發(fā)方案,將該方案應(yīng)用于即時(shí)通信系統(tǒng)(IM系統(tǒng))中,雖解決了密鑰托管問(wèn)題,但面臨數(shù)據(jù)庫(kù)泄露攻擊和篡改攻擊。Pedersen等[13]提出了參與方可驗(yàn)證且沒(méi)有秘密分發(fā)者的秘密共享方案。Gennaro等[14]指出Pedersen的方案不能保證生成密鑰的均勻隨機(jī)分布,提出了更為安全的分布式密鑰生成協(xié)議。Geisler等[15]提出了關(guān)于Sakai-Kasahara-IBE的分布式密鑰生成方案,其解決了密鑰托管問(wèn)題,但是未提出安全的私鑰分發(fā)方案。文獻(xiàn)[16]利用可驗(yàn)證的門(mén)限方案提出了標(biāo)識(shí)私鑰共享方案只解決了密鑰托管問(wèn)題。為同時(shí)較好地解決用戶私鑰安全分發(fā)與密鑰托管問(wèn)題,文獻(xiàn)[17]提出了基于橢圓曲線密碼體制的動(dòng)態(tài)密鑰分發(fā)協(xié)議,利用托管代理有效阻止用戶或密鑰管理中心的欺詐,但是其托管私鑰時(shí)利用了公鑰加密,計(jì)算代價(jià)較大。文獻(xiàn)[18]提出了新的用戶私鑰分發(fā)協(xié)議,但該協(xié)議中使用了影響效率的雙線性對(duì)運(yùn)算。文獻(xiàn)[19]提出了一種有托管代理參與的IBC密鑰生成與托管方案,遺憾的是,該方案也使用了雙線性對(duì)運(yùn)算,計(jì)算效率較低。目前經(jīng)典的IBE體制主要包括三種類型[1]:Boneh-Franklin IBE、Sakai-Kasahara IBE和Boneh-Boyen IBE。由于SM9的密鑰產(chǎn)生算法不同于這三種密碼體制,目前還未有關(guān)于SM9的密鑰托管以及用戶私鑰分發(fā)的研究。
本文首先分析指出Wang等關(guān)于BF-IBE的密鑰分發(fā)方案未能滿足的抗數(shù)據(jù)庫(kù)泄露攻擊、篡改攻擊,同時(shí)考慮到Geisler等關(guān)于SK-IBE的密鑰產(chǎn)生方案未實(shí)現(xiàn)安全密鑰分發(fā),針對(duì)SM9獨(dú)特的密鑰產(chǎn)生算法,通過(guò)改進(jìn)并結(jié)合兩者,提出關(guān)于SM9的無(wú)對(duì)運(yùn)算的可分離匿名分布式密鑰分發(fā)(SADKI)方案。該方案實(shí)現(xiàn)了SM9算法的用戶私鑰的安全高效分發(fā),解決了密鑰托管問(wèn)題。不僅具備抗KGC數(shù)據(jù)庫(kù)泄露攻擊、篡改攻擊、安全分布式密鑰生成、公共信道傳輸、抵抗離線口令破解、可分離、匿名等安全屬性,較前述方案還消除了雙線性對(duì)運(yùn)算,具有較高的運(yùn)算效率。
已知橢圓曲線E(Fqm)(m≥1),階為n的點(diǎn)P∈E(Fqm),Q屬于以P為生成元生成的循環(huán)群中即Q∈〈P〉。ECDL困難問(wèn)題是指,給定P與Q,確定整數(shù)l∈[0,n-1],使得Q=lP成立是困難的。
已知橢圓曲線E(Fqm)(m≥1),階為n的點(diǎn)P∈E(Fqm),ECDH困難問(wèn)題是指,給定aP與bP,計(jì)算abP是困難的。
方案分為系統(tǒng)初始化和用戶注冊(cè)、私鑰分發(fā)三個(gè)步驟。
(1) 系統(tǒng)初始化。KGCs產(chǎn)生并公布系統(tǒng)參數(shù)(G1,G2,P,q,e,H0,H1,Pi),其中(1≤i≤n),Pi=siP是每個(gè)子密鑰產(chǎn)生中心的公鑰,si是子系統(tǒng)密鑰。
(2) 用戶注冊(cè)。用戶通過(guò)本地注冊(cè)中心LRA離線認(rèn)證,從而獲得申請(qǐng)一次性口令pwd,同時(shí)元組(H0(ID),H0(pwd),H1(pwd))存儲(chǔ)在IM應(yīng)用服務(wù)器的數(shù)據(jù)庫(kù)中,用來(lái)認(rèn)證申請(qǐng)私鑰時(shí)的用戶身份。
IM服務(wù)器通過(guò)下式驗(yàn)證用戶身份的有效性:
e(Q,T)=e(H0(ID),H0(pwd))e(Q,H0(pwd))H1(pwd),若成立,IM服務(wù)器對(duì)(H0(ID),wiP)進(jìn)行BLS短簽名發(fā)送給PKGi。PKGi驗(yàn)證簽名后保存元組(H0(ID),wiP)到數(shù)據(jù)庫(kù)中。
經(jīng)下述分析,該方案存在潛在的數(shù)據(jù)庫(kù)泄露攻擊與攻擊者的篡改攻擊。
(1) 數(shù)據(jù)庫(kù)泄露攻擊。若IM應(yīng)用服務(wù)器數(shù)據(jù)庫(kù)發(fā)生泄露,攻擊者獲得(H0(ID),H0(pwd),H1(pwd))后,選取隨機(jī)數(shù)r和應(yīng)用登錄口令pwd0然后計(jì)算Q、T、wi。按照方案流程,IM服務(wù)器和PKGi均能驗(yàn)證相應(yīng)等式成立,從而可以成功偽裝合法用戶得到私鑰。故該方案不能抗?jié)撛诘臄?shù)據(jù)庫(kù)泄露攻擊。
文獻(xiàn)[15]利用了Shamir門(mén)限方案[20]和Cramer等[21-22]中的多方計(jì)算協(xié)議提出以下方案。
(1) Setup。借助Shamir(t,m)門(mén)限方案秘密共享系統(tǒng)私鑰x,設(shè)t-1次多項(xiàng)式為Q(X)∈Zq(X)且Q(0)=x,m臺(tái)服務(wù)器分別獲得x的秘密共享值xi=Q(i)并秘密保存,其中1≤i≤m。每個(gè)服務(wù)端計(jì)算Ri=xiP1并公開(kāi)(i,Ri)。
(2) Extract(ID)。假設(shè)n個(gè)服務(wù)端是在線的,分別執(zhí)行下面的協(xié)議:
① 服務(wù)端分別自行計(jì)算zi=xi+H(ID),該值為z=x+H(ID)的秘密共享值。
② 服務(wù)端通過(guò)Shamir門(mén)限方案分別獲得隨機(jī)數(shù)r的共享值ri。
③ 服務(wù)端各自調(diào)用Cramer等的多方計(jì)算協(xié)議并公布si,該值是s=zr(modq)的共享值。
④ 服務(wù)端利用公布的si恢復(fù)出s。
⑤ 服務(wù)端自行計(jì)算并秘密保存wi=ris-1(modq)。
通過(guò)下式恢復(fù)用戶私鑰:
(1)
式中:
(2)
注意:只有滿足n≥2t才能恢復(fù)秘密值,因?yàn)樵摲桨钢性贓xtract(ID)階段需要調(diào)用多方計(jì)算協(xié)議。
(1) 系統(tǒng)參數(shù)組。系統(tǒng)參數(shù)組包括階為素?cái)?shù)N的加法循環(huán)群G1、G2,生成元分別為P1、P2;密碼雜湊函數(shù)H(),密碼函數(shù)H1(Z,n),該函數(shù)需要調(diào)用H(),輸入為比特串Z和整數(shù)n,輸出為整數(shù)∈[1,n-1],還有其他系統(tǒng)參數(shù)詳見(jiàn)文獻(xiàn)[23]。
(2) 密鑰產(chǎn)生。KGC產(chǎn)生隨機(jī)數(shù)ke∈[1,N-1]作為主密鑰,計(jì)算G1中的元素Ppub-e=ke×P1作為加密主公鑰,則加密主密鑰對(duì)為(ke,Ppub-e)。KGC秘密保存ke,公開(kāi)Ppub-e。KGC選擇并公開(kāi)用一個(gè)字節(jié)標(biāo)識(shí)的加密私鑰生成函數(shù)識(shí)別符hid。
方案涉及符號(hào)總結(jié)于表1。
表1 符號(hào)說(shuō)明
下面介紹方案的具體通信過(guò)程:
用戶A在本地注冊(cè)機(jī)構(gòu)進(jìn)行離線認(rèn)證后獲得一次性口令pwd,并且LRA將[HID,H(pwd)P1]安全存儲(chǔ)到KGCi的待定私鑰數(shù)據(jù)庫(kù)中。
(2) User→KGC。用戶獲得口令pwd后選擇隨機(jī)數(shù)r,計(jì)算U=rP2,H(pwd)Ppubi,防止申請(qǐng)報(bào)文篡改,需要計(jì)算M=H(HID,U,H(pwd)Ppubi),最后發(fā)送HID,U,M給KGCi。
(3) KGC→User。KGCi收到H′ID、U′、M′后,將H′ID作為索引尋找對(duì)應(yīng)的H(pwd)P1,計(jì)算keiH(pwd)P1并判斷M′=H(H′ID,U′,keiH(pwd)P1)是否成立從而驗(yàn)證消息的有效性。若成立,則KGCi依次執(zhí)行下面方案:
①KGCi計(jì)算zi=keiH′ID+1,其值是z=ke-1H′ID+1的共享值。
②KGCi利用Shamir門(mén)限方案獲得隨機(jī)數(shù)R的共享值Ri。
③KGCi各自調(diào)用Cramer等的多方協(xié)議計(jì)算si,該值是s=zR(modN)的共享值。
④KGCi分別公布si,從而計(jì)算s。
⑤KGCi自行計(jì)算并秘密保存wi=Ris-1(modN)。
⑥KGCi計(jì)算σi=wiU′和M1=H(σi,keiH(pwd)P1)并發(fā)送給用戶。
(4) 提取私鑰。用戶接受到σ′i和M′1后,判斷M′1=H(σ′i,H(pwd)Ppubi)是否成立從而驗(yàn)證消息的有效性,若成立,計(jì)算c′ir-1σ′i,用戶接收到KGCi的n個(gè)有效回復(fù)(2t≤n≤m)后,計(jì)算下式得到用戶私鑰deA:
(3)
最后,用戶申請(qǐng)成功后,可以刪除數(shù)據(jù)庫(kù)中的元組〈HID,H(pwd)P1〉,這樣數(shù)據(jù)庫(kù)中只保留待定發(fā)布私鑰的元組,避免增長(zhǎng)到傳統(tǒng)PKI證書(shū)庫(kù)的巨大規(guī)模。一次性口令也會(huì)失效,避免非法用戶得到口令后重新申請(qǐng)私鑰的泄露風(fēng)險(xiǎn)。
KGCi收到用戶發(fā)來(lái)申請(qǐng)私鑰的消息后,由于H(pwd)Ppubi=keiH(pwd)P1,故KGCi通過(guò)H(HID,U,H(pwd)Ppubi)=H(H′ID,U′,keiH(pwd)P1)可以驗(yàn)證消息有效性。
下面證明KGCi需秘密共享的z值為ke-1HID+1,依據(jù)SM9私鑰產(chǎn)生算法有:
ke×(HID+ke)-1(modN)P2=
(ke-1HID+ke-1×ke)-1(modN)P2=
(ke-1HID+1)-1(modN)P2=
z-1(modN)P2
(4)
可知須改進(jìn)Geisler等方案中的z值為ke-1HID+1。
下面證明zi=keiHID+1是z的共享值:
(5)
從而可知各個(gè)zi是z的共享值。
Rs-1P2=RR-1z-1P2=z-1P2=deA
(6)
從而用戶私鑰可以被正確恢復(fù)。
(1) 不需要安全通道。即使敵手輕易截獲傳輸通道中的消息σi、U,想要得到私鑰前需計(jì)算r-1σi,由于r是用戶選取的隨機(jī)值,只能從U=rP2計(jì)算得到r,這是一個(gè)ECDL離散對(duì)數(shù)困難問(wèn)題,從而只有掌握隨機(jī)值r的合法者才能得到私鑰,因此密鑰分發(fā)中可以在公共信道傳輸。
(2) 完整性保護(hù)。在用戶發(fā)送給KGC的消息HID、U、M中,若三者任意篡改,那么KGC可以立刻判斷出消息的有效性。故M為HID、U提供了完整性保護(hù),保證KGC按照方案生成正確的私鑰,從而使合法請(qǐng)求者可以得到私鑰。
(3) 抵抗?jié)撛贙GC泄露攻擊。若存在某個(gè)KGC的數(shù)據(jù)庫(kù)泄露,非法用戶得到〈HID,H(pwd)P1〉后,需要偽造HID、U、M才可偽裝成其他用戶申請(qǐng)私鑰,但若想成功偽造M需要計(jì)算H(pwd)Ppubi,已知H(pwd)P1、Ppubi計(jì)算出H(pwd)Ppubi是一個(gè)ECDH困難問(wèn)題。故該方案可以抵抗?jié)撛贙GC數(shù)據(jù)庫(kù)泄露攻擊。
(4) 分布式密鑰產(chǎn)生。由于用戶的私鑰由多方KGC合作生成,解決了單一KGC的密鑰托管問(wèn)題和部分KGC不誠(chéng)實(shí)問(wèn)題。由于本方案用戶私鑰產(chǎn)生方案與文獻(xiàn)[15]類似,由該文中安全性分析可知本方案分布式密鑰產(chǎn)生具有安全性。
(5) 可分離??煞蛛x性繼承自文獻(xiàn)[9]的方案。類似于基于證書(shū)的PKI系統(tǒng),認(rèn)證和證書(shū)生成的工作是分離的,分別由RA和CA負(fù)責(zé)。在本方案中,LRA負(fù)責(zé)申請(qǐng)私鑰的用戶身份認(rèn)證,KGC僅僅驗(yàn)證請(qǐng)求的有效性并負(fù)責(zé)私鑰分發(fā)工作。
(6) 匿名性。傳輸?shù)南⑴cKGC數(shù)據(jù)庫(kù)中的數(shù)據(jù)均以H1(IDA‖hid,N)形式存在,所以敵手和KGC不會(huì)知道用戶的真實(shí)身份,從而敵手和KGC不會(huì)知道是哪個(gè)用戶成功請(qǐng)求到了私鑰。
(7) 抵抗離線口令破解。由于每個(gè)用戶擁有獨(dú)一無(wú)二的一次性口令并秘密保存,用戶成功申請(qǐng)到私鑰后,口令將會(huì)失效,所以即使非法用戶竊取到申請(qǐng)報(bào)文并成功離線破解口令,此時(shí)口令也已失效。
與文獻(xiàn)[16-18]方案相比,本文方案不僅實(shí)現(xiàn)了SM9密碼算法私鑰的分布式密鑰產(chǎn)生,具備了抵抗KGC泄露攻擊等更強(qiáng)的安全屬性,更大的優(yōu)勢(shì)在于無(wú)需雙線性對(duì)運(yùn)算。用戶端需花費(fèi)n+2個(gè)點(diǎn)乘運(yùn)算,每個(gè)KGC只需2個(gè)點(diǎn)乘。由于橢圓曲線中對(duì)運(yùn)算是點(diǎn)乘運(yùn)算時(shí)間的20倍[22]左右,所以運(yùn)算效率大大提高。
如表2所示P代表雙線性對(duì)運(yùn)算,S代表橢圓曲線上的點(diǎn)乘運(yùn)算,文獻(xiàn)[16]方案只解決密鑰托管問(wèn)題,同時(shí)該過(guò)程需要安全通道秘密傳輸,并且服務(wù)端利用了雙線性對(duì)運(yùn)算,效率較低;文獻(xiàn)[17]方案中雖解決了密鑰分發(fā)與密鑰托管問(wèn)題,但是密鑰托管時(shí)需要安全通道傳輸,而且服務(wù)端計(jì)算代價(jià)較大;文獻(xiàn)[18]方案中安全性與本文方案相同,用戶端計(jì)算量比本文較有優(yōu)勢(shì),但是服務(wù)端利用了雙線性對(duì)運(yùn)算,計(jì)算效率較低;文獻(xiàn)[9-12]的方案中用戶端計(jì)算量至少需要2P+3S,這相當(dāng)于43個(gè)點(diǎn)乘運(yùn)算,服務(wù)端至少需要1P+1S,只有當(dāng)KGC數(shù)量n≥41時(shí)本文方案用戶端運(yùn)算量才不小于其他方案。所以本方案不僅安全性具有優(yōu)勢(shì),計(jì)算效率也得到很大提高;由于本文分布式密鑰產(chǎn)生方法基于文獻(xiàn)[15]方案,故與該方案的運(yùn)算量相當(dāng),但是本文方案具有用戶密鑰安全分發(fā)的優(yōu)勢(shì)。
表2 本文方案與其他文獻(xiàn)方案安全性和效率對(duì)比
移動(dòng)互聯(lián)網(wǎng)和通信技術(shù)的發(fā)展為國(guó)際標(biāo)準(zhǔn)SM9密碼算法帶來(lái)了廣泛的應(yīng)用前景。針對(duì)SM9天生的密鑰托管局限性,本文指出文獻(xiàn)[12]方案的攻擊缺陷問(wèn)題,基于SM9特有的密鑰產(chǎn)生方法,改進(jìn)該密鑰分發(fā)方案和文獻(xiàn)[15]密鑰產(chǎn)生方案,提出了SM9的分布式私鑰產(chǎn)生方案,實(shí)現(xiàn)了無(wú)雙線性對(duì)的密鑰分發(fā),減少了計(jì)算量,提高了安全性。最終分析表明該方案在安全性和效率方面均具有優(yōu)勢(shì)。