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