基于CC2530的Zig Bee模组的安全加密机制研究及实现

2021-06-11 05:39马学文
科学与信息化 2021年15期
关键词:应用层加密算法密钥

马学文

深圳市麦驰安防技术有限公司 广东 深圳 518126

引言

Zig Bee是一种近距离、低速率、低功耗、低成本的无线网络技术,目前基于Zig Bee标准的无线传感器网络的应用越来越广泛。但由于Zig Bee无线设备在存储能力、计算能力及电源供电时间方面的局限性,不仅使得原来在有线环境下的许多安全方案和安全技术不能直接应用于Zig Bee网络环境中,而且对Zig Bee网络安全服务过程与算法提出了更高的要求。

本文的相关研究是基于TI公司的CC2530芯片方案,CC2530是用于2.4-GHz的Zig Bee 应用的一个真正的片上系统(SoC)解决方案。它能够以非常低的材料成本构建强大的网络节点。CC2530 结合了TI公司的业界领先的Zig Bee协议栈(Z-Stack™),提供了一个强大和完整的Zig Bee 解决方案[1]。

其中,Z-Stack对Zig Bee网络提供了全面的安全支持,特别是CC2530 硬件支持 128bit 的AES加密算法 我们基于这个技术来论述在Zig Bee是如何实现加密从而提高网络的安全性。

1 和ZigBee传输安全加密相关的两个部分研究论述

1.1 Z-Stack安全架构简述

我们先看看Z-Stack的安全管理框图,如下:

图1 Z-Stack安全管理框图

如上图所示,Zig Bee的安全架构主要包含在协议栈两个层次的安全机制。NWK层和APS层,其各自负责安全传输他们各自的帧,APS子层提供了建立和维护安全关系的服务。我们重点关注NWK层和APS子层:

NWK层也就是俗称的网络层:主要包括了配置新设备,启动网络,执行加入网络,重新加入网络和离开网络的功能,提供寻址功能,邻居发现,路由发现,接收控制和路由等功能。其安全性方面主要是AES-CCM*来实现[2]。

APS也就是应用层的子层:主要是提供NWK和APL之间的接口,提供数据传输服务和提供安全服务,设备绑定和组管理。APS层基于链接密钥或网络密钥的帧安全性,负责向外传出的帧和安全的接收传入的帧以及安全的建立和管理加密密钥所需的处理步骤。此外,在应用层的上层的ZDO(Zig Bee Device Object,Zig Bee设备对象),ZDO负责初始化APS,NWK和安全服务提供商。

1.2 传输过程帧安全格式简述

了解完协议栈层面的安全机制后,我们知道任何通信数据都是以帧的格式来组织通信,Zig Bee也不例外,协议栈的每一层都有特定的帧结构,总计定义了信标帧,数据帧,确认帧和MAC命令帧四种,其目的就是实现在多噪音无线信道环境中的数据可靠传输。其通用结构一般分帧头(MAC Header(MHR))、负载(MAC Payload)和帧尾(MAC Footer(MRF))三部分组成,其中帧头是由帧控制信息、帧序列号和地址信息组成,负载是可变长度的内容,由帧类型决定,帧尾是16位的CRC校验序列[3]。

限于篇幅,在此以NWK层的帧控制域格式为例简单描述下帧的相关定义,例如NWK帧控制域如下,其由两个字节组成,包括帧类型、地址和其他控制标记:

其中安全域的标志位为1时,该帧就具有网络层的安全操作能力。在特定的安全等级上对NWK或APS帧使用安全机制,我们一般用到AES-CCM*操作模式,该模式是AES-CCM的拓展,提供认证和加密功能。Zig Bee还采用AES-CCM*来保证数据的完整性、可靠性、安全性。

0-1 2-5 6-7 8 9 10 11 12 13-15帧类型 协议版本 发现路由 多播标记 安全 源路由 目的地址 源地址 保留

发送端,将要发送的数据组织为128位的数据块,然后进行AES-CCM*的处理,得到的是加密的128位数据和一个生成的MIC(消息完整性代码,它是通过使用128位密钥加密IEEE MAC帧的部分而创建的)

接收端将收到的数据去除掉MIC,然后进行AES-CCM*处理,得到解密的128位数据,并且同步校验,来判断数据是否完整、正确[4]。

