欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

6LoWPAN網(wǎng)絡(luò)密鑰建立方法

文檔序號:7886702閱讀:249來源:國知局
專利名稱:6LoWPAN網(wǎng)絡(luò)密鑰建立方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種6LoWPAN網(wǎng)絡(luò)密鑰建立方法。
背景技術(shù)
隨著物聯(lián)網(wǎng)的興起,結(jié)合了 IPv6和無線傳感器網(wǎng)絡(luò)(WSN)的6LoWPAN技術(shù)得到很大的發(fā)展。6LoWPAN網(wǎng)絡(luò)由三種節(jié)點組成邊緣路由器、內(nèi)部路由器和普通節(jié)點。通過RPL路由協(xié)議,所有路由器構(gòu)造成一個以邊緣路由器為根節(jié)點的有向無環(huán)圖(DAG)。每個路由器都有一個Rank值(一般為正整數(shù)),且在DAG中,子節(jié)點的Rank值一般比父節(jié)點的Rank 值大。通過鄰居協(xié)議,每個普通節(jié)點都會選擇一個默認路由器,兩者類似于DAG中的父子關(guān)系,普通節(jié)點也可以看作是DAG的一部分。普通節(jié)點向網(wǎng)絡(luò)中的遠端節(jié)點發(fā)送信息時,通過默認路由器進行轉(zhuǎn)發(fā)。密鑰建立作為保障上述節(jié)點之間安全通信的一個基本方法,提供了通信的機密性、完整性和認證等安全服務(wù)。在傳統(tǒng)的WSN中,盡管已經(jīng)對密鑰建立進行了很多的研究,但是由于傳感器網(wǎng)絡(luò)結(jié)構(gòu)和通信機制的多樣性,使得相應(yīng)的密鑰建立方法與具體的網(wǎng)絡(luò)結(jié)構(gòu)和通信機制相關(guān), 不具有通用性,不適合直接應(yīng)用于6LoWPAN中。BLoffPAN從網(wǎng)絡(luò)結(jié)構(gòu)、路由協(xié)議、鄰居協(xié)議等都有相關(guān)標準(主要由IETF制定),所以6LoWPAN網(wǎng)絡(luò)中的密鑰建立方法,需要與現(xiàn)有的網(wǎng)絡(luò)結(jié)構(gòu)和通信機制相結(jié)合。目前一些研究人員對6LoWPAN安全問題的研究考慮如何把互聯(lián)網(wǎng)中的安全機制移植到6LoWPAN網(wǎng)絡(luò)中,如輕量級的IPkc、SSL技術(shù)?,F(xiàn)有輕量級IPSec和SSL的研究主要針對節(jié)點與互聯(lián)網(wǎng)上的設(shè)備之間實現(xiàn)安全通信,并沒有涉及到6LoWPAN網(wǎng)絡(luò)內(nèi)部節(jié)點之間的安全通信。從現(xiàn)有的研究情況中可以看出輕量級msec和SSL不太適合節(jié)點之間的密鑰建立,因為采用了公鑰算法,計算量大,比較耗時,導(dǎo)致通信時間相對較長。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種6LoWPAN網(wǎng)絡(luò)密鑰建立方法,計算量小,節(jié)省通信時間。根據(jù)本發(fā)明的一個方面,提供一種6LoWPAN網(wǎng)絡(luò)密鑰建立方法,包括步驟1、內(nèi)部路由器節(jié)點Rx接收到第一個來自路由器節(jié)點Ru的DIO消息后,向節(jié)點Ru發(fā)送消息請求得到組密鑰,該消息為Rx — Ru :k+{f(k+A ι) I IkiKGO其中,k為Rx的Rank值,也表示為Rank(Rx), K1為初始密鑰,||表示串接, {f(k+Ai) I IkiKGO表示根據(jù)aes加密算法用f(k)加密f(k+Ai) ^p K1串接后的數(shù)據(jù);并且,f (k) =F (f (k-1) I I salt (k))其中,k > 1,salt(k)表示進行第k次Hash計算所用的加鹽值,
6F (f (k-1) I I salt (k))表示對 f (k-1) I I salt (k)進行 Hash 函數(shù)值計算;步驟2、Ru收到消息后,根據(jù)消息中的k值計算f(k)禾Pf(k+Al);步驟3、Ru使用f(k)解密{f(k+Al) I K1KGO信息,然后把解密出的f(k+Δ1)與自己計算的值進行比較,如果相等,則Ru對Rx認證通過,否則認證不通過;步驟4、如果Rx認證通過,則Ru把K1作為與Rx之間的對密鑰進行保存,并且向Rx 回應(yīng)消息Ru — Rx {KGI I f (Rank (u)) | | salt (Rank (u) +1) | | Rank (u) | | IIu} K1其中,salt (Rank (U)+1)表示進行第Rank (U)+1次Hash計算所用的加鹽值;步驟5、Rx收到回應(yīng)消息后,通過K1解密整個消息,得到Ru的接口標識IIu,然后和數(shù)據(jù)包源地址中的接口標識進行對比實現(xiàn)對Ru的認證;步驟6、如果Ru認證通過,Rx得到組密鑰Ke,并把Ru作為自己的父節(jié)點、存儲兩者之間的對密鑰K1 ;Rx得到的其它信息包括Rank(U)、f (Rank(u))和salt (Rank(u)+1)??蛇x的,在步驟6后還包括步驟7、Rx收到來自鄰居節(jié)點Ru和Rv的DIO消息后,用組密鑰Ke解密該消息,并按照RPL路由協(xié)議根據(jù)DIO中的Rank值重新選擇父節(jié)點;步驟8、如果Rx選擇的父節(jié)點仍然是Ru,則Rx先依據(jù)Ru的Rank (U)值,按照RPL 協(xié)議計算Rank(X),然后根據(jù)所述f (Rank(U))和salt (Rank(u)+1)計算出f (Rank(χ))和 salt(Rank(χ)+1);步驟9、如果選擇的父節(jié)點是Rv,則Rx使用多播地址發(fā)送對密鑰建立消息,消息中包含的信息為IIv+RankOO,IIv指明要建立對密鑰的父節(jié)點接口標識,Rank (χ)指明用于響應(yīng)消息加密的密鑰f(Rank(x)),多播消息使用組密鑰生成消息驗證碼MAC,并用組密鑰進行加密Rx — * :MAC+{IIv| |Rank(x)}KG步驟10、鄰居節(jié)點收到對密鑰建立消息后,根據(jù)組密鑰對消息驗證碼MAC進行驗證,驗證通過后解密該消息,然后根據(jù)IIv的值判斷是否是和自己建立對密鑰;步驟11、對于Rv來說,根據(jù)IIv的值判斷Rx是與自己建立對密鑰,隨機生成對密鑰KP,然后回應(yīng)消息,用f (RankOO)進行加密Rv — Rx {f (Rank (ν)) | | salt (Rank (ν) +1) | | KP} f (Rank (χ))步驟12、Rx收到響應(yīng)消息后,通過f (Rank (χ))解密出其中的信息,把Rv作為自己的父節(jié)點,保存兩者之間的對密鑰KP,然后根據(jù)f (Rank(V))和salt (Rank (ν)+1)重新計算自己擁有 f (Rank (χ))和 salt (Rank (χ) +1)??蛇x的,計算{f(k+Ai)I IkiKGO 包括步驟1A、隨機生成一個長字節(jié)數(shù)據(jù)串作為Hash函數(shù)計算的初始數(shù)據(jù),并確定常量整數(shù)Δ1的值;步驟1Β、根據(jù)內(nèi)部路由器節(jié)點部署在樹狀結(jié)構(gòu)的層次深度,估算一個Rank值k ;步驟1C、計算 f(k)禾口 f(k+A 1);和步驟1D、隨機生成一個初始密鑰K1,然后根據(jù)AES加密算法用f (k)加密f (k+ Δ 1) 和&串接后的數(shù)據(jù),生成加密后的數(shù)據(jù){f(k+Al) I |KI}f(k)0可選的,在步驟12后還包括
步驟13、普通節(jié)點Hy發(fā)送消息,包括RS、k和{f(k+Al) | K1I f(k)Hy — * :RS+k+ {f (k+ Δ 1) | | K1I f (k)步驟14、鄰居路由器Rn收到消息后,計算f (k)和f (k+Δ 1);步驟15、使用f(k)解密{f(k+Al) I K1I f(k)信息,然后把解密出的f (k+Δ 1)與自己計算的值進行比較,如果相等,則1 對Hy認證通過,否則認證不通過;步驟16、認證通過后,1 把K1作為兩者之間的對密鑰進行保存,然后回應(yīng)路由通告消息,并使用K1對關(guān)鍵信息進行加密Rn — Hy RA+{Rank (η) | |f(Rank(n)) | | salt (Rank (η)+1) | |KG| | IInlK1 ;步驟17、Hy收到消息后,把1 作為默認路由器;通過K1解密消息,得到ΙΙη,然后和數(shù)據(jù)包中的接口標識進行對比實現(xiàn)對foi的認證;保存組密鑰Ke,在Rank(II)上增加一個數(shù)值計算Rank (y),然后在f (Rank (η))和salt (Rank (η) +1)的基礎(chǔ)上計算出f (Rank (y))和 salt (Rank (y)+l) ;KX作為與1 之間的對密鑰進行保存。可選的,在步驟17后還包括步驟18、普通節(jié)點A選擇隨機整數(shù)m,使得m > Rank (A),然后向普通節(jié)點B發(fā)送 HELLO消息和m值;A — B :HELL0+m步驟19、普通節(jié)點B收到HELLO消息后,判斷m和Rank⑶的大??;如果m彡Rank (B),則普通節(jié)點B生成兩者的會話密鑰Kab,然后向普通節(jié)點A發(fā)送密鑰消息,內(nèi)容為{KAB}f(m),Kab用f(m)加密B —A:{KAB}f(m)如果m < Rank⑶,則普通節(jié)點B選擇隨機整數(shù)η使得m < η (例如差值小于10不要太大),然后向普通節(jié)點A發(fā)送HELLO消息和值η B — A :HELL0+n步驟20、普通節(jié)點A接收到消息后,如果是密鑰消息,通過計算f(m)解密出會話密鑰Kab ;如果是HELLO消息,則生成兩者的會話密鑰Kab,然后向B發(fā)送密鑰消息,內(nèi)容為{KAB} f(n),KABffi f(n)加密A —B :{KAB}f(n)步驟21、普通節(jié)點B收到密鑰消息后,通過計算f (η)解密出會話密鑰。可選的,在步驟17后還包括步驟22、Hy在使用NS+AR0消息向1 進行地址注冊時,使用兩者之間的對密鑰K1 生成消息驗證碼MAC Hy — Rn NS,ARO,MAC步驟23、Rn收到注冊消息后,使用對密鑰和MAC對消息進行認證;如果認證不成功,則地址注冊失敗,Rn不會為Hy建立任何緩存項信息,從而當(dāng)Hy 向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包時丟棄數(shù)據(jù)包、不進行轉(zhuǎn)發(fā);如果成功,1 會為Hy建立緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包時由1 進行轉(zhuǎn)發(fā)??蛇x的,步驟2進一步包括步驟 2A、如果 Rank (u) < k,計算 f (Rank (u) +i),直到 Rank (u) +i = k ;
步驟2B、如果Rank (u) > k,則Ru通過消息把k值發(fā)送給自己的父節(jié)點Re讓其計算Hash值,所述消息包括k和Rx的接口標識IIx Ru —Re:k+IIx;步驟2C、父節(jié)點Re計算完成后回應(yīng)消息給Ru,該消息經(jīng)過兩者之間的對密鑰Kup 加密Re — Ru {IIx f (k) | salt (k+1)} Kup ;步驟2D、如果 Rank (u) = k,則 f (k) = f (Rank (u))。根據(jù)本發(fā)明的另一個方面,提供一種6LoWPAN中基于多次Hash的密鑰建立方法, 包括步驟1、普通節(jié)點Hy發(fā)送消息,包括RS、k和{f(k+Al) | K1I f(k)Hy — * :RS+k+ {f (k+ Δ 1) | | K1I f (k)其中,k為Hy的Rank值,也表示為Rank(Hy) ,K1為初始密鑰,||表示串接, {f(k+Ai) I IkiKGO表示根據(jù)aes加密算法用f(k)加密f(k+Ai) ^p K1串接后的數(shù)據(jù);并且, f (k) = F(f (k-1) I I salt (k)),其中,k > 1,salt(k)表示進行第k次Hash計算所用的加鹽值, F(f(k-1) I salt (k))表示對 f (k-1) I salt (k)進行 Hash 函數(shù)值計算;步驟2、鄰居路由器1 收到消息后,計算f (k)和f (k+Δ 1);步驟3、foi使用f(k)解密{f(k+Al) I K1I f(k)信息,然后把解密出的f (k+Δ 1)與自己計算的值進行比較,如果相等,則1 對Hy認證通過,否則認證不通過;步驟4、認證通過后,1 把!^作為兩者之間的對密鑰進行保存,然后回應(yīng)路由通告消息,使用K1對關(guān)鍵信息進行加密Rn — Hy RA+{Rank (η) | |f(Rank(n)) | | salt (Rank (η)+1) | |KG| | IIniK1 ;步驟5、Hy收到消息后,把1 作為默認路由器;通過K1解密消息,得到ΙΙη,然后和數(shù)據(jù)包中的接口標識進行對比實現(xiàn)對foi的認證;保存組密鑰Ke,在Rank(II)上增加一個數(shù)值計算Rank (y),然后在f (Rank (η))和salt (Rank (η) +1)的基礎(chǔ)上計算出f (Rank (y))和 salt (Rank (y)+l) ;KX作為與1 之間的對密鑰進行保存。可選的,在步驟5后還包括步驟6、普通節(jié)點A選擇隨機整數(shù)m,使得m > Rank(A),然后向普通節(jié)點B發(fā)送 HELLO消息和m值;A — B :HELL0+m 步驟7、普通節(jié)點B收到HELLO消息后,判斷m和Rank⑶的大小;如果m彡Rank⑶,則普通節(jié)點B生成兩者的會話密鑰Kab,然后向普通節(jié)點A發(fā)送密鑰消息,內(nèi)容為{KAB}f(m),Kab用f(m)加密B — A {KAB} f (m)如果m < Rank⑶,則普通節(jié)點B選擇隨機整數(shù)η使得m < η (例如差值小于10不要太大),然后向普通節(jié)點A發(fā)送HELLO消息和值η B — A :HELL0+n步驟8、普通節(jié)點A接收到消息后,如果是密鑰消息,通過計算f(m)解密出會話密鑰Kab ;如果是HELLO消息,則生成兩者的會話密鑰Kab,然后向B發(fā)送密鑰消息,內(nèi)容為{KAB} f(n),KABffi f(n)加密A —B :{KAB}f(n)步驟9、B收到密鑰消息后,通過計算f(n)解密出會話密鑰??蛇x的,在步驟5后還包括步驟10、Hy在使用NS+AR0消息向1 進行地址注冊時,使用兩者之間的對密鑰KI 生成消息驗證碼MAC Hy — Rn :NS,ARO,MAC步驟11、1 收到注冊消息后,使用對密鑰和MAC對消息進行認證;如果認證不成功,則地址注冊失敗,Rn不會為Hy建立任何緩存項信息,從而當(dāng)Hy 向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包時丟棄數(shù)據(jù)包、不進行轉(zhuǎn)發(fā);如果成功,1 會為Hy建立緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包時由1 進行轉(zhuǎn)發(fā)。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于(1)多次Hash的密鑰建立方法計算量??;(2)利用Hash函數(shù)計算的不可逆性,并且通過迭代的方式計算多次Hash值,保證了 Hash函數(shù)計算的安全強度;(3)內(nèi)部路由器和普通節(jié)點在入網(wǎng)時都進行了雙向認證,可以抵御惡意節(jié)點的攻
擊ο


圖1是現(xiàn)有技術(shù)中6LoWPAN中通過RPL路由協(xié)議和鄰居協(xié)議構(gòu)造的有向無環(huán)圖 (DAG)的示意圖;圖2是本發(fā)明一個實施例中提供的6LoWPAN中基于多次Hash的密鑰建立方法流程圖;圖3是本發(fā)明一個實施例中路由器Rx經(jīng)過雙向認證后加入到網(wǎng)絡(luò)并得到組密鑰的過程示意圖;其中,方框的內(nèi)容表示在通信之前,節(jié)點已經(jīng)擁有的信息;圖4是本發(fā)明一個實施例中路由器Rx與新的父節(jié)點Rv建立組密鑰的過程示意圖;其中,方框的內(nèi)容表示在通信之前,節(jié)點已經(jīng)擁有的信息;圖5是本發(fā)明一個實施例中普通節(jié)點Hy經(jīng)過雙向認證加入到網(wǎng)絡(luò)的過程示意圖; 其中,方框的內(nèi)容表示在通信之前,節(jié)點已經(jīng)擁有的信息;圖6是本發(fā)明一個實施例中普通節(jié)點A和B建立會話密鑰的過程示意圖;其中,方框的內(nèi)容表示在通信之前,節(jié)點已經(jīng)擁有的信息。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本文中,Hash對應(yīng)的中文術(shù)語為“散列”,是指把任意長度的輸入通過散列算法變換成固定長度的輸出。6LoWPAN網(wǎng)絡(luò)如圖1所示,整個網(wǎng)絡(luò)包含一個邊緣路由器,若干(彡0)內(nèi)部路由器和若干1)普通節(jié)點,邊緣路由器、內(nèi)部路由器和普通節(jié)點統(tǒng)稱為節(jié)點,普通節(jié)點為計算終端;路由器通過RPL路由協(xié)議構(gòu)造成以邊緣路由器為根節(jié)點的有向無環(huán)圖(DAG),普通節(jié)點通過鄰居協(xié)議選擇一個默認路由器連接到網(wǎng)絡(luò)中。其中,頂端的是邊緣路由器,灰圈表示內(nèi)部路由器,白圈表示普通節(jié)點,實線表示DAG中通過認證后建立起的父子連接,虛線表示待認證建立的連接。其中,組密鑰用于網(wǎng)絡(luò)中所有節(jié)點間多播地址消息安全通信;對密鑰在路由結(jié)構(gòu)有向無環(huán)圖中具有父子關(guān)系節(jié)點之間建立,用于安全傳送路由信息以及普通節(jié)點和路由器之間的通信認證,對密鑰可以只用于單跳安全通信;會話密鑰用于任意兩個普通節(jié)點之間進行安全通信,數(shù)據(jù)可以通過單跳或者多跳轉(zhuǎn)發(fā)。一般情況下,節(jié)點間發(fā)送組播消息時用組密鑰加密,路由器之間發(fā)送消息時使用對密鑰,而普通節(jié)點之間通信使用會話密鑰。發(fā)明人經(jīng)過研究發(fā)現(xiàn),在6LoWPAN網(wǎng)絡(luò)中的RPL路由協(xié)議和鄰居協(xié)議的通信機制基礎(chǔ)上,可以基于多次Hash計算建立組密鑰、對密鑰和會話密鑰?;谏鲜龇治?,本發(fā)明一個實施例中,提供一種6LoWPAN中基于多次Hash的密鑰建立方法。如圖2所示,該方法包括Sl 1、節(jié)點初始化;S12、內(nèi)部路由器加入網(wǎng)絡(luò)并獲得組密鑰;S13、內(nèi)部路由器與父節(jié)點建立對密鑰;S14、普通節(jié)點加入網(wǎng)絡(luò);和S15、普通節(jié)點之間建立會話密鑰。上述步驟中,如果網(wǎng)絡(luò)中只包含邊緣路由器和普通節(jié)點,則普通節(jié)點直接和邊緣路由器建立連接,步驟S12和S13可以省略;如果還包括路由器節(jié)點,則需要在進行完S12 和S13之后,再進行S14和S15步驟。下面將詳細描述每一個步驟的內(nèi)容。步驟Sll (節(jié)點初始化)對于路由器節(jié)點和普通節(jié)點,根據(jù)每個節(jié)點的大概部署位置,估算一個Rank值k; k值可以根據(jù)節(jié)點部署在樹狀結(jié)構(gòu)的層次深度計算,每個節(jié)點估算的k可以都不相同,k可以不連續(xù),如值為9,15等。隨機生成一個初始密,K1,然后計算f(k+Al),將f(k+Al)和1^串接,兩者串接后根據(jù)AES算法用f(k)加密(后續(xù)加密如無說明也采用AES算法),生成加密后的數(shù)據(jù){f(k+Al) I |KI}f(k)其中,Δ 1為常量整數(shù),且Δ 1 > 1,I I表示串接,{f(k+Δ 1) I |KI}f(k)表示用f(k) 加密{f(k+Al) IIK1I ;f(k)為k次Hash計算的值,計算方式為f(k) =F (f (k-1) I I salt (k)) (1)其中,k > 1,salt(k)表示進行第k次Hash計算所用的加鹽值, F(f(k-1) I salt (k))表示對f (k-1) I salt (k)進行Hash函數(shù)值計算,Hash函數(shù)可以采用 MD5或SHA-I算法。公式(1)的含義為在第k-Ι次Hash計算值f (k_l)的基礎(chǔ)上通過一次F (χ)函數(shù)計算,就可以得到f(k)。公式(1)是一個迭代公式,先計算出先前的Hash值才能夠計算出
11后續(xù)的值。在公式中引入?yún)?shù)salt (k),可以增強安全性,防止攻擊者只知道f(k-l)后就計算出第k次及后續(xù)所有的Hash值。對于salt (k)的選擇,可以選擇一個固定的值,每次計算都使用該值。但這種方式安全性不是最高,如果攻擊者獲得了這個固定的值,仍可以計算后續(xù)的Hash值。根據(jù)本發(fā)明的一個實施例,salt(k)的值采用動態(tài)變化的值,為/89(A-2),表示取 f (k-2)中的第8和9兩個字節(jié),這樣實際的計算公式為如下f(k)^F(f(k-l)\\f,\k-2)), k>2 (2)動態(tài)變化的salt(k)值不限定于上述方式產(chǎn)生的值,其它方式比如選取f(k_2)或 f (k-3)的第1和第4個字節(jié)亦可。在實際計算時,對于f(l),隨機選擇一個長字節(jié)數(shù)據(jù)串(例如長度至少16字節(jié)), 用Hash函數(shù)計算值,對于f (2)的計算,salt (2)取0值,即f (2) =F(f(l) | 00),對于后續(xù)的f(k),采用公式⑴或(2)計算即可。根據(jù)本發(fā)明的一個實施例,Sll可以包括如下步驟SllU隨機生成一個長字節(jié)數(shù)據(jù)串作為Hash函數(shù)計算的初始數(shù)據(jù),并確定常量整數(shù)Δ 1的值(例如選擇大于1且小于10的數(shù));S112、隨機生成一個組密鑰Ke(例如長度為16字節(jié)),為邊緣路由器設(shè)定Rank 值為Rank(E)(例如,至少是大于2的整數(shù)),按照上述公式(1)計算出f (Rank(E))和 salt (Rank (E)+1)的值例如/89(徹《^(五)-1),并且將 Kg、f (Rank (E))和//(i^iCE) -1)寫入到邊緣路由器中;S113、根據(jù)內(nèi)部路由器和普通節(jié)點部署在樹狀結(jié)構(gòu)的層次深度,估算一個Rank值 k,按照上述公式(1)計算出f(k)和f(k+Al);Sl 14、隨機生成一個初始密鑰K1 (例如長度為16字節(jié)),然后根據(jù)AES加密算法用 f (k)加密f (k+ Δ 1)和K1串接后的數(shù)據(jù),生成加密后的數(shù)據(jù){f (k+ Δ 1) I IK1I f (k),并且將k、 K1和{f(k+Ai) I IkiKQO寫入到內(nèi)部路由器和普通節(jié)點中。步驟S12(內(nèi)部路由器加入網(wǎng)絡(luò)并獲得組密鑰)一般情況下,從邊緣路由器開始,每個路由器節(jié)點逐層加入到網(wǎng)絡(luò)。每個已經(jīng)入網(wǎng)的路由器定時的發(fā)送用組密鑰加密和認證的多播地址DIO消息,新入網(wǎng)節(jié)點通過DIO消息選擇父節(jié)點入網(wǎng)。初始狀態(tài)時因為沒有任何節(jié)點加入網(wǎng)絡(luò),新入網(wǎng)節(jié)點就選擇邊緣路由器作為父節(jié)點。邊緣路由器對與它一跳遠的節(jié)點入網(wǎng)認證過程與下面說明的一般情況是相同的。下面以節(jié)點Rx來說明。已入網(wǎng)路由器Ru和Rv (見圖1)定時發(fā)送DIO消息,兩者擁有的相關(guān)信息分別為 (Rank (u)、f (Rank (u))、fs9 (Rank(u) - 1))和(Rank (ν)、f (Rank (ν))、// (Rank(v) -1))。步驟S12的通信過程如圖3所示,具體包括如下步驟S121、路由器節(jié)點Rx接收到第一個來自Ru的DIO消息后,由于沒有組密鑰,不能解密得到DIO消息中的具體信息,所以,Rx向Ru發(fā)送RequeSt_Gr0up_Key消息(包括k和 {f (k+ Δ 1) I IK1I f (k)),請求得到組密鑰Rx — Ru :k+{f(k+A 1) I IkiKGOS122、Ru收到消息后,根據(jù)消息中的k值和自己的Rank(U)值計算出f(k)。具體計算過程如下
12
(1)如果 Rank(u) < k,計算 f (Rank (u)+i),直到 Rank (u)+i = k ;(2)如果Rank (u) > k,則Ru通過Requestjijfash消息把k值發(fā)送給自己的父節(jié)點Re讓其計算Hash值,所述消息包括k和Rx的接口標識IIx Ru —Re:k+IIx父節(jié)點Re收到消息后,也根據(jù)此計算過程計算第k次Hash值f (k)。計算完成后回應(yīng)Response_K_Hash消息給Ru,發(fā)送的消息經(jīng)過兩者之間的對密鑰Kup (該對密鑰已經(jīng)在 Ru加入網(wǎng)絡(luò)時,在Ru與其父節(jié)點Re之間建立完成)加密Re — Ru {IIx f (k) | salt (k+1)} Kup其中,salt (k+1)表示進行第k+1次Hash計算所用的salt值,例如值為。(3)如果 Rank (u) = k,則 f (k) = f (Rank (u))。經(jīng)過上述計算過程,Ru得到f (k)和f (k+Δ 1)值。接著使用f(k)解密{f(k+Al) I K1KGO信息,然后把解密出的f (k+Δ 1)與自己計算的值進行比較,如果相等,則Ru對Rx認證通過,否則認證不通過。這里進行相等判斷主要是為了防止惡意節(jié)點進入到網(wǎng)絡(luò)中。惡意節(jié)點不是用戶部署的節(jié)點,而是攻擊者部署到網(wǎng)絡(luò)中的節(jié)點,便于攻擊網(wǎng)絡(luò)。攻擊者由于不知道f (k+Δ 1)的計算值,所以在這種情況下會出現(xiàn)f (k+Δ 1)不等的情況。如果認證通過,則Ru把!^作為與Rx之間的對密鑰進行保存,并且向Rx回應(yīng) Response_Group_Key 消息Ru — Rx {KG |f (Rank (u)) | | salt (Rank (u)+1) | Rank (u) | IIujK1其中,salt (Rank (u)+1)表示進行第Rank (U)+1次Hash計算所用的salt值,例如可以為//(ito^(w)-l) ,Response_Group_Key 消息為Ru ^ Rx {K0 (I f(Rank(u)) || fs9(Rank(u)-\) || Rank[u) || IIu}K1S123、Rx收到回應(yīng)消息后,通過K1解密整個消息,得到IIu,然后和數(shù)據(jù)包源地址中的接口標識進行對比實現(xiàn)對Ru的認證。認證通過后,Rx得到組密鑰Ke,并把Ru暫時作為自己的父節(jié)點存儲兩者之間的對密鑰K1, Rx得到的其它信息包括Rank(U)、f (Rank(U)) 和/8>_)-1)。S124、Rx等待接收新的DIO消息,以選擇更優(yōu)的父節(jié)點。步驟S13(路由器與父節(jié)點建立對密鑰)Rx得到組密鑰后,對鄰居節(jié)點后續(xù)發(fā)送的用組密鑰加密的DIO消息,能夠進行處理,并且選擇更優(yōu)的父節(jié)點。父節(jié)點選定后,通過消息與其建立對密鑰。步驟S13整個通信過程如圖4所示,具體包括如下步驟S131、Rx收到由Ru和Rv發(fā)出的新的DIO消息后,用組密鑰解密該消息,根據(jù)DIO 中的Rank值重新選擇父節(jié)點(選擇方法根據(jù)RPL路由協(xié)議)。如果選擇的父節(jié)點仍然是Ru,則Rx先依據(jù)Ru的Rank (u)值,按照RPL協(xié)議中的計算方法得到Rank(X),而且由于父子關(guān)系有Rank(U) < Rank(X),然后根據(jù)先前保存的 f (Rank(u))和//CRo^(M)-I)利用公式(2)計算出 f (Rank(χ))和。如果選擇的父節(jié)點是Rv,則使用多播地址發(fā)送對密鑰建立消息RequeSt_ Pairwise_Key,消息中包含的信息為IIV+Rank(X),IIv指明要建立對密鑰的父節(jié)點接口標識,Rank (χ)指明用于響應(yīng)消息加密的密鑰f (Rank(X)),多播消息使用組密鑰生成消息驗
13證碼MAC,并用組密鑰進行加密Rx — * :MAC+{IIv| |Rank(x)}KGS132、鄰居節(jié)點收到對密鑰建立消息后,根據(jù)組密鑰對消息驗證碼MAC進行驗證, 驗證通過后解密該消息,然后根據(jù)IIv的值判斷是否是和自己建立對密鑰。對于Ru來說,不是和自己建立對密鑰,刪除先前已經(jīng)與Rx建立的對密鑰。對于Rv來說,與自己建立對密鑰,隨機生成對密鑰KP,然后回應(yīng)Response Pairwise_Key 消息,用 f (Rank(χ))進行加密Rv — Rx {f(Rank(v)) || // (Rank(v) — 1) || Ip } f(Rank(x))S133、Rx收到響應(yīng)消息后,通過f (Rank(χ))解密出其中的信息,把Rv作為自己的父節(jié)點,保存兩者之間的對密鑰ΚΡ。最后Rx根據(jù)f (Rank(ν))利用公式( 重新計算自己擁有 f (Rank (χ))和//(Rank(x) -1)。S134、Rx繼續(xù)接收其它節(jié)點發(fā)送的DIO消息,如果發(fā)現(xiàn)比Rv更優(yōu)(計算方法由RPL 路由協(xié)議規(guī)定),則把它作為新的父節(jié)點通過上述過程與其建立對密鑰;如果不比Rv更優(yōu), 則仍然保留Rv作為自己的父節(jié)點。步驟S14(普通節(jié)點加入網(wǎng)絡(luò))普通節(jié)點加入網(wǎng)絡(luò)使用6LoWPAN鄰居協(xié)議,節(jié)點通過發(fā)送RS (路由請求)消息來查找默認路由器,通過發(fā)送消息進行雙向認證后加入到網(wǎng)絡(luò)中,圖5顯示了其通信過程。在 BLoffPAN網(wǎng)絡(luò)中,普通節(jié)點本身不計算Rank值,但可以在默認路由器的Rank值上增加一個常值作為普通節(jié)點的Rank值,具體計算方法如下,[ΠΝ]8表示取普通節(jié)點N的接口標識的最后一個字節(jié)Rank (N) = Rank (R)+ [IIN]8mod 128其中,N表示普通節(jié)點,R表示默認路由器,RankO表示上述節(jié)點擁有的Rank值。步驟S14整個通信過程如圖5所示,具體包括如下步驟S141、普通節(jié)點Hy啟動后發(fā)送消息(包括RS、k和{f(k+Al) | K1I f(k))Hy — * :RS+k+ {f (k+ Δ 1) | | Kj f (k)S142、鄰居路由器1 收到消息后,根據(jù)S122中的計算過程得到f(k)和f(k+Al), 然后對Hy認證,方法和對路由器的認證一樣。認證通過后,1 把K1作為兩者之間的對密鑰進行保存,然后回應(yīng)RA(路由通告)消息,使用了 K1對關(guān)鍵信息進行加密Rn^ Hy RA + {Rank(n) 11 f(Rank(n)) 11 /89 (Rank(n) -1) 11 Ig 11 IIn}KIS143、Hy收到消息后,把1 作為默認路由器。通過K1解密消息,得到ΙΙη,然后和數(shù)據(jù)包中的接口標識進行對比實現(xiàn)對1 的認證。認證通過后,Hy使用公式( 計算出 Rank(y)值,然后在f (Rank(η))和/89(徹從(《)-1)的基礎(chǔ)上計算出自己的f(Rank(y)),保存組密鑰Ke,K1作為與1 之間的對密鑰進行保存。S144、Hy在使用NS+AR0 (鄰居請求+地址注冊選項)消息向1 進行地址注冊時, 使用兩者之間的對密鑰KI生成消息驗證碼(MAC)Hy — Rn NS,ARO,MACS145、Rn收到注冊消息后,使用對密鑰和MAC對消息進行認證。如果認證不成功,則地址注冊失敗,Rn不會為Hy建立任何緩存項信息。當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包時,如果1 中沒有Hy的緩存項信息,則丟棄數(shù)據(jù)包,不進行轉(zhuǎn)發(fā)。通過這種方式可以防止攻擊者向網(wǎng)絡(luò)中發(fā)送大量無用信息,以消耗節(jié)點的資源。如果成功,1 會為Hy建立緩存項信息,這樣Hy向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包時,1 才會進行轉(zhuǎn)發(fā)。制聚S15 (少嚇立射舌·)例如,普通節(jié)點A和B之間要建立會話密鑰,通過兩個節(jié)點的直接通信來完成。A 和B在入網(wǎng)后擁有的信息分別為(Rank (A),f (Rank (A)),/89 (Rank(A) -1))和(Rank⑶, f (Rank (B)),fl (Rank(B) -1))。步驟S15的工作是在A和B之間協(xié)商出一個都能計算出的f(k)值,從而用f(k) 加密以保證會話密鑰的安全。如圖6所示,步驟S15具體包括S151、A選擇隨機整數(shù)m,使得m > Rank (A)(例如差值小于10,差值越大計算量越大),然后向B發(fā)送HELLO消息和m值A(chǔ) —B:HELL0+mS152、B收到HELLO消息后,判斷n^PRank(B)的大小。如果m彡Rank(B),則B生成兩者的會話密鑰Kab,然后向A發(fā)送密鑰消息,內(nèi)容為 {‘^⑷,‘用^!!!)加密B —A:{KAB}f(m)如果m < Rank⑶,則B選擇隨機整數(shù)η使得m < η (例如差值小于10不要太大), 然后向A發(fā)送HELLO消息和值η B —A:HELL0+nS153、A收到消息后,如果是密鑰消息,通過計算f(m)解密出會話密鑰。如果是 HELLO消息,則生成兩者的會話密鑰Kab,然后向B發(fā)送密鑰消息,內(nèi)容為{KAB}f(n),Kab用 f(n)加密A —B :{KAB}f(n)S154、B收到密鑰消息后,通過計算f (η)解密出會話密鑰。上述建立密鑰的方法使用Hash算法,計算量小,節(jié)點入網(wǎng)時進行雙向認證不需要第三方認證中心的參與,通信量少,而且可抵御惡意節(jié)點攻擊。各種密鑰直接是兩點之間安全通信進行建立,不需要第三方節(jié)點進行密鑰分發(fā),多種密鑰的建立保證了不同類型通信的安全?;谏鲜鎏攸c,該方法能夠適用于6LoWPAN這種節(jié)點資源受限的環(huán)境,而且還能滿足6LoWPAN網(wǎng)絡(luò)的移動特性。上述建立密鑰的方法可以用于6LoWPAN中多播地址消息安全通信,單跳和多跳的安全通信。上述方法的優(yōu)點在于(1)利用了 Hash函數(shù)計算的不可逆性,并且通過迭代的方式計算多次Hash值,保證了 Hash函數(shù)計算的安全強度;每個節(jié)點的Hash計算次數(shù)都不同, 根據(jù)其Rank值動態(tài)確定的,即進行Rank次Hash計算;(2)路由器和普通節(jié)點在入網(wǎng)時都進行了雙向認證,可以抵御惡意節(jié)點的攻擊;C3)各個路由器之間建立起對密鑰后,路由信息就可以在網(wǎng)絡(luò)中安全的傳送,保證了網(wǎng)絡(luò)的路由安全;路由器和普通節(jié)點在進行組播通信時,通過組密鑰可以實現(xiàn)對組播消息的加密和認證;兩個普通節(jié)點要進行通信時,通過會話密鑰來保障信息的安全;(4)普通節(jié)點要向網(wǎng)絡(luò)中發(fā)送消息時,默認路由器使用兩者之間的對密鑰認證后,才會把數(shù)據(jù)包轉(zhuǎn)發(fā)出去,這樣就可以防止攻擊者向網(wǎng)絡(luò)發(fā)送大量無用的信息;(5)此外,該方法還適用于節(jié)點移動的場景。
應(yīng)該注意到并理解,在不脫離后附的權(quán)利要求所要求的本發(fā)明的精神和范圍的情況下,能夠?qū)ι鲜鲈敿毭枋龅谋景l(fā)明做出各種修改和改進。因此,要求保護的技術(shù)方案的范圍不受所給出的任何特定示范教導(dǎo)的限制。
權(quán)利要求
1.一種6LoWPAN網(wǎng)絡(luò)密鑰建立方法,包括步驟1、內(nèi)部路由器節(jié)點Rx接收到第一個來自路由器節(jié)點Ru的DIO消息后,向節(jié)點Ru 發(fā)送消息請求得到組密鑰,該消息為 Rx — Ru :k+ {f (k+ Δ 1) | | K1I f (k)其中,k為Rx的Rank值,也表示為Rank(Rx),K1為初始密鑰,| |表示串接, {f(k+AD I IkiKGO表示根據(jù)aes加密算法用f(k)加密f(k+Ai) ^p K1串接后的數(shù)據(jù);并且,f (k) = F(f (k-1) I I salt (k))其中,k> 1,salt(k)表示進行第k次Hash計算所用的加鹽值,F(xiàn)(f (k-1) |salt(k)) 表示對f (k-1) I I salt (k)進行Hash函數(shù)值計算;步驟2、Ru收到消息后,根據(jù)消息中的k值計算f(k)和f(k+Al); 步驟3、Ru使用f(k)解密{f(k+Al) I K1I f(k)信息,然后把解密出的f(k+Δ1)與自己計算的值進行比較,如果相等,則Ru對Rx認證通過,否則認證不通過;步驟4、如果Rx認證通過,則Ru把K1作為與Rx之間的對密鑰進行保存,并且向Rx回應(yīng)消息Ru — Rx {KGI If(Rank(u))| |salt(Rank(u)+1)| |Rank(u)| |IIu}K1 其中,salt (Rank (U)+1)表示進行第Rank (U)+1次Hash計算所用的加鹽值; 步驟5、Rx收到回應(yīng)消息后,通過K1解密整個消息,得到Ru的接口標識IIu,然后和數(shù)據(jù)包源地址中的接口標識進行對比實現(xiàn)對Ru的認證;步驟6、如果Ru認證通過,Rx得到組密鑰Ke,并把Ru作為自己的父節(jié)點、存儲兩者之間的對密鑰K1 ;Rx得到的其它信息包括Rank (u)、f (Rank (u))和salt (Rank (u) +1)。
2.根據(jù)權(quán)利要求1所述的密鑰建立方法,在步驟6后還包括步驟7、Rx收到來自鄰居節(jié)點Ru和Rv的DIO消息后,用組密鑰Ke解密該消息,并按照 RPL路由協(xié)議根據(jù)DIO中的Rank值重新選擇父節(jié)點;步驟8、如果Rx選擇的父節(jié)點仍然是Ru,則Rx先依據(jù)Ru的Rank(U)值,按照RPL協(xié)議計算 Rank (χ),然后根據(jù)所述 f (Rank (u))和 salt (Rank (u) +1)計算出 f (Rank (χ))和 salt(Rank(χ)+1);步驟9、如果選擇的父節(jié)點是Rv,則Rx使用多播地址發(fā)送對密鑰建立消息,消息中包含的信息為IIv+RankOO,IIv指明要建立對密鑰的父節(jié)點接口標識,Rank (χ)指明用于響應(yīng)消息加密的密鑰f(Rank(X)),多播消息使用組密鑰生成消息驗證碼MAC,并用組密鑰進行加密Rx — * :MAC+{IIv I Rank(χ)}Kg步驟10、鄰居節(jié)點收到對密鑰建立消息后,根據(jù)組密鑰對消息驗證碼MAC進行驗證,驗證通過后解密該消息,然后根據(jù)IIv的值判斷是否是和自己建立對密鑰;步驟11、對于Rv來說,根據(jù)IIv的值判斷Rx是與自己建立對密鑰,隨機生成對密鑰KP, 然后回應(yīng)消息,用f (RankOO)進行加密Rv — Rx {f (Rank (ν)) | | salt (Rank (ν) +1) | | KP} f (Rank (χ))步驟12、Rx收到響應(yīng)消息后,通過f (Rank (χ))解密出其中的信息,把Rv作為自己的父節(jié)點,保存兩者之間的對密鑰KP,然后根據(jù)f (Rank(V))和salt (Rank (ν)+1)重新計算自己擁有 f (Rank (χ))和 salt (Rank (χ) +1)。
3.根據(jù)權(quán)利要求1所述的密鑰建立方法,其中,計算{f(k+Al)I IKJfQO包括 步驟1A、隨機生成一個長字節(jié)數(shù)據(jù)串作為Hash函數(shù)計算的初始數(shù)據(jù),并確定常量整數(shù)Δ 1的值;步驟1Β、根據(jù)內(nèi)部路由器節(jié)點部署在樹狀結(jié)構(gòu)的層次深度,估算一個Rank值k; 步驟1C、計算f (k)和f (k+Δ 1);和步驟1D、隨機生成一個初始密鑰K1,然后根據(jù)AES加密算法用f(k)加密f(k+Al)和 K1串接后的數(shù)據(jù),生成加密后的數(shù)據(jù){f(k+Al) I |KI}f(k)0
4.根據(jù)權(quán)利要求2所述的密鑰建立方法,在步驟12后還包括 步驟13、普通節(jié)點Hy發(fā)送消息,包括RS、k和{f(k+Al) | |KI}f(k) Hy — * :RS+k+ {f (k+ Δ 1) | | K1I f (k)步驟14、鄰居路由器1 收到消息后,計算f(k)和f(k+A 1);步驟15、使用f(k)解密{f(k+Al) I K1KGO信息,然后把解密出的f (k+Δ 1)與自己計算的值進行比較,如果相等,則1 對Hy認證通過,否則認證不通過;步驟16、認證通過后,Iir^EK1作為兩者之間的對密鑰進行保存,然后回應(yīng)路由通告消息,并使用K1對關(guān)鍵信息進行加密Rn —Hy :RA+{Rank (η) | f (Rank (η)) | | salt (Rank (η)+1) | Kg IInjK1 ; 步驟17、Hy收到消息后,把1 作為默認路由器;通過K1解密消息,得到ΙΙη,然后和數(shù)據(jù)包中的接口標識進行對比實現(xiàn)對1 的認證;保存組密鑰Ke,在Rank(Ii)上增加一個數(shù)值計算Rank(y),然后在f (Rank(η))和salt (Rank(η)+1)的基礎(chǔ)上計算出f(Rank(y))和 salt (Rank (y)+l) ;KX作為與1 之間的對密鑰進行保存。
5.根據(jù)權(quán)利要求4所述的密鑰建立方法,在步驟17后還包括步驟18、普通節(jié)點A選擇隨機整數(shù)m,使得m > Rank (A),然后向普通節(jié)點B發(fā)送HELLO 消息和m值;A — B :HELL0+m步驟19、普通節(jié)點B收到HELLO消息后,判斷m和Rank(B)的大??; 如果m ^ Rank (B),則普通節(jié)點B生成兩者的會話密鑰Kab,然后向普通節(jié)點A發(fā)送密鑰消息,內(nèi)容為{KAB}f(m),Kab用f(m)加密 B —A:{KAB}f(m)如果m < Rank (B),則普通節(jié)點B選擇隨機整數(shù)η使得m < η (例如差值小于10不要太大),然后向普通節(jié)點A發(fā)送HELLO消息和值η B — A :HELL0+n步驟20、普通節(jié)點A接收到消息后,如果是密鑰消息,通過計算f(m)解密出會話密鑰 Kab ;如果是HELLO消息,則生成兩者的會話密鑰Kab,然后向B發(fā)送密鑰消息,內(nèi)容為{KAB} f(n),KABffi f(n)加密 A-B :{KAB}f(n)步驟21、普通節(jié)點B收到密鑰消息后,通過計算f (η)解密出會話密鑰。
6.根據(jù)權(quán)利要求4所述的密鑰建立方法,在步驟17后還包括步驟22、Hy在使用NS+AR0消息向1 進行地址注冊時,使用兩者之間的對密鑰K1生成消息驗證碼MAC Hy — Rn :NS,ARO, MAC步驟23、Rn收到注冊消息后,使用對密鑰和MAC對消息進行認證; 如果認證不成功,則地址注冊失敗,1 不會為Hy建立任何緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包時丟棄數(shù)據(jù)包、不進行轉(zhuǎn)發(fā);如果成功,1 會為Hy建立緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包時由1 進行轉(zhuǎn)發(fā)。
7.根據(jù)權(quán)利要求1所述的密鑰建立方法,步驟2進一步包括步驟 2A、如果 Rank (u) < k,計算 f (Rank (u) +i),直到 Rank (u) +i = k ; 步驟2B、如果Rank(U) > k,則Ru通過消息把k值發(fā)送給自己的父節(jié)點Re讓其計算 Hash值,所述消息包括k和Rx的接口標識IIx Ru — Re :k+IIx ;步驟2C、父節(jié)點Re計算完成后回應(yīng)消息給Ru,該消息經(jīng)過兩者之間的對密鑰Kup加密Re — Ru :{IIx f (k) | salt (k+1)} Kup ;步驟 2D、如果 Rank(u) = k,則 f(k) = f(Rank(u))。
8.一種6LoWPAN中基于多次Hash的密鑰建立方法,包括步驟1、普通節(jié)點Hy發(fā)送消息,包括RS、k和{f(k+Al) | |KI}f(k) Hy — * :RS+k+ {f (k+ Δ 1) | | K1I f (k)其中,k為Hy的Rank值,也表示為Rank(Hy),K1為初始密鑰,| |表示串接, {f(k+AD I IkiKGO表示根據(jù)aes加密算法用f(k)加密f(k+Ai) ^p K1串接后的數(shù)據(jù);并且,f(k) = F(f(k-1) I I salt (k)),其中,k> 1,salt(k)表示進行第k次Hash計算所用的加鹽值,F(xiàn)(f(k-l) |salt(k)) 表示對f (k-1) I I salt (k)進行Hash函數(shù)值計算;步驟2、鄰居路由器1 收到消息后,計算f(k)和f(k+A 1);步驟3、Rn使用f(k)解密{f(k+Al) I K1KGO信息,然后把解密出的f(k+Al)與自己計算的值進行比較,如果相等,則1 對Hy認證通過,否則認證不通過;步驟4、認證通過后,Rn把K1作為兩者之間的對密鑰進行保存,然后回應(yīng)路由通告消息,使用K1對關(guān)鍵信息進行加密Rn —Hy :RA+{Rank (η) | f (Rank (η)) | | salt (Rank (η)+1) | Kg IInjK1 ; 步驟5、Hy收到消息后,把1 作為默認路由器;通過K1解密消息,得到ΙΙη,然后和數(shù)據(jù)包中的接口標識進行對比實現(xiàn)對1 的認證;保存組密鑰Ke,在Rank(Ii)上增加一個數(shù)值計算Rank(y),然后在f (Rank(η))和salt (Rank(η)+1)的基礎(chǔ)上計算出f(Rank(y))和 salt (Rank (y)+l) ;KX作為與1 之間的對密鑰進行保存。
9.根據(jù)權(quán)利要求8所述的密鑰建立方法,在步驟5后還包括步驟6、普通節(jié)點A選擇隨機整數(shù)m,使得m > Rank (A),然后向普通節(jié)點B發(fā)送HELLO 消息和m值;A — B :HELL0+m步驟7、普通節(jié)點B收到HELLO消息后,判斷m和Rank (B)的大?。蝗绻鹠 ^ Rank (B),則普通節(jié)點B生成兩者的會話密鑰Kab,然后向普通節(jié)點A發(fā)送密鑰消息,內(nèi)容為{KAB}f(m),Kab用f(m)加密 B —A:{KAB}f(m)如果m < Rank (B),則普通節(jié)點B選擇隨機整數(shù)η使得m < η (例如差值小于10不要太大),然后向普通節(jié)點A發(fā)送HELLO消息和值η B — A :HELL0+n步驟8、普通節(jié)點A接收到消息后,如果是密鑰消息,通過計算f(m)解密出會話密鑰 Kab ;如果是HELLO消息,則生成兩者的會話密鑰Kab,然后向B發(fā)送密鑰消息,內(nèi)容為{KAB} f(n),KABffi f(n)加密 A-B :{KAB}f(n)步驟9、B收到密鑰消息后,通過計算f (η)解密出會話密鑰。
10.根據(jù)權(quán)利要求8所述的密鑰建立方法,在步驟5后還包括 步驟10、Hy在使用NS+AR0消息向1 進行地址注冊時,使用兩者之間的對密鑰K1生成消息驗證碼MAC Hy — Rn :NS,ARO, MAC步驟11、1 收到注冊消息后,使用對密鑰和MAC對消息進行認證; 如果認證不成功,則地址注冊失敗,1 不會為Hy建立任何緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)包時丟棄數(shù)據(jù)包、不進行轉(zhuǎn)發(fā);如果成功,1 會為Hy建立緩存項信息,從而當(dāng)Hy向網(wǎng)絡(luò)中發(fā)送的數(shù)據(jù)包時由1 進行轉(zhuǎn)發(fā)。
全文摘要
本發(fā)明提供一種6LoWPAN網(wǎng)絡(luò)密鑰建立方法,包括步驟1、內(nèi)部路由器節(jié)點Rx接收到第一個來自路由器節(jié)點Ru的DIO消息后,向節(jié)點Ru發(fā)送消息請求得到組密鑰;步驟2、Ru收到消息后,根據(jù)消息中的k值計算f(k)和f(k+Δ1);步驟3、Ru使用f(k)解密{f(k+Δ1)||KI}f(k)信息,然后把解密出的f(k+Δ1)與自己計算的值進行比較,如果相等,則Ru對Rx認證通過,否則認證不通過;步驟4、如果Rx認證通過,則Ru把KI作為與Rx之間的對密鑰進行保存,并且向Rx回應(yīng)消息;步驟5、Rx收到回應(yīng)消息后,通過KI解密整個消息,得到Ru的接口標識IIu,然后和數(shù)據(jù)包源地址中的接口標識進行對比實現(xiàn)對Ru的認證;步驟6、如果Ru認證通過,Rx得到組密鑰KG,并把Ru作為自己的父節(jié)點、存儲兩者之間的對密鑰KI。上述利用多次Hash的密鑰建立方法計算量小。
文檔編號H04W12/04GK102448062SQ20121000352
公開日2012年5月9日 申請日期2012年1月6日 優(yōu)先權(quán)日2012年1月6日
發(fā)明者劉欽明, 史紅周, 楊德興 申請人:中國科學(xué)院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
海淀区| 镇安县| 玉田县| 北票市| 卓资县| 孝义市| 北海市| 堆龙德庆县| 同仁县| 宜川县| 乌鲁木齐市| 绍兴市| 孟州市| 广宁县| 民丰县| 朝阳县| 连山| 上蔡县| 安阳市| 新乡县| 靖远县| 石嘴山市| 信宜市| 油尖旺区| 酒泉市| 平和县| 玉环县| 巴塘县| 桃源县| 永嘉县| 宜城市| 巢湖市| 乌什县| 凤翔县| 区。| 正定县| 卓资县| 绥芬河市| 赣州市| 泰宁县| 运城市|