Zigbee平台上的RSA算法实现及性能分析

2014-10-21 14:22严疆文添艺
数字化用户 2014年20期
关键词:通信安全性能分析

严疆 文添艺

【摘 要】Zigbee新作为一种新兴的低成本,低功耗,近距离,双向通信网络技术,在物联网飞速发展的进程中得到了广泛的应用。随着应用范围越来越广泛,ZigBee网络的数据安全也变得原来越重要。目前,在ZigBee平台上,尚未有非对称加密算法的相关研究,本文给出了在cc2530平台上,实现RSA算法的过程,并给出了收集的相关运行数据。最后,本文给出了运行的结果和分析数据。

【关键词】通信安全 Zigbee 非对称加密算法 性能分析

引言

基于IEEE 802.15.4无线技术的ZigBee,被广泛应用于工业,家庭,医疗等对数据率和QoS要求不高,但覆盖面积较大的无线通信场合之中。随着基于ZigBee的应用实例越来越多,其数据的安全性也变得越来越重要。作为ZigBee实现方式之一的ZStack虽然自带了一套基于AES128加密解密算法,但在互联网应用之中,普遍认为非对称加密技术比对称加密算法更为优越。所以实现一套基于非对称秘钥的加密算法变得非常具有参考意义。

一、利用RSA算法的加密体系

在cc2530平台上,我们实现了简单的RSA加密解密算法,并根据对于该算法的统计信息,试探性地探讨在ZigBee系列的小型嵌入式芯片上,在不使用协处理器的情况下,RSA算法的性能。整个算法的实现是基于ZStack平台进行的。算法在Windows平台下开发后进行结果验证。最后移植到ZStack平台上进行相关数据的收集。

二、实现过程

为方便对多种加密长度运行结果进行采样,必须将算法实现在长度可变的整形数据结构基础之上。所以在实现过程中,建立了一个长度可变的简易整形数据结构。

由于硬件资源有限,必须在设计和实现上,权衡安全性和性能开销。开销主要分为两方面:占用的内存空间大小及运算时间。

三、内存占用的统计过程及方法

为统计使用内存,对内存分配及释放函数(ZStack上为osal_mem_alloc及osal_mem_free,在Windows下为malloc及free)进行封装。统计整个加密解密过程中,占用内存空间的高峰值,所分配的最大内存块等信息。在PC端运行算法时,由于统计结果小于ZStack预计的动态管理内存的范围32768Bytes[4],所以直接写入,试运行。但由于频繁地申请和释放用来保存临时结果的内存块,导致内存严重碎片化,致使ZStack无法分配出更大的内存空间而导致算法无法正常进行。所以更改方案为:将表示整数的内存块长度进行统一,并利用对象池技术来复用所分配到的内存块。

在优化的过程中,通过分析对象池所统计的信息,确定了算法分配的最多内存块数量。然后,通过将内存块声明为全局静态变量,来减少调用内存管理功能的开销,以此优化整体性能。最后采用覆盖方法,实现内存块的复用,减少内存空间的占用。

在分配静态内存空间时,需要重新调整XDATA布局。因为动态管理的内存空间是在编译时设定好的,无法在运行时改变 [4],所以在实现算法过程中,将ZStack代码的OnBoard.h文件中的INT_HEAP_LEN从3027改为2048。以此减少动态管理內存所占用的空间,以增加静态变量所占用空间。

四、运算时间统计过程及方法

运算占用时间,通过在运算前后获得系统时钟(在ZStack上为osal_getSystemClock),计算差值来获得。值得注意的是osal_getSystemClock本身仅仅返回uint32_t类型的, osal_systemClock数值,并不会自动更新系统时钟。所以在每次获得系统时钟之前,必须主动更新系统时钟(即主动调用osalTimeUpdate)。

对于MUC,RSA加密位数不宜过长。初次测试采取很小的64位加密。在节点A对明文进行加密,加密后,发送加密统计信息和密文到节点B。节点B进行解密并对解密过程进行统计,在核对解密结果是否和明文一致后,将核对结果和所有统计信息通过串口发送到PC进行数据处理。

五、算法伪代码

由于被加密的数据长度是不确定的,所以应先对被加密数据进行分块,不满一块的,填零补齐。然后对每块依次进行加密,返回加密数据。

六、生成秘钥

八、解密算法的伪代码

九、运行结果

在实现中,大数的长度是在宏中定义的,为44字节。整个实现中,一共使用了34个大数,总共占用的静态内存空间为34*sizeof(bn),即1496字节。

根据收集到的数据,可以计算出:平均加密耗时为1819.96ms,平均解密耗时为8371.66ms。

十、结论

根据初步收集的数据,在加密位数很低的情况下(相对于普遍使用的1024位加密解密而言),耗时过长。由于cc2530附带AES协处理器,所以,对比于AES128的100ms以下的耗时[1],RSA算法在没有协处理器的情况下,不宜在8051芯片上进行大量数值计算的应用意义并不是很大。虽然cc2530使用的是加强的8051微处理器,但在计算性能上仍有所欠缺。

在实际应用中,应对较短的数据(如秘钥)进行RSA加密解密操作。或在计算能力更强的芯片上运算,然后由cc2530进行数据传输。

加强ZigBee对于非对称加密算法支持程度,引入协处理器,将会称为一种较为可取的解决方案。

参考文献:

[1]黄太波,赵华伟,潘金秋,聂培尧,杨泽军.ZigBee协议栈的安全体系综述[J].山东科学,2012,25(2):59-66.

[2]谢琦,赵森,仇婷婷. ZigBee消息在应用层的安全机制研究[J].计算机应用与软件,2013,30(8):311-313.

[3]杨斌.基于AES的ZigBee标准安全机制分析[J].计算机工程与科学,2010,32(7):42-45.

[4]Texas Instruments, Inc.. Application Note: Heap Memory Management[Z]. San Diego, California USA:Texas Instruments, Inc.,2010.

猜你喜欢
通信安全性能分析
部队通信中的网络安全防护与管理
自动控制系统的优劣评价分析
网络安全态势量化评估模型
网络安全态势感知国内外研究现状
浅析电力系统通信安全措施
DCS控制系统在生产线物料运输工作的应用