7天快速入門Zigbee:傳感器網絡加密設計

                                   7天快速入門Zigbee:傳感器網絡加密設計

 

目錄

1. 概述

2. 加密方式

    2.1 預設置網絡密鑰加密

    2.2 協調器傳輸網絡密鑰加密


1. 概述

        Z-Stack Mesh 1.0.0支持128bit的AES對稱加密算法,ZigBee協議棧爲了避開相同設備的干擾,同時也爲了防止數據包被其它設備監聽,所以採用了AES加密技術將數據加密,提高數據的安全性。

        AES(The Advanced Encryption Standard)是美國國家標準與技術研究所用於加密電子數據的規範。它是爲人們所公認的加密包括金融、電信和政府數字信息的方法。AES 是一個新的可以用於保護電子數據的加密算法。明確地說,AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16字節)分組加密和解密數據。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重複置換(permutations )和替換(substitutions)輸入數據。

        簡單來說,就是用一個128位的KEY(密鑰),通過AES加密算法加密要發送出去的數據,當目標設備收到加密的數據後,再通過一個同樣的128位的KEY(密鑰)來解密,就能獲取到原數據了。這樣即使有人通過抓包工具抓到了我們的數據包,可是沒有解密的密鑰也是無法得知我們發送的原數據的。而且不同密鑰的設備即使入網了也無法通信,設備收到通信消息後會在網絡層進行解析,解析失敗後會自動丟棄此消息,不會上傳到應用層。

2. 加密方式

       Z-Stack的加密方式有兩種,一種是直接在協調器和入網節點中設置相同的 “網絡密鑰(NWK KEY)”加密;另一種是協調器在設備入網時將“網絡密鑰”發送至入網設備,則入網設備以後的消息都使用此“網絡密鑰”來進行加密。

2.1 預設置網絡密鑰加密

       “預設置網絡密鑰”是在編程的時候直接將“網絡密鑰”寫入到協調器和入網設備的代碼中,使得兩個設備在一開始通信的時候就使用設定好的“網絡密鑰”對數據包進行加密和解密。這種加密方式很安全,只有開發者才知道“網絡密鑰”是多少,協調器從一開始就使用“網絡密鑰”加密消息,使得別人也無法通過抓包來解析數據。

       使用方法:將協調器入網設備工程“f8wConfig.cfg”文件中的“-DSECURE”設置爲1,再設置相同的默認網絡密鑰“-DDEFAULT_KEY” (16個字節);最後將“ZGlobals.c”文件中的“zgPreConfigKeys”設置爲“TRUE”,表示網絡密鑰是直接預配置在設備當中的。

快速應用:

步驟 執行設備 執行項目

開啓安全加密功能

協調器/

入網設備

將“f8wConfig.cfg”文件中的“-DSECURE”設置爲1

設置相同的默認網絡密鑰

協調器/

入網設備

將“f8wConfig.cfg”文件中的“-DDEFAULT_KEY”設置爲相同值,

例如:-DDEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}"

將配置密鑰方式設置爲預配置在各設備中

協調器/

入網設備

將“ZGlobals.c”文件中的“zgPreConfigKeys”設置爲“TRUE

2.2 協調器傳輸網絡密鑰加密

        “協調器傳輸網絡密鑰”是在入網設備入網後協調器通過“Transport key”命令將“網絡密鑰”發送給入網設備,入網設備收到後則以後的消息都是用此“網絡密鑰”來進行加密處理。這裏還涉及到另外一個密鑰,那就是“TC LINK KEY”。如果協調器和入網設備都開啓了“TC_LINKKEY_JOIN”功能,則協調器會使用“TC LINK KEY”來加密“Transport key”命令,使得別人無法通過抓包解析“Transport key”命令得知“網絡密鑰”;而在入網設備中設置相同的“TC LINK KEY”,當它在收到“Transport key”命令後再使用“TC LINK KEY”解密,從而獲得“網絡密鑰”。

未開啓“TC_LINKKEY_JOIN”功能時,“Transport key”命令的抓包:

開啓“TC_LINKKEY_JOIN”功能時,“Transport key”命令的抓包:

       使用方法:將協調器入網設備工程“f8wConfig.cfg”文件中的“-DSECURE”設置爲1;然後在預定義裏添加“TC_LINKKEY_JOIN”,說明使用“TC LINK KEY”加密;將“nwk_globals.h”中的“DEFAULT_TC_LINK_KEY”設置成相同的“TC LIN KEY”;設置協調器要使用的“網絡密鑰”;最後再將“ZGlobals.c”文件中的“zgPreConfigKeys”設置爲“FALSE”,表示網絡密鑰是通過協調器發送給入網設備的。

快速應用:

步驟

執行設備

執行項目

開啓安全加密功能

協調器/

入網設備

將“f8wConfig.cfg”文件中的“-DSECURE”設置爲1

在預定義裏添加“TC_LINKKEY_JOIN”

協調器/

入網設備

在預定義裏添加“TC_LINKKEY_JOIN”

設置相同的“TC LINK KEY”

協調器/

入網設備

將“nwk_globals.h”中的“DEFAULT_TC_LINK_KEY”設置成相同的“TC LIN KEY”

設置網絡密鑰

協調器

 

在“f8wConfig.cfg”文件中的“-DDEFAULT_KEY”設置網絡密鑰,

例如:-DDEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0D}"。

-DDEFAULT_KEY=“{0}”則隨機生成網絡密鑰。

將配置密鑰方式設置爲通過協調器發送給入網設備

協調器/

入網設備

將“ZGlobals.c”文件中的“zgPreConfigKeys”設置爲“FALSE

大家的支持就是我分享技術的動力,希望大家需轉載時能附上原作者的博客:https://blog.csdn.net/u012993936,謝謝。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章