寧炳欽,鄧倫治
(貴州師范大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,貴州 貴陽(yáng) 550025)
隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,跨域通信及通信安全成為了研究的焦點(diǎn)。設(shè)計(jì)合適的跨域通信認(rèn)證密鑰協(xié)商方案是確保通信安全的有效手段?;趥鹘y(tǒng)公鑰證書的認(rèn)證密鑰協(xié)商方案的主要問(wèn)題是存在身份管理。為了解決證書管理給系統(tǒng)帶來(lái)的不便,Shamir[1]于1984年提出基于身份的公鑰密碼算法。在基于身份密碼系統(tǒng)中,將用戶的唯一身份標(biāo)識(shí)作為用戶的公鑰,由密鑰生成中心為每一位用戶生成私鑰并發(fā)放。王圣寶[2]利用雙線性映射的方法,提出了一種基于身份的認(rèn)證密鑰協(xié)商協(xié)議,并在標(biāo)準(zhǔn)模型下證明了協(xié)議的安全性。但雙線性映射運(yùn)算往往比較耗時(shí),因此該協(xié)議的計(jì)算效率有待提高。曹雪菲等[3]基于除法性計(jì)算Diffie-Hellman 假設(shè),提出一種不使用雙線性對(duì)的基于身份的認(rèn)證密鑰協(xié)商協(xié)議,但該協(xié)議不能抵抗臨時(shí)密鑰泄露安全。高志剛[4]和Chen[5]分別提出基于標(biāo)準(zhǔn)模型和隨機(jī)預(yù)言模型的認(rèn)證密鑰協(xié)商協(xié)議,但執(zhí)行過(guò)程中用到雙線性對(duì),計(jì)算效率不高。陳安林等[6]提出一種適用于移動(dòng)自組網(wǎng)的基于身份的跨域兩方認(rèn)證密鑰協(xié)商,并用Pi演算和pro-verif自動(dòng)化驗(yàn)證工具證明了安全屬性,但方案中使用了雙線性對(duì),計(jì)算效率不高。Sun[7]設(shè)計(jì)的基于身份的密鑰協(xié)商協(xié)議安全性高且沒有使用雙線性映射,但協(xié)議執(zhí)行過(guò)程中的計(jì)算效率有待提高?;谏矸莸拿荑€協(xié)商方案主要問(wèn)題是密鑰托管問(wèn)題。為了解決密鑰托管問(wèn)題,Al-riyami[8]提出了無(wú)證書公鑰密碼體制。Zhang[9]和Ghoreishi等[10]分別基于無(wú)證書公鑰密碼系統(tǒng)構(gòu)建了各自的密鑰協(xié)商協(xié)議,雖然安全性較高,但無(wú)證書公鑰密碼體系構(gòu)建比基于身份的公鑰密碼系統(tǒng)復(fù)雜。劉小瓊等[11]構(gòu)建了一個(gè)兩方無(wú)證書跨域認(rèn)證密鑰協(xié)商協(xié)議,并采用了Pi演算法證明了協(xié)議的安全性,但協(xié)議中使用了雙線性對(duì),計(jì)算效率有待加強(qiáng)。陳紅等[12]提出一個(gè)無(wú)線性對(duì)無(wú)證書兩方跨域認(rèn)證密鑰協(xié)商協(xié)議,但方案在協(xié)商過(guò)程中出現(xiàn)錯(cuò)誤,得不到相同的會(huì)話密鑰。魏振宇等[13]提出基于PKI體系的跨域密鑰協(xié)商協(xié)議,霍士偉[14]提出基于身份的Adhoc網(wǎng)絡(luò)認(rèn)證和密鑰協(xié)商方案,雖然安全性高,但方案中使用公鑰加密,數(shù)字簽名等算法。且通過(guò)分析認(rèn)為,只要經(jīng)過(guò)合理的設(shè)計(jì),基于身份也可以設(shè)計(jì)出無(wú)會(huì)話密鑰托管的跨域認(rèn)證密鑰協(xié)商方案。
本文構(gòu)建了一個(gè)安全有效的兩方基于身份跨域認(rèn)證密鑰協(xié)商協(xié)議,并證明了協(xié)議的安全性。與其他同類方案的比較表明,新方案滿足目前已知的安全屬性,同時(shí)保證了良好的性能。
本文涉及的預(yù)備知識(shí)主要有計(jì)算復(fù)雜性和密鑰協(xié)商安全屬性等知識(shí)。下面給出簡(jiǎn)要介紹。
相關(guān)問(wèn)題及假設(shè)
表1 給出本文用到的符號(hào)和說(shuō)明Tab.1 Notations and corresponding descriptions
文獻(xiàn)[15]提出了基于身份的ECK模型中,添加了敵手攻擊獲取協(xié)議參與方的臨時(shí)私鑰與PKG主密鑰的能力,從而使構(gòu)造的協(xié)議有更強(qiáng)的安全性。模型中,該游戲分兩個(gè)階段:
階段1:敵手可以以任何順序進(jìn)行以下查詢。
PKGStaticKey Reveal:C把系統(tǒng)的主密鑰發(fā)送給A。
Corrupt(i):A查詢并獲取長(zhǎng)期私鑰。
如果A認(rèn)為第一階段的查詢結(jié)束了,則A選擇一個(gè)新的會(huì)話,然后進(jìn)行游戲的第二階段,執(zhí)行Test()查詢。
定義3 新鮮會(huì)話。如果下面條件都不成立,則稱是新鮮的。
2)對(duì)于協(xié)議參與者i,A同時(shí)進(jìn)行查詢Corrupt(i)和EphemeralKey Reveal(i)。
3)對(duì)于協(xié)議參與者j,A同時(shí)進(jìn)行查詢Corrupt(j)和EphemeralKey Reveal(j)。
定義4 安全性。當(dāng)認(rèn)證密鑰交換協(xié)議達(dá)到以下條件,則稱該協(xié)議是安全的。
2)對(duì)于任意的多項(xiàng)式敵手A,能夠贏得游戲的概率是可以忽略的。
根據(jù)王真等[16]基于身份的移動(dòng)互聯(lián)網(wǎng)高效認(rèn)證密鑰協(xié)商協(xié)議推廣到基于身份的兩方跨域認(rèn)證密鑰協(xié)商協(xié)議。
3)密鑰協(xié)商:用戶A,B分別是系統(tǒng)中不同域需要進(jìn)行認(rèn)證密鑰協(xié)商的兩方。
③A收到信息后,A計(jì)算
④B收到消息后,B計(jì)算
4)方案的正確性:
=(rA+hAsA)tBP+tA(rB+hBsB)P
=tB(rA+hAsA)P+(rB+hBsB)tAP
=tB(RA+hAPpubA)+dBTA
=tAtBP+dA(rB+hBsB)P
=tBTA+dB(rA+hAsA)P
=tBTA+dB(RA+hAPpubA)
下面給出本文協(xié)議在ECK模型下的安全性證明,H1和H2由隨機(jī)預(yù)言器模擬。
引理1 由于CDH問(wèn)題是困難的,協(xié)議在A的攻擊下是安全的。
3.1.1 系統(tǒng)建立階段
3.1.2 訓(xùn)練查詢階段
H1(ID*,R*)C維護(hù)一個(gè)初始化為空的列表LH1(ID*,R*,d*,h*)。A發(fā)送一個(gè)身份ID*給C,C按如下規(guī)則進(jìn)行回答。
②否則,隨機(jī)生成hk∈{0 ,1}k,并在列表LH2中加入元組
Corrupt(ID*)A發(fā)送一個(gè)身份ID*給C,C查詢列表LH1。如果ID*在列表LH1中,則返回d*作為回答。如果ID*不在列表LH1,C先進(jìn)行H1(ID*,R*)查詢并獲得d*,然后返回d*作為回答。當(dāng)ID*=IDI,則返回⊥作為回答。
①如果T=⊥,若IDi∈PKGA,C在列表LH1中找到元組(IDi,Ri,di,hi),在列表LE中找到元組(IDi,ti,Ti),返回(Ti,Ri,PpubA)作為回答。
②如果T=(Ti,Ri,PpubA),如果IDj≠IDJ,C在列表LH1中找到元組
(IDj,Rj,dj,hj),在列表LE中找到元組(IDj,tj,Tj),返回(Tj,Rj,PpubB)作為回答;如果IDj=IDJ,C在列表LH1中找到元組(IDJ,RJ,dJ,hJ),在列表LE中找到元組(IDJ,⊥,vP),返回(vP,RJ,PpubB)作為回答。
⑤如果m≠W且IDi=IDI,IDj≠IDJ,C計(jì)算
⑧如果m=W且IDi=IDI,IDj≠IDJ,C計(jì)算
PKGstaticKey Reveal 如果A查詢IDj,C返回SI作為回答;否則,C返回⊥。
3.1.3 測(cè)試階段
情況與3.1類似。
3.3.1 系統(tǒng)建立
3.3.2 訓(xùn)練查詢階段
①如果當(dāng)T=⊥,若IDi∈PKGA,當(dāng)IDi≠IDI,C在列表LH1中找到元組(IDi,Ri,di,hi),在列表LE中找到元組(IDi,ti,Ti),返回(TI,Ri,PpubA)作為回答;當(dāng)IDi=IDI,C在列表LH1中找到元組(IDI,RI,dI,hI),在列表LE中找到元組(IDI,⊥,uP),返回(uP,RI,PpubA)作為回答。
②如果T=(Ti,Ri,PpubA),如果IDj≠IDJ,C在列表LH1中找到元組(IDj,Rj,dj,hj),在列表LE中找到元組(IDj,tj,Tj),返回(Tj,Rj,PpubB)作為回答;如果IDj=IDJ,C在列表LH1中找到元組(IDJ,RJ,dJ,hJ),在列表LE中找到元組(IDJ,⊥,vP),返回(vP,RJ,PpubB)作為回答。
⑤如果m≠W且IDi=IDI,IDj≠IDJ,C計(jì)算
⑧如果m=W且IDi=IDI,IDj≠IDJ,C計(jì)算
PKGstaticKey Reveal 若查詢IDi,則將sa發(fā)給A,若查詢IDj,將sb發(fā)給A。
3.3.3 測(cè)試階段
3.4.1 系統(tǒng)建立
C模擬定義中的游戲,在游戲中C回答A的所有詢問(wèn),A進(jìn)行的所有查詢都不重復(fù)。C隨機(jī)選1≤I≤n1和1≤J≤n1,1≤W≤n0。C隨機(jī)選取U,V∈G1,設(shè)置PpubA=U=uP,設(shè)置PpubB=V=vP。
3.4.2 訓(xùn)練查詢階段
①如果T=⊥,若IDi∈PKGA,C在列表LH1中找到元組(IDi,Ri,di,hi),在列表LE中找到元組(IDi,ti,Ti),返回(Ti,Ri,PpubA)作為回答。
②如果T=(Ti,Ri,PpubA),C在列表LH1中找到元組(IDj,Rj,dj,hj),在列表LE中找到元組(IDj,tj,Tj),返回(Tj,Rj,PpubB)作為回答。
④如果m≠W且IDi≠IDI,IDj=IDJ,C計(jì)算
⑤如果m≠W且IDi=IDI,IDj≠IDJ,C計(jì)算
⑦如果m=W且IDi≠IDI,IDj=IDJ,C計(jì)算
⑧如果m=W且IDi=IDI,IDj≠IDJ,C計(jì)算
3.4.3 測(cè)試階段
綜合以上情況,攻擊者贏得游戲的優(yōu)勢(shì)是可以忽略的,因此證明了方案的安全性。
將本文協(xié)議與文獻(xiàn)[6,11]相比,比較結(jié)果見表3。為了能更清楚展示運(yùn)行時(shí)間,通過(guò)在移動(dòng)設(shè)備上使用一個(gè)著名的加密庫(kù)(MIRACL)實(shí)施相關(guān)操作(三星Galaxy S5 與四核2.45G 處理器,2G 字節(jié)內(nèi)存和谷歌 Android 4.4.2 操作系統(tǒng))得到表2中的數(shù)據(jù)(文獻(xiàn)[17])。
表2 相關(guān)運(yùn)算的運(yùn)行時(shí)間Tab.2 Runtime of relative operation
表3 與其他方案的比較Tab.3 Comparison with other schemes
本文結(jié)合基于身份的密碼體系和認(rèn)證密鑰協(xié)商協(xié)議,設(shè)計(jì)了一種新的兩方跨域認(rèn)證密鑰協(xié)商方案,并且在隨機(jī)預(yù)言機(jī)模型下證明了方案的安全性。通過(guò)分析發(fā)現(xiàn),在滿足安全性的前提下,本文方案具有比較高的計(jì)算效率。