文獻標識碼: A
文章編號: 0258-7998(2014)04-0056-03
ZigBee是一種近距離、低速率、低功耗、低成本的無線網(wǎng)絡技術[1],正是由于這些優(yōu)點,基于ZigBee標準的無線傳感器網(wǎng)絡的應用越來越廣泛。但由于ZigBee無線設備在存儲能力、計算能力及電源供電時間方面的局限性,不僅使得原來在有線環(huán)境下的許多安全方案和安全技術不能直接應用于ZigBee網(wǎng)絡環(huán)境中,而且對ZigBee網(wǎng)絡安全服務過程與算法提出了較高要求。目前,ZigBee網(wǎng)絡中采用的數(shù)據(jù)加密模式為128 bit的AES算法[2]。AES采用迭代型分組密碼Rijndael[3]算法,具有優(yōu)秀的性能及抗攻擊能力,所以在受限工作環(huán)境中(如ZigBee網(wǎng)絡環(huán)境)也有較好的加密/解密運算效率。
基于AES算法的CCM*安全機制包括所有AES-CCM(計數(shù)器加密分組鏈接信息鑒別碼模式)[4-5]的功能且是更輕量級的加密模式,既保證數(shù)據(jù)傳輸?shù)臋C密性又保證數(shù)據(jù)完整性。因此,本文使用AES-CCM*模式進行數(shù)據(jù)加密,并重新定義了MSG的數(shù)據(jù)幀格式以提高加密效率和傳輸數(shù)據(jù)凈載荷量。仿真結果表明,CCM*加密模式不僅可以降低系統(tǒng)開銷、減小復雜度及縮短加密時間,同時還可以保證網(wǎng)絡的安全有效性。
1 ZigBee網(wǎng)絡安全特征及攻擊類型
ZigBee網(wǎng)絡系統(tǒng)存在如數(shù)據(jù)竊聽、篡改、偽造等安全威脅。研究發(fā)現(xiàn),攻擊者通過攻擊通信節(jié)點或分配惡意節(jié)點偽裝成合法節(jié)點進入網(wǎng)絡來改變、丟棄或破壞數(shù)據(jù)包,最終致使整個ZigBee網(wǎng)絡癱瘓。典型的內(nèi)部網(wǎng)絡攻擊包括Sinkhole攻擊、Sybil攻擊、Wormholes攻擊、Flooding攻擊、應答欺騙等[6]。除此之外,安裝在無人區(qū)的網(wǎng)絡節(jié)點也可能會出現(xiàn)節(jié)點失效、損毀或被捕獲的危險。總之,ZigBee網(wǎng)絡中的安全功能可以概括為兩方面內(nèi)容:(1)保證合法使用者正常使用;(2)防止非法破壞,盜取信息。這就要求ZigBee安全機制能提供密鑰建立、密鑰傳輸、幀的保護和設備管理[7]等安全服務。
ZigBee協(xié)議棧提供的安全服務有數(shù)據(jù)加密、完整性校檢和鑒權等功能,可以施加在應用層、網(wǎng)絡層或介質(zhì)訪問控制層上。任何安全的ZigBee網(wǎng)絡都擁有一個指定的被稱為信托中心(Trust Center)的設備,為其他設備分配鏈接密鑰(Link Key)和網(wǎng)絡密鑰(Network Key)。鏈接密鑰在兩個設備之間共享,并用于單播或組播通信。網(wǎng)絡密鑰在整個網(wǎng)絡中共享,當消息被廣播時使用。
ZigBee網(wǎng)絡數(shù)據(jù)加密是發(fā)送者在數(shù)據(jù)發(fā)送之前通過加密算法對數(shù)據(jù)添加密鑰,接收者在接收數(shù)據(jù)之后使用相同密鑰解密對數(shù)據(jù)進行解密??梢钥闯觯瑪?shù)據(jù)加密的關鍵就是對稱密鑰,即發(fā)送者和接收者必須具有完全相同的128 bit密鑰才能進行正常通信。使用對稱密鑰進行數(shù)據(jù)加密的發(fā)送和接收過程[8]如圖1所示。
系統(tǒng)的實現(xiàn)可以分為兩部分:
(1)數(shù)據(jù)經(jīng)過AES-CBC-MAC模式加密,如圖2(a)所示。CBC-MAC模式被用于保護數(shù)據(jù)完整性,為了這個目的,數(shù)據(jù)幀的包頭(Headers)和有效負載(Payload)必須經(jīng)過CBC模式加密,生成的密文即為消息完整性代碼MIC(Message Integrity Code)的值。操作時,首先將第一部分數(shù)據(jù)塊與初始化向量進行“異或”運算,然后將其結果“異或”第二部分數(shù)據(jù)塊,依次類推。最后生成MIC用以確保傳輸數(shù)據(jù)不被篡改。此操作過程的公式描述為:
由此可見,AES-CCM*安全加密模式結合了計數(shù)器模式與密碼分組連接模式兩者各自的優(yōu)點,并且有效縮短了ZigBee網(wǎng)絡數(shù)據(jù)的加密時間。因此,AES-CCM*加密模式大大提高了單獨使用AES算法的加密效率。
2.2 MSG命令幀類型
ZigBee網(wǎng)絡在應用程序框架AF(Application Framework)中提供發(fā)送和接收數(shù)據(jù)的功能。它包括兩種數(shù)據(jù)服務類型:鍵值對服務類型KVP(Key Value Pair)和報文服務類型MSG。KVP服務主要用于傳輸一些較為簡單的變量格式。由于ZigBee的很多應用領域中的消息較為復雜,并不適用于KVP格式,因此ZigBee協(xié)議規(guī)范定義了MSG服務類型。MSG服務對數(shù)據(jù)格式和內(nèi)容不作要求,適合任何格式的數(shù)據(jù)傳輸,可以用于傳送數(shù)據(jù)量大的消息。MSG幀類型如表1所示,其中傳輸字節(jié)計數(shù)和幀類型都為4 bit。如果幀類型值為0x02,則表明該框架為MSG命令。每個數(shù)據(jù)包含有事務序列號(8 bit)、事務長度(8 bit)和事務數(shù)據(jù)(bit可變)。
3 數(shù)據(jù)幀的安全處理過程
如果密鑰的位序列字段被設置為0,則數(shù)據(jù)幀未被保護。安全進程可描述為:數(shù)據(jù)幀首先進入AES-CBC-MAC模式以產(chǎn)生消息完整性代碼MIC;然后進入AES-CTR模式工作,將MIC值與有效負載進行加密處理;最后被加密的MIC與有效負載相結合構成完整的密文包。解密過程為加密過程的逆過程。
3.1 MSG變量的定義
unsigned char msg [32] =
{0xa6,0x62,0xd6,0x3d, 0x93,0x73,0xad,0x27,
0xad,0xc1,0x2b,0x3e, 0x3b,0x23,0x38,0xa5,
0xc3,0x18,0x45,0xa4, 0x8a,0x32,0x9d,0x35,
0xe9,0x4e,0xa2,0x93,0x9e,0xa3,0x11,0x57
}; //該數(shù)組被平均分為兩組
unsigned char ency_list [8]; //加密表
unsigned char tag_out_0, grap_1, grap_2, tag_out;
其中,數(shù)據(jù)包“msg”包含被一分為二的32 bit的數(shù)組,“ency_list”是一個動態(tài)生成的8 bit的加密表,變量“tag_
out_0”是一個初始化向量,“tag_out”是一個可變的MSG信息整合碼。
3.2 數(shù)據(jù)加密算法的C語言描述
(1)AES-CBC-MAC模式工作代碼,用以生成消息完整性代碼。其中“^”為異或運算,“%” 為互補操作。
//計算B[i]矩陣,即初始化向量
ctr_cbc_mac_b[i*16+j] = msg[(i-2)*16+j];
for(i=0; i<cnt; i++)
{
for(j=0; j<16; j++)
aes_in[j] = Bi[i*16+j] ^ aes_out[j];
}
while (t < (10+1)*4) //計算輪密鑰
{
tk[i][0] ^= S[ tk[(i+1)%4][4-1] ];
tk[i][j] ^= tk[i][j-1];
}
//AES輪加密,round為加密輪數(shù)
for(r=1; r < round; r++)
{
Byte-Sub(); //字節(jié)替換
ShiftRow(); //行移位
MixColumn(); //列混合
KeyAddition(); //輪密鑰加
}
Byte-Sub(); //最后一輪加密,沒有列混合
ShiftRow();
KeyAddition();
out[i][j] = dataout[4*j + i]; //輸出密文
aes_cnt++;
}
(2)AES-CTR模式工作代碼,用以進行數(shù)據(jù)加密。其中使用ctr_cbc_mac_b矩陣存儲計數(shù)器值Ai。
//A[i]標識符
ctr_cbc_mac_b[i*16+j] = nounceN[i-1];
for(i=0; i<cnt; i++)
{
for(j=0; j<16; j++)
aes_in[j] = Ai[i*16+j];
}
while (t < (10+1)*4) //計算輪密鑰
{
tk[i][0] ^= S[ tk[(i+1)%4][4-1] ];
tk[i][j] ^= tk[i][j-1];
}
{ AES輪加密 }
for(i=1; i<lm; i++) //msg 加密
{
Em_out[i] = msg[i] ^ Si[16+i];
Ciper_out[i] = Em_out[i];
}
for(i=0; i<M; i++) //MIC加密
{
U_out[i] = tag_out[i] ^ Si[i];
Ciper_out[lm+i] = U_out[i];
}
3.3 性能分析
該方案不僅可以有效地降低系統(tǒng)開銷及復雜度,同時還可以保證網(wǎng)絡的安全性。每一個密文組與當前明文組及AES加密結果的相關性滿足了數(shù)據(jù)機密性要求。密文與消息完整性代碼的結合傳輸滿足了數(shù)據(jù)完整性要求。因此,這種方法能夠有效改變ZigBee安全機構的可行性和實用性,并有效地縮短ZigBee網(wǎng)絡中數(shù)據(jù)加密的時間,可作為ZigBee網(wǎng)絡安全的可實施方案。
本文主要研究ZigBee網(wǎng)絡安全機制中的數(shù)據(jù)安全加密算法,提出基于AES-CCM*加密模式的簡化MSG數(shù)據(jù)幀格式,以縮短加密時間,增加ZigBee網(wǎng)絡傳輸數(shù)據(jù)凈載荷量。AES-CCM*是ZigBee標準采用的基于AES-128算法的操作模式,既能保證數(shù)據(jù)傳輸?shù)臋C密性,又能提供數(shù)據(jù)完整性校驗功能。仿真結果表明,AES-CCM*加密模式可以進一步改進ZigBee安全方面的性能,以保證ZigBee技術的生存空間。雖然此算法擁有較高的安全加密能力,但其仍然存在局限性。
參考文獻
[1] ZigBee Alliance.ZigBee specifications:ZigBee and ZigBee Pro[EB/OL].[2013-09-06].http://www.ZigBee.org,2010.
[2] National Institute of Standards and Technolo-gy(NIST).Advanced Encryption Standard(AES)[M].FIPS PUB 197,2001.
[3] DAEMEN J,RIJMEN V.The design of Rijndael:AES the advanced encryption standard[M].Springer,2002.
[4] YOO J H.Fast software implementation of AES-CCM on multiprocessors[M].Springer Berlin Heidelberg,2011.
[5] 封斌,齊德昱,韓海雯.IEEE 802.15.4中AES-CCM協(xié)議的擴展指令集實現(xiàn)[J].電子與信息學報,2013,35(2):335-340.
[6] VIDGREN N,HAATAJA K,PATINO A J L,et al.Security threats in ZigBee-enabled systems:vulnerability evaluation,practical experiments,countermeasures,and lessons learned[C]. System Sciences(HICSS),2013 46th Hawaii International. Conference on,IEEE,2013.
[7] ZigBee Alliance Board of Directors.Document 053474r17 ZigBee specification[S].2008.
[8] FARAHANI S.ZigBee wireless networks and transceivers[M]. Access Online via Elsevier,2011.
[9] 谷利澤,楊義先.現(xiàn)代密碼學教程[M].北京:北京郵電大學出版社,2009.
[10] YANG B,F(xiàn)U R Y,DIAO J Z,et al.Security mechanisms analysis for ZigBee standard based on AES-CCM*[J]. Advanced Materials Research,2012(468):1359-1362.
[11] RUSINEK D,KSIEZOPOLSKI B.Influence of CCM,CBCMAC,CTR and stand-alone encryption on the quality of transmitted data in the high-performance WSN[J].Imote2 Annales UMCS Information AIXI,2011(3):117-127.