蔡 瓊,方 旋,方 蘭
(武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,湖北 武漢 430074)
密鑰協(xié)商協(xié)議分為兩種模式:證書(shū)型和無(wú)證書(shū)型.證書(shū)型是指在會(huì)話密鑰的產(chǎn)生過(guò)程中,由一個(gè)可信的證書(shū)中心(CA)給參與密鑰協(xié)商的各方各分發(fā)一個(gè)證書(shū),此證書(shū)中含有此方的公鑰,ID及其他信息.證書(shū)型密鑰協(xié)商協(xié)議的優(yōu)點(diǎn)是提供認(rèn)證,其中PKI(公鑰密碼體制)廣泛部署比較成熟,應(yīng)用面廣,并且由它管理密鑰對(duì)有利于證書(shū)的統(tǒng)一管理,其缺點(diǎn)是計(jì)算代價(jià)大,需要一個(gè)可信的CA,同時(shí)證書(shū)還需要維護(hù).無(wú)證書(shū)型是指各方在進(jìn)行會(huì)話密鑰的協(xié)商過(guò)程中不需要證書(shū)的參與,優(yōu)點(diǎn)是不需要CA的參與,減少了計(jì)算量,尤其是在低耗環(huán)境下應(yīng)用的更多,同時(shí)安全性也不比證書(shū)型弱.本文提出的協(xié)議屬于后者,通信雙方不需要第三方的認(rèn)證,由于每次通信中所用的密鑰對(duì)都是動(dòng)態(tài)生成的,不存在對(duì)密鑰的更新、撤銷(xiāo)等管理問(wèn)題[1].由于公鑰密碼算法比對(duì)稱(chēng)密碼算法的速率慢很多,主要原因是涉及大量復(fù)雜的運(yùn)算,像PKI體制中用到的RSA算法要生成大素?cái)?shù)、素性檢測(cè)、指數(shù)模運(yùn)算都是影響運(yùn)算速率的因素,要生成新的密鑰對(duì)比較費(fèi)時(shí),但長(zhǎng)時(shí)間不更新密鑰對(duì)又會(huì)有安全隱患[2],本文結(jié)合認(rèn)證階段生成的隨機(jī)數(shù)來(lái)更新密鑰對(duì),未涉及到生成大素?cái)?shù)和素性檢測(cè)運(yùn)算,速率較快、安全性高.
密鑰生成:
(1) 生成兩個(gè)大素?cái)?shù)p和q.
(2) 求得n=pq,φ(n)=(p-1)(q-1).
(3) 選擇一個(gè)隨機(jī)數(shù)e,e介于1和φ(n)之間,并且使得gcd(e,φ(n))=1.
(4) 計(jì)算d≡e-1modφ(n),即d為e在模φ(n)下的乘法逆元.
(5) 公鑰為(n,e),私鑰為d[3].
加密方式為c≡memodn,m為明文,c為密文.
解密方式為m≡cdmodn.
假設(shè)A為用戶,B為服務(wù)器,A的用戶名表示為IDA,密碼為PWA,函數(shù)H()為一種Hash函數(shù).可用文獻(xiàn)[4]中改進(jìn)的算法代替.A、B之間事先共享了IDA和hpw=H(IDA,PWA),并選定了RSA算法的一對(duì)密鑰對(duì)(n,e)和d.A保存一個(gè)數(shù)sa,B保存一個(gè)數(shù)sb,保證sa+sb=n.
(1) 用戶A首先生成兩個(gè)隨機(jī)數(shù)xa和ra,計(jì)算H(hpw)⊕xa和H(hpw,ra),其中⊕表示異或操作,H(hpw,ra)表示將hpw和ra合并后計(jì)算其Hash值,之后A將AU={IDA,H(hpw)⊕xa,ra,H(hpw,ra)}發(fā)送給B.
(2) B首先在數(shù)據(jù)庫(kù)中搜尋是否有IDA,若無(wú),則放棄通信,若有,則取出ra,將其和IDA對(duì)應(yīng)的hpw合并后計(jì)算H′(hpw,ra),若H′(hpw,ra)≠H(hpw,ra),則放棄通信,若相等,則保留ra,并計(jì)算H(hpw),將其與接受到的AU的第二部分H(hpw)⊕xa作一次異或運(yùn)算,得到xa,然后B生成兩個(gè)隨機(jī)數(shù)xb和rb,并計(jì)算H(hpw⊕xa),H(hpw,ra,rb),H(hpw,rb)⊕xb,將BU={H(hpw⊕xa),H(hpw,ra,rb)rb,H(hpw,rb)⊕xb}發(fā)送給A.
(3) A先利用自己知道的hpw和xa計(jì)算H′(hpw⊕xa),若H′(hpw⊕xa)≠H(hpw⊕xa),則放棄通信,若相等,則A確信B收到了自己發(fā)送的xa,然后取出rb,將其與hpw,ra合并后計(jì)算H′(hpw,ra,rb),若H′(hpw,ra,rb)≠H(hpw,ra,rb),則放棄通信,若相等,則接下來(lái)計(jì)算H(hpw,ra),并將其與接收到的BU的第四部分H(hpw,ra)⊕xb作一次異或運(yùn)算,得到xb,最后計(jì)算H(hpw⊕xb)并發(fā)送給B.
(4) B利用自己知道的hpw和xb計(jì)算H(hpw⊕xb),若H′(hpw⊕xb)≠h(hpw⊕xb),放棄通信,若相等,則B確信A收到了xb,結(jié)束認(rèn)證[5].
認(rèn)證及密鑰交換階段的流程圖如下:
圖1 認(rèn)證階段流程圖Fig.1 flow chart of authentication phase
RSA算法一般用于交換對(duì)稱(chēng)加密算法的密鑰,數(shù)字簽名,并不直接用來(lái)加密數(shù)據(jù),因此本節(jié)所講的加、解密本質(zhì)上是為了在不安全信道上傳遞對(duì)稱(chēng)加密算法的密鑰,真正對(duì)原始數(shù)據(jù)的加密由對(duì)稱(chēng)加密算法來(lái)完成.加、解密過(guò)程如下[6-7]:
(1)加密
c≡(me+ta)modn
其中ta≡sa(xa+xb)modn.
(2)解密
m≡(c+tb)dmodn
其中tb≡sb(xa+xb)modn.
(3)算法證明
主要看解密方程能否還原原文,因c≡(me+ta)modn,令c=(me+ta)-y*n,y∈Z由解密公式推導(dǎo)原文過(guò)程如下:
D(c)=(c+tb)dmodn≡
(me+ta-y*n+tb)dmodn≡
(me+(xa+xb)(sa+sb)-y*n)dmodn≡
(me+(xa+xb-y)n)dmodn≡
medmodn=m
最后一步由Euler定理可證.
對(duì)協(xié)議的攻擊種類(lèi)繁多,這里選取了三種主流的攻擊方法來(lái)分析本協(xié)議的安全性[8].
在2.1的(a)步驟中,假設(shè)中間人C截獲了A發(fā)送給B的消息AU={IDA,H(hpw)⊕xa,ra,H(hpw,ra)},C首先是沒(méi)必要修改IDA的;其次,由于C不知道hpw,因此C無(wú)法找到一對(duì)rc和H(x,rc)(其中x為中間人任意做出的字符串),使得H(hpw,ra)=H(x,rc).這是由hash函數(shù)的弱抗碰撞性來(lái)保證的.所以C不能把ra和H(hpw,rc)替換為自己的rc和H(x,rc);最后,如果C將H(hpw)⊕xa換成自己設(shè)計(jì)的字符串Tc,在(b)步驟中B將回傳H(hpw⊕H(hpw)⊕Tc),在(c)步驟中A將驗(yàn)證回傳的字符串是否等于H(hpw⊕xa),因?yàn)閔pw和xa是C不知道的兩個(gè)數(shù),即C無(wú)法知道H(hpw⊕xa)的值,因此C也不能對(duì)回傳的字符串進(jìn)行替換,否則A和B將發(fā)現(xiàn)中間人的C的存在,將采取相應(yīng)措施,C頂多能做的是把A的消息原封不動(dòng)的傳給B,這樣C達(dá)不到中間人攻擊的目的.其他步驟的分析同上所述.
攻擊者C將2.1的(a)步驟中A發(fā)送給B的消息AU={IDA,H(hpw)⊕xa,ra,H(hpw,ra)}保留,在將來(lái)的某個(gè)時(shí)點(diǎn)重新發(fā)送給B,此時(shí)C可以通過(guò)第一步認(rèn)證,但C無(wú)法從B回傳的H(hpw,xb)⊕xb中還原出xb,因此C無(wú)法在以往的數(shù)據(jù)包中找到xb與H(hpw,xb)的對(duì)應(yīng)關(guān)系,于是在認(rèn)證階段的第三步,C無(wú)法回傳一個(gè)正確的H(hpw,xb)給B.最終也無(wú)法通過(guò)認(rèn)證.
在平行會(huì)話攻擊中,在攻擊者的特意安排下,一個(gè)協(xié)議的兩個(gè)或者更多的運(yùn)行并發(fā)執(zhí)行.并發(fā)的多個(gè)協(xié)議使得攻擊者可能從一個(gè)運(yùn)行中得到另外某個(gè)運(yùn)行中困難問(wèn)題的答案.由于該協(xié)議每次通信時(shí)雙方要各自產(chǎn)生隨機(jī)數(shù)互傳,每次產(chǎn)生的隨機(jī)數(shù)相等的概率很小,并且雙方傳輸?shù)臄?shù)據(jù)包格式不同,不可能從另一個(gè)運(yùn)行協(xié)議中得到本次協(xié)議要回傳給對(duì)方的數(shù)據(jù)包.
在認(rèn)證階段,通過(guò)傳輸像r,H(hpw,r)這樣的消息對(duì),使得r和H(hpw,r)在傳輸過(guò)程中不可被修改,因?yàn)楹茈y找到一個(gè)r′(r′≠r),使得H(hpw,r′)=H(hpw,r),這得益于Hash函數(shù)的單向性和弱抗碰撞.通過(guò)交換各自產(chǎn)生的隨機(jī)數(shù)之后,結(jié)合雙方選定的RSA算法的密鑰對(duì),生成一組動(dòng)態(tài)的密鑰:A的私鑰{sa,xa},B的公鑰{n,e},B的私鑰{sb,xb,d},其中xa和xb在每次通信的認(rèn)證階段動(dòng)態(tài)生成并相互交換,以實(shí)現(xiàn)通信過(guò)程中的一次一密.并且并未重新生成大素?cái)?shù)而改變密鑰對(duì),只是在原有加解密過(guò)程中多出一步加法、乘和模運(yùn)算就生成了新的密鑰對(duì),這樣既保留了RSA算法的安全性,也加入了一次一密的思想,使得破解該動(dòng)態(tài)RSA的難度更大.不過(guò)此協(xié)議適用于通信雙方已事先保存了各自的身份信息和選定了一個(gè)RSA算法的情況,例如金融機(jī)構(gòu)與客戶之間的通信,其他情況下的通信還有待進(jìn)一步研究.
參考文獻(xiàn):
[1] 鄭華,郝孟一,王國(guó)強(qiáng). PKI-CA認(rèn)證體系在實(shí)際應(yīng)用中的優(yōu)缺點(diǎn)討論[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用, 2002(3): 16-21.
[2] 廖曉峰,肖迪,陳勇,等.混沌密碼學(xué)原理及其應(yīng)用[M]. 北京:科學(xué)出版社, 2009: 18-26.
[3] Douglas R.Stinson.密碼學(xué)原理與實(shí)踐[M].馮登國(guó),譯. 北京:電子工業(yè)出版社, 2003: 131-144.
[4] 蔡瓊,彭濤,葉楊.一種混沌序列加密算法的密碼分析[J].武漢工程大學(xué)學(xué)報(bào),2011,33(6):94-97.
[5] Xiang feny Guo, Jiashu zhang. Secure qroup key agreement protocol based on chaotic Hash[J]. Information Sciences, 2010(10):4069-4074.
[6] 張蓓,孫世良. 基于RSA的一次一密加密技術(shù)[J]. 計(jì)算機(jī)安全, 2009(3): 53-55.
[7] 齊曉虹.RSA公開(kāi)密鑰密碼體制的密鑰生成研究[J].武漢理工大學(xué)學(xué)報(bào),2010,32(6):37-40.
[8] 束妮娜,王亞弟. 關(guān)于密碼協(xié)議攻擊的研究[J]. 計(jì)算機(jī)工程, 2005(19): 148-150.