《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于AES算法的ZigBee网络加密方法研究
基于AES算法的ZigBee网络加密方法研究
来源:电子技术应用2014年第4期
仇国庆,包俊杰,曹冬梅,刘 帅
(重庆邮电大学 智能仪器仪表及工业自动化与测试技术实验室,重庆400065)
摘要: 采用高级加密标准算法AES(Advanced Encryption Standard)的AES-CCM*安全模式对ZigBee网络数据进行加密处理,重新定义了报文服务类型(Message,MSG)的帧格式以提高网络传输数据净载荷量。理论分析及仿真结果表明AES-CCM*加密模式具有安全实用性。
中图分类号: TN918.4
文献标识码: A
文章编号: 0258-7998(2014)04-0056-03
AES algorithm-based encryption scheme for ZigBee networks
Qiu Guoqing,Bao Junjie,Cao Dongmei,Liu Shuai
Laboratory of Intelligent Instrument & Industrial Automation & Technology Laboratory,Chongqing University of Posts and Telecommunications,Chongqing 400065,China
Abstract: This paper proposes AES-CCM* security mode based on advanced encryption standard(AES) algorithm in the ZigBee networks. This paper also redefines the MSG frame type in order to improve the network transmission of payload data volume. Theoretical analysis and simulation results show the practicability of ZigBee security mechanism in AES-CCM* security mode.
Key words : ZigBee networks;AES algorithm;AES-CCM* mode;MSG frame type

    ZigBee是一种近距离、低速率、低功耗、低成本的无线网络技术[1],正是由于这些优点,基于ZigBee标准的无线传感器网络的应用越来越广泛。但由于ZigBee无线设备在存储能力、计算能力及电源供电时间方面的局限性,不仅使得原来在有线环境下的许多安全方案和安全技术不能直接应用于ZigBee网络环境中,而且对ZigBee网络安全服务过程与算法提出了较高要求。目前,ZigBee网络中采用的数据加密模式为128 bit的AES算法[2]。AES采用迭代型分组密码Rijndael[3]算法,具有优秀的性能及抗攻击能力,所以在受限工作环境中(如ZigBee网络环境)也有较好的加密/解密运算效率。
    基于AES算法的CCM*安全机制包括所有AES-CCM(计数器加密分组链接信息鉴别码模式)[4-5]的功能且是更轻量级的加密模式,既保证数据传输的机密性又保证数据完整性。因此,本文使用AES-CCM*模式进行数据加密,并重新定义了MSG的数据帧格式以提高加密效率和传输数据净载荷量。仿真结果表明,CCM*加密模式不仅可以降低系统开销、减小复杂度及缩短加密时间,同时还可以保证网络的安全有效性。
1 ZigBee网络安全特征及攻击类型
    ZigBee网络系统存在如数据窃听、篡改、伪造等安全威胁。研究发现,攻击者通过攻击通信节点或分配恶意节点伪装成合法节点进入网络来改变、丢弃或破坏数据包,最终致使整个ZigBee网络瘫痪。典型的内部网络攻击包括Sinkhole攻击、Sybil攻击、Wormholes攻击、Flooding攻击、应答欺骗等[6]。除此之外,安装在无人区的网络节点也可能会出现节点失效、损毁或被捕获的危险。总之,ZigBee网络中的安全功能可以概括为两方面内容:(1)保证合法使用者正常使用;(2)防止非法破坏,盗取信息。这就要求ZigBee安全机制能提供密钥建立、密钥传输、帧的保护和设备管理[7]等安全服务。
    ZigBee协议栈提供的安全服务有数据加密、完整性校检和鉴权等功能,可以施加在应用层、网络层或介质访问控制层上。任何安全的ZigBee网络都拥有一个指定的被称为信托中心(Trust Center)的设备,为其他设备分配链接密钥(Link Key)和网络密钥(Network Key)。链接密钥在两个设备之间共享,并用于单播或组播通信。网络密钥在整个网络中共享,当消息被广播时使用。
    ZigBee网络数据加密是发送者在数据发送之前通过加密算法对数据添加密钥,接收者在接收数据之后使用相同密钥解密对数据进行解密。可以看出,数据加密的关键就是对称密钥,即发送者和接收者必须具有完全相同的128 bit密钥才能进行正常通信。使用对称密钥进行数据加密的发送和接收过程[8]如图1所示。


    系统的实现可以分为两部分:
    (1)数据经过AES-CBC-MAC模式加密,如图2(a)所示。CBC-MAC模式被用于保护数据完整性,为了这个目的,数据帧的包头(Headers)和有效负载(Payload)必须经过CBC模式加密,生成的密文即为消息完整性代码MIC(Message Integrity Code)的值。操作时,首先将第一部分数据块与初始化向量进行“异或”运算,然后将其结果“异或”第二部分数据块,依次类推。最后生成MIC用以确保传输数据不被篡改。此操作过程的公式描述为:

 


    由此可见,AES-CCM*安全加密模式结合了计数器模式与密码分组连接模式两者各自的优点,并且有效缩短了ZigBee网络数据的加密时间。因此,AES-CCM*加密模式大大提高了单独使用AES算法的加密效率。
