基于时间的RFID加密传输算法的研究

2016-01-08 06:18盛魁
关键词:安全加密

基于时间的RFID加密传输算法的研究

盛魁

(亳州职业技术学院信息工程系,安徽 亳州 236800)

摘要:无线射频识别系统由于其便捷、价廉的特点,发展十分迅速,在社会生活中起到越来越重要的作用,其信息安全问题受到越来越多的关注。针对传输过程中标签信息安全问题,提出一种基于时间的RFID加密传输算法,有效解决RFID标签信息的安全问题。理论分析和仿真结果表明该算法具有良好的稳定性、安全性和较高的传输效率及易于实现等优点。

关键词:RFID;传输协议;加密;安全

中图分类号:TP 305

作者简介:周芳(1985-),女,山西代县人,忻州师范学院计算机系教师。

Encrypted Transmission Algorithm of RFID Based on Time

SHENG Kui

(Department of Information Engineering,Bozhou Vocational and Technical College,Bozhou,Anhui 236800,China)

Abstract:Radio frequency identification(RFID)system is developing rapidly due to its characteristics of convenience and cheapness,playing a more and more important role in social life.The problem of its information security has attracted great attention.On the problem of security of tag information in the process of transmission,this paper presents an algorithm based on the RFID encryption transmission time,effectively solving the security problem of the RFID tag information.Theoretical analysis and simulation results show that the algorithm has good stability and security,high transmission efficiency and being easy to realize.

Key words:RFID;transfer protocol;encryption;security

1前言

射频识别(radio frequency identification,RFID)技术是一种利用无线电波来识别人或者物体的非接触式自动识别技术。与传统条码相比,RFID具有长距离读取、可程式化、可存放大量资料、可重复读写资料及在范围内可以同时读取大量标签等优势,已经广泛应用于工业生产和日常生活的各个方面,如,在物联网、商品追踪、供应链、物流等领域中有着广泛的应用[1,2]。由于RFID系统的通信数据处于开放的无线状态,外界容易对系统进行各种信息干扰及信息盗取,因此RFID系统的安全问题,成为当前IT行业研究的热点之一。

本文研究RFID系统中安全和隐私保护方法的基础上,提出一种基于时间的RFID加密传输算法。首先在标签(Tag)和阅读器(Reader)中建立一个特定公式产生的编码表,当传输发生时,先利用经过MD5演算法编码过的Unix Time来查询编码表,再送到Tag进行验证。Tag收到资料后会验证资料是否正确,当验证通过后Tag会与传输资料交互运算,最后送出加密后的信息。由于时间只会不断改变,所以可以确保每次参与运算的Unix Time变数都是唯一的,攻击者就没有办法通过分析传输封包的方式来监视传输内容,不能复制Tag,提高了RFID系统的安全性。

2相关技术研究

2.1 RFID技术

RFID系统主要包括电子标签(Tag)、阅读器((Reader)和后端数据库(Database)3部分[3,4],它的运行依赖于阅读器(Reader)与标签(Tag)之间的通信合作。标签具有唯一的识别码(Identification code,ID),被贴附到待识别的物体上;阅读器是读取电子标签内部信息和向电子标签内部写入信息的设备,可外接天线,用于发送和接收射频信号;后端数据库包括信息处理系统、中间件、数据库等,用以对阅读器读取的标签信息进行处理,其功能涉及到具体的系统应用,如实现信息加密或安全认证等。

RFID系统的工作原理是由内建天线的Reader发送特定频率的射频信号给Tag,当Tag收到射频信号之后就会驱动内建的硬体电路,将Tag内部的资料传回Reader,而Reader在收到资料之后再将资料传回Database做进一步处理与管理。

2.2 RRFID防碰撞技术

在RFID系统工作过程中,阅读器与标签通信方式为多路存取,并使用同一无线信道。当多个标签同时向阅读器发送数据信号时,由于标签彼此之间的信号相互干扰,导致阅读器不能正确识别标签,即产生数据碰撞,消耗了系统的时间和能量。解决数据碰撞的方法有频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)和空分多址(SDMA)4种。

目前,时分多址(TDMA)算法是RFID系统防碰撞问题的常用方法[6-7],在实际应用中TDMA防碰撞算法又可以分为两大类:一类是基于ALOHA的不确定型算法,包括纯ALOHA、时隙ALOHA、帧时隙ALOHA和动态帧时隙ALOHA算法等;另一类是基于树型的确定型算法包括纯分裂树算法、二进制树算法、二叉搜索树算法和查询树算法等。

3基于时间的RFID加密传输算法的分析

为了解决RFID系统的安全问题,需要为RFID系统构造一个可靠的安全机制,为了Reader与Tag间的传输数据和相互认证,所有的安全机制都需要建立在一个加密算法的基础之上。

3.1 MD5算法

