無(wú)線糧情監(jiān)控系統(tǒng)Zigbee的數(shù)據(jù)加密算法

在信息化高速發(fā)晨的今天,信息系統(tǒng)已經(jīng)運(yùn)用在越來(lái)越多的行業(yè)中。我國(guó)的農(nóng)業(yè)信息化也不飼外,在部分糧倉(cāng)中已經(jīng)使用了信息化的管理系統(tǒng),如無(wú)線糧情監(jiān)控系統(tǒng)。無(wú)線糧情監(jiān)控系統(tǒng)可對(duì)糧食貯藏過程中影響的參數(shù)進(jìn)行實(shí)時(shí)監(jiān)測(cè)、分析,向管理人員提供準(zhǔn)確信息與參考,是保障糧食儲(chǔ)存品質(zhì)的有效手段。系統(tǒng)通過無(wú)線傳感器網(wǎng)絡(luò),將影響糧食貯藏過程中的參數(shù)進(jìn)行實(shí)時(shí)發(fā)送到監(jiān)控中心,當(dāng)發(fā)現(xiàn)不良變化時(shí),能夠及時(shí)發(fā)出預(yù)警信息,保證糧食儲(chǔ)存的安全。所以,系統(tǒng)傳輸數(shù)據(jù)的安全性就顯得尤為重要,如果不能保證傳輸數(shù)據(jù)的安全,一旦發(fā)生問題,就可能對(duì)相關(guān)的人力物力財(cái)力造成較大損失。

為此,我們?cè)谘芯糠治鯶igbee協(xié)議棧的安全架構(gòu)、密鑰管理和信任中心等內(nèi)容基礎(chǔ)上,提出了一種基于商業(yè)模式的信任中心下AES-128加密算法和解密算法。

一、無(wú)線糧情監(jiān)控系統(tǒng)Zigbee的無(wú)線通信網(wǎng)絡(luò)

無(wú)線糧情監(jiān)控系統(tǒng)示意如圖所示。

Zigbee是一種新興的短距離、低功耗、低數(shù)據(jù)速率、低成本、低復(fù)雜度的無(wú)線網(wǎng)絡(luò)技術(shù)。

網(wǎng)絡(luò)中包含3種類型的節(jié)點(diǎn),即協(xié)調(diào)器、路由器和終端設(shè)備。一個(gè)Zigbee網(wǎng)絡(luò)有且僅有一個(gè)協(xié)調(diào)器,該設(shè)備負(fù)責(zé)啟動(dòng)網(wǎng)絡(luò),配置網(wǎng)絡(luò)成員地址等。路由器主要實(shí)現(xiàn)擴(kuò)展網(wǎng)絡(luò)及路由消息的功能。終端設(shè)備一般作為網(wǎng)絡(luò)的邊緣設(shè)備。Zigbee支持星狀、樹狀和網(wǎng)狀3種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),如圖所示。

直接互連,由路由器中的路由表配合實(shí)現(xiàn)網(wǎng)狀路由。

二、無(wú)線糧情監(jiān)控系統(tǒng)Zigbee的協(xié)議安全

Zigbee技術(shù)提供的安全服務(wù)分別對(duì)應(yīng)在MAC層、NWK層和APL層上。安全協(xié)議的執(zhí)行要以整個(gè)協(xié)議棧正確的運(yùn)行而不遺漏任何一步為前提。各層都有可靠的安全傳輸機(jī)制用于傳輸數(shù)據(jù)幀。

1、MAC層安全管理

