許盛偉 李新玉 王榮榮
(北京電子科技學(xué)院 北京 100070) (西安電子科技大學(xué)通信工程學(xué)院 陜西 西安 710071)
基于身份的公鑰密碼體制的提出避免了傳統(tǒng)的基于證書的密碼體制中的證書管理問題,大大減少了系統(tǒng)的代價(jià)和復(fù)雜度。在IBC中,公鑰是和用戶身份有關(guān)的字符串,用戶向密鑰生成中心認(rèn)證自己的身份并且獲取私鑰。由于公鑰直接由用戶ID充當(dāng),因此不存在公鑰的管理和認(rèn)證問題。但是由于PKG掌握著生成所有用戶密鑰的系統(tǒng)主密鑰,而生成私鑰的算法又是公開的[1],所以用戶密鑰和系統(tǒng)的安全完全依賴于可信的第三方,帶來了IBC與生俱來的密鑰托管問題。
為了解決基于身份的公鑰密碼體制的密鑰托管問題,文獻(xiàn)[2]提出了一種多PKG環(huán)境下的基于身份公鑰密碼體制。該方案通過應(yīng)用Shamir的門限秘密共享思想,把原本的一個(gè)密鑰生成中心PKG的主密鑰分散到多個(gè)PKG中,每個(gè)PKG只擁有主密鑰的一部分,因此只能生成一部分用戶私鑰。在2003年的亞密會上,Al-Riyami等[3]提出了無證書的公鑰密碼體制。在這一方案中,用戶的私鑰由兩部分組成:一部分由密鑰生成中心根據(jù)用戶身份利用系統(tǒng)主密鑰生成;另一部分是由用戶自己隨機(jī)選擇的秘密值和身份信息生成的。從此之后,在無證書密碼體制下設(shè)計(jì)密碼方案就成為了密碼學(xué)研究的重點(diǎn)問題之一。目前,密碼學(xué)研究者已經(jīng)相繼提出了大量的基于無證書密碼體制的加解密、簽名以及密鑰協(xié)商方案。在同年的歐密會上,Gentry[4]提出了基于證書的加密方案。通過引入數(shù)字證書的方式,在保留IBC隱式認(rèn)證優(yōu)勢的同時(shí)改善了密鑰托管的問題。在2007年的美密會上,Goyal[5]采用新思路設(shè)計(jì)了一種可以進(jìn)行追蹤的基于身份公鑰的密碼體制。即用戶與密鑰生成中心之間由一個(gè)交互協(xié)議協(xié)商生成用戶私鑰,其中對應(yīng)每個(gè)用戶身份可產(chǎn)生指數(shù)量個(gè)密鑰族[6]。這一交互協(xié)議確保了用戶只能得到密鑰中的一個(gè)并且無法得知是哪一個(gè)密鑰,同時(shí)用戶也不能通過這個(gè)已知密鑰在多項(xiàng)式的時(shí)間內(nèi)得到其他族的對應(yīng)密鑰。這樣,一旦有不法的行為出現(xiàn),就可以對其行為者進(jìn)行追究,進(jìn)而緩解了基于身份公鑰密碼體制中的密鑰托管問題。
在蕭萍[7-8]提出的方案中,文獻(xiàn)[7]采用了用戶和密鑰生成中心共同生成用戶私鑰的方法來減弱密鑰生成中心的權(quán)利,但是在這一過程中用戶需要再引入一部分身份信息,而這部分身份信息是無法驗(yàn)證的,這就減弱了基于身份的密碼體制的優(yōu)勢。文獻(xiàn)[8]采用混合加密的方式來解決密鑰托管問題,但是這一方案的問題在于最后的加解密過程完全由用戶所生成的密鑰對決定,無法對用戶的非法行為進(jìn)行管理,同時(shí)也沒有考慮到司法機(jī)構(gòu)的監(jiān)聽權(quán)利。本文結(jié)合已有的方案,提出了一種新的IBC密鑰托管方案。主要的設(shè)計(jì)思想為:用戶和密鑰生成中心各自選擇一部分參數(shù)生成系統(tǒng)主密鑰s,從而在用戶不必再引入一部分身份信息的前提下就可以達(dá)到共同生成用戶私鑰的目的。同時(shí)以帶有權(quán)重的多托管代理來分散密鑰中心過大的權(quán)利,在沒有其中最重要或最受信賴的托管代理參與的情況下[9],即使其他所有的代理聯(lián)合也無法重構(gòu)密鑰。該方案在緊急或特殊情況下還可以便捷地更換密鑰,具有較好的動(dòng)態(tài)性。
假設(shè)群G1和群G2是兩個(gè)乘法循環(huán)群,它們的階均為素?cái)?shù)q,p是G1的一個(gè)生成元。假設(shè)在群G1和G2中離散問題都是困難的。我們稱滿足以下條件的映射e:G1×G1→G2為一個(gè)雙線性映射[8]:
(1) 雙線性:
e(P1+P2,P3)=e(P1,P3)e(P2,P3),
e(aP1,bP2)=e(P1,P2)ab,
(2) 非退化性:若e(P1,P2)=I,?P2∈G1,則P1=?。這里?,I分別代表G1,G2的單位元。
(3) 可計(jì)算性:存在有效算法可以計(jì)算e(P1,P2),?P1,P2∈G1。
現(xiàn)有的密鑰托管方案大部分都基于Shamir(t,n)門限思想。即將一個(gè)密鑰K分成n個(gè)部分,將這n個(gè)部分分發(fā)給n個(gè)參與秘密共享的托管代理,任意t個(gè)或大于t個(gè)參與者合作可以恢復(fù)出密鑰,而任意不足t個(gè)參與者合作無法獲得密鑰K。這種方案稱為門限密鑰托管方案。
傳統(tǒng)的IBE方案過程如下:
密文為C=〈U,V〉;
解密計(jì)算:M=V⊕H2(e(skID,U))。
將帶有用戶簽名的消息〈M,U,V〉發(fā)送給對方,對方可以通過驗(yàn)證等式e(P,V)=e(PpubU+hQID)是否成立來驗(yàn)證簽名是否有效。
系統(tǒng)基于橢圓曲線密碼體制,主密鑰由用戶和密鑰生成中心共同生成。系統(tǒng)主要包括以下幾個(gè)部分:(1) 密鑰生成中心PKG:負(fù)責(zé)生成系統(tǒng)參數(shù)以及與用戶共同生成系統(tǒng)主密鑰。(2) 密鑰托管機(jī)構(gòu)EA*和EA:EA*為最受信賴的托管機(jī)構(gòu),沒有它的參與將無法重構(gòu)出密鑰。EA由多個(gè)托管代理組成,采用(t,n)門限托管方案保存它所負(fù)責(zé)的密鑰份額。(3) 安全代理機(jī)構(gòu)SA:負(fù)責(zé)驗(yàn)證用戶身份并托管影子逆變換的秘密。(4) 若干用戶。
系統(tǒng)參數(shù)為:{G1,G2,e,m,P,PPKG,q,H1,H2,H3},PKG適當(dāng)選?。?/p>
(1) 階為素?cái)?shù)q的乘法循環(huán)群G1、G2和雙線性映射e:G1×G1→G2。
(3) 適當(dāng)?shù)臋E圓曲線群Ep(a,b),其中p為隨機(jī)選取的大質(zhì)數(shù),然后在該橢圓曲線群中選擇并公開基點(diǎn)P。
密鑰托管方案:
(1) 用戶選取系統(tǒng)密鑰的一部分。首先,用戶隨機(jī)選取s′∈[1,q-1]作為系統(tǒng)密鑰的一部分并保存,再計(jì)算Y′=s′P,將得到的Y′傳遞給PKG。
(2) PKG收到Y(jié)′后,再隨機(jī)選取s″∈[1,q-1],計(jì)算PPKG=s″P+Y′,將得到的PPKG公開。
(3) 用戶將自己負(fù)責(zé)選取的部分密鑰傳遞給最受信賴的托管機(jī)構(gòu)EA*。用戶計(jì)算EA*=s′P,將(s′,EA*)傳遞給EA*作為它的密鑰對。
EA*收到(s′,EA*)后,通過計(jì)算EA*=s′P驗(yàn)證托管內(nèi)容是否有效,若等式成立,則認(rèn)為托管內(nèi)容有效,否則認(rèn)為無效。
EA收到(si,EAi)后,通過計(jì)算EAi=siP來驗(yàn)證托管內(nèi)容是否有效。若等式成立,則認(rèn)為托管內(nèi)容有效,若不成立,證明無效。SA收到(d-1,Pd)后,通過驗(yàn)證Pd=d-1P來驗(yàn)證托管內(nèi)容是否有效。
用戶間通信:
(1) 用戶向SA提交申請,SA在驗(yàn)證其身份之后給用戶發(fā)放相應(yīng)的d-1QID=d-1H1(ID)。用戶可以通過驗(yàn)證e(d-1QID,P)=e(QID,Pd)是否成立判斷SA誠實(shí)提供影子秘密。
(2) 用戶從托管機(jī)構(gòu)EA中任選t個(gè)托管代理EAi,分別向其出示SA簽發(fā)的d-1QID,EAi用e(d-1QID,P)=e(QID,Pd)是否成立驗(yàn)證用戶誠實(shí)出示d-1QID,然后計(jì)算sid-1QID并發(fā)送給用戶,用戶可以通過驗(yàn)證等式e(sid-1QID,P)=e(d-1QID,Pi)是否成立判斷EAi出具內(nèi)容是否有效。
(3) 用戶用自己生成的部分系統(tǒng)密鑰和收集到的信息合成私鑰如下:
式中:λi是拉格朗日插值系數(shù)。
解密:計(jì)算M=V⊕H2(e(skID,U))。
(5) 簽名。簽名消息M,U=rQID,V=(r+H3(M,U))skID,將〈M,U,V〉一起發(fā)送給接收方。接收方接受到消息后,可通過判斷e(P,V)=e(PPKG,U+hQID)是否成立來驗(yàn)證簽名的有效性。
監(jiān)聽過程:
(1) 監(jiān)聽機(jī)構(gòu)取得監(jiān)聽用戶通信的許可證書。
(3) 監(jiān)聽機(jī)構(gòu)向SA出示監(jiān)聽許可證書,獲得d-1U。監(jiān)聽機(jī)構(gòu)可以通過判斷e(U,Pd)=e(d-1U,P)是否成立來判斷SA是否誠實(shí)提供d-1U。
(4) 監(jiān)聽機(jī)構(gòu)向EA出示許可證書,任選t個(gè)托管代理EAi,并出具監(jiān)聽用戶的ID,EAi計(jì)算siQID并傳遞給監(jiān)聽方,監(jiān)聽機(jī)構(gòu)通過驗(yàn)證e(siQID,P)=e(QID,EAi)是否成立判斷托管代理是否誠實(shí)出示siQID。
這是因?yàn)椋?/p>
M=V⊕H2(e(skID,U))=
V⊕H2(e((s′+s″)QID,U))=
(1) 系統(tǒng)密鑰由用戶和密鑰生成中心共同生成,進(jìn)而使得用戶私鑰由PKG和用戶共同決定,解決了系統(tǒng)安全完全依賴可信的密鑰生成中心這一問題。用戶可以在生成skID后通過驗(yàn)證e(skID,P)=e(QID,PPKG)是否成立來驗(yàn)證密鑰生成中心是否誠實(shí)生成PPKG=s″P+Y′,即可判斷密鑰生成中心是否誠實(shí)生成系統(tǒng)密鑰s。
(3) 可靈活設(shè)置托管代理。在本方案中存在一個(gè)最受信賴的托管代理EA*和n個(gè)其他代理EA。用戶將自己生成的部分系統(tǒng)密鑰交給EA*,沒有EA*的配合,即使所有的EA聯(lián)合也無法解密密文。
(2) 密鑰生成中心通過門限方案托管時(shí),托管的只是其負(fù)責(zé)生成的部分系統(tǒng)密鑰的影子密鑰,即使t個(gè)或t個(gè)以上托管代理聯(lián)合也只能恢復(fù)影子密鑰s1。
(1) 當(dāng)用戶需要進(jìn)行密鑰更新的時(shí)候只需要用戶與密鑰生成中心PKG協(xié)商改變用戶負(fù)責(zé)的部分s′,而不需要改變PKG負(fù)責(zé)的s″。
(2) 當(dāng)整個(gè)系統(tǒng)需要更換密鑰時(shí),密鑰生成中心改變s″即可。
基于身份的加密方案在解決傳統(tǒng)PKI繁雜的證書管理問題的同時(shí)帶來了密鑰托管問題,本文提出了一種新的方案。用戶和密鑰生成中心通過共同生成系統(tǒng)主密鑰的方式來共同生成用戶私鑰,這種方式避免了用戶再自己引入一部分身份信息,保證了基于身份加密方式的優(yōu)勢。同時(shí)通過靈活設(shè)置托管代理增強(qiáng)了用戶信息在監(jiān)聽階段的安全性,并且可以靈活地改變一個(gè)用戶的私鑰乃至整個(gè)系統(tǒng)所有用戶的私鑰,使系統(tǒng)具有良好的動(dòng)態(tài)性。對比現(xiàn)有的密鑰托管方案具有更多更全面的優(yōu)勢,對IBC的推廣具有現(xiàn)實(shí)意義。