唐文龍
(百色學院,廣西 百色 533000)
在分布式的網絡環境中,各節點希望能夠充分利用互聯網中所蘊含的潛在計算資源,因為這些節點在地理位置是處于不同位置,而且還具有匿名性、身份隨意性和可用性動態變化等特點。節點提供資源共享服務只是一種自愿且不可靠的行為,不用承擔任何法律責任。如何建立適應網絡動態復雜性及惡意節點行為的節點間身份快速認證,使信任機制更加客觀合理,是當前亟待解決的問題。針對這種情況,結合零知識證明并結合加密算法,建立節點間的快速身份認證方案。
(1)零知識證明的概念
1985年,Shafi Goldwasser,Silvio Micali和Charles Rackoff提出了零知識交互式證明的概念。“零知識證明”說的是示證者向驗證者表明他知道某種秘密,不僅能使驗證者完全確信他的確知道這個秘密,同時還保證一丁點秘密也不泄露給驗證者。“知識”,可以是口令,公鑰系統中的私鑰,某個數學難題的一種解決方法,一系列的證書等等。因此,零知識證明就是證明方擁有某些知識,在不將該知識的內容泄露給驗證方的前提下,向驗證方證明自己擁有該知識。在這個過程中,一方面,驗證方不可能向任何第三方假冒證明方,因為他沒有得到關于這個秘密的任何一點信息。[1]另一方面,證明方不可能欺騙驗證方,因為這個過程重復了很多次,證明方欺騙成功的概率很小。
(2)零知識身份認證
如果我們把合法用戶的個人信息看作是證明方的知識,證明方通過零知識證明向驗證方證實自己的身份就是零知識身份認證。零知識身份認證是零知識證明在身份認證方面的應用。目前的零知識身份認證方案主要有四種: Fiat-Shamir身份認證、Feige-Fiat-Shamir身份認證、Guillo-Quisquater身份認證和Schnorr身份認證。其中Fiat-Shamir身份認證是最早提出的,也是最基礎的零知識身份認證方案,其他三種方案是對Fiat-Shamir的改進[2]。
RSA公開密鑰密碼體制。所謂的公開密鑰密碼體制就是使用不同的加密密鑰與解密密鑰,是一種“由已知加密密鑰推導出解密密鑰在計算上是不可行的”密碼體制。
(1)隨機選取2 個大素數p、q,計算n = p · q
(2)計算 fx = ( p -1) · (q -1),然后隨機選取e,滿足 1 < e <fx,且 gcd(e,fx) = 1
(3)計算 d,使之滿足 1 < d < fx 且 e ·d ≡1(mod fx) ,B 的公鑰是(n,e),私鑰是(d, p,q)
(4)H( n,e)是單向無碰撞的散列函數。第三方公布(n,e)和H。
RSA認證方案雖然可以解決通信雙方之間的認證問題,但在分布式環境里會導致系統負擔過重,效率低下。
由于在RSA認證方案中,任意選取的整數e,而e這個數太小則安全性不高,太大了則系統性能下降,特別在分布式環境里,節點間相互認證如果花的時間太多,會導致網絡時延,影響性能。針對這一情況,對RSA認證算法的e的取值進行變換。
(1)對于e ·d ≡1(mod fx)式中的e是個大整數。
(2)取e=by,b為質數,且gcd(by,fx) = 1
(3)認證算法:節點m計算出密文,明文及明文的數字摘要傳至節點n
C=pe(mod fx), e=by;
p’=IDEA(p,k),IDEA為分組加密算法,k為雙方協商的密鑰;
p’’=H(p’),H(p’)為用預定的散列算法對 p’進行散列得到摘要信息p’’;
節點m發至節點n實際是(c,p’,p’’)兩方內容。
(4)驗證算法:節點 n根據節點 m所發的三部分(c,p’,p’’)進行驗證
P=Ce(mod fx),e=by;
判斷P是否與IDEA(P’)相等,H(p)是否與P’’相等;
認證結束。
在改進的認證方案中,由于e=by,中的指數復雜性,第三方很難知道e,IDEA加密算法和散列函數的運用,增加了認證的安全性但效率高。在改進的算法中,縮短了認證過程時間。
在分布式系統中,利用零知識證明原理構建身份認證可以使證明過程更安全。零知識證明中節點間使對方相信自已知道某一知識,但并不向對方泄漏有關信息。利用零知識證明進行節點間相互認證,需要利用第三方認證中心CA來維護系統的公用參數和用戶的密鑰。
基于零知識證明的認證方案由3 個部分組成:系統初始化,用戶注冊協議和身份認證協議。
認證的前提是認證雙方都需要具有第三方所簽發的證書,這個第三方就是CA認證中心,它是采用PKI(Public Key Infrastructure)公開密鑰基礎架構技術,專門提供網絡身份認證服務,負責簽發和管理數字證書,且具有權威性和公正性的第三方信任機構。在方案中,CA選取以下參數。
p、q:大素數,用于構建fx;
b,y∶相對小的數,構建e=by;
k:只對認證雙方公開的IDEA加密算法密鑰;
d∶私鑰;
H() :單向哈希函數。
在初始化過程中,不能暴露用戶的私鑰信息。也不能使CA工作人員泄露信息。
設定用戶為Jack,CA認證中心名為SA和中間機構SB。注冊的要求就是Jack從機構SA獲得公鑰和私鑰,但是不能對SA泄露個人私鑰。這樣對于公鑰、私鑰的產生就遵循一些協議,如公鑰和私鑰不能簡單由一個部門產生,而是由幾個權威部門交叉產生。注冊階段主要是做這些工作,其內容簡要如下:
(1)Jack用戶選擇自已的ID身份標識
(2)Jack用戶選擇隨機數b,b∈[2, p*q],由處于異地位置SB產生隨機數y,by與互質,v=idea(p,q,by),發送v,ID發送給SA。
(3)SA對Jack的ID進行檢查,若通過則進行以下運算∶選擇隨機數 p、q并計算 fx = ( p -1) · (q -1),且gcd(by,fx) = 1。計算Jack的公鑰和私鑰。所用的公式是為:by·d ≡1(mod fx)。
(4)Jack的計算機根據公鑰和公鑰的證據計算其私鑰,私鑰的計算機是在Jack的計算機上完成的,計算機結果根據公鑰的證據動態變化,所以是安全的。
設有兩個用戶Jack和Bob,兩個的密鑰對為(PJ,SJ)、(PB,SB),身份標識付為IDJ和IDB。假設Jack和Bob希望通過公開密鑰加密方法進行數據傳輸,但是只公開加密算法和密鑰而不公開解密算法和密鑰。Jack和Bob加密算法為E1和E2,解密算法分別為D1和D2,E1和D1互逆,E2和d2互逆
兩人的認證(假如Jack向Bob認證)步驟如下:
(1)Jack通過自已的公鑰PJ對一個隨機數e和IDJ進行加密:c1=E1(e),c2=E1(PJ),為了方便 c1 和 c2都用 c表示。并將這兩個密文發給BOB。
(2)Bob隨機地選取其中一個發送給Jack,Jack利用自已的私鑰對其解密D1 (c),如果沒有發生改變則繼續。
(3)Bob對另一個密文用自已的私鑰 SB進行加密得c’=E2(c),再把c’發送給jack
(4)Jack用Bob的PB對其進行解密。由于
E2(E1(m))=E1(E2(m))
E1(D2(c))=E1(D2(E2(D1(m))))=E1(D1(m))
如果 Jack的解密結果沒有發生改變,就可以證明其身份。同理可以通過上面算法相互認證,該方案可以快速在分布式網絡進身份雙向認證。
(1)認證雙方的安全性主要依賴于大數分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解RSA密碼就一定需要做大數分解。但在方案中用by來表示e,對于y這個值有少量變化,e就會有大的改變。從而增強算法的安全性。
(2)網絡偵聽(Sniff):在網絡上,任何一臺主機所發送的數據包,都會通過網絡線路傳輸到指定的目標主機上,所有在這個網絡線路上的主機都可以偵聽到這個傳輸的數據包。這種攻擊一般需要進入到目標主機所在的網絡內部,選擇一臺主機實施網絡監聽[3]。但是在方案中,Jack和Bob所傳輸的信息都進行特殊處理,所有在不安全信道中傳輸的信息都是采用RSA加密算法的,攻擊者如想要破譯出明文,就是要解決RSA的大數分解問題。由于在方案中由by代替e,這樣在短時間內是不可能破譯出密鑰的,即使通過偵聽將認證階段的所有信息都得到了,由于不知道Jack和Bob的私鑰SJ和SB,也就無法解出信息,不能偽裝成其他用戶欺騙Jack和Bob。
(3)選擇明文攻擊:分析者不僅可得到一些消息的密文和相應的明文,而且我們也可選擇被加密的明文。這比已知明文攻擊更有效。因為我們只在初始階段隨機生成了信息C,并且通過安全信道傳輸C,因此除了Jack和Bob外沒有人知道C,而且在認證階段時是在逐步中才根據信息生成C,如果在攻擊時判斷是否為初始階段是不可行的,因此選擇明文攻擊是不可行的。
文章結合安全性高于其它密碼體制的RSA密碼體制和零知識證明的特點,構建了網絡節點的身份快速認證方案.。該方案簡單,不需要可信賴的第三方參與,而且可以抵御重放攻擊、網絡偵聽、選擇明文攻擊和并行會話攻擊。
[1] William Stallings.Cryptography and Network Security Principles and Practices,FourthEdition(第 4 版)[M].北京:電子工業出版社,2006:301-313.
[2] 邱成剛,李方偉,譚利平.基于雙線性對和公鑰自證明的認證加密方案[J].重慶郵電大學學報:自然科學版,2007,19(5):610-612.
[3] 張虎強,洪佩琳,李津生.一種零知識證明協議的安全分析與改進[J].信息安全與通信保密,2006,(11):56-59.