什么是Zigbee?
隨著物聯(lián)網(wǎng)(IoT)行業(yè)的發(fā)展,越來(lái)越多的無(wú)線(xiàn)技術(shù)應(yīng)運(yùn)而生。眾所周知,在物聯(lián)網(wǎng)行業(yè)中,我們有兩種典型的網(wǎng)絡(luò)。一個(gè)是WAN(廣域網(wǎng)),另一個(gè)是PAN(個(gè)人區(qū)域網(wǎng))。
● 對(duì)于LoRa,NB-IoT,2G / 3G / 4G等無(wú)線(xiàn)技術(shù),通常傳輸距離超過(guò)1 km,因此它們主要用于廣域網(wǎng)(WAN)。
● 對(duì)于Wi-Fi,藍(lán)牙,BLE,Zigbee和Zwave等無(wú)線(xiàn)技術(shù),通常的傳輸距離小于1公里,因此它們主要用于個(gè)人局域網(wǎng)(PAN)。
Zigbee是IoT網(wǎng)絡(luò)(尤其是家庭自動(dòng)化行業(yè))中最流行的無(wú)線(xiàn)技術(shù)之一。其特點(diǎn)包括:
● 短距離 – 無(wú)線(xiàn)覆蓋范圍在10到100米之間。
● 低數(shù)據(jù)速率 – 最大數(shù)據(jù)速率為250 Kbps。
● 低功耗 – 處于睡眠狀態(tài)的Endpoint設(shè)備在睡眠模式下可以使用低于5uA的電流;
● 這是一種網(wǎng)狀技術(shù) – 網(wǎng)絡(luò)可以輕松擴(kuò)展到很大。理論上最大節(jié)點(diǎn)數(shù)為65535。
Zigbee是Zigbee聯(lián)盟發(fā)布和修訂的開(kāi)放標(biāo)準(zhǔn)。歷史悠久。從很早開(kāi)始,Silicon Labs(亦稱(chēng)“芯科科技”)就致力于Zigbee技術(shù)。Silicon Labs的Zigbee技術(shù)來(lái)自Ember,Ember是一家自成立以來(lái)就開(kāi)始研究Zigbee的公司。2012年,Silicon Labs收購(gòu)了Ember,并繼續(xù)提供Zigbee產(chǎn)品和解決方案。
Zigbee協(xié)議概述
1、物理層和MAC層由IEEE-802.15.4定義。物理層負(fù)責(zé)無(wú)線(xiàn)電管理,包括諸如調(diào)制/解調(diào),信號(hào)強(qiáng)度檢測(cè)等功能。MAC層負(fù)責(zé)單跳通信。
2、網(wǎng)絡(luò)層負(fù)責(zé)消息的發(fā)送和接收,設(shè)備維護(hù),路由等。
3、應(yīng)用程序支持層(APS)負(fù)責(zé)端到端消息的傳輸。
4、應(yīng)用層留給用戶(hù)設(shè)計(jì)。每個(gè)應(yīng)用程序?qū)嵗Q(chēng)為一個(gè)Endpoint。為管理功能保留了一個(gè)特殊的Endpoint,即Endpoint 0。我們也將此管理功能模型稱(chēng)為Zigbee設(shè)備對(duì)象(ZDO)。
5、在APS層和網(wǎng)絡(luò)層中,有一些安全功能可用于保護(hù)網(wǎng)絡(luò)免遭黑客攻擊。
Zigbee安全性
由于Zigbee是一種無(wú)線(xiàn)技術(shù),因此安全性非常重要,因?yàn)楹诳涂梢酝ㄟ^(guò)無(wú)線(xiàn)檢測(cè)到這些數(shù)據(jù)包。想象您有一個(gè)智能門(mén)鎖。如果黑客捕獲了打開(kāi)您的門(mén)的數(shù)據(jù)包,那么他可以重發(fā)該文件以打開(kāi)您的門(mén)。那很危險(xiǎn)。為了防止這種情況發(fā)生,Zigbee定義了許多安全功能。讓我們簡(jiǎn)要介紹。
下圖顯示了如何在網(wǎng)絡(luò)層中保護(hù)不安全的網(wǎng)絡(luò)幀。
首先,網(wǎng)絡(luò)有效負(fù)載將被加密。之后,將在加密的有效負(fù)載之前添加安全標(biāo)頭。然后根據(jù)網(wǎng)絡(luò)標(biāo)頭,安全標(biāo)頭和加密的有效負(fù)載來(lái)計(jì)算哈希值。最后,將32位哈希值附加到幀的末尾。如果更改了網(wǎng)絡(luò)標(biāo)頭,安全標(biāo)頭和加密的有效負(fù)載中的任何字節(jié),則哈希值將不同。我們將此值稱(chēng)為MIC,是消息完整性檢查的縮寫(xiě)。
網(wǎng)絡(luò)加密使用對(duì)稱(chēng)加密算法(AES128),這意味著使用相同的密鑰進(jìn)行加密和解密。該密鑰稱(chēng)為Network Key。由于它是一種對(duì)稱(chēng)加密算法,因此同一Zigbee網(wǎng)絡(luò)中的所有設(shè)備都將使用相同的Network Key。
在網(wǎng)絡(luò)安全標(biāo)頭中,添加了“幀計(jì)數(shù)器”的字段和加密信息節(jié)點(diǎn)的源Eui64,以防止重發(fā)攻擊。還添加了密鑰序列號(hào)以支持Network Key更新。
創(chuàng)建Zigbee網(wǎng)絡(luò)
首先,由協(xié)調(diào)器創(chuàng)建一個(gè)網(wǎng)絡(luò),您必須準(zhǔn)備4個(gè)參數(shù):
● PAN ID
● 擴(kuò)展 PAN ID
● 工作頻道
● 發(fā)射功率
使用已知Link Key加入
您需要指定這四個(gè)參數(shù)。如果您不這樣做,協(xié)調(diào)器將隨機(jī)選擇一個(gè)PAN ID和一個(gè)擴(kuò)展的PAN ID。如果您未指定頻道,則協(xié)調(diào)器將掃描并選擇一個(gè)相對(duì)安靜的頻道進(jìn)行工作。網(wǎng)絡(luò)創(chuàng)建后,新設(shè)備可以開(kāi)始加入。
1、新設(shè)備將開(kāi)始查找可連接的網(wǎng)絡(luò)。在此階段,新設(shè)備將在每個(gè)通道上發(fā)送信標(biāo)請(qǐng)求。
/2、路由器和協(xié)調(diào)器將使用信標(biāo)幀中攜帶的網(wǎng)絡(luò)信息來(lái)響應(yīng)信標(biāo)。這些信息包括PAN ID,擴(kuò)展PAN ID以及路由器或協(xié)調(diào)器的其他一些屬性,例如設(shè)備是否允許連接,設(shè)備是否具有允許新設(shè)備連接的能力。
3、新設(shè)備可以從不同設(shè)備接收多個(gè)信標(biāo)。它將選擇信號(hào)質(zhì)量最好的一個(gè),并開(kāi)始發(fā)送關(guān)聯(lián)請(qǐng)求。在該關(guān)聯(lián)請(qǐng)求中,將PAN ID設(shè)置為所選的PAN,并將目標(biāo)節(jié)點(diǎn)ID設(shè)置為所選設(shè)備的節(jié)點(diǎn)ID。在此框架中,將繼續(xù)使用新設(shè)備的功能。
4、當(dāng)路由器或協(xié)調(diào)器收到此關(guān)聯(lián)請(qǐng)求時(shí),它將為新設(shè)備選擇一個(gè)節(jié)點(diǎn)ID,并以關(guān)聯(lián)響應(yīng)進(jìn)行響應(yīng)。然后,新設(shè)備獲得了其節(jié)點(diǎn)ID,但由于未獲得安全密鑰而無(wú)法與其他節(jié)點(diǎn)通信。
5、協(xié)調(diào)器會(huì)將當(dāng)前的NWK密鑰傳輸?shù)叫略O(shè)備。該傳輸消息在應(yīng)用程序?qū)又惺褂靡阎腖ink key加密。
6、當(dāng)新設(shè)備收到此消息時(shí),它將使用已知的Link key對(duì)消息解密并獲取Network Key。之后,該設(shè)備實(shí)際上已加入網(wǎng)絡(luò),并能夠與網(wǎng)絡(luò)中的所有其他節(jié)點(diǎn)通信。
7、設(shè)備將發(fā)送一條通知消息,以通知網(wǎng)絡(luò)的其他節(jié)點(diǎn),以通知他們我已加入。
使用Install Code派生的Link key加入
在出廠(chǎng)之前,應(yīng)該已經(jīng)使用Install Code碼對(duì)新設(shè)備進(jìn)行了編程。
在加入之前,用戶(hù)需要獲取新設(shè)備的Install Code和Eui64,然后在協(xié)調(diào)器上對(duì)其進(jìn)行配置。
然后,協(xié)調(diào)器從Install Code中獲取Link key,并將協(xié)調(diào)器設(shè)置為使用此Link key來(lái)加密此新設(shè)備的傳輸NWK密鑰消息。
其余過(guò)程類(lèi)似于使用眾所周知的Link key進(jìn)行連接的過(guò)程。當(dāng)協(xié)調(diào)器開(kāi)始將Network Key傳輸?shù)叫略O(shè)備時(shí),它將對(duì)消息進(jìn)行加密并將其傳輸?shù)叫略O(shè)備。當(dāng)新設(shè)備收到此消息時(shí),它將從閃存中讀取Install Code并從中獲取Link key,然后使用此密鑰對(duì)消息進(jìn)行解密并獲取Network Key。
(轉(zhuǎn)載)