周才學(xué) 劉誠勇
(九江學(xué)院信息科學(xué)與技術(shù)學(xué)院 江西九江 332005)
隨著通信技術(shù)的發(fā)展,無線傳感器網(wǎng)絡(luò)技術(shù)已經(jīng)越來越成熟,它非常適合軍事傳感、目標(biāo)跟蹤和環(huán)境監(jiān)測(cè)等領(lǐng)域。由于無線通信的開放性和傳感器節(jié)點(diǎn)資源的有限性,使得無線傳感器網(wǎng)絡(luò)的安全性受到了挑戰(zhàn)。
傳統(tǒng)的的公鑰密碼體制[1]是基于公鑰基礎(chǔ)設(shè)施(public key infrastructure,PKI)技術(shù)的,它需要一個(gè)可信第三方(certificate authority,CA)來發(fā)行一個(gè)證書,把用戶的公鑰與其身份進(jìn)行綁定。PKI的不足之處是其公鑰的管理成本太高,并不適合大規(guī)模的應(yīng)用。
基于身份的密碼體制[2](identity-based cryptosystem,IBC)與PKI相比,它的主要優(yōu)點(diǎn)是消除了公鑰證書,使其大大降低了公鑰的管理費(fèi)用,因而IBC更適合資源受限的環(huán)境使用。在IBC中,它可以直接從用戶的身份信息(如:電話號(hào)碼、身份號(hào)碼、電子郵件地址和IP地址)計(jì)算用戶的公鑰。有一個(gè)可信的第三方稱為私有密鑰生成器(private key generator,PKG),它負(fù)責(zé)為所有用戶生成私有密鑰。在沒有公鑰證書的情況下顯式驗(yàn)證公鑰的真實(shí)性。但是,IBC有一個(gè)弱點(diǎn),即存在密鑰托管問題,因?yàn)镻KG持有所有用戶的私有密鑰。
無證書密碼體制[3](certificateless cryptosystem,CLC)相對(duì)于IBC而言,它更具安全性,因?yàn)樗冉档土斯€的管理費(fèi)用,又不存在密鑰托管問題。實(shí)際上,無證書密碼體制的私鑰由兩部分組成,一個(gè)是可信第三方密鑰生成中心(key generation center,KGC)為每個(gè)用戶生成的部分私有密鑰,另一個(gè)是用戶自己選擇的秘密值。
為了既認(rèn)證又保密地在發(fā)送端和接收端之間安全地通信,人們可以使用簽密技術(shù)[4]。簽密能在一個(gè)邏輯步驟內(nèi)同時(shí)實(shí)現(xiàn)加密和認(rèn)證,且總的計(jì)算代價(jià)比傳統(tǒng)的先簽名再加密要小得多。異構(gòu)簽密[5]是簽密概念的進(jìn)一步推廣,它可以實(shí)現(xiàn)發(fā)送端和接收端使用不同的密碼體制。
在發(fā)送端,由于無線傳感器網(wǎng)絡(luò)的存儲(chǔ)和計(jì)算資源都有限,所以PKI技術(shù)并不適合它,而基于身份的密碼體制又存在密鑰托管問題,因此,CLC更適合于像無線傳感器這種存儲(chǔ)容量小、計(jì)算能力有限的微小設(shè)備使用。在接收端,服務(wù)器通常具有強(qiáng)大的存儲(chǔ)和計(jì)算能力,能夠快速的處理和整合傳感器所傳送的信息,因而PKI技術(shù)更適合它。所以,異構(gòu)簽密就非常適合無線傳感器網(wǎng)絡(luò)向服務(wù)器通信這樣的環(huán)境。
在2016年,Li FG等[6]提出了一個(gè)用于無線傳感器網(wǎng)絡(luò)安全通信的實(shí)用異構(gòu)簽密方案。在該方案中,發(fā)送端采用的是CLC技術(shù),接收端采用PKI技術(shù),它實(shí)現(xiàn)了無線傳感器網(wǎng)絡(luò)既保密又認(rèn)證地與服務(wù)器進(jìn)行安全通信。然而,文章通過分析發(fā)現(xiàn)他們的方案是不安全的,因?yàn)榻邮斩丝梢耘c任何實(shí)體合謀,來偽造發(fā)送端的簽密文,從而不能實(shí)現(xiàn)不可否認(rèn)性。文章分析了原方案不安全的原因,并使用hash函數(shù)綁定公鑰的方法,對(duì)原方案進(jìn)行了一種可能的改進(jìn)。
設(shè)G1是以素?cái)?shù)q為階的加法群,G2是以素?cái)?shù)q為階的乘法群。P是G1的生成元。雙線性映射e:G1×G1→G2需要滿足如下性質(zhì):
(1)雙線性性:對(duì)于任意a,b∈和P,Q∈G1,有e(aP,bQ)=e(P,Q)ab;
(2)非退化性:e(P,P)≠1G2;
(3)可計(jì)算性:對(duì)所有的P,Q∈G1,存在有效的多項(xiàng)式時(shí)間算法來計(jì)算e(P,Q)。
一個(gè)異構(gòu)簽密網(wǎng)絡(luò)模型是由三個(gè)主要實(shí)體組成,它們分別是無線傳感器網(wǎng)絡(luò)、服務(wù)提供商(service provider,SP)和一個(gè)互聯(lián)網(wǎng)服務(wù)器(server),如圖1所示。其中無線傳感器網(wǎng)絡(luò)由一些傳感結(jié)點(diǎn)和一個(gè)基站組成,這些傳感器節(jié)點(diǎn)與基站通信,基站不僅與傳感器節(jié)點(diǎn)通信,還與服務(wù)器通信。SP負(fù)責(zé)為無線傳感器網(wǎng)絡(luò)生成部分私鑰,并為服務(wù)器生成數(shù)字證書,也就是說,SP在CLC中扮演KGC的角色,在PKI中扮演CA的角色。當(dāng)收集到的數(shù)據(jù)可用時(shí),基站或者傳感器結(jié)點(diǎn)將會(huì)把所收集到的數(shù)據(jù)發(fā)送給服務(wù)器,之后,服務(wù)器將會(huì)將所收集到的數(shù)據(jù)進(jìn)行管理、分析、存儲(chǔ)和使用。
圖1 網(wǎng)絡(luò)模型
Li FG等所提出的異構(gòu)簽密方案是由以下7個(gè)算法所組成。
(1)初始化:給定一個(gè)安全參數(shù)k,SP選擇一個(gè)有著相同素?cái)?shù)階q的加法群G1和一個(gè)乘法群G2,G1的生成器P,一個(gè)雙線性映射e:G1×G1→G2,和四個(gè)哈希函數(shù)H1:{0,1}*→,H2:G1→。這里的n是指在傳輸過程中的消息的比特?cái)?shù)目。SP隨機(jī)選擇一個(gè)主密鑰并且設(shè)置相關(guān)的主公鑰Ppub=sP。SP發(fā)布系統(tǒng)參數(shù){G1,G2,p,e,n,P,Ppub,g,H1,H2,H3,H4}并使s保密,這里g=e(P,P)。
(2)CLC用戶部分私鑰生成:用戶發(fā)送身份ID給SP,SP返回用戶的部分私鑰為:
DID=P/(H1(ID)+s)
(3)CLC用戶密鑰生成:身份為ID的用戶選擇一個(gè)隨機(jī)值作為秘密值,并設(shè)置PKID=xID(H1(ID)P+Ppub)作為公鑰,這個(gè)公鑰可以在沒有證書的情況下被發(fā)布。
(4)CLC完全私鑰生成:給定一個(gè)部分私鑰DID和一個(gè)秘密值xID,這個(gè)算法返回一個(gè)完全私鑰:SID=DID/(H2(PKID)+xID)
(5)PKI用戶密鑰生成:在PKI中的用戶選擇一個(gè)隨機(jī)值,并設(shè)置sk=P/x和公鑰pk=xP。
(6)簽密:給定一個(gè)消息m∈{0,1}n、一個(gè)發(fā)送者的私鑰SID、身份ID、公鑰PKID和一個(gè)接收者的公鑰pk,該算法的工作原理如下:
②計(jì)算r=gγ和c=m⊕H3(r)。
③計(jì)算h=H4(m,ID,PKID,r)。
④計(jì)算S=(γ+h)SID。
⑤計(jì)算T=γpk。
⑥輸出一個(gè)密文σ=(c,S,T)。
(7)解簽密:給定一個(gè)密文σ,一個(gè)發(fā)送者的身份ID、公鑰PKID、一個(gè)接收者的私鑰sk,該算法的工作原理如下:
①計(jì)算r=e(T,sk)。
②恢復(fù)m=c⊕H3(r)。
③計(jì)算h=H4(m,ID,PKID,r)。
④當(dāng) 且 僅 當(dāng)r=e(S,PKID+H2(PK)(H1(ID)P+Ppub))g-h成立,接收消息;否則返回錯(cuò)誤標(biāo)志⊥。
(1)接收者擁有自己的私鑰x和公鑰pk,接收者再注冊(cè)一個(gè)私鑰x'和公鑰pk'。
(2)假設(shè)接收者收到一個(gè)簽密文σ=(c,S,T),發(fā)送者的身份是ID,接收者的公鑰是pk,消息是m。
(3)接收者計(jì)算T'=x-1x'T=γpk'。
(4)則σ'=(c,S,T')為偽造的簽密文,發(fā)送者的身份仍然是ID,但接收者的公鑰變成了pk',消息仍然是原來的消息m。
這種攻擊的解釋如下:無證書環(huán)境的無線傳感器網(wǎng)絡(luò)作為發(fā)送者,它們發(fā)送簽密文給基于PKI環(huán)境的服務(wù)器,服務(wù)器可以解密信息?,F(xiàn)在服務(wù)器采用以上的攻擊方法,則服務(wù)器可以與任何實(shí)體合謀,偽造一個(gè)傳感器發(fā)送的簽密文,內(nèi)容不變,但接收者變成了那些合謀方。這樣就達(dá)不到傳感器想保密信息內(nèi)容的目的。
文獻(xiàn)[7]曾給出設(shè)計(jì)簽密方案時(shí)必須注意的幾個(gè)問題,其中之一就提到簽密方案由簽名和加密兩部分組成,簽名部分應(yīng)含有接收者的公鑰或身份信息。否則,接收者可以用另外一個(gè)用戶的私鑰參與加密運(yùn)算,生成另外一個(gè)加密部分,連同原來的簽名部分可以構(gòu)成一個(gè)偽造。而文章在上一節(jié)給出的攻擊方法剛好屬于這種情況,這是原方案不安全的根本原因,因而為了抵抗這種攻擊,一種可能的改進(jìn)就是把原方案的簽名部分與接收者的公鑰信息進(jìn)行綁定。具體來說就是在原方案簽密算法的第三步計(jì)算h=H4(m,ID,PKID,r)時(shí),把接收者的公鑰信息pk包含進(jìn)入,即h=H4(m,ID,PKID,r,pk)。這樣在原方案簽密算法的第四步計(jì)算簽名部分S=(γ+h)SID時(shí),S就跟特定的接收者公鑰pk進(jìn)行了綁定,從而上一節(jié)給出的攻擊方法就失效了。
另外,這種改進(jìn)不影響原方案的效率。
文章對(duì)一個(gè)適用于無線傳感器網(wǎng)絡(luò)的異構(gòu)簽密方案進(jìn)行了安全性分析,指出了它不能滿足不可偽造性,接收方可以與其它方合謀來偽造簽密文,因此它是不安全的。通過分析,文章對(duì)原方案進(jìn)行了一種可能的改進(jìn)來抵抗這種攻擊,改進(jìn)后的方案與原方案相比效率不變。