MAC層安全管理確保MAC命令幀、信標(biāo)幀和響應(yīng)幀的安全性。ZigBee使用受保護(hù)的MAC數(shù)據(jù)幀來(lái)確保一個(gè)單跳網(wǎng)絡(luò)中信息的傳輸,而多跳的網(wǎng)絡(luò)一般是通過上層的安全機(jī)制來(lái)保證。MAC層使用高級(jí)加密標(biāo)準(zhǔn)(AES)作為主要的密碼算法,并且基于AES算法生成一系列的安全機(jī)制,用來(lái)保證MAC層數(shù)據(jù)幀的一致性、機(jī)密性和真實(shí)性。當(dāng)MAC層傳輸(接收)一個(gè)使用安全機(jī)制的幀時(shí),首先檢查該幀的目標(biāo)地址(源地址),并檢索相對(duì)應(yīng)的密鑰進(jìn)行逆向處理。每一種安全機(jī)制都將對(duì)應(yīng)著一個(gè)密鑰,而在MAC層幀頭中有一位直接指明該幀是否使用安全機(jī)制。

2、NWK層安全管理

NWK層使用高級(jí)加密標(biāo)準(zhǔn)(AES)的CCM*操作模式來(lái)加密數(shù)據(jù)幀。CCM*模型是CCM模型的微小修改,它包括CCM模式的所有的功能,此外還提供了單獨(dú)的編碼及完整性檢測(cè)的功能。CCM模式是由計(jì)數(shù)器(Counter, CTR)模式和密碼塊鏈接消息鑒權(quán)代碼(Cipher Block Chaining-MAC,CBC-MAC)模式相結(jié)合構(gòu)成的。

3、APL層安全管理

APS層負(fù)責(zé)輸入幀、輸出幀的安全傳輸,密鑰的安全建立和管理,高層通過產(chǎn)生APS層原語(yǔ)控制密鑰管理。APSME提供服務(wù)允許2個(gè)設(shè)備互相建立一個(gè)鏈接密鑰,允許初始設(shè)備傳送密鑰,允許設(shè)備通知另一設(shè)備改變狀態(tài)。

4、密鑰管理

ZigBee技術(shù)在數(shù)據(jù)加密的過程中,主要使用3種密鑰,它們分別是主密鑰、鏈接密鑰和網(wǎng)絡(luò)密鑰。主密鑰可以在制造設(shè)備時(shí)由工廠安裝,也可以通過信任中心設(shè)置,或者是個(gè)人識(shí)別碼(PIN)、口令和密碼等。主密鑰是兩個(gè)設(shè)備長(zhǎng)期安全通信的基礎(chǔ),也可以作為一般的鏈接密鑰使用。鏈接密鑰是在一個(gè)網(wǎng)絡(luò)中被兩個(gè)相互鏈接的設(shè)備共享的,是兩個(gè)設(shè)備安全通信的基礎(chǔ),它可以通過主密鑰建立,也可以在制造設(shè)備時(shí)安裝。網(wǎng)絡(luò)密鑰可以通過信任中心設(shè)置,也可以在制造設(shè)備時(shí)安裝,它可應(yīng)用在數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和應(yīng)用層。

設(shè)備1是一個(gè)FFD,可存儲(chǔ)2個(gè)(活動(dòng)的和備用的)網(wǎng)絡(luò)密鑰,設(shè)備2是一個(gè)RFD,只能存儲(chǔ)一個(gè)網(wǎng)絡(luò)密鑰。在收到傳輸網(wǎng)絡(luò)密鑰命令后,設(shè)備1用新的網(wǎng)絡(luò)密鑰取代其備用網(wǎng)絡(luò)密鑰,而設(shè)備2必須用新的網(wǎng)絡(luò)密鑰取代其活動(dòng)的網(wǎng)絡(luò)密鑰。下一步,在收到更新網(wǎng)絡(luò)密鑰命令后,設(shè)備1使新的網(wǎng)絡(luò)密鑰成為其活動(dòng)的網(wǎng)絡(luò)密鑰,但是設(shè)備2只有一個(gè)活動(dòng)的網(wǎng)絡(luò)密鑰,因此它會(huì)忽略這條命令。

三、無(wú)線糧情監(jiān)控系統(tǒng)Zigbee的信任中心