2.2 MSG命令帧类型
    ZigBee网络在应用程序框架AF(Application Framework)中提供发送和接收数据的功能。它包括两种数据服务类型:键值对服务类型KVP(Key Value Pair)和报文服务类型MSG。KVP服务主要用于传输一些较为简单的变量格式。由于ZigBee的很多应用领域中的消息较为复杂,并不适用于KVP格式,因此ZigBee协议规范定义了MSG服务类型。MSG服务对数据格式和内容不作要求,适合任何格式的数据传输,可以用于传送数据量大的消息。MSG帧类型如表1所示,其中传输字节计数和帧类型都为4 bit。如果帧类型值为0x02,则表明该框架为MSG命令。每个数据包含有事务序列号(8 bit)、事务长度(8 bit)和事务数据(bit可变)。

 

 

3 数据帧的安全处理过程
    如果密钥的位序列字段被设置为0,则数据帧未被保护。安全进程可描述为:数据帧首先进入AES-CBC-MAC模式以产生消息完整性代码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 
    };    //该数组被平均分为两组
    unsigned char ency_list [8];    //加密表
    unsigned char tag_out_0, grap_1, grap_2, tag_out;
其中,数据包“msg”包含被一分为二的32 bit的数组,“ency_list”是一个动态生成的8 bit的加密表,变量“tag_
out_0”是一个初始化向量,“tag_out”是一个可变的MSG信息整合码。
3.2 数据加密算法的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为加密轮数
    for(r=1; r < round; r++)
    {
       Byte-Sub();       //字节替换
       ShiftRow();       //行移位
       MixColumn();     //列混合
       KeyAddition();    //轮密钥加
    }
       Byte-Sub();   //最后一轮加密,没有列混合
       ShiftRow();
       KeyAddition();
       out[i][j] = dataout[4*j + i];    //输出密文
       aes_cnt++;
    }          
  (2)AES-CTR模式工作代码,用以进行数据加密。其中使用ctr_cbc_mac_b矩阵存储计数器值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 性能分析
    该方案不仅可以有效地降低系统开销及复杂度,同时还可以保证网络的安全性。每一个密文组与当前明文组及AES加密结果的相关性满足了数据机密性要求。密文与消息完整性代码的结合传输满足了数据完整性要求。因此,这种方法能够有效改变ZigBee安全机构的可行性和实用性,并有效地缩短ZigBee网络中数据加密的时间,可作为ZigBee网络安全的可实施方案。
    本文主要研究ZigBee网络安全机制中的数据安全加密算法,提出基于AES-CCM*加密模式的简化MSG数据帧格式,以缩短加密时间,增加ZigBee网络传输数据净载荷量。AES-CCM*是ZigBee标准采用的基于AES-128算法的操作模式,既能保证数据传输的机密性,又能提供数据完整性校验功能。仿真结果表明,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协议的扩展指令集实现[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] 谷利泽,杨义先.现代密码学教程[M].北京:北京邮电大学出版社,2009.
[10] YANG B,FU 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.