MD5算法是在1992年由Ronald L.Rivest设计出来的一种加密算法,针对现有的MD2、MD3、MD4算法加强复杂度及不可逆性。任意长度的资料经过MD5算法处理后会输出一个128 bits的资料。采用MD5算法作为Unix Time时间编码的原因在于任何一个字节的变动都会让MD5算法输出的结果产生相当大的差别,举例而言,1293840000经过MD5算法编码过后会得到0x2289C5B863D8A731EDE6BBA454FB400A的结果,而只要稍稍改动一个字节,将前一个的Unix Time加上1 S,就会与刚刚的结果截然不同,变成了0xD68422765723F56B5E3B0B5A8F49999B。因为MD5算法有如此特性,所以采用MD5算法输出的结果直接当做字节来作为Unix Time的编码值。

3.2 编码表

在编码表的部分,首先在Reader与Tag内部必须预先记录同样的一组Base Code(B,B0~15)的组成字节为乱数排序,16进位0-F,从第1个字节到第16个字节均对应到编码表bit位置的0-F,在Reader与Tag中各自保存一份相同的Base Code。另外还要根据16进位的Tag ID长度k来决定一组相同长度的Cipher C,而C0~k-1的组成字节一样也是16进位0-F,同样采乱数产生并且储存于Reader及Tag之中。有了Base Code与Cipher,可以利用XOR运算来计算此编码表中任意位置的任意值。编码表产生方式的Pseudo Code如下所示:

Encoding Table=Arry[k,16];

for(i=0;i

for(j=0;j<16;j++){

Encoding Table=Arry[i,j]=Cipher.XOR BaseCode;

}

}

3.3 TBE算法

当传输开始时,Reader会先取得目前的Unix Time,然后通过MD5算法加密成一串32字节16进位的字符串。接着将Tag ID以16进位表示,得到Tag ID的字节长度为k,例如1byte的16进位Tag ID 0x3F,字节长度k就是2;回到刚刚产生的MD5字符串,从第一个字节开始攫取2 k个字节得到P0~2k-1。取得了P以后,将P从中间分成一半,前半段为P0P1……Pk-1,后半段为PkPk+1……P2k-1,然后先将前半段Pi的值逐字直接对应到编码表Ci⊕BPi的值,后半段Pi一样重复相同的步骤,经过编码表转换过后的值X0~k-1,然后Tag发送P0P1……Pk-1PkPk+1……P2k-1X0X1……Xk-1。

Tag在收到Reader传来的加密信息后,会对资料作验证以确保信息发送来源可信任,若验证通过[10],Tag会利用此加密信息的资料,进一步加入要传回的信息一并传送回Reader;若是验证失败,Tag会停止发送信息一段时间,避免攻击者采用穷举法恶意破解。

Tag会将收到的字符串平均分为3部分,第一部分为P0~k-1,第二部分为Pk~2k-1,第三部分X0~k-1。先将P0~k-1逐字直接对应到编码表Ci⊕BPi得到Q0Q1……Qk-1,再将Pk~2k-1逐字直接多余到编码表Ci⊕BPi得到QkQk+1……Q2k-1,最后将P0~k-1与Pk~2k-1做XOR运算得到X'0X'1……X'k-1,如果X0~k-1与X'0~k-1相等,则验证通过,否则验证失败。

验证成功后,Tag需要将自身ID0~k-1与P0~k-1相互进行XOR运算,运算过后得到IDX0~k-1,接着再与Pk~2k-1做XOR运算得到IDX'0~k-1,最后将IDX'0~k-1传回Reader。

Reader收到Tag回传的信息之后,便要对信息解码,首先将收到的信息IDX'0~k-1与先前传出的Pk~2k-1做XOR运算,解得到IDX0~k-1,然后再与P0~k-1做XOR运算,就能够得到真正的Tag ID值ID0~k-1。

Reader部分的演算法如下:

unixtime_dec is Unix Time.

unixtime_hex is Unix Time encrypted by MD5.

tagid_len is the length of Tag ID.

first_part is the first part of unixtime_hex encoding by Encoding Table.

second_part is the second part of unixtime_hex encoding by Encoding Table.

xored is the value which first_part XOR second_part.

data is the data which Reader send to Tag.

unixtime_dec=get_unixtime();

unixtime_hex=MD5(unixtime_dec).substring(0,tagid_len*2);

first_part=encoding(unixtime_hex.substring(0,tagid_len));

second_part=encoding(unixtime_hex.substring(tagid_len,tagid_len));

xored=converttoInt(first_part)XOR converttoInt(second_part);

data=unixtime_hex+xored.toHex();

data.sendtoTag();

Tag针对Reader信息做验证、并且将Tag ID加密后传回Reader的算法如下:

first_part is the first part of data sent by Reader.

second_part is the second part of data sent by Reader.

third_part is the third part of data sent by Reader.

xored is the value which first_part XOR second_part.

tagid is Tag ID.

data is the data which Tag send to Reader.

if encoding(first_part)XOR encoding(second_part)!=third_part

then end

else

data=tagid XOR encoding(first_part)XOR encoding(second_part);

end if

data.sendtoReader();

3.4 实验与分析

