RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

在數(shù)據(jù)傳輸?shù)倪^(guò)程中,為了保證其安全性,我們引入了適合于智能無(wú)線傳感器節(jié)點(diǎn)的加密算法——RC5加密算法,并將該算法移植到自行設(shè)計(jì)的硬件平臺(tái)中,那么,我們今天就給大家講一下RC5加密算法在智能無(wú)線傳感器中是如何運(yùn)用的。

一、RC5加密算法

在對(duì)現(xiàn)存的大量加密算法(DES,AES,RSA等)進(jìn)行充分研究的基礎(chǔ)之上,我們引入了非常適合于智能無(wú)線傳感器節(jié)點(diǎn)的加密算法——RC5加密算法。RC5是一個(gè)由Ron Rvest【RIV B94,RIV B95]研制的對(duì)稱加密算法,他在設(shè)計(jì)方面有其獨(dú)有的特性:

RC5只使用在微處理器上常見(jiàn)的初等計(jì)算操作使其適合于硬件和軟件實(shí)現(xiàn);

RC5基本操作每次對(duì)數(shù)據(jù)的整個(gè)字進(jìn)行,所以他是一種快速的加密算法;

一個(gè)字中的比特?cái)?shù)是RC5中的一個(gè)參數(shù),不同的字長(zhǎng)會(huì)導(dǎo)致使用不同的算法,這使得他對(duì)不同字長(zhǎng)的處理器有適應(yīng)性:循環(huán)次數(shù)和密鑰長(zhǎng)度是RC5的可變參數(shù),他們可以用來(lái)在更高的速度和更高的安全性之間做出折衷;

RC5具有移位位數(shù)依賴于數(shù)據(jù)的移位操作,加強(qiáng)了該算法對(duì)分析的抵抗力;

另外,RC5還具有結(jié)構(gòu)簡(jiǎn)單易于實(shí)現(xiàn)和內(nèi)存要求低的特點(diǎn)。

1、RC5加密算法的參數(shù)

RC5是一個(gè)可定制的加密算法,是可變參數(shù)的分組密碼算法。之所以這么說(shuō)是因?yàn)镽C5實(shí)際上是由3個(gè)參數(shù)確定的一組加密算法。具體參數(shù)如表1所示。

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

因而,一個(gè)特定版本的Rcs被記為RC5 - w/r/b。例如,RC5 - 32/12/16具有32 b的字節(jié)(64的明文和密文分組),加密和解密算法包含12個(gè)循環(huán),密鑰長(zhǎng)度為16 B(128 b)。對(duì)于要求不同、節(jié)點(diǎn)能力不同的應(yīng)用可以選擇不同的定制參數(shù),非常方便靈活。下面我們就以RC5 - 32/10/5為例給大家詳細(xì)介紹一下RC5加密算法。

2、密鑰擴(kuò)展

根據(jù)所設(shè)定的循環(huán)次數(shù),RC5對(duì)秘密密鑰進(jìn)行一組復(fù)雜的操作后產(chǎn)生總共t個(gè)子密鑰存儲(chǔ)在數(shù)組S[0,1,…,t]以用于加密解密。每個(gè)循環(huán)使用2個(gè)子密鑰,還有2個(gè)子密鑰用于初始化,不屬于任何循環(huán)的操作,這樣就有t=2r+2。每個(gè)子密鑰的長(zhǎng)度是一個(gè)字長(zhǎng)(w比特)。

這其中用到兩個(gè)常量Pw和Qw,Pw和Qw大小是一個(gè)字長(zhǎng),定義如下:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

其中e=2. 718281828459…(自然對(duì)數(shù)),φ=1.618033988749(黃金分割),Odd(動(dòng)是離x最近的奇數(shù)。

使用可以選取的w值,這些常數(shù)如表2所示(十六進(jìn)制表示):

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

密鑰擴(kuò)展算法的第一步是將秘密鑰K[0,1,...,b—1]放入另一個(gè)數(shù)組L[0,1,...,c一1]中,其中c=[b/u],u=w/8,即L數(shù)組中的元素大小為uw位,將u個(gè)連續(xù)字節(jié)的密鑰順序放入L中,先放入L中元素的低字節(jié),再放入其高字節(jié),若L[c-1]的高字節(jié)未滿,則以0填充。當(dāng)b=0,c=0時(shí),c=l,[L0]=0。

第二步是利用Pw/Qw將數(shù)組s初始化成一個(gè)固定的偽隨機(jī)的數(shù)組,最后將用戶密鑰擴(kuò)展到數(shù)組s中,密鑰擴(kuò)展算法如下所示:

輸入:用戶密鑰易字節(jié)預(yù)放入數(shù)組L[0,1,...,c-1]循環(huán)次數(shù)r。

輸出:w位的循環(huán)密鑰S[0,1,…,2 r+2]

過(guò)程:

數(shù)組S初始化:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

將L混入S中:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

Rj vest[RIVE94]認(rèn)為上述密鑰擴(kuò)展函數(shù)有一定的單向性:從S推出K并不容易。

3、加密

RC5使用3個(gè)基本操作(以及他們的逆操作):

加法:記為+,其逆操作為減法,記為—。

逐位異或:這個(gè)操作記為8。

循環(huán)左移:字x循環(huán)左移y比特被記為x<<<y。其逆操作把x循環(huán)右移y比特記為x>>>y。

RC5用2個(gè)w位的寄存器A和B存放輸入的明文和輸出的密文。將明文分成兩個(gè)w位的兩個(gè)部分存儲(chǔ)在A,B中,這樣加密算法的描述如下:

輸入:明文存放在寄存器A,B中,循環(huán)次數(shù)廠,w位循環(huán)密鑰S[0,1,...,2r+1]。

輸出密文存放在寄存器A,B中過(guò)程:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

4、解密

由于是對(duì)稱加密,解密是加密算法的逆過(guò)程,很容易從加密算法中導(dǎo)出過(guò)程。

解密算法描述如下:

輸入:密文存放在寄存器A,B中,循環(huán)次數(shù)r,w位循環(huán)密鑰S[0,1,...,2r+1];

輸出:明文存放在寄存器A,B中;

過(guò)程:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

 

RC5的兩個(gè)最顯著的特征是算法的簡(jiǎn)單性和使用依賴于數(shù)據(jù)的循環(huán)移位。循環(huán)移位是算法僅有的非線性部分,Ri vest覺(jué)得因?yàn)檠h(huán)移位的多少依賴于通過(guò)算法的數(shù)據(jù),線性和差分密碼分析應(yīng)該更困難。RC5的加密輪數(shù)是可變的,在6輪后,經(jīng)過(guò)線性分析已經(jīng)是安全的了。我們推薦的加密輪數(shù)至少是1 2輪,最好是1 6輪。

