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