??? 摘 要: 在大多數(shù)無線傳感網(wǎng)絡(luò)" title="無線傳感網(wǎng)絡(luò)">無線傳感網(wǎng)絡(luò)(WSN)的應(yīng)用中,用戶對WSN的安全性要求都很高,而ZigBee標(biāo)準(zhǔn)具有高可靠性" title="高可靠性">高可靠性的特點,這種高可靠性就建立在安全協(xié)商協(xié)議的基礎(chǔ)上。對ZigBee標(biāo)準(zhǔn)的密鑰協(xié)商機制進(jìn)行了詳細(xì)分析,并利用測試向量對該機制進(jìn)行了測試,同時介紹了ZigBee的組網(wǎng)方式和安全服務(wù)平臺。
??? 關(guān)鍵詞: ZigBee? 安全? 密鑰協(xié)商? 無線傳感網(wǎng)絡(luò)
?
??? 隨著網(wǎng)絡(luò)和通信技術(shù)的發(fā)展,人們對無線通信技術(shù)的要求越來越高,在追求低價格的同時,還要求低功耗" title="低功耗">低功耗、低復(fù)雜度、高可靠性。2004年12月,ZigBee工作組正式公布了ZigBee1.0標(biāo)準(zhǔn)。使用該標(biāo)準(zhǔn)組建短距離低速無線個域網(wǎng)LR—WPAN(Low Rate—Wireless Personal Area Network)不僅具有低成本、低功耗、低速率、低復(fù)雜度的特點,而且還具有可靠性高、組網(wǎng)簡單和靈活的優(yōu)勢。成千上萬個具有ZigBee結(jié)構(gòu)的微型傳感器構(gòu)成了自治的無線傳感器網(wǎng)絡(luò),主要應(yīng)用于工業(yè)控制、軍事偵察、環(huán)境科學(xué)、醫(yī)療健康、空間探索、智能建筑等各種復(fù)雜環(huán)境中進(jìn)行檢測、診斷、目標(biāo)定位和跟蹤[1]。
??? 信息安全是現(xiàn)代通信中一個至關(guān)重要的問題,是信息網(wǎng)絡(luò)正常運行的基礎(chǔ),ZigBee技術(shù)提供可選的安全架構(gòu),保證了無線傳感網(wǎng)絡(luò)的可靠性。
??? 本文將介紹ZigBee標(biāo)準(zhǔn)的組網(wǎng)方式、安全結(jié)構(gòu)和在安全協(xié)議層次上的實現(xiàn)模式。
1 ZigBee技術(shù)及其網(wǎng)絡(luò)結(jié)構(gòu)
??? ZigBee無線通信技術(shù)工作在2.4GHz的ISM頻段上,傳輸速率為20kbps~250kbps,傳輸距離為10m~75m,主要應(yīng)用于自動控制、傳感和遠(yuǎn)程控制領(lǐng)域。它依據(jù)802.15.4標(biāo)準(zhǔn),在數(shù)千個微小的傳感器之間相互協(xié)調(diào)實現(xiàn)通信。這些傳感器只需要很少的能量,就能以接力的方式通過無線電波將數(shù)據(jù)從一個傳感器發(fā)送到另一個傳感器,所以它們的通信效率非常高。但ZigBee技術(shù)的較低數(shù)據(jù)速率以及較小通信范圍的特點決定了它只適合承載數(shù)據(jù)流量較小的業(yè)務(wù)[2]。
??? 為了實現(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è)備通信。如果采用安全機制" title="安全機制">安全機制,網(wǎng)絡(luò)協(xié)調(diào)者又可成為信任中心(Trust center);另一種是簡化功能設(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層包括一個應(yīng)用支持子層(APS)、 ZigBee設(shè)備對象(ZDO)和應(yīng)用。ZDO負(fù)責(zé)所有設(shè)備的管理,APS提供一個用于ZDO和ZigBee應(yīng)用的基礎(chǔ)。
??? 該體系結(jié)構(gòu)包括協(xié)議棧三層安全機制。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é)商機制
??? ZigBee標(biāo)準(zhǔn)在安全協(xié)議層面上應(yīng)用基于對稱密鑰的密鑰協(xié)商協(xié)議,并要求該對稱密鑰必須為帶有密鑰確認(rèn)機制的完全對稱密鑰,而提供密鑰確認(rèn)的則是消息鑒權(quán)編碼機制。圖3是該密鑰協(xié)商機制的消息傳輸情況。
??????????????????????????????
圖中U表示協(xié)議的發(fā)起設(shè)備(Initiator),V表示協(xié)議的響應(yīng)設(shè)備(Responder),該機制通過兩次變換協(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è)備變換時,U和V就計算相同的密鑰數(shù)據(jù)。
3.1 變換的組成部分
??? 發(fā)起設(shè)備變換與響應(yīng)設(shè)備變換都使用Challenge生成原語" title="原語">原語、Challenge確認(rèn)原語、秘密密鑰生成(SKG)原語、密鑰派生函數(shù)和一個消息鑒權(quán)編碼(MAC)機制。
3.1.1 Challenge生成原語與確認(rèn)原語
??? Challenge生成與確認(rèn),實際上是設(shè)置所發(fā)送消息的大小與判別所接收到的信息的大小,即Challenge域的參數(shù)D=(minchallenge, maxchallenge)。生成原語產(chǎn)生參數(shù)D的兩個值,在大多數(shù)機制中D為一個定值,如D=128,此時minchallenge=maxchallenge=128。而確認(rèn)原語則判別所收到的Challenge的參數(shù)D是否在預(yù)先設(shè)置的值域內(nèi),若不在,則拒絕該Challenge。
3.1.2 秘密密鑰生成(SKG)原語
??? 秘密密鑰是兩個ZigBee實體之間共享的密鑰,SKG原語是從分別屬于兩個實體的兩個Challenge中獲取秘密密鑰的,且這兩個Challenge的域參數(shù)D是相同的。若兩實體都正確地執(zhí)行了此原語,則兩實體就能獲得相同的共享秘密值。
3.1.3? 密鑰派生函數(shù)
??? 密鑰派生函數(shù)從共享秘密值中計算密鑰數(shù)據(jù),它不僅用于密鑰協(xié)商機制,還可用于非對稱的加密機制。此函數(shù)實質(zhì)上由一個簡單的hash函數(shù)組成[4]。
3.1.4 消息鑒權(quán)編碼(MAC)機制
??? 消息鑒權(quán)編碼機制主要包括兩個變換:標(biāo)記變換和標(biāo)記校驗變換。密鑰協(xié)商機制使用MAC機制提供密鑰確認(rèn),ZigBee標(biāo)準(zhǔn)使用密鑰hash消息鑒權(quán)機制(HMAC),且所用hash函數(shù)是Matyas-Meyer-Oseas hash函數(shù),該函數(shù)帶有一個消息摘要[4]。
3.2 密鑰協(xié)商機制的前提條件
??? ZigBee設(shè)備之間在進(jìn)行密鑰協(xié)商前,必須滿足以下條件:
??? (1)每個ZigBee實體都有一個可信的系統(tǒng)Challenge域參數(shù)D的拷貝。
??? (2)每個ZigBee實體都可獲得一個長度為keylen的位串Key作為密鑰。實體決定本身各個部分獲得密鑰的情況。
??? (3)每個ZigBee實體都要有唯一的標(biāo)識符。所有標(biāo)識符串的長度必須相同,用entlen參數(shù)表示。
??? (4)每個ZigBee實體自己決定將使用哪個消息鑒權(quán)編碼機制。所選消息鑒權(quán)編碼機制使用的密鑰的長度由mackeylen參數(shù)表示。
??? (5)選擇一個帶有密鑰生成函數(shù)的密碼hash函數(shù)。
??? (6)選擇一個專用消息鑒權(quán)編碼機制,該機制含有帶有標(biāo)志變換的秘密密鑰生成原語。該密鑰長度用keylen表示。
??? (7)選擇一個固定的字節(jié)表示方式表示二進(jìn)制字符串。
3.3 發(fā)起設(shè)備變換
??? U執(zhí)行發(fā)起設(shè)備變換,可獲得一個可信的V標(biāo)識符的拷貝和一個與V共享的靜態(tài)秘密密鑰的可信拷貝。
此變換的輸入包括:生成密鑰數(shù)據(jù)的長度keydatalen;位串SharedData的長度shareddatalen(可選),其中SharedData由一些U和V共享的數(shù)據(jù)構(gòu)成;位串Text2(可選),它由從U到V的一些附加數(shù)據(jù)組成。
??? U按如下步驟執(zhí)行變換來獲得密鑰數(shù)據(jù):
??? (1)使用Challenge生成原語生成一個符合Challenge 域參數(shù)D的ChallengeQEU,并把QEU發(fā)送到V。
??? (2)從V接收ChallengeQEV′,若沒接收到此值,輸出“invalid”并中止協(xié)議協(xié)商。
??? (3)從V接收可選位串Text1和標(biāo)記MacTag1′。若這些值未接收到,輸出“invalid”并中止協(xié)議協(xié)商。
??? (4)核實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,長度為mackeylen+keydatalen。
??? (7)把KKeyData的最左端mackeylen解析為MAC密鑰MacKey,并且將剩余位作為密鑰數(shù)據(jù)KeyData。
??? (8) 由字節(jié)0216、V的標(biāo)識符、U的標(biāo)識符、位串QEV′’、位串QEU和Text1(若存在)構(gòu)建位字符串:
???
??? (9)使用MAC機制的適當(dāng)標(biāo)記檢驗轉(zhuǎn)換校核MacTag1′是否為密鑰Mackey下MacData1的標(biāo)記符。若標(biāo)記檢驗轉(zhuǎn)換輸出“invalid”,則變換輸出“invalid”并中止協(xié)議協(xié)商。
??? (10)由字節(jié)0316、U的標(biāo)識符、V的標(biāo)識符、位串QEU對應(yīng)的U的Challenge、位串QEV′對應(yīng)的V的Challenge和可選位串Text2構(gòu)建位字符串:
???
??? (11)在MacData2的基礎(chǔ)上,使用標(biāo)記轉(zhuǎn)換和適當(dāng)?shù)腗AC機制計算標(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共享的長度為keydatalen的密鑰數(shù)據(jù),同時接受V作為位串Text1的源。
3.4 響應(yīng)設(shè)備變換
??? V執(zhí)行響應(yīng)設(shè)備變換,可獲得一個可信的U標(biāo)識符的拷貝和一個與U共享的靜態(tài)秘密密鑰的可信拷貝。
此變換的輸入包括:一個屬于U的ChallengeQEU′、生成密鑰數(shù)據(jù)的長度keydatalen、位串SharedData的長度shareddatalen(可選),其中,SharedData由一些U和V共享的數(shù)據(jù)組成,位串Text1(可選)由從V到U的一些附加數(shù)據(jù)組成。
V按如下步驟執(zhí)行變換,來獲得密鑰數(shù)據(jù):
??? (1)核實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,長度為mackeylen+keydatalen。
??? (5)把KKeyData的最左端mackeylen解析為MAC密鑰MacKey,并且將剩余位作為密鑰數(shù)據(jù)KKeyData。
??? (6)由字節(jié)0216、V的標(biāo)識符、U的標(biāo)識符、位串QEV′、位串QEU′和Text1(若存在)構(gòu)建位字符串:
???
??? (7)在MacData1的基礎(chǔ)上,使用標(biāo)記轉(zhuǎn)換和適當(dāng)?shù)腗AC機制計算標(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)識符、V的標(biāo)識符、位串QEU′對應(yīng)的U的Challenge、位串QEV對應(yīng)的V的Challenge和可選位串Text2構(gòu)建位字符串:
???
??? (10)使用MAC機制的適當(dāng)標(biāo)記檢驗轉(zhuǎn)換校核MacTag2′是否為密鑰MacKey下MacData2的標(biāo)記符。若標(biāo)記檢驗轉(zhuǎn)換輸出“invalid”,則變換輸出“invalid”并中止協(xié)議協(xié)商。
??? 若上述步驟中任一次確認(rèn)失敗,則輸出“invalid”且拒絕位串和;否則,輸出“valid”,接受位串KeyData為與U共享的長度為keydatalen的密鑰數(shù)據(jù),同時接受U作為位串[Text2]的源。
4 向量測試
??? 針對上述密鑰協(xié)商機制,用向量測試的方式驗證該機制的可行性。這些向量在最開始時是相互獨立且不確定的。
預(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
??? 機制[5]作為MAC機制。
??? 發(fā)起設(shè)備變換和響應(yīng)設(shè)備變換最終都輸出“valid”,并接受位串KeyData= 72 57 7D 02 CC E1 39 33 1A BF F4 0B C5 6E A3 7F為與對方共享的長度為128bit的密鑰數(shù)據(jù)。
??? ZigBee技術(shù)在短距離、低數(shù)據(jù)量的無線通信中有著其他技術(shù)所不具有的優(yōu)勢,而安全性服務(wù)是保證ZigBee技術(shù)立足市場的前提。在ZigBee聯(lián)盟公開的ZigBee 1.0標(biāo)準(zhǔn)規(guī)范說明中,著重強調(diào)了ZigBee所能提供的安全性服務(wù),后續(xù)的增強版本中又再次加強了安全性服務(wù)。本文詳細(xì)分析的是安全協(xié)議層次上的協(xié)商機制,在安全性的其他層次上值得進(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].計算機科學(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.