??? 摘 要: 在大多數(shù)無線傳感網(wǎng)絡(luò)" title="無線傳感網(wǎng)絡(luò)">無線傳感網(wǎng)絡(luò)(WSN)的應(yīng)用中,,用戶對(duì)WSN的安全性要求都很高,而ZigBee標(biāo)準(zhǔn)具有高可靠性" title="高可靠性">高可靠性的特點(diǎn),這種高可靠性就建立在安全協(xié)商協(xié)議的基礎(chǔ)上。對(duì)ZigBee標(biāo)準(zhǔn)的密鑰協(xié)商機(jī)制進(jìn)行了詳細(xì)分析,,并利用測(cè)試向量對(duì)該機(jī)制進(jìn)行了測(cè)試,同時(shí)介紹了ZigBee的組網(wǎng)方式和安全服務(wù)平臺(tái),。
??? 關(guān)鍵詞: ZigBee? 安全? 密鑰協(xié)商? 無線傳感網(wǎng)絡(luò)
?
??? 隨著網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,,人們對(duì)無線通信技術(shù)的要求越來越高,在追求低價(jià)格的同時(shí),,還要求低功耗" title="低功耗">低功耗、低復(fù)雜度,、高可靠性,。2004年12月,ZigBee工作組正式公布了ZigBee1.0標(biāo)準(zhǔn),。使用該標(biāo)準(zhǔn)組建短距離低速無線個(gè)域網(wǎng)LR—WPAN(Low Rate—Wireless Personal Area Network)不僅具有低成本,、低功耗,、低速率、低復(fù)雜度的特點(diǎn),,而且還具有可靠性高,、組網(wǎng)簡(jiǎn)單和靈活的優(yōu)勢(shì)。成千上萬個(gè)具有ZigBee結(jié)構(gòu)的微型傳感器構(gòu)成了自治的無線傳感器網(wǎng)絡(luò),,主要應(yīng)用于工業(yè)控制,、軍事偵察、環(huán)境科學(xué),、醫(yī)療健康,、空間探索、智能建筑等各種復(fù)雜環(huán)境中進(jìn)行檢測(cè),、診斷,、目標(biāo)定位和跟蹤[1]。
??? 信息安全是現(xiàn)代通信中一個(gè)至關(guān)重要的問題,,是信息網(wǎng)絡(luò)正常運(yùn)行的基礎(chǔ),,ZigBee技術(shù)提供可選的安全架構(gòu),保證了無線傳感網(wǎng)絡(luò)的可靠性,。
??? 本文將介紹ZigBee標(biāo)準(zhǔn)的組網(wǎng)方式,、安全結(jié)構(gòu)和在安全協(xié)議層次上的實(shí)現(xiàn)模式。
1 ZigBee技術(shù)及其網(wǎng)絡(luò)結(jié)構(gòu)
??? ZigBee無線通信技術(shù)工作在2.4GHz的ISM頻段上,,傳輸速率為20kbps~250kbps,,傳輸距離為10m~75m,主要應(yīng)用于自動(dòng)控制,、傳感和遠(yuǎn)程控制領(lǐng)域,。它依據(jù)802.15.4標(biāo)準(zhǔn),在數(shù)千個(gè)微小的傳感器之間相互協(xié)調(diào)實(shí)現(xiàn)通信,。這些傳感器只需要很少的能量,,就能以接力的方式通過無線電波將數(shù)據(jù)從一個(gè)傳感器發(fā)送到另一個(gè)傳感器,所以它們的通信效率非常高,。但ZigBee技術(shù)的較低數(shù)據(jù)速率以及較小通信范圍的特點(diǎn)決定了它只適合承載數(shù)據(jù)流量較小的業(yè)務(wù)[2],。
??? 為了實(shí)現(xiàn)低功耗,ZigBee網(wǎng)絡(luò)中定義了兩種類型的設(shè)備:一種是全功能設(shè)備FFD(Full Function Device)稱為主設(shè)備,。它承擔(dān)網(wǎng)絡(luò)協(xié)調(diào)者的功能,,可與網(wǎng)絡(luò)中任何類型的設(shè)備通信。如果采用安全機(jī)制" title="安全機(jī)制">安全機(jī)制,,網(wǎng)絡(luò)協(xié)調(diào)者又可成為信任中心(Trust center),;另一種是簡(jiǎn)化功能設(shè)備RFD(Reduced Function Device)稱為從設(shè)備。它不能作為網(wǎng)絡(luò)協(xié)調(diào)者,,只能與主設(shè)備通信,。圖1是ZigBee技術(shù)主要采用的三種網(wǎng)絡(luò)結(jié)構(gòu),。
??????????????????????
2 ZigBee技術(shù)安全架構(gòu)
??? ZigBee設(shè)備之間的通信使用IEEE 802.15.4無線標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)指定兩層:物理層(PHY)和媒介存取控制層(MAC),,而ZigBee則負(fù)責(zé)構(gòu)建網(wǎng)絡(luò)層(NWK)和應(yīng)用層(APL),。PHY層提供基本的物理無線通信能力;MAC層提供設(shè)備間的可靠性授權(quán)和一跳通信連接服務(wù),;NWK層提供用于構(gòu)建不同網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的路由和多跳功能,;APL層包括一個(gè)應(yīng)用支持子層(APS)、 ZigBee設(shè)備對(duì)象(ZDO)和應(yīng)用,。ZDO負(fù)責(zé)所有設(shè)備的管理,APS提供一個(gè)用于ZDO和ZigBee應(yīng)用的基礎(chǔ),。
??? 該體系結(jié)構(gòu)包括協(xié)議棧三層安全機(jī)制。MAC,、NWK和APS負(fù)責(zé)各自幀的安全傳輸,。APS子層提供建立和保持安全關(guān)系的服務(wù)。ZDO管理安全性策略和設(shè)備的安全性結(jié)構(gòu),。圖2給出了ZigBee協(xié)議棧的完整視圖[3],。
????????????????????????
3 ZigBee標(biāo)準(zhǔn)的密鑰協(xié)商機(jī)制
??? ZigBee標(biāo)準(zhǔn)在安全協(xié)議層面上應(yīng)用基于對(duì)稱密鑰的密鑰協(xié)商協(xié)議,并要求該對(duì)稱密鑰必須為帶有密鑰確認(rèn)機(jī)制的完全對(duì)稱密鑰,,而提供密鑰確認(rèn)的則是消息鑒權(quán)編碼機(jī)制,。圖3是該密鑰協(xié)商機(jī)制的消息傳輸情況。
??????????????????????????????
圖中U表示協(xié)議的發(fā)起設(shè)備(Initiator),,V表示協(xié)議的響應(yīng)設(shè)備(Responder),,該機(jī)制通過兩次變換協(xié)商密鑰數(shù)據(jù),U和V分別使用發(fā)起設(shè)備變換和響應(yīng)設(shè)備變換協(xié)商密鑰數(shù)據(jù),。發(fā)起設(shè)備與響應(yīng)設(shè)備本質(zhì)上沒有區(qū)別,,只是發(fā)起設(shè)備發(fā)送第一條交換消息而已。
??? 如果使用共享秘密密鑰作為輸入,,當(dāng)U執(zhí)行發(fā)起設(shè)備變換而V執(zhí)行響應(yīng)設(shè)備變換時(shí),,U和V就計(jì)算相同的密鑰數(shù)據(jù)。
3.1 變換的組成部分
??? 發(fā)起設(shè)備變換與響應(yīng)設(shè)備變換都使用Challenge生成原語" title="原語">原語,、Challenge確認(rèn)原語,、秘密密鑰生成(SKG)原語、密鑰派生函數(shù)和一個(gè)消息鑒權(quán)編碼(MAC)機(jī)制,。
3.1.1 Challenge生成原語與確認(rèn)原語
??? Challenge生成與確認(rèn),,實(shí)際上是設(shè)置所發(fā)送消息的大小與判別所接收到的信息的大小,即Challenge域的參數(shù)D=(minchallenge, maxchallenge),。生成原語產(chǎn)生參數(shù)D的兩個(gè)值,,在大多數(shù)機(jī)制中D為一個(gè)定值,如D=128,,此時(shí)minchallenge=maxchallenge=128,。而確認(rèn)原語則判別所收到的Challenge的參數(shù)D是否在預(yù)先設(shè)置的值域內(nèi),若不在,,則拒絕該Challenge,。
3.1.2 秘密密鑰生成(SKG)原語
??? 秘密密鑰是兩個(gè)ZigBee實(shí)體之間共享的密鑰,SKG原語是從分別屬于兩個(gè)實(shí)體的兩個(gè)Challenge中獲取秘密密鑰的,,且這兩個(gè)Challenge的域參數(shù)D是相同的,。若兩實(shí)體都正確地執(zhí)行了此原語,則兩實(shí)體就能獲得相同的共享秘密值,。
3.1.3? 密鑰派生函數(shù)
??? 密鑰派生函數(shù)從共享秘密值中計(jì)算密鑰數(shù)據(jù),,它不僅用于密鑰協(xié)商機(jī)制,還可用于非對(duì)稱的加密機(jī)制,。此函數(shù)實(shí)質(zhì)上由一個(gè)簡(jiǎn)單的hash函數(shù)組成[4],。
3.1.4 消息鑒權(quán)編碼(MAC)機(jī)制
??? 消息鑒權(quán)編碼機(jī)制主要包括兩個(gè)變換:標(biāo)記變換和標(biāo)記校驗(yàn)變換。密鑰協(xié)商機(jī)制使用MAC機(jī)制提供密鑰確認(rèn),,ZigBee標(biāo)準(zhǔn)使用密鑰hash消息鑒權(quán)機(jī)制(HMAC),,且所用hash函數(shù)是Matyas-Meyer-Oseas hash函數(shù),該函數(shù)帶有一個(gè)消息摘要[4],。
3.2 密鑰協(xié)商機(jī)制的前提條件
??? ZigBee設(shè)備之間在進(jìn)行密鑰協(xié)商前,,必須滿足以下條件:
??? (1)每個(gè)ZigBee實(shí)體都有一個(gè)可信的系統(tǒng)Challenge域參數(shù)D的拷貝。
??? (2)每個(gè)ZigBee實(shí)體都可獲得一個(gè)長(zhǎng)度為keylen的位串Key作為密鑰,。實(shí)體決定本身各個(gè)部分獲得密鑰的情況,。
??? (3)每個(gè)ZigBee實(shí)體都要有唯一的標(biāo)識(shí)符。所有標(biāo)識(shí)符串的長(zhǎng)度必須相同,,用entlen參數(shù)表示,。
??? (4)每個(gè)ZigBee實(shí)體自己決定將使用哪個(gè)消息鑒權(quán)編碼機(jī)制。所選消息鑒權(quán)編碼機(jī)制使用的密鑰的長(zhǎng)度由mackeylen參數(shù)表示,。
??? (5)選擇一個(gè)帶有密鑰生成函數(shù)的密碼hash函數(shù),。
??? (6)選擇一個(gè)專用消息鑒權(quán)編碼機(jī)制,該機(jī)制含有帶有標(biāo)志變換的秘密密鑰生成原語,。該密鑰長(zhǎng)度用keylen表示,。
??? (7)選擇一個(gè)固定的字節(jié)表示方式表示二進(jìn)制字符串。
3.3 發(fā)起設(shè)備變換
??? U執(zhí)行發(fā)起設(shè)備變換,,可獲得一個(gè)可信的V標(biāo)識(shí)符的拷貝和一個(gè)與V共享的靜態(tài)秘密密鑰的可信拷貝,。
此變換的輸入包括:生成密鑰數(shù)據(jù)的長(zhǎng)度keydatalen;位串SharedData的長(zhǎng)度shareddatalen(可選),,其中SharedData由一些U和V共享的數(shù)據(jù)構(gòu)成,;位串Text2(可選),它由從U到V的一些附加數(shù)據(jù)組成。
??? U按如下步驟執(zhí)行變換來獲得密鑰數(shù)據(jù):
??? (1)使用Challenge生成原語生成一個(gè)符合Challenge 域參數(shù)D的ChallengeQEU,,并把QEU發(fā)送到V,。
??? (2)從V接收ChallengeQEV′,若沒接收到此值,,輸出“invalid”并中止協(xié)議協(xié)商,。
??? (3)從V接收可選位串Text1和標(biāo)記MacTag1′。若這些值未接收到,,輸出“invalid”并中止協(xié)議協(xié)商,。
??? (4)核實(shí)QEV′是否為Challenge域參數(shù)D內(nèi)的有效
??? Challenge,若確認(rèn)原語拒絕此Challenge,,輸出“invalid”并中止協(xié)議協(xié)商,。
??? (5)使用SKG原語從U的Q1=QEU和V的Q2=QEV′的Challenge中獲得共享秘密位串Z,并把它作為共享密鑰Key,,若SKG原語輸出“invalid”,,則該變換輸出“invalid”并中止協(xié)議協(xié)商。
??? (6)使用密鑰派生函數(shù)和所建立的hash函數(shù)從共享的秘密值Z和共享數(shù)據(jù)SharedData中獲得密鑰數(shù)據(jù)KKeyData,,長(zhǎng)度為mackeylen+keydatalen,。
??? (7)把KKeyData的最左端mackeylen解析為MAC密鑰MacKey,并且將剩余位作為密鑰數(shù)據(jù)KeyData,。
??? (8) 由字節(jié)0216,、V的標(biāo)識(shí)符、U的標(biāo)識(shí)符,、位串QEV′’,、位串QEU和Text1(若存在)構(gòu)建位字符串:
???
??? (9)使用MAC機(jī)制的適當(dāng)標(biāo)記檢驗(yàn)轉(zhuǎn)換校核MacTag1′是否為密鑰Mackey下MacData1的標(biāo)記符。若標(biāo)記檢驗(yàn)轉(zhuǎn)換輸出“invalid”,,則變換輸出“invalid”并中止協(xié)議協(xié)商,。
??? (10)由字節(jié)0316、U的標(biāo)識(shí)符,、V的標(biāo)識(shí)符,、位串QEU對(duì)應(yīng)的U的Challenge、位串QEV′對(duì)應(yīng)的V的Challenge和可選位串Text2構(gòu)建位字符串:
???
??? (11)在MacData2的基礎(chǔ)上,,使用標(biāo)記轉(zhuǎn)換和適當(dāng)?shù)腗AC機(jī)制計(jì)算標(biāo)記符MacTag2:
???
??? (12)若標(biāo)記轉(zhuǎn)換輸出為“invalid”,,則變換輸出“invalid”
??? 并中止協(xié)議協(xié)商。若存在MacTag2,,則發(fā)送MacTag2和Text2到V,。
??? 若上述步驟中任一次確認(rèn)失敗,則輸出“invalid”且拒絕位串KeyData和Text1,;否則,,輸出“valid”,,接受位串KeyData為與V共享的長(zhǎng)度為keydatalen的密鑰數(shù)據(jù),同時(shí)接受V作為位串Text1的源,。
3.4 響應(yīng)設(shè)備變換
??? V執(zhí)行響應(yīng)設(shè)備變換,,可獲得一個(gè)可信的U標(biāo)識(shí)符的拷貝和一個(gè)與U共享的靜態(tài)秘密密鑰的可信拷貝。
此變換的輸入包括:一個(gè)屬于U的ChallengeQEU′,、生成密鑰數(shù)據(jù)的長(zhǎng)度keydatalen,、位串SharedData的長(zhǎng)度shareddatalen(可選),其中,,SharedData由一些U和V共享的數(shù)據(jù)組成,位串Text1(可選)由從V到U的一些附加數(shù)據(jù)組成,。
V按如下步驟執(zhí)行變換,,來獲得密鑰數(shù)據(jù):
??? (1)核實(shí)QEU′是否為Challenge域參數(shù)D內(nèi)的有效
Challenge,若確認(rèn)原語拒絕此Challenge,,則輸出“invalid”并中止協(xié)議協(xié)商,。
??? (2)使用Challenge生成原語生成在Challenge域參數(shù)D內(nèi)的ChallengeQEV,并把它發(fā)送到U,。
??? (3)使用SKG原語從U的Q1=QEU′和V的Q2=QEV的Challenge中獲得共享秘密位串Z,,并把它作為共享密鑰Key,若SKG原語輸出“invalid”,, 則該變換輸出“invalid”并中止協(xié)議協(xié)商,。
??? (4)使用密鑰派生函數(shù)和所建立的hash 函數(shù)從共享的秘密值Z和共享數(shù)據(jù)SharedData中獲得密鑰數(shù)據(jù)KKeyData,長(zhǎng)度為mackeylen+keydatalen,。
??? (5)把KKeyData的最左端mackeylen解析為MAC密鑰MacKey,,并且將剩余位作為密鑰數(shù)據(jù)KKeyData。
??? (6)由字節(jié)0216,、V的標(biāo)識(shí)符,、U的標(biāo)識(shí)符、位串QEV′,、位串QEU′和Text1(若存在)構(gòu)建位字符串:
???
??? (7)在MacData1的基礎(chǔ)上,,使用標(biāo)記轉(zhuǎn)換和適當(dāng)?shù)腗AC機(jī)制計(jì)算標(biāo)記符MacTag1:
???
??? 若標(biāo)記轉(zhuǎn)換輸出為“invalid”,則變換輸出“invalid”并中止協(xié)議協(xié)商,。若存在MacTag1,,則發(fā)送MacTag1和Text1到U。
??? (8)從U接收可選位串Text2和MacTag2′標(biāo)記,。若這些值未接收到,,輸出“invalid”并中止協(xié)議協(xié)商。
??? (9)由字節(jié)0316,、U的標(biāo)識(shí)符,、V的標(biāo)識(shí)符,、位串QEU′對(duì)應(yīng)的U的Challenge、位串QEV對(duì)應(yīng)的V的Challenge和可選位串Text2構(gòu)建位字符串:
???
??? (10)使用MAC機(jī)制的適當(dāng)標(biāo)記檢驗(yàn)轉(zhuǎn)換校核MacTag2′是否為密鑰MacKey下MacData2的標(biāo)記符,。若標(biāo)記檢驗(yàn)轉(zhuǎn)換輸出“invalid”,,則變換輸出“invalid”并中止協(xié)議協(xié)商。
??? 若上述步驟中任一次確認(rèn)失敗,,則輸出“invalid”且拒絕位串和,;否則,輸出“valid”,,接受位串KeyData為與U共享的長(zhǎng)度為keydatalen的密鑰數(shù)據(jù),,同時(shí)接受U作為位串[Text2]的源。
4 向量測(cè)試
??? 針對(duì)上述密鑰協(xié)商機(jī)制,,用向量測(cè)試的方式驗(yàn)證該機(jī)制的可行性,。這些向量在最開始時(shí)是相互獨(dú)立且不確定的。
預(yù)設(shè)前提條件如下:
??? (1)U=55 73 65 72 20 55 0D 0A,; V= 55 73 65 72 20 56 0D 0A,。
??? (2)Key= C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF;keylen=128bit,。
??? (3)SharedData=D0 D1 D2 D3 D4 D5,;shareddatalen=48 bit。
??? (4)選擇Matyas-Meyer-Oseas hash函數(shù)作為所用的
hash函數(shù),。
??? (5)選擇基于Matyas-Meyer-Oseas hash函數(shù)的HMAC
??? 機(jī)制[5]作為MAC機(jī)制,。
??? 發(fā)起設(shè)備變換和響應(yīng)設(shè)備變換最終都輸出“valid”,并接受位串KeyData= 72 57 7D 02 CC E1 39 33 1A BF F4 0B C5 6E A3 7F為與對(duì)方共享的長(zhǎng)度為128bit的密鑰數(shù)據(jù),。
??? ZigBee技術(shù)在短距離,、低數(shù)據(jù)量的無線通信中有著其他技術(shù)所不具有的優(yōu)勢(shì),而安全性服務(wù)是保證ZigBee技術(shù)立足市場(chǎng)的前提,。在ZigBee聯(lián)盟公開的ZigBee 1.0標(biāo)準(zhǔn)規(guī)范說明中,,著重強(qiáng)調(diào)了ZigBee所能提供的安全性服務(wù),后續(xù)的增強(qiáng)版本中又再次加強(qiáng)了安全性服務(wù),。本文詳細(xì)分析的是安全協(xié)議層次上的協(xié)商機(jī)制,,在安全性的其他層次上值得進(jìn)一步研究,如數(shù)據(jù)加密,、安全服務(wù)等,。
參考文獻(xiàn)
[1]?AKYILDIZ L,SU W,,SANKARASUBRAMANIAM Y,,et al. ?A survey on sensor networks[J]. IEEE Communications
?Magazine,2002,,40(8).
[2]?任秀麗. 基于ZigBee技術(shù)的無線傳感網(wǎng)的安全分析[J].計(jì)算機(jī)科學(xué), 2006,33(10).
[3]?ZigBee specification. [EB/OL]? http://www.ZigBee.org.2005-06-27.
[4] ANSI X9.63-2001. Public key cryptography for the financial services industry-key agreement and key transport?using elliptic curve cryptography[S]. American Bankers?Association. http://www.ansi.org.2001-10-20.
[5]?The keyed-hash message authentication code: Federal?information processing standards publication 198[S]. US?Department of Commerce/N.I.S.T.,Springfield, Virginia,?http://csrc.nist.gov.2002-03-06.