本文采用Matlab软件对该算法的加密生成过程进行了仿真,实验环境模拟单一Reader对Tag沟通的环境。为了显示实验过程中Reader与Tag是如何沟通的,本文假设传输发生的时间为2014年1月1日0时0分0秒,当时的Unix Time秒数为1293840000,经过MD5算法编码后的值为2289C5B863D8A731EDE6BBA454FB400A。

16进位Tag ID为0Xaf:

在这个实验中,需要传输的Tag ID长度k为2,因此先随机产生Cipher值为8B,Base Code值为6E48B9AC10D57F23,并建立以下编码表:

表1 16进位Tag ID长度为2的编码表

由于k=2,所以会取MD5加密后的Unix Time前2 k个字,也就是前4个字2289来参与接下来的编码运算。先将2289拆开,查询编码表后得知22会编码为CF,而89会编码为9B,然后计算CF⊕9B得到54,最后Reader传出228954给Tag。

当Tag收到Reader传来的信息之后,会将信息平均分为3部分22、89和54做运算,查询编码表后得知22会编码为CF,而89会编码为9B,而CF⊕9B会得到54跟Reader传来的信息互相吻合,因此此次传输会被Tag视为有效信息。

确认有效信息后,Tag会将自身ID与Reader传来的第一部分信息编码后的结果XOR,AF⊕CF得到60,然后再与第二部分编码后的结果XOR,60⊕9B得到FB,最后回传给Reader的值就是FB。

Reader收到FB这个信息后,便开始进行解码计算,先将FB与传出的第二部分信息编码后的结果9B做XOR计算,FB⊕9B得到60,再与第一部分信息编码后的结果CF做XOR运算,60⊕CF得到AF,AF这个值就是真正的Tag ID了。

在这个实验中,计算的是经过MD5加密过的Unix Time字节重复率,由于参与TBE算法的主要元素是MD5加密过后的Unix Time,因此得知编码过后Unix Time的重复频率相当重要,过高的重复频率将会让攻击者能够分析资料,进一步提高攻击成功的几率。第一个实验会将Unix Time以MD5加密,并比较前2、4、6、8字节的重复率,如表2所示。

表2 取固定字节计算MD5加密后Unix Time的字节重复率

在实验中,本文假设自2014年1月1日至2014年1月2日的86 400 s中,每1 s都有Reader与Tag之间的传输,并且透过经MD5加密后不同长度的MD5字节来计算重复率。可以看到在连续传输1 h之后,字数为4的Unix Time重复率大约在44%左右,但是到了6个字节,重复率就下降到了0.25%,到8个字节时就不再有重复的情况发生了。当取8个字节的Unix Time做计算时,代表了RFID环境中Tag ID的长度为2个bytes,但在实务应用上Tag ID还会更长。

4结束语

本文主要是利用Reader与Tag共同存有的一份能够产生编码表的杂凑函式及将时间转换成秒数,利用时间永远只会往前进的特性创造出几乎不会重复的乱数来保证Reader与Tag之间的传输。透过编码表,能够防止攻击者伪造Reader或是Tag来扰乱整个RFID系统,同时也能够将所有传输的信息透过编码表加密,增加了破解的困难,通过MD5加密过的Unix Time,能够使每次Reader与Tag传输的信息完全不相同,没有踪迹,攻击者就没有办法通过分析的方式得知Reader与Tag内的编码表,也无法利用监听到的封包信息做攻击。所以该方法可以有效防止传输封包被窃听、Tag被跟踪或被伪造,极大提高了网络的安全性。

参考文献:

[1]Zeydin P,Nihat I.Smart parking applications using RFID technology.RFID Eurasia,2007 1st Annual,2007:1-3.

[2]李敏波,金祖旭,陈晨.射频识别在物品跟踪与追溯系统中的应用.计算机集成制造系统,2010,16(01):202-208.

[3]单承赣,单玉峰,姚磊,等.射频识别(RFID)原理与应用.北京:电子工业出版社,2008.

[4]高飞,薛艳明,王爱华.物联网核心技术-RFID原理与应用.北京:人民邮电出版社,2011.

[5]王铖岑.RFID系统防碰撞算法.计算机技术与发展,2010,20(01):29-35.

[6]颜汇.基于RFID系统的防碰撞算法研究.南京:南京理工大学,2013.

[7]Zhu L,Yum T S P.A critical survey and analysis of RFID anti-collision mechanisms.IEEE Commun Magaz,2011,49(05):214-221.

[8]高磊,盛焕烨.RFID应用系统中的Tag-reader安全通信协议.计算机工程,2007,33(20):128-129.

[9]曹峥,杨林,谢辉.RFID安全防碰撞搜索协议的设计与分析.计算机科学,2014,41(04):116-119.

[10]潘再兴.面向物联网的RFID系统防碰撞技术研究.吉林:吉林大学,2014.

[责任编辑:刘守义英文编辑:刘彦哲]

猜你喜欢
安全加密
一种新型离散忆阻混沌系统及其图像加密应用
一种基于熵的混沌加密小波变换水印算法
认证加密的研究进展
基于ECC加密的电子商务系统