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