微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 一种适用于RFID读写器的加密算法及其实现

一种适用于RFID读写器的加密算法及其实现

时间:12-10 来源:互联网 点击:

随着电子信息技术的发展,非接触式智能卡(如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表示进行加密,n0表示进行解密。在读卡器中,存放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||SNR4),取该结果的前6 byte为KeyA。有价值数据内容存在第Y个扇区内部,第Y个扇区的控制密码不固定,由第X个扇区的指定数据Data1经过XXTEA加密算法得来。具体过程如图3所示。系统的公钥Key_com是固定于阅读器内,虽然在公开信道上传递的信息中不包含此公钥的信息,但是还是有必要对其进行定期更新,才能确保安全性。
2)对存入Mifare 1卡中的数据进行的加解密:经过一次加密运算得到扇区Y的密码后,通过Authentication命令完成对卡的认证后,就可以读取存放于扇区Y的有价值数据。读取到的是已经经过XXTEA算法进行加密完的数据。所以,有必要对其进行解密,才能得到真正的数据。而数据写入的过程与之对应,需要先将要写入Y扇区的数据以Key3进行XXTEA加密运算,再将运算结果写人到扇区Y中。由XXTEA算法的对称密钥特性可知,密钥是与加密该数据的密钥相同,固定存放于读卡器的存储器之中。具体过程如图3所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top