其示意图如下:

图2 AES-CCM*工作流程图

2 Zig Bee安全加密实现过程

接下来,我们结合上面的理论分析,以CC2530的Zig Bee模组为例讲述一下该安全机制的具体实现过程。

2.1 Zig Bee安全加密决策和密钥机制

实际应用中,因为Z-Stack已经在网络和应用层定义了安全管理。它包括针对关键进程建立和传输、设备管理和框架保护的方法。只要在Z-Stack开发中我们选择使用一个公共的 Zig Bee类,那么Z-Stack就已经为其应用做出了安全决策,因为在该类中已经对安全性进行了预定义,Zig Bee主要提供三个等级的安全模式:

2.1.1 非安全模式:为默认安全模式,即不采取任何安全服务,因此可能被窃听;

2.1.2 访问控制模式:通过访问控制列表(Access Control List,ACL,包含有允许接入的硬件设备MAC地址)限制非法节点获取数据;

2.1.3 安全模式:采用AES128位加密算法进行通讯加密,同时提供有0,16,32,64,128位的完整性校验。

我们只需要来判断:是否需要对数据帧的载荷进行加密,以及附着在数据帧末尾的认证码长度(8、16 或 64 位,等等)。我们还必须决定在哪个层上施加安全机制:网络层还是应用层?如果应用需要尽可能强大的安全保护,那么就在应用层保护它。但不论哪层的安全机制,都离不开密钥[5]。

密钥一般分为主密钥(两个设备之间长期安全性的基础,仅由APS使用)、网络密钥(用在广播通信,每个节点都要有网络密钥才能与其他节点安全通信。由NWK和Zig Bee的APL应用该密钥)、链接密钥(用在单播通信)。

2.2 Zig Bee安全加密中的密钥创建和具体实现

参照上图,AES-CCM*第一步是创建密钥,AES-CCM*是一个迭代的、对称密钥分组的密码,并且用 128 位(16 字节)分组加密和解密数据。同样在Z-Stack中采用的也是128位的加密,首先需要一个128位的Key,Key不同,加密出来的内容也不同,所以,需要在Z-Stack的配置文件f8wConfig.cfg创建密钥,通过DEFAULT_KEY="{0x01, 0x03, 0x05, 0x07, 0x09, 0x0B,0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08, 0x0A,0x0C, 0x0D}"这种方式来定义,用户只需要在此修改DEFAULT_KEY的值就可以定义自己使用的密钥[6]。

此外,在Z-Stack中已经实现了AES-CCM*加密算法,我们只需要开启这个服务就可以了,其开启可以简单地 两步完成:

首先,将f8wConfig.cfg文件中设置为DSECURE=1,这句话的意思是DSECURE=1,这个变量在协议栈中作为if语句的条件使用,条件为真的语句中就是开启加密算法的函数。所以要使用加密算法,第一步是要将这个参数设置为1。

其次,将ZGlobals.c中的uint8 zgPreConfigKeys = FLASE;

修改为:uint8 zgPreConfigKeys = TRUE;

如果这个值为真,那么默认的密钥必须在每个节点程序的配置文件中配置。如果这个值为假,那么默认的密钥只需配置到协调器设备当中,并且通过协调器节点发送给其他的节点[7]。

2.3 Zig Bee安全加密的结果验证

至此,整个加密过程结束,加密算法开启。 我们通过sniffer抓包分析加密前后的数据格式,抓包分析:加密前和加密后的数据对比图(上面为加密前下面为加密后)。

3 结束语

实际应用中Zig Bee的安全机制还有非常多的内容需要研究和关注,例如其还可以通过不同的模式进行不同的加密处理、通过不同的层进行加密等等,本文抛砖引玉论述了Zig Bee网络组网中的安全机制及一种AES加密算法实现方法,该算法具有明显的优势,一方面能够提高硬件的安全性,在数据大量涌入时,能够高速运行,另外一方面还能够保持软件的使用灵活性,尤其在维护方面,具有重要的实用价值和意义。

猜你喜欢
应用层加密算法密钥
加密文档排序中保序加密算法的最优化选取
幻中邂逅之金色密钥
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
DES加密算法的实现
基于整数矩阵乘法的图像加密算法
TPM 2.0密钥迁移协议研究
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
物联网技术在信息机房制冷系统中的应用