張久輝 左明鑫
(1.鄭州電力職業(yè)技術(shù)學(xué)院 電力工程系,河南 鄭州451450;2.鄭州科技學(xué)院 電氣工程學(xué)院,河南 鄭州450064)
現(xiàn)代密碼學(xué)技術(shù)在私鑰沒有泄露的情況下基本上可以做到完善保密,也就是說偷窺者無法在可以接受的時(shí)間內(nèi)將密文翻譯成明文。有時(shí)候,我們?yōu)榱朔乐箼?quán)力的過分集中,常常采用密鑰分散管理。所謂密鑰分散管理,就是把一個(gè)系統(tǒng)密鑰S分成N個(gè)密鑰碎片S1,S2,…,Sn,并且分發(fā)給N個(gè)具有合法性的節(jié)點(diǎn)P1,P2,…,Pn[1],給定一個(gè)正整數(shù)T,且T<N,在任何成員數(shù)t<T的情況下都不能由他們的部分秘密中得到整個(gè)系統(tǒng)的秘密,只有當(dāng)成員數(shù)t>T的情況下合作才可以完成密碼運(yùn)算,從而很好地解決了權(quán)力過分集中的問題。在某些不便頻繁更換密鑰的場(chǎng)合,密鑰自身的安全性至關(guān)重要,如何提高密鑰的安全性成了很多人研究的課題,本文將介紹所采用的具體加密算法。
首先需要存在一個(gè)可靠的認(rèn)證中心CA[2],所謂可靠,就是假設(shè)這個(gè)CA是安全而不容易被攻破的,以及CA不會(huì)對(duì)系統(tǒng)信息構(gòu)成威脅,這里的CA就好比大會(huì)選舉中的唱票人員,左右不了大會(huì)的投票結(jié)果。CA采用如下的方式進(jìn)行密鑰碎片的生成,具體可以描述為:CA首先要建立一個(gè)矩陣A=[aij]NXn(其中i,j都是正整數(shù),1≤i≤N,1≤j≤n)和一個(gè)列向量B=[bj]TX1,且n>T,我們?nèi)稳【仃嘇中的任意T列組成的新矩陣A就可以和列向量B相乘得到一個(gè)列向量C=AB=[cj]Nx1,C就是N維向量空間里的一個(gè)元素,C就是由所有C組成的集合,所以C中應(yīng)該共有個(gè)元素。矩陣和向量乘積可以用如下公式表示:
認(rèn)證中心CA就把向量A中的每個(gè)列向量作為一個(gè)密鑰碎片S1,S2,…,Sn安全地發(fā)送給n個(gè)合法的節(jié)點(diǎn)P1,P2,…Pn。
至于如何安全地將密鑰碎片發(fā)送到合法用戶手中,有很多種方法(包括硬件的或軟件的),由于橢圓曲線加密算法ECC[3]具有較高的安全性和難破譯性,本文采用橢圓曲線的方法將密鑰碎片發(fā)送給合法用戶。這里就需要每個(gè)合法節(jié)點(diǎn)用戶建立一個(gè)自己的公私鑰對(duì)[4],認(rèn)證中心CA用戶節(jié)點(diǎn)的公鑰對(duì)要發(fā)給用戶節(jié)點(diǎn)的密鑰碎片進(jìn)行加密,用戶節(jié)點(diǎn)再用自己的私鑰對(duì)認(rèn)證中心發(fā)過來的密鑰碎片進(jìn)行解密。假設(shè)某個(gè)節(jié)點(diǎn)的橢圓曲線方程為y2=x3+x+6,私鑰為t=9,公鑰a=(2,7),b=9a=(10,9),具體用公式描述加密解密過程如下:
加密過程
解密過程
當(dāng)需要改變某些節(jié)點(diǎn)的權(quán)利時(shí),我們只需要相應(yīng)地改變矩陣A的列向量數(shù)及其內(nèi)容。比如要去掉第i個(gè)節(jié)點(diǎn)的權(quán)限,只需要認(rèn)證中心CA去掉矩陣中的第i個(gè)列向量,同時(shí)集合C中的列向量數(shù)也要做相應(yīng)地調(diào)整。在投票后,認(rèn)證中心CA將收到的密鑰碎片和矩陣A的列向量進(jìn)行對(duì)照,在矩陣A中不存在的列向量都被認(rèn)為是無效的。當(dāng)需要增加一個(gè)或幾個(gè)合法用戶節(jié)點(diǎn)的權(quán)限時(shí),我們只需要簡單地在矩陣A中增加一個(gè)或幾個(gè)列向量,只要滿足增加的列向量aNj和列向量B的乘積數(shù)和C中的任一元素都不相等即可。然后用解密后的密鑰碎片組成一個(gè)新的矩陣A,再用矩陣A和列向量B相乘,把所得的列向量C與列向量C中的元素進(jìn)行對(duì)照,如果滿足集合C≤C,則投票完成。從而可得,任何小于T個(gè)密鑰碎片都不能完成上面的矩陣乘法,也就是說小于T個(gè)合法節(jié)點(diǎn)都無法進(jìn)行投票。
在合法節(jié)點(diǎn)與認(rèn)證中心通信時(shí),通信內(nèi)容往往會(huì)被竊聽,為了保證通信內(nèi)容的安全性,需要對(duì)節(jié)點(diǎn)發(fā)送給認(rèn)證中心的密鑰碎片進(jìn)行加密,這就是多級(jí)加密中的二級(jí)加密思想。采用RSA密碼體制對(duì)各點(diǎn)的密鑰碎片進(jìn)行加密,各合法用戶節(jié)點(diǎn)用認(rèn)證中心CA的會(huì)話公鑰對(duì)自己擁有的私鑰碎片中每個(gè)元素逐個(gè)進(jìn)行加密。
設(shè)n=pq,其中p和q為大素?cái)?shù)。且定義K={(n,p,q,a,b):a b≡1(mod?(n))},其中n和b組成了公鑰,且p,q和a組成了私鑰,當(dāng)需要投票時(shí),節(jié)點(diǎn)Pi用公式(6)對(duì)密鑰碎片中的每個(gè)元素逐個(gè)進(jìn)行加密,然后把加密后的數(shù)據(jù)發(fā)送給認(rèn)證中心CA,認(rèn)證中心收到節(jié)點(diǎn)Pi發(fā)送過來的數(shù)據(jù)后用公式(7)逐個(gè)進(jìn)行解密[5]。
由
得
加密過程
解密過程
認(rèn)證中心把從各個(gè)節(jié)點(diǎn)Pi發(fā)送過來的正確密鑰碎片經(jīng)解密后,把這些密鑰碎片隨機(jī)組成一個(gè)矩陣A1,當(dāng)A1的列向量數(shù)大于等于T時(shí),任取其中T列組成新的矩陣A2,然后看A2與列向量B乘積C1是否屬于C,如果屬于C則投票完成,如果不屬于C,我們就重新選取A1中的元素T列,再與列向量B乘積,只要有一次乘積結(jié)果是C中的一個(gè)元素,投票就算完成。只有所有次選取組成的向量與B乘積都不是C中的元素時(shí),不能打開系統(tǒng)秘密。
采用多方協(xié)商的方式,使用密鑰分散管理能很好地解決權(quán)力過分集中和密鑰不便經(jīng)常改變的問題,能夠抵抗中間人的攻擊,能改變合法用戶權(quán)限。但是對(duì)系統(tǒng)內(nèi)部的攻擊卻很薄弱,這幾乎是現(xiàn)在信息安全方面的一個(gè)通病,再一個(gè)是過分依賴認(rèn)證中心,如果認(rèn)證中心不可靠,整個(gè)系統(tǒng)就沒秘密可言。
[1]Zhou L and Haas Z J,Securing ad hoc networks[J].IEEE network,special issue on network security,November/December,1999.
[2]Ratna Dutta,Sourav Mukhopadhyay,Martin collier Computationally secure self-healing key distribution with revocation in wireless ad hoc networks[J].Contents lists available at Science DirectAd Hoc Networks2010:15-17.
[3]ELGamal,Principle and Practice of Cryptograhy[M].Beijing:Electronic Industry Press,2009:184-186.
[4]Chen kefei,Threshold RSA Cryptosystem[J].ACT ELECTRONICASINICA,1999,27(6):1-2.
[5]N Koblitz.Elliptic curve cryptosystems[J].Math.Comp,1987,177(48):203-209.