RFID读写器系统结构
RFID读写器/读写模块的核心部份包括一个控制用微处理器和一个RFID基站芯片。它能独立完成对符合ISO 15693标准卡片的所有操作,它还具有与用户主系统的串行通信能力,可根据用户系统的命令完成对RFID卡的读写操作,并将所得数据返回给用户系统,这个用户系统可以是一个主控板或PC机。
RFID读写模块提供多种通信方式与用户系统进行通信,极大地方便了用户的联接。
RFID读写器/读写模块硬件主要由中央微处理器(89C52)、RFID基站芯片、高频电路、模块天线、RS232通信电路、复位电路、LED状态显示和喇叭驱动电路等组成。
其硬件结构图为:
RFID读写器功能说明
RFID系列读写器/模块可以完成对符合ISO 15693标准的卡片的所有读写操作,其操作由连接的主控系统发出的读写命令控制完成,具体可以完成如下功能:
·模块操作:连接模块,读取模块号,
·卡片呼叫:防冲突处理,读取卡片序列号
·卡片静止:使卡片处于静止状态
·读取卡片系统信息
·选择卡片
·复位卡片
·读取卡片数据
·写卡片数据
·锁定卡片数据
·写卡片的AFI
·锁定卡片的AFI
·写卡片的DSFID
·锁定卡片的DSFID
·读取卡片的“写锁定”位信息
RFID读写器系统组成
RFID读写器系统包括如下部份:
·RFID读写器/读写模块 一台
·RFID 读写天线 一块(如为读写器,则封装在读写器之中)
·与PC机连接的通信电缆 一条
·RFID读写器开发资料及应用程序 一册(电子文档,包含在CD中)
RFID读写器系统安装
RFID读写器既可以直接连接到用户PC机上,作为一个RFID卡读写器独立使用,又可以作为用
户应用系统的一部份,嵌入到用户系统中。
以下步骤说明RFID读写器连接到用户PC机上的步骤,用户可以应用本系统提供的测试软件对
卡片进行操作,以熟悉对RFID卡的使用。
关闭计算机电源,拔出键盘;
将键盘的电缆接头连接到RFID读写器通信电缆的相应座中;
RFID读写器的电源是直接取自计算机键盘,对于无法与本电缆插头配套的计算机,用户可自行加入+5V 电源至RFID读写器/模块中。
将RFID读写器的通信电缆插入到PC机键盘座中,连接好RS232串行插口;
连接RFID通信电缆和RFID读写模块;(RFID读写器的电缆线出厂时己连好)
将RFID天线与RFID模块连接好;
打开PC机,将RFID系统盘拷贝到计算机中,安装系统软件;
运行RFID读写器测试程序,执行系统提供的各个测试命令。
RFID读写器发送电路原理设计
1. 读写器发送电路的架构
无线电规范对读写器发射频谱的要求十分严格。另外,协议要求的发送的调制方式、调制深度等决定了读写器发送电路的架构。
图1是用于幅度调制的发射电路架构,包括本地振荡(LO)、可变增益放大器(VGA)、功率放大器(PA)以及天线(Anta),其中LO提供了发射电路的载波频率,输入数据通过VGA来调制发射载波,从而产生幅度调制信号。PA则把输出功率进行放大,然后通过天线把信号发送出去。这种发射电路的结构比较简单,采用的硬件比较少。
图1 简单幅度调制发射机架构
图2是用于幅度和相位调制的发射电路架构,基于混频器的发射电路架构。与图1所示的发射电路架构相比,图2能够满足ISO18000-6对调制方式和调制深度的要求。
图2 幅度调制发射机架构
2. 读写器发送电路的原理图设计
根据ISO18000-6标准规范,设计RFID读写器发送设各的系统方案如图3所示。
图3 915MHz RFID读写器发送设备系统结构
发送设备系统主要分为控制单元和射频接口两部分。
控制单元:由MCU和编码电路构成。控制单元担负着以下任务:(1)与应用系统软件PC端进行通信并执行应用系统软件发来的命令。(2)控制与电子标签的通信过程。(3)信号的编码与解码。(4)执行反碰撞算法。(5)对电子标签与读写器之间要传送的数据进行加密和解密。(6)进行读写器和电子标签之间的身份验证。为了完成这些复杂的任务以及后续的信号处理,MCU拟采用ARM7系列32位微处理器。
射频接口:完成对编码信号的调制、滤波、放大。
在REID读写器中,发送设备不是独立的,而是与接收设备配合工作的。环形器的作用是实现信号发送与接收的时分复用。
915MHz REID读写器发送设各的工作过程如下。
(1)MCU微控制器接收计算机发来的操作命令,启动应用程序,将相应的操作命令发送到编解码电路。
(2)编码电路根据MCU微控制器传来的操作命令进行编码,形成基带信号送到整形电路和限幅电路进行处理,处理后的信号送往混频器(上变频)。
(3)混频器将编码电路送来的基带信号与本振信号混频,进行ASk调制。
(4)调制信号经带通滤波器滤波,再经功率放大器放大,再送往天线放大器放大,形成最终的发射信号。
(5)环形器将天线放大器电路传来的功率信号送至天线,发给电子标签。
其中,频率合成器产生的本振信号的频率控制、调制深度设定、功率放大器增益控制均由MCU微控制器根据通信协议以及系统工作条件等因素完成。
一种适用于RFID读写器的加密算法及其实现
随着电子信息技术的发展,非接触式智能卡(如RFID卡)已经在我们的生活中随处可见。与传统的接触式卡、磁卡相比,利用射频识别技术开发的非接触式智能卡,具有高度安全保密性和使用简单等特点,正逐渐取代传统的接触式IC卡,成为智能卡领域的新潮流。然而,由于RFID系统的数据交流处于开放的无线状态,外界容易对系统实施各种信息干扰及信息盗取。
鉴于RFID系统数据交流开放的安全性问题,人们做了大量的研究工作,提出了很多安全机制设计方面的建议。在硬件物理实现方面,提出了如:Kill标签、法拉第电罩等方法;在软件系统实现方面,提出了一系列安全协议,如:Hash锁、随机Hash锁、Hash链以及改进的随机Hash锁等方法,而这些方法都是针对RFID标签芯片的制造而设计的,对已经大规模投入使用的智能卡而言,不具备实用性。目前在智能卡应用系统中,比较流行采用兼容ISO/IEC 14443协议的Mifare 1系列智能卡,其本身具有3次相互认证的安全协议,但其安全性仍有漏洞,有必要在它安全机制基础上,引入一种数据加密算法来进一步保障数据通信的安全性。TEA算法作为一种微型的加密算法,有着简单、快速、安全性能好等特点,在电子产品开发领域得到了广泛应用,例如PDA数据加密、嵌入式通信加密等领域,而TEA算法的广泛使用导致产生了针对该算法的攻击方法,所以有必要对TEA算法进行改进。
为此,本文提出利用TEA算法的改进算法——xxTEA算法进行RFID读卡器与RFID智能卡之间密码数据的动态变换,来解决RFID系统应用中所面对的非法读取、窃听、伪装哄骗及重放等攻击。
1 XXTEA加密算法原理
在数据的加解密领域,算法分为对称密钥与非对称密钥2种。对称密钥与非对称密钥由于各自特点,所应用的领域不尽相同。对称密钥加密算法由于其速度快,一般用于整体数据的加密,而非对称密钥加密算法的安全性能佳,在数字签名领域得到广泛应用。
TEA算法是由剑桥大学计算机实验室的Wheeler DJ和Needham RM于1994年提出,以加密解密速度快,实现简单着称。TEA算法每一次可以操作64 bit(8 byte),采用128 bit(16 byte)作为Key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。为解决TEA算法密钥表攻击的问题,TEA算法先后经历了几次改进,从XTEA到Block TEA,直至最新的XXTEAt。XTEA也称作TEAN,它使用与TEA相同的简单运算,但4个子密钥采取不正规的方式进行混合以阻止密钥表攻击。Block TEA算法可以对32位的任意整数倍长度的变量块进行加解密的操作,该算法将XTEA轮循函数依次应用于块中的每个字,并且将它附加于被应用字的邻字。XXTEA使用跟Block TEA相似的结构,但在处理块中每个字时利用了相邻字,且用拥有2个输入量的MX函数代替了XTEA轮循函数,这一改变对算法的实现速度影响不大,但提高了算法的抗攻击能力,使得对6轮加密次数的算法攻击所需的明文数量由234上升为280,基本排除了暴力攻击的可能性。本文描述的安全机制所采用的加密算法就是TEA算法中安全性能最佳的改进版本——XXTEA算法。
XXTEA的加密轮次视数据长度而定,最少为6轮,最多为32轮,对应的每轮加密过程如图1所示。图1中,+表示求和,+表示异或,>>表示右移,<<表示左移。
从图1中可知,XXTEA算法主要包括加法、移位和异或等运算,它的结构非常简单,只需要执行加法、异或和寄存的硬件即可,且软件实现的代码十分短小,具有可移植性,非常适合嵌入式系统应用。由于XXTEA算法的以上优点,它可以很好地应用于嵌入式RFID系统当中。
2 RFID读写器安全机制
整个RFID安全系统的整体框图如图2所示。本系统的设计思路是由上位PC机通过RS232接口控制MCU操作射频模块对Mifare 1智能卡进行操作,再将Mifare 1卡中的数据由MCU进行加解密运算,返回到主机的数据管理系统中。在此过程中,假设MCU与PC后台数据管理系统的数据通信是安全的,那么会被进行安全攻击的环节,就是智能卡与读写器之间的数据交换。
Mifare 1智能卡的安全性能在最新的电子攻击面前变得日益单薄,且已被来自荷兰的黑客破译,考虑到硬件升级的成本过大,本系统在不对基于Mifare 1的RFID读卡器硬件系统进行变动的情况下,将XXTEA算法嵌入到RFID系统中,设置特定的安全机制,以保护RFID数据的安全性。
整个系统的安全机制分为3个部分:对Mifare 1卡的读取控制密码的加密;对存入Mifare 1卡中的数据进行的加密;动态地进行密码的变换。加解密的函数设为:
Data[_]new=BTEA(Key,n,Data) (1)
式中:Data[_]new为数据进行加解密运算后的值;Key为XXTEA算法的密钥;n是数据组元的个数且用以控制加解密运算,n>0表示进行加密,n<0表示进行解密。在读卡器中,存放4个Key,Key[_]com,Key1,Key2,Key3分别作为4次XXTEA加解密运算的密钥,其中Key[_]com,Key1,Key2,Key3为16 byte且是固定在阅读器的存储器之中。根据XXTEA算法的输入与输出数据的长度限制,以2个长整数组元为加解密运算的基本单位,规定控制扇区读写权限的密钥KeyA,KeyB为XXTEA加密结果的前6个字节。
1)对Mifare 1卡的控制密码的加密:由Mifare 1卡特性决定,任意扇区X与扇区Y的控制密码是完全不相关的。由于Mifare 1卡的独一无二的序列号特性,在整个系统所能支持的智能卡系列中,可以规定第X个扇区的密码是与该智能卡的序列号相关的。序列号的得到不需要经历密码校验,而只要对智能卡的操作到达防冲突这一步骤,就可以得到。序列号SNR为4字节,而每次XXTEA加密的数组都为2个长整型的数组,可以规定x扇区的密码为2个SNR所构成的1个64 bit数组与公用密钥Key[_]com进行加密的结果。假设扇区X的密钥为KeyA,则KeyA为BTEA(Key[_]com,2,SNR||SNR<<4),取该结果的前6 byte为KeyA。有价值数据内容存在第Y个扇区内部,第Y个扇区的控制密码不固定,由第X个扇区的指定数据Data1经过XXTEA加密算法得来。具体过程如图3所示。系统的公钥Key[_]com是固定于阅读器内,虽然在公开信道上传递的信息中不包含此公钥的信息,但是还是有必要对其进行定期更新,才能确保安全性。
2)对存入Mifare 1卡中的数据进行的加解密:经过一次加密运算得到扇区Y的密码后,通过Authentication命令完成对卡的认证后,就可以读取存放于扇区Y的有价值数据。读取到的是已经经过XXTEA算法进行加密完的数据。所以,有必要对其进行解密,才能得到真正的数据。而数据写入的过程与之对应,需要先将要写入Y扇区的数据以Key3进行XXTEA加密运算,再将运算结果写人到扇区Y中。由XXTEA算法的对称密钥特性可知,密钥是与加密该数据的密钥相同,固定存放于读卡器的存储器之中。具体过程如图3所示。
3)动态地进行密码的变换:在每次读写操作完智能卡之后,进行智能卡扇区Y密钥的动态变换。将扇区X内的数据,用Key2进行再次的XXTEA算法加密,变化得到一个新的数据。该新的数据写入扇区X。而对此Data[_]new进行Key1的加密运算得到扇区Y的新密钥,在已经验证扇IXY的密钥的情况下,更改此密钥为Data[_]new)iS对应的密钥,以便下次再次使用。具体如图4所示。
3 RFID应用系统实现
系统的硬件电路由NXP的专用读写芯片MF RC500和STC单片机STC89C52以及外部的天线滤波和接收回路组成,如图5所示。MF RC500读写芯片完全兼容于ISO/IEC 14443协议,且与MCU的接口多样化,特别适合于嵌入式系统应用。
MCU除了操作读卡芯片进行常规的智能卡操作,也实现了系统所需的加密算法的嵌入,读取或写人数据的加解密运算都通过MCU进行。
MF RC500对Mifare 1卡的操作过程依照ISO14443的协议规定,按先后的顺序为寻卡、防冲突、选择、密钥校验和之后的读写和增减值操作。MF RC500对Mifare 1卡的操作都是通过写入Transceive命令至Regcommand寄存器,再将操作Mifare 1卡的命令以数据的形式存放于Regfifodata寄存器中,设置完收发时钟的长度以后,就等待智能卡对读写命令的反应。在足够长的时间段之内,Mifare 1卡传输的数据就会在Regfifodata里面出现,此时,先读取Regfifolength以确定数据的长度,根据长度写循环程序获取智能卡返回的信息。图6给出了系统上位机的界面。通过上位机,在正常操作智能卡的基础上,进行动态更新密码的操作,以及隐藏在读写操作之下的加解密过程。
系统进行加密的试验如下:
1)控制密码的得到:假设系统的公钥Key[_]com为{0x00112233,0x44556677,0x8899AABB,0xCCDDEEFF),对于智能卡1,SNR为FDC71188,根据系统的规定,扇区X的密码为KeyA与BTEA(Key[_]tom,2,SNR||SNR<<4)相关,结果为{oxD3A7BA0l,0x525F18FC}。取结果的前6个字节作为扇区X的控制密钥,即KeyA为D3A7BA0152。由此密码得到了扇区X的Data1,假设Datal为{0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77}。由此Data1和存储于MCU中的Key1通过XXTEA加密过程BTEA(key1,2,data1),可以得到KeyB。假设Key1为{0x01234567,0x89ABCDEF,0x01234567,0x89ABCDEF},通过加密,得到了{0x4CEFBEC2,0xCSCBACE0},取前6 byte,则KeyB为4CEFBEC2C8。使用该密钥获得对扇区Y的控制权,就可以对价值数据进行读写操作,这样也避免了未经授权的读卡器想要非法对智能卡进行操作的情况。
2)敏感数据的加解密:在Mifare 1智能卡中,数据是以块为单位来存储的,一块16 byte,可以由XXTEA直接运算得出加密结果。设需要写入的数据为{0x01,0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89,0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xF0},而密钥为Key3,设为{0xFEDCBA98,0x76543210,0xFEDCBA98,0x76543210},通过该密钥进行XXTEA加密,得到加密后的数据为{0xA2,0xC6,0x6C,0x1A,0x3E,0x98,0x5E,0x48,0x7D,0xDA,0x68,0xC3,0x0C,0x23,0x1D,0x24}。将该数据写入智能卡中,读取时,对它用Key3作为密钥进行解密,得到所需数据。利用此种方法,使得明文在开放的传播空间内得到保护,保护了信息的安全。
3)密码的动态变换:在进行完读写操作以后,为了保障智能卡的安全,要立刻进行密码的变换。Data1经过与key2的XXTEA运算后,变换为Data1[_]new。由此Datal[_]new推算出KeyB[_]new。假设Key2为{0xFEDCBA98,0x76543210,0x01234567,0x89ABCDEF},则Data1[_]new为{0x23FF28AA,0xA7684804},KeyB[_]new为3C7099D07F。此密码在智能卡中必须同步更新,防止出现读卡器未能取得智能卡扇区Y的读写控制权的问题。
通过对实验结果的分析可以看出,XXTEA所占用的代码空间为2 968 byte,占用内存空间124 byte,在24 MHz外部晶振条件下,加密速率为(3.26±0.1)Kbps(p=0.01),解密速率为(3.30±0.1)Kbps(p=0.01),抗攻击能力强,暂时没有一种可行的方法对该算法进行有效攻击,而且防冲突性能好,微小的数据改变将导致结果的重大变化。控制密钥动态变换的根密钥和智能卡数据的加密密钥不经过明文传输,杜绝了RFID数据通信中出现的非法读取和监听等威胁。
4 结论
在XXTEA加密算法基础上的新RFID系统安全方案,具有安全性高、低成本和兼容性高的特点。实验结果表明,新方案能有效地提高RFID数据传输的安全性,可将RFID的应用范围推广到信息敏感的领域,包括金融交易、食品安全和公共安全等。