在数据传输的过程中,为了保证其安全性,我们引入了适合于智能无线传感器节点的加密算法——RC5加密算法,并将该算法移植到自行设计的硬件平台中,那么,我们今天就给大家讲一下RC5加密算法在智能无线传感器中是如何运用的。
一、RC5加密算法
在对现存的大量加密算法(DES,AES,RSA等)进行充分研究的基础之上,我们引入了非常适合于智能无线传感器节点的加密算法——RC5加密算法。RC5是一个由Ron Rvest【RIV B94,RIV B95]研制的对称加密算法,他在设计方面有其独有的特性:
RC5只使用在微处理器上常见的初等计算操作使其适合于硬件和软件实现;
RC5基本操作每次对数据的整个字进行,所以他是一种快速的加密算法;
一个字中的比特数是RC5中的一个参数,不同的字长会导致使用不同的算法,这使得他对不同字长的处理器有适应性:循环次数和密钥长度是RC5的可变参数,他们可以用来在更高的速度和更高的安全性之间做出折衷;
RC5具有移位位数依赖于数据的移位操作,加强了该算法对分析的抵抗力;
另外,RC5还具有结构简单易于实现和内存要求低的特点。
1、RC5加密算法的参数
RC5是一个可定制的加密算法,是可变参数的分组密码算法。之所以这么说是因为RC5实际上是由3个参数确定的一组加密算法。具体参数如表1所示。
因而,一个特定版本的Rcs被记为RC5 - w/r/b。例如,RC5 - 32/12/16具有32 b的字节(64的明文和密文分组),加密和解密算法包含12个循环,密钥长度为16 B(128 b)。对于要求不同、节点能力不同的应用可以选择不同的定制参数,非常方便灵活。下面我们就以RC5 - 32/10/5为例给大家详细介绍一下RC5加密算法。
2、密钥扩展
根据所设定的循环次数,RC5对秘密密钥进行一组复杂的操作后产生总共t个子密钥存储在数组S[0,1,…,t]以用于加密解密。每个循环使用2个子密钥,还有2个子密钥用于初始化,不属于任何循环的操作,这样就有t=2r+2。每个子密钥的长度是一个字长(w比特)。
这其中用到两个常量Pw和Qw,Pw和Qw大小是一个字长,定义如下:
其中e=2. 718281828459…(自然对数),φ=1.618033988749(黄金分割),Odd(动是离x最近的奇数。
使用可以选取的w值,这些常数如表2所示(十六进制表示):
密钥扩展算法的第一步是将秘密钥K[0,1,...,b—1]放入另一个数组L[0,1,...,c一1]中,其中c=[b/u],u=w/8,即L数组中的元素大小为uw位,将u个连续字节的密钥顺序放入L中,先放入L中元素的低字节,再放入其高字节,若L[c-1]的高字节未满,则以0填充。当b=0,c=0时,c=l,[L0]=0。
第二步是利用Pw/Qw将数组s初始化成一个固定的伪随机的数组,最后将用户密钥扩展到数组s中,密钥扩展算法如下所示:
输入:用户密钥易字节预放入数组L[0,1,...,c-1]循环次数r。
输出:w位的循环密钥S[0,1,…,2 r+2]
过程:
数组S初始化:
将L混入S中:
Rj vest[RIVE94]认为上述密钥扩展函数有一定的单向性:从S推出K并不容易。
3、加密
RC5使用3个基本操作(以及他们的逆操作):
加法:记为+,其逆操作为减法,记为—。
逐位异或:这个操作记为8。
循环左移:字x循环左移y比特被记为x<<<y。其逆操作把x循环右移y比特记为x>>>y。
RC5用2个w位的寄存器A和B存放输入的明文和输出的密文。将明文分成两个w位的两个部分存储在A,B中,这样加密算法的描述如下:
输入:明文存放在寄存器A,B中,循环次数厂,w位循环密钥S[0,1,...,2r+1]。
输出密文存放在寄存器A,B中过程:
4、解密
由于是对称加密,解密是加密算法的逆过程,很容易从加密算法中导出过程。
解密算法描述如下:
输入:密文存放在寄存器A,B中,循环次数r,w位循环密钥S[0,1,...,2r+1];
输出:明文存放在寄存器A,B中;
过程:
RC5的两个最显著的特征是算法的简单性和使用依赖于数据的循环移位。循环移位是算法仅有的非线性部分,Ri vest觉得因为循环移位的多少依赖于通过算法的数据,线性和差分密码分析应该更困难。RC5的加密轮数是可变的,在6轮后,经过线性分析已经是安全的了。我们推荐的加密轮数至少是1 2轮,最好是1 6轮。
二、RC5加密算法的实现
根据以上算法的伪代码描述,由于RC5加密算法运用的都是基本的计算操作,在C语言环境下是比较容易实现的,我们给出的以w= 32时的RC5加密算法的C语言源程序,因为这个程序出现很多问题不能够直接使用,几经修改与测试,最后又将该算法移植到Keil C环境下,从而达到了预期的效果。
三、硬件设计
我们设计的智能传感器节点具有典型的无线传感器网络节点的特征,具体实物如图1所示,整个节点由4部分组成:电源部分、处理器部分、传感器部分、无线传输部分。下面分别介绍各个组成部分。
1、电源部分
电源可以选择3V电池,本文做实验期间选用的是AC/DC电源模块,输入为220 V交流电,输出为33V直流稳压电。
2、处理器部分
采用STC12L E5410AD型号单片机作为核心处理器芯片。他是单时钟/机器周期的兼容8051内核单片机,是高速、低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。
运用查询方式按一定周期采集传感器测到的数据,进行加密/解密操作,通过SPI与nRF905进行数据和命令的通信。
3、传感器部分
实验板主要配备的传感器有DS18820温度传感器,人体热释红外传感器,离子式烟雾报警器。
4、无线传输部分
无线传输部分的核心器件为nRF905无线收发控制芯片,该芯片是挪威Nordc VLSI公司推出的单片射频收发器,工作电压为1.9~3 6 V,32引脚QFN封装(5×5 crim2),工作于433/ 868/ 915 M Hz三个ISM(工业、科学和医学)频段,频段之间的转换时间小于650μs。nRF905由频率合成器、接收解调器、功率放大器、晶体振荡器和调制器组成,不需外加滤波器,Shock Burst TX/ RX工作模式,自动处理字头和CRC(循环冗余码校验),使用SPI接口与微控制器通信,配置非常方便。4种工作模式可以根据需要,通过程序设定,操作简单、使用很方便。
四、RC5加密算法测试
在加密算法的实际测试过程中,我们使用了两块实验板,其中一块将传感器采集到的数据信息(明文)进行加密处理后(密文)通过nRF905发出去,另一块与PC机相连作为接收方将收到的密文进行解密处理,并将处理后的数据通过串口发送到PC机上。我们选取的RC5加密算法具体的版本为RC5 - 32/ 1015,即字的大小为32 b,循环轮数为1 0次,密钥K的字节个数为5个,这里选用的密钥为K[5]“y h kwo”。待加密的数据字节个数为8个。
实验数据如下:
小知识之RC5加密算法
RC5分组密码算法是1994由麻萨诸塞技术研究所的Ronald L. Rivest教授发明的,并由RSA实验室分析。它是参数可变的分组密码算法,三个可变的参数是:分组大小、密钥大小和加密轮数。在此算法中使用了三种运算:异或、加和循环。