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的应用范围推广到信息敏感的领域,包括金融交易、食品安全和公共安全等。