二、RC5加密算法的實(shí)現(xiàn)

根據(jù)以上算法的偽代碼描述,由于RC5加密算法運(yùn)用的都是基本的計(jì)算操作,在C語(yǔ)言環(huán)境下是比較容易實(shí)現(xiàn)的,我們給出的以w= 32時(shí)的RC5加密算法的C語(yǔ)言源程序,因?yàn)檫@個(gè)程序出現(xiàn)很多問(wèn)題不能夠直接使用,幾經(jīng)修改與測(cè)試,最后又將該算法移植到Keil C環(huán)境下,從而達(dá)到了預(yù)期的效果。

三、硬件設(shè)計(jì)

我們?cè)O(shè)計(jì)的智能傳感器節(jié)點(diǎn)具有典型的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的特征,具體實(shí)物如圖1所示,整個(gè)節(jié)點(diǎn)由4部分組成:電源部分、處理器部分、傳感器部分、無(wú)線傳輸部分。下面分別介紹各個(gè)組成部分。

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

1、電源部分

電源可以選擇3V電池,本文做實(shí)驗(yàn)期間選用的是AC/DC電源模塊,輸入為220 V交流電,輸出為33V直流穩(wěn)壓電。

2、處理器部分

采用STC12L E5410AD型號(hào)單片機(jī)作為核心處理器芯片。他是單時(shí)鐘/機(jī)器周期的兼容8051內(nèi)核單片機(jī),是高速、低功耗的新一代8051單片機(jī),全新的流水線/精簡(jiǎn)指令集結(jié)構(gòu),內(nèi)部集成MAX810專用復(fù)位電路。

運(yùn)用查詢方式按一定周期采集傳感器測(cè)到的數(shù)據(jù),進(jìn)行加密/解密操作,通過(guò)SPI與nRF905進(jìn)行數(shù)據(jù)和命令的通信。

3、傳感器部分

實(shí)驗(yàn)板主要配備的傳感器有DS18820溫度傳感器,人體熱釋紅外傳感器,離子式煙霧報(bào)警器。

4、無(wú)線傳輸部分

無(wú)線傳輸部分的核心器件為nRF905無(wú)線收發(fā)控制芯片,該芯片是挪威Nordc VLSI公司推出的單片射頻收發(fā)器,工作電壓為1.9~3 6 V,32引腳QFN封裝(5×5 crim2),工作于433/ 868/ 915 M Hz三個(gè)ISM(工業(yè)、科學(xué)和醫(yī)學(xué))頻段,頻段之間的轉(zhuǎn)換時(shí)間小于650μs。nRF905由頻率合成器、接收解調(diào)器、功率放大器、晶體振蕩器和調(diào)制器組成,不需外加濾波器,Shock Burst TX/ RX工作模式,自動(dòng)處理字頭和CRC(循環(huán)冗余碼校驗(yàn)),使用SPI接口與微控制器通信,配置非常方便。4種工作模式可以根據(jù)需要,通過(guò)程序設(shè)定,操作簡(jiǎn)單、使用很方便。

四、RC5加密算法測(cè)試

在加密算法的實(shí)際測(cè)試過(guò)程中,我們使用了兩塊實(shí)驗(yàn)板,其中一塊將傳感器采集到的數(shù)據(jù)信息(明文)進(jìn)行加密處理后(密文)通過(guò)nRF905發(fā)出去,另一塊與PC機(jī)相連作為接收方將收到的密文進(jìn)行解密處理,并將處理后的數(shù)據(jù)通過(guò)串口發(fā)送到PC機(jī)上。我們選取的RC5加密算法具體的版本為RC5 - 32/ 1015,即字的大小為32 b,循環(huán)輪數(shù)為1 0次,密鑰K的字節(jié)個(gè)數(shù)為5個(gè),這里選用的密鑰為K[5]“y h kwo”。待加密的數(shù)據(jù)字節(jié)個(gè)數(shù)為8個(gè)。

實(shí)驗(yàn)數(shù)據(jù)如下:

RC5加密算法在智能無(wú)線傳感器中的應(yīng)用

小知識(shí)之RC5加密算法

RC5分組密碼算法是1994由麻薩諸塞技術(shù)研究所的Ronald L. Rivest教授發(fā)明的,并由RSA實(shí)驗(yàn)室分析。它是參數(shù)可變的分組密碼算法,三個(gè)可變的參數(shù)是:分組大小、密鑰大小和加密輪數(shù)。在此算法中使用了三種運(yùn)算:異或、加和循環(huán)。