本發(fā)明涉及無線傳感器網絡節(jié)點認證技術領域,具體涉及無線傳感器網絡中加速的vbnn-ibs認證機制。
背景技術:
無線傳感器網絡是一種大規(guī)模的分布式網絡,節(jié)點的布設方式多種多樣,部署后的拓撲結構也時常發(fā)生變化。節(jié)點自身有限的計算能力和能量資源受限使得無線傳感器網絡與普通網絡相比更易受到各種攻擊的侵害,其安全解決方案必須兼顧安全性和系統(tǒng)性能等因素。節(jié)點認證是無線傳感器網絡中安全的重要組成部分,是安全路由協(xié)議和密鑰管理協(xié)議等實現的基礎。
由于自身的限制和任務的多功能性,現代無線傳感器網絡需要特殊的高程度的安全性。類似于μtesla的基于對稱加密的機制由于其能量效率高被廣泛的使用,其在設計的過程中解決了共享密鑰問題、密鑰生成算法的單向性問題、密鑰發(fā)布包丟失的問題、密鑰公布延遲問題等。但由于其認證期間存在時間拖延,容易受到dos(denialofservice)攻擊的影響,即惡意節(jié)點廣播錯誤數據包,節(jié)點會將這些數據包保存起來等待密鑰分布后進行驗證,這樣將可能耗盡節(jié)點資源。
公鑰加密機制(pkc)在廣播認證上具有對稱加密不具備的一些優(yōu)勢。比如不需要通信雙方共享通用的密鑰,即使公鑰在傳遞或發(fā)布的過程中被獲取,入侵者沒有與公鑰相配對的私鑰也獲取不到任何有用的信息。公鑰加密機制具有良好的可擴展性,密鑰分配簡單且易于管理。但是其加密算法復雜,加密和解密的速度都比較慢,至此在廣播認證中導致了較高的能量消耗和認證時間拖延。現有的加速ecdsa簽名機制提出了一種快速認證機制。其是節(jié)點隨機地將簽名的部分結果發(fā)送給其鄰居節(jié)點,鄰居節(jié)點利用其收到的計算結果來完成快速認證。但是對于無線傳感器網絡來說,這種數字簽名機制在計算上的消耗仍然很大。
因此在充分考慮無線網絡攻擊方法和無線傳感器網絡自身特點的基礎上,一個快速的節(jié)能的簽名機制需要在無線傳感器網絡中被設計。
技術實現要素:
本發(fā)明的目的是為了解決現有無線傳感器網絡環(huán)境下的公共密鑰加密體制節(jié)點認證速度慢,消耗較大能量的問題,而提出一種無線傳感器網絡中加速vbnn-ibs(variantofbellarenampremprenevenidentity-basedsignature)認證方法。
一種無線傳感器網絡中加速vbnn-ibs認證方法包括以下步驟:
步驟一:對用戶進行密鑰提取,得到用戶的私鑰;
步驟一一、在zp中選擇一個隨機數r,計算r=rp;zp是由0到p-1的正整數組成的域,p為定義在fq上的橢圓曲線e中的一個點,fq為有限域,其中q是一個相當大的素數,橢圓曲線e為:y2=x3+ax+b,a和b都在域fq中,p為大于3的素數;
步驟一二、利用系統(tǒng)私鑰x計算s=r+cx,其中c=h1(idu||r),idu是由0和1構成的用戶的身份標識,h1是哈希加密函數{0,1}×g*;其中{0,1}指的是含有0和1的字符串;g是由點p的加運算組成的群;g*代表群中去掉0元素;×代表二維;
步驟一三、得出由pkg產生的對pria=(r,s)為用戶的私鑰,并傳送給用戶,其中pria是由pkg產生的用戶的私鑰;所述pkg為私鑰產生器。
步驟二:采用步驟一得到的用戶的私鑰,產生用戶的簽名;
步驟二一、在zp中選擇一個隨機數y,計算y=y(tǒng)p;
步驟二二、計算h=h2(idu,m,r,y)和z=y(tǒng)+hs;其中m是用戶攜帶的信息,h2是哈希加密函數{0,1}*;{0,1}*是指由多個0和1的組成的字符串作為輸入;
步驟二三、得出(r,h,z)為用戶在攜帶信息m時的簽名。
步驟三:對步驟二產生的用戶的簽名進行驗證。
步驟三一:節(jié)點收到用戶傳來的數據包{m,idu,ct,sigm}并驗證ct是否為當前時間,若不是當前時間則數據包{m,idu,ct,sigm}包無效,若是當前時間則接受用戶對數據包{m,idu,ct,sigm}的廣播;idu為用戶的身份標識,ct為當前時間,sigm為攜帶信息m時用戶的簽名(r,h,z);
步驟三二、采用簽名(r,h,z)、用戶的身份標識idu和用戶攜帶的信息m,驗證者計算c=h1(idu||r);
步驟三三、驗證者驗證步驟二二中的h的值與函數h2(idu,m,r,zp-h(r+cp0))的值是否相等;p0=xp為系統(tǒng)公鑰;
所述zp-h(r+cp0)的計算過程為:
步驟三三一:節(jié)點將向其鄰居節(jié)點傳送中間運算結果,所述中間運算結果為zp、hr、hcp0、zp+hr、zp+hcp0或hr+hcp0;
步驟三三二:節(jié)點收到中間運算結果后,計算zp-h(r+cp0)。
步驟三四、若驗證者完成步驟三三中的驗證,且步驟二二中的h的值與函數h2(idu,m,r,zp-h(r+cp0))的值相等,則簽名驗證完成,否則拒絕簽名。
本發(fā)明的有益效果為:
本發(fā)明在無線傳感器網絡中,通過一個節(jié)點向其鄰居節(jié)點傳送其計算結果來加快認證的速度。這樣只要有節(jié)點來傳送計算結果,其鄰居節(jié)點就會減少計算量,從而降低傳感器節(jié)點的能量開銷并且有效加快認證效率,減少認證時間,進而提高了網絡的生存周期。在理論分析上得出傳統(tǒng)的vbnn-ibs將消耗能量16×58.32=933.12mj,而avbnn-ibs機制可以節(jié)省的能量為:etheo=427.68-1.284-5.126=421.27mj,顯然節(jié)約了45.15%的能量。仿真結果表明,在節(jié)點功能方面,傳統(tǒng)的vbnn-ibs機制總共耗費2503mj,傳統(tǒng)的ecdsa算法消耗3343.52mj,aecdsa算法消耗2783.3mj。而avbnn-ibs機制消耗的能量為1371mj,較2503mj節(jié)省了45.22%。在時間消耗方面,avbnn-ibs用2228s完成認證,而其他三種機制分別用6699s,6863s和4797s來完成認證。所提的avbnn-ibs僅消耗傳統(tǒng)vbnn-ibs54.77%的能量和33.26%的時間,結果如圖3所示。在節(jié)點狀態(tài)方面,vbnn-ibs、avbnn-ibs、ecdsa和aecdsa分別消耗47.29j、27.26j、43.46j和36.49j。在時間方面分別消耗50.30s,25.17s,53.87s和39.60s。在能量和時間的消耗上是傳統(tǒng)的vbnn-ibs的63.71%和50.04%,結果如圖5所示。圖中顯示本發(fā)明avbnn-ibs機制無論在能量還是在時間的消耗上都優(yōu)于其他認證機制。
附圖說明
圖1為通過節(jié)點相互協(xié)作來完成認證的avbnn-ibs機制示意圖,a、b…h(huán)為節(jié)點的序號;
圖2為本發(fā)明的理論分析中節(jié)點的拓撲結構圖,其中roundn代表第n輪認證過程,user代表用戶;
圖3為從第節(jié)點功能方面分析不同機制下認證所需的能量和時間消耗柱狀圖,其中vbnn-ibs代表基于身份的bellarenamprempreneven簽名,avbnn-ibs代表加速的基于身份的bellarenamprempreneven簽名,ecdsa(ellipticalcurvedigitalsignaturealgorithm)是一種橢圓曲線數字簽名算法,是使用橢圓曲線密碼ecc對數字簽名算法dsa的模擬,aecdsa是加速的ecdsa加密算法;
圖4為節(jié)點狀態(tài)圖;
圖5為從節(jié)點狀態(tài)方面分析不同機制下認證所需的能量和時間消耗柱狀圖,各認證簽名算法同圖3。
具體實施方式
具體實施方式一:一種無線傳感器網絡中加速vbnn-ibs認證方法按以下步驟實施:
系統(tǒng)參數建立階段:
給出安全參數k。
pkg指定e/fq和階數為n的點p。其中pkg是指privatekeygenerator一個可信任的第三方。我們將定義在有限域fq中的橢圓曲線e:y2=x3+ax+b稱為e/fq,其中q是一個相當大的素數,a和b都在域fq中。p為橢圓曲線e中的一個點,其階數為n。
在zp中隨機地選擇一個系統(tǒng)私鑰x,計算系統(tǒng)公鑰p0=xp。其中zp代表由0到p-1的正整數組成的域。
定義橢圓曲線“加”運算和“乘”運算。在橢圓曲線e上取點p和點q,l是過點p和點q的一條直線,并且l與橢圓曲線e相交于一點m。則點m關于x軸的對稱點m'就為點p和點q的“加”運算的結果,即p“+”q。點p在橢圓曲線e上的乘運算為np=p+p+…+p,式中p的個數為n。在給出np和p的基礎上求n的問題稱之為橢圓曲線離散對數問題。
選擇兩個哈希加密函數h1:{0,1}×g*——→zp和h2:{0,1}*——→zp。g是由點的“加”運算產生的一個群,g*是g中去掉0元素。
推出系統(tǒng)參數(e/fq,p,p,p0,h1,h2),并且保持x未知。
步驟一:對用戶進行密鑰提取,得到用戶的私鑰;
步驟一一、在zp中選擇一個隨機數r,計算r=rp;r為中間變量,zp是由0到p-1的正整數組成的域,p為橢圓曲線e中的一個點,p為大于3的素數使得zp中的離散對數問題為困難問題;
步驟一二、利用系統(tǒng)私鑰x去計算s=r+cx,s為中間變量,其中c=h1(idu||r)(pkg計算)。idu∈{0,1}*是由0和1構成的用戶的身份標識。h1是哈希加密函數{0,1}×g*;其中{0,1}指的是含有0和1的字符串;g是由點p的加運算組成的群;g*代表群中去掉0元素;×代表二維;
步驟一三、由此得出由pkg產生的對pria=(r,s)為用戶的私鑰,并傳送給用戶。其中pria是由pkg產生的用戶的私鑰。
步驟二:采用步驟一得到的用戶的私鑰,產生用戶的簽名;
身份標識為idu的用戶在攜帶消息m時的簽名產生如下:
步驟二一、在zp中選擇一個隨機數y,計算y=y(tǒng)p;y為中間變量;
步驟二二、計算h=h2(idu,m,r,y)和z=y(tǒng)+hs,z為中間變量,其中m是用戶a攜帶的信息(即為要傳送的有用消息),h2是哈希加密函數{0,1}*;其中{0,1}指的是含有0和1的字符串;{0,1}*是指由多個(多個為大于等于2個,本發(fā)明中取4個)0和1的組成的字符串作為輸入;
步驟二三、得出(r,h,z)是用戶在攜帶消息m時的簽名。
步驟三:對步驟二產生的用戶的簽名進行驗證。
步驟三一:節(jié)點收到用戶傳來的數據包{m,idu,ct,sigm}并驗證ct是否為當前時間,若不是當前時間則數據包{m,idu,ct,sigm}包無效,若是當前時間則接受用戶對數據包{m,idu,ct,sigm}的廣播;其中m為要廣播的信息,idu為用戶的身份標識,ct為當前時間,sigm為攜帶信息m時用戶的簽名(r,h,z);
步驟三二、采用簽名(r,h,z)、用戶的身份標識idu和信息m,驗證者重新計算c=h1(idu||r);
步驟三三、驗證等式h=h2(idu,m,r,zp-h(r+cp0))是否成立(驗證者驗證步驟二二中的h的值與函數h2(idu,m,r,zp-h(r+cp0))的值是否相等);p0=xp為系統(tǒng)公鑰;
加速的vbnn-ibs——avbnn-ibs實現過程,包括以下步驟。
步驟三三一、用戶在廣播一個數據包時,需要發(fā)送{m,idu,ct,sigm}。其中m為要廣播的消息,idu為用戶的身份標識,ct為現在的時間,sigm為在攜帶消息m時用戶的簽名(r,h,z)。
步驟三三二、當該數據包被用戶廣播時,節(jié)點首先檢查ct是否為當前時間,若過期則該數據包無效。
步驟三三三、如圖1,當節(jié)點a、b、c收到用戶傳來的數據包并驗證其有效。
步驟三三四、他們將向其鄰居節(jié)點傳送他們的中間運算結果。比如d節(jié)點需要計算zp-hr-hcp0后才可完成驗證,其中zp的值是節(jié)點a直接傳遞過來的,d只要通過自身計算hr和hcp0的值后,再做兩次加法便可快速的完成認證。
步驟三三五、由于節(jié)點e和節(jié)點d都是a的鄰居節(jié)點,所以e的認證機制和節(jié)點d是一樣的。類似的,節(jié)點b將計算結果hr傳給其鄰居節(jié)點f和節(jié)點g,節(jié)點f和g自身計算zp和hcp0的值后再完成兩次加法即可完成認證。同理,節(jié)點c將計算結果hcp0傳遞給其鄰居節(jié)點h和節(jié)點i,兩節(jié)點根據同樣的方法完成快速認證。
步驟三四、若驗證者完成步驟三三中的驗證,且步驟二二中的h的值與函數h2(idu,m,r,zp-h(r+cp0))的值相等,則簽名驗證完成,否則拒絕簽名。
在傳統(tǒng)的vbnn-ibs簽名機制中,每一個節(jié)點在簽名驗證的過程中都需要計算zp,hr和hcp0的值。這就意味著一次驗證需要進行三次乘法和兩次加法。并且在整個廣播認證的過程中,所有的傳感器節(jié)點都需要進行同樣的運算,這不僅浪費節(jié)點能量而且也延長了認證所需的時間。所以我們提出了一種改進的vbnn-ibs簽名機制—avbnn-ibs,來通過一個節(jié)點向其鄰居節(jié)點傳送其計算結果來加快認證的速度。這樣只要有節(jié)點愿意消耗一點自己的能量來傳送計算結果,其鄰居節(jié)點就會減少計算量從而節(jié)約更多的能量加快認證效率,減少認證時間。
假設整個理論分析和仿真實驗是在沒有任何攻擊的情況下,在如圖2所示的拓補結構中完成的。即我們采用節(jié)點向其鄰居節(jié)點傳送兩種中間計算結果hr+hcp0的方式。在tiny系統(tǒng)下,用工作在8mhz的micaz節(jié)點來完成分析。
理論上分析avbnn-ibs的能量和時間的消耗:
是在滿足ieee802.15.4標準的前提下來進行的,并且節(jié)點的拓撲結果如圖2所示。使用8位處理器且進行一次乘法運算所需的時間為0.81s的atmega128l,工作在8mhz的傳感器節(jié)點micaz來完成分析。該節(jié)點工作電壓為3v,發(fā)送數據的電流損耗為17.4ma,接收數據所消耗的電流為19.7ma,數據傳輸的速率為250kbps。為了得到與1024bit的rsa同樣的安全程度,節(jié)點要傳的數據包{m,id,ct,sigm,hr+hcp0}總為139bytes,其中有用信息m為10bytes,id為2bytes,ct為2bytes,中間計算結hr+hcp0為42bytes,所得的簽名大小為83bytes。由于micaz節(jié)點在物理層最多能傳輸128bytes,所以節(jié)點在傳輸數據的過程中需將數據包一分為二?;谝陨蠀?,我們在理論上計算一下每個micaz節(jié)點所消耗的能量。每字節(jié)一個micaz節(jié)點發(fā)送、接收所消耗的能量分別用es1、er1來表示。每個節(jié)點進行乘法運算和完成驗證所消耗的能量分別用emul和ever來表示。則es1=3.0×17.4×8/250=1.67μj,er1=3.0×19.7×8/250=1.89μj。emul=3.0×8.0×0.81=19.44mj,ever=58.32mj。所以中間計算結果hr+hcp0在發(fā)送和接收時所消耗的能量分別為es=3.0×17.4×128×8/250=0.214mj,er=3.0×19.7×128×8/250=0.466mj。
在如圖2所示的節(jié)點分布結構中,并不是所有節(jié)點都將其中間計算結果傳遞給其鄰居節(jié)點令其快速完成認證。比如最初用戶將數據包傳送給距其最近的1節(jié)點,2和5節(jié)點在第一輪認證過程中接收1節(jié)點的中間計算結果來快速完成認證,并在第二輪認證中進入休眠模式,這樣經過6輪之后,所有節(jié)點將會完成認證。7節(jié)點僅需將中間計算結果傳給8和11節(jié)點,3和6節(jié)點的認證工作可通過接收2節(jié)點的計算結果來完成。這種情況下,16個節(jié)點中的6個需將中間計算結果發(fā)送出去,這將消耗ecost(s)=6×0.124=1.284mj的能量。11個節(jié)點將收到中間計算結果,這要消耗ecost(r)=11×0.466=5.126mj的能量。這11個節(jié)點在認證過程中利用中間計算結果會節(jié)省esav=11×2×19.44=427.68mj能量。我們可以得出在理論分析上得出傳統(tǒng)的vbnn-ibs將消耗能量16×58.32=933.12mj,而avbnn-ibs機制可以節(jié)省的能量為:etheo=427.68-1.284-5.126=421.27mj,顯然節(jié)約了45.15%的能量。
具體實施方式二:本實施方式與具體實施方式一不同的是:本實施方式與具體實施方式不同的是本實施方式是在4*4網格的拓撲結構中,從節(jié)點的功能方面進行仿真分析的。具體內容如下:
為了得到avbnn-ibs所能減少的能量值和節(jié)約的時間,我們在tinyos系統(tǒng)中執(zhí)行nesc應用程序來發(fā)送和接收802.15.4數據包。由于micaz節(jié)點在物理層最多能傳輸128bytes,所以要傳帶有中間計算結果的139bytes的數據包我們需將此數據包拆分。第一個包中為用戶的信息和產生的簽名,用sig來表示,第二個數據包中為中間計算結果,用inter來表示。我們可以得出當發(fā)送和接收數據包sig時所消耗的能量分別為:esig(s)=491.4μj,esig(r)=598μj。發(fā)送和接收數據包inter時所消耗的能量分別為:einter(s)=387.1μj,einter(r)=467μj。在帶有滑動窗口大小為3的projectivecoordinatesystem(pcs)中我們得知一次乘法運算所消耗的能量為51.795mj,消耗的時間為1958ms,并將其實驗結果運用到我們的仿真當中。仿真結果表明,傳統(tǒng)的vbnn-ibs機制總共耗費2503mj,傳統(tǒng)的ecdsa算法消耗3343.52mj,aecdsa算法消耗2783.3mj。而avbnn-ibs機制消耗的能量為1371mj,較2503mj節(jié)省了45.22%。在時間消耗方面,avbnn-ibs用2228s完成認證,而其他三種機制分別用6699s,6863s和4797s來完成認證。
我們將加速的vbnn-ibs與傳統(tǒng)的vbnn-ibs、ecdsa和aecdsa在能量的節(jié)省和時間的消耗方面進行一個比較。結果如圖3所示。
圖中顯示avbnn-ibs機制無論在能量還是在時間的消耗上都優(yōu)于其他認證機制。所提的avbnn-ibs僅消耗傳統(tǒng)vbnn-ibs54.77%的能量和33.26%的時間。
其它步驟及參數與具體實施方式一相同。
具體實施方式三:本實施方式與具體實施方式一或二不同的是:本實施方式與具體實施方式一或二不同的是本實施方式是在4*4網格的拓撲結構中,從節(jié)點的狀態(tài)方面進行仿真分析的。具體內容如下:
節(jié)點的狀態(tài)不同,所消耗的能量也不盡相同。節(jié)點在活躍狀態(tài)是指節(jié)點發(fā)送接收和傳輸數據包;空閑狀態(tài)的節(jié)點保持無線電收發(fā)器處于開啟狀態(tài),并負責偵聽和認證數據包;休眠狀態(tài)的節(jié)點不能夠發(fā)送接收處理任何數據包。最初的時候,節(jié)點處于空閑狀態(tài)。當其收到認證數據包之后處于活躍狀態(tài),等待節(jié)點完成認證工作,其將會處于休眠狀態(tài)來降低能量損耗直至所有節(jié)點都完成認證,狀態(tài)如圖4所示。
當節(jié)點在睡眠狀態(tài)的時候,由于其不發(fā)送和接收任何數據包,所以消耗的能量是特別少的。然而當節(jié)點在閑置狀態(tài),并不節(jié)省能量,因為仍然需要占總能量的很大一部分來完成偵聽工作。所以從節(jié)點狀態(tài)的角度來對avbnn-ibs和vbnn-ibs、ecdsa以及aecdsa進行仿真分析。實驗結果表明,四種不同機制的能量消耗分別為:27.26j,42.79j,43.46j和36.49j。時間消耗為25.17s,50.30s,53.87s和39.60s。結果如圖5所示。
其它步驟及參數與具體實施方式一或二相同。
本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,本領域技術人員當可根據本發(fā)明作出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。