信任中心是在網(wǎng)絡(luò)中分配安全密鑰的一種令人信任的設(shè)備,它允許設(shè)備加入網(wǎng)絡(luò),并分配密鑰,確保設(shè)備之間端到端的安全性,每一個(gè)安全的網(wǎng)絡(luò)只能有一個(gè)信任中心存在。在采用安全機(jī)制的網(wǎng)絡(luò)中,協(xié)調(diào)器可成為信任中心。

信任中心提供3種功能,信任管理的任務(wù)是負(fù)責(zé)對(duì)加入網(wǎng)絡(luò)的設(shè)備驗(yàn)證。網(wǎng)絡(luò)管理的任務(wù)是負(fù)責(zé)獲取和分配網(wǎng)絡(luò)鑰匙給設(shè)備。配置管理的任務(wù)是對(duì)其管理的設(shè)備綁定應(yīng)用程序,在兩設(shè)備之間實(shí)現(xiàn)端到端的安全傳輸。

信任中心有2種模式,住宅模式和商業(yè)模式。對(duì)于住宅模式,信任中心要維護(hù)一張關(guān)于網(wǎng)絡(luò)中所有設(shè)備和密鑰的清單,并采取措施對(duì)網(wǎng)絡(luò)訪問和密鑰進(jìn)行控制管理。對(duì)于商用模式,還要在每個(gè)設(shè)備中維護(hù)一個(gè)隨著密鑰的產(chǎn)生不斷變化的計(jì)數(shù)器,目的是保證密鑰的順序更新。從安全性上講,住宅模式提供一般的安全性,而商業(yè)模式提供較高的安全性及端對(duì)端的加密和解密。

在高安全級(jí)別的商用模式中,可以為設(shè)備預(yù)先裝載網(wǎng)絡(luò)信任中心的地址和初始的主密鑰。另外,如果應(yīng)用程序可以承受一小會(huì)兒的攻擊,主密鑰可以通過一個(gè)頻帶內(nèi)未加密的非安全密鑰傳輸發(fā)送。如果沒有預(yù)先設(shè)置信任中心,則通常默認(rèn)由協(xié)調(diào)器擔(dān)任或者由協(xié)調(diào)器指定某個(gè)設(shè)備作為信任中心。

四、無(wú)線糧情監(jiān)控系統(tǒng)Zigbee的AES高級(jí)加密標(biāo)準(zhǔn)

高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),也稱為Rijndael算法,其加密速度快,安全級(jí)別高,正日益成為加密各種形式的電子數(shù)據(jù)的實(shí)際標(biāo)準(zhǔn)。

AES算法基于排列和置換運(yùn)算,它使用了幾種不同的方法來(lái)執(zhí)行排列和置換運(yùn)算,是一個(gè)迭代的、對(duì)稱密鑰分組的加密算法。使用相同的密鑰加密和解密數(shù)據(jù),返回的加密數(shù)據(jù)的位數(shù)與輸入數(shù)據(jù)相同。迭代加密使用一個(gè)循環(huán)結(jié)構(gòu),在該循環(huán)中重復(fù)置換和替換輸入數(shù)據(jù)。AES加密具體流程如圖所示。

其C語(yǔ)言代碼實(shí)現(xiàn)描述如下:

void AES—ENCRYPT(AES_U8 *in, AES—U8 *key, AES_U8 *out)

{

AES—U8 state[Nb *4];//state數(shù)組

AES—U16 round;//加密輪數(shù)計(jì)數(shù)器

AES_U16 idx;//索引

//128位數(shù)據(jù)分組

for (idx=O;idx<Nb; idxH)

{

state[4*idx+0]=*in++;

state[4*idx+l]=*in++;

state[4*idx+2]=*in++;

state[4*idx+3]=*i11++;

//與擴(kuò)展密鑰進(jìn)行“異或”(輪密鑰加)

AddRoundKey((AES_U8 *)state, (AES_U8 *)key);

//Nr輪加密操作

for (round = i; round< (Nr - i); round++)

{

if (round l= Nr)

{

MixSubColumns(state); //列混沌

}

else

{

ShiftRows (state);//行位

}//End ofif

//與擴(kuò)展密鑰進(jìn)行“異或”(輪密鑰加)

AddRoundKey《AES_U8 *)state, (AES_U8 *)key+round*Nb);

) //End of for

//輸出128位加密后的數(shù)據(jù)

for (idx=0;idx< Nb; idx++) *outH=state[4*idx+0]; *outH=state[4*idx+l]; *outH=state[4*idx+2]; *outH2 state[4木idx+3]; } 其中,輸入?yún)?shù)字節(jié)數(shù)組key是AES-128加密的密鑰,輸入指針in指向AES-128的明文數(shù)據(jù)。輸出指針out指向的是加密后的密文。每個(gè)獨(dú)立的變換AddRoundKey()、ShiftRows、MixSubColumns()- -對(duì)狀態(tài)陣進(jìn)行處理。 Z-stack中采用的是128位的加密,首先需要一個(gè)128位的key,使用的key不同,加密后的數(shù)據(jù)也不同。在Z-stack中是通過類似f8wConfig.cfg文件中的-DDEFAULT KEY="{Ox02,Ox03, Ox05, Ox07, Ox09, OxOB, OxOD, OxOF, Ox00, Ox02, Ox04,Ox06,Ox08,OxOA,OxOC,OxOD>¨這種方式來(lái)定義key的。

在nwk_globals.c中,以下部分描述了安全全局變量:

//這是默認(rèn)的預(yù)配置密鑰

//把它修改為一個(gè)唯一的密鑰

CONST byte defaultKey[SEC_KEY_LEN]

{

#ifdefined( APP_TP)[l defined( APP_TP2)

//供一致性測(cè)試使用的密鑰

Ox00, Ox00, Ox00, Ox00, Ox00, Ox00, Ox00, Ox00, Ox89, Ox67, Ox45,Ox23, Ox01, OxEF, OxCD, OxAB

#else

//供內(nèi)部測(cè)試使用的密鑰

Ox00, Ox01, Ox02, Ox03, Ox04, Ox05, Ox06, Ox07, Ox08, Ox09,OxOA, OxOB, OxOC, OxOD, OxOE, OxOF

#endif

};

如果開啟了加密算法,網(wǎng)絡(luò)中所有的設(shè)備都需要開啟這個(gè)算法,并且各設(shè)備中的key要相同。因?yàn)闆]有加密的數(shù)據(jù)或者用不同key加密的數(shù)據(jù)是不認(rèn)識(shí)的,那樣會(huì)導(dǎo)致網(wǎng)絡(luò)不能正常通信。

在測(cè)試時(shí),分別對(duì)一個(gè)協(xié)調(diào)器和一個(gè)路由器進(jìn)行加密,然后組網(wǎng),使用協(xié)調(diào)器廣播數(shù)據(jù),它們是可以正常通信的。然后改變一下key,再打開一個(gè)路由器,這個(gè)key不同的路由器接收不到協(xié)調(diào)器廣播的數(shù)據(jù),路由器發(fā)送的數(shù)據(jù)協(xié)調(diào)器也無(wú)法接收。實(shí)驗(yàn)表明,采用這個(gè)加密算法提高了網(wǎng)絡(luò)的安全性,如果一個(gè)網(wǎng)絡(luò)正在運(yùn)行,新加入一個(gè)協(xié)調(diào)器或者路由或者終端對(duì)現(xiàn)有的網(wǎng)絡(luò)狀態(tài)不會(huì)造成影響。

小知識(shí)之糧情監(jiān)控系統(tǒng)

針對(duì)糧食在存儲(chǔ)過程中因未能及時(shí)監(jiān)控溫度、濕度等變化,從而導(dǎo)致糧食的發(fā)霉變質(zhì)的問題,設(shè)計(jì)實(shí)現(xiàn)集溫度、濕度檢測(cè)于一體的糧情監(jiān)控系統(tǒng),同時(shí)利用無(wú)線傳感器網(wǎng)絡(luò)實(shí)現(xiàn)系統(tǒng)的無(wú)線數(shù)據(jù)傳輸。