发明内容
本发明的目的是为了解决现有的RFID系统的认证办法存在的上述问题,提出了一种RFID安全认证方法。
本发明的技术方案为:一种RFID安全认证方法,包括如下步骤:
S1.读写器随机产生两个正整数r1与R1,并将其存储在私有存储空间,其中,r1∈[1,M],R1∈(0,N1),M为待选取的加密算法的数目,所述的加密算法与M个数字一一对应,N1为预先设定的值,根据r1特定的取值选择对应的加密算法E1对R1和加密算法E1对应的密钥序列K1组成的数据流(K1,R1)进行加密,加密后的结果为E1(K1,R1),同时读写器不停对外发出读写请求命令,读写器检测到标签以后将r1,R1以及对加密后的结果E1(K1,R1)发送给检测到的标签;
S2.被检测到的标签收到读写器发来的r1、R1以及E1(K1,R1)之后,将R1与E1(K1,R1)分别存储在私有存储空间,根据r1选取存储在标签加密算法库中相对应的加密算法E1’,并使用加密算法E1’对R1和与算法E1’对应的密钥序列K1’组成的数据流(K1’,R1)进行加密,加密后的结果为E1’(K1’,R1),然后将其与E1(K1,R1)进行比较,如果二者完全一致,通过第一轮安全认证,否则终止本次会话;
S3.第一轮安全认证通过之后,标签将其ID号ID1使用加密算法E1进行加密,并将加密之后的结果E1(K1,ID1)发送给读写器;
S4.读写器收到标签发来的E1(K1,ID1)之后,将其与r1一起发送给后台数据库服务器;
S5.后台数据库服务器收到读写器发来的r1和E1(K1,ID1)之后,根据参数r1选择对应的解密算法对数据包E1(K1,ID1)进行解密,并将解密得到的ID号在后台数据库中进行验证,如果找到与其完全匹配的ID号则通过第二轮安全认证,否则终止本次会话;
S6.第二轮安全认证通过之后,后台数据库服务器随机产生两个正整数r2和R2,其中r2∈[1,M],R2∈(0,N2),N2为预先设定的值,根据r2的值选择对应的加密算法E2,并用其对参数R2和加密算法E2对应的密钥序列K2组成的数据流(K2,R2)进行加密得到E2(K2,R2),同时再次使用加密算法E2对标签ID号进行加密,得到E2(K2,ID1)然后将r2以及加密后的结果E2(K2,R2)和E2(K2,ID1)发送给读写器;
S7.读写器收到后台数据库服务器发来的r2和E2(K2,R2)和E2(K2,ID1)之后,通过参数r2选择相应的解密算法对数据包E2(K2,R2)进行解密得到R2,然后将R1与R2作为输入参数,使用存储在读写器中的密钥生成算法L生成密钥L(R1,R2),并将其赋值给Key作为本次通信的动态密钥,最后使用加密算法E2对Key进行加密得到E2(K2,Key),并将其与r2、R1、R2和E2(K2,ID1)一起发送给标签;
S8.标签收到读写器发来的r2、R1、R2、E2(K2,Key)和E2(K2,ID1)之后,通过r2选择对应的解密算法分别对数据包E2(K2,Key)和E2(K2,ID1)进行解密得到Key和ID1,紧接着将Key存放在动态密钥区,并将解密得到的ID1与标签自身的ID号进行比对,如果比对结果不一致则立即终止本次会话,否则将R1与R2作为输入参数,使用存储在标签中的密钥生成算法L’生成密钥L’(R1,R2),并将其赋值给Key’;最后将解密得到Key与Key’进行比对,如果Key与Key’完全一致则通过第三轮安全认证,否则终止本次会话。
本发明的有益效果:本发明的方法引入动态选取加密算法的思想,即采用几种具有一定安全性且硬件上容易实现的加密算法作为算法库,每次通过随机函数选取其中一种进行加密和解密;通过引入动态选取加密算法和动态密钥的思想,同时采用双密钥三重认证的机制,具有较高的安全性能,既能保证硬件上的可实现性,又能通过算法的多样性从而极大地提高系统的安全性。本发明的方法的实现不需要配置很高的硬件资源作支撑,但却可以提供较高的安全性,解决了在目前广泛使用的低成本标签上不能运行高安全性加密算法的问题。本方法可以有效抵制假冒、跟踪、重放等多种安全攻击,为RFID技术的应用和实施提供了高度的安全性和可靠性,较好地解决了RFID系统安全性不足和其他安全方案所要求算法的配置过高的问题,使得采用低成本的被动标签实现较高安全性的数据通信成为可能。
具体实施方式
下面结合附图和具体实施例对本发明做进一步的说明。
本发明的目的在于提供一种轻量级高安全性的RFID认证方法。与一般只采用固定单一的算法不同,其特征是以TEA、DES、IDEA和HIGHT等轻量级加密算法为基础,引入动态选取加密算法的思想,每一次都是从这4种加密算法中随机选择一种来用于本次数据加密。由于每一次用于数据加密的算法都是事先无法预知的,外部很难寻找到其规律并将其破解,因此本方法具有较高的安全性能。
本发明的RFID安全认证方法的原理示意图如图1所示,具体过程如下:
(1)Reader随机产生两个正整数r1与R1,并将其存储在私有存储空间,其中,r1∈[1,M],R1∈(0,N1)。根据r1特定的取值选择对应的加密算法E1对R1和加密算法E1对应的对应密钥序列K1组成的数据流(K1,R1)进行加密,同时Reader不停对外发出读写请求命令,Reader检测到标签以后将r1、R1以及对R1加密后的结果E1(K1,R1)发送给检测到的标签Tag1。
在本实施例中,M=4,r1的四个可能的取值分别代表TEA、DES、IDEA和HIGHT四种加密算法中的一种,即TEA、DES、IDEA和HIGHT分别与1、2、3和4一一对应,这四种加密算法构成了Reader的加密算法库。选择这四种加密算法的目的在于,这几种是数据块长度相同,实现方法很相似的轻量级加密算法,这样可以减少硬件实现的复杂度。在这里N1=1000,N1的取值需要足够大,这个范围足够大才可能确保相同两次认证产生相同随机数的概率足够小,这样才能有效降低算法被破译的几率。
第一轮安全认证:
(2)Tag1收到Reader发来的r1、R1以及E1(K1,R1)之后,将R1与E1(K1,R1)分别存储在私有存储空间,根据r1选取相应的加密算法E1’,并使用加密算法E1’对R1和与算法E1’对应的密钥序列K1’组成的数据流(K1’,R1)进行加密,加密后的结果为E1’(K1’,R1),然后将其与E1(K1,R1)进行比较,如果二者完全一致,就可以通过第一轮安全认证。否则,立即终止本次会话。如果有非法读写器想要读取标签中的内容,它就必须具有和标签相同的加密算法库,而且算法库中不同算法的组织方式以及相应的密钥都必须保持高度一致,否则就无法提供正确的密钥K1,从而就不能通过第一轮安全认证而直接被屏蔽掉,因而可以有效地阻止外部非法访问,避免重要信息被非法窃取。
第二轮安全认证:
(3)第一轮安全认证通过之后,Tag1将其ID号ID1使用加密算法E1进行加密,并将加密之后的结果E1(K1,ID1)发送给Reader。
(4)Reader收到Tag1发来的E1(K1,ID1)之后,再将其与r1一起发送给后台数据库DataBase。
(5)DataBase收到Reader发来的r1和E1(K1,ID1)之后,根据参数r1选择相应的解密算法对数据包E1(K1,ID1)进行解密,并将解密得到的ID1在后台数据库中进行验证,如果找到与其完全匹配的ID号则通过第二轮安全认证。否则,发送结束命令给Reader要求其立即终止本次会话。由于每一个标签都有一个唯一的ID号,并且每一个标签的ID号在生产的过程中已经确定,以后不能够再做修改。因此,非法标签的ID号将无法通过后台数据库的验证,从而可以有效避免欺骗等安全攻击。
第三轮安全认证:
(6)第二轮安全认证通过之后,DataBase随机产生两个正整数r2和R2,其中r2∈[1,4],R2∈(0,N2)。在这里N2=1000,r2同r1一样用于选择四种加密算法中的一种,根据r2的值选择对应的加密算法E2,并用其对参数R2和加密算法E2对应的对应密钥序列K2组成的数据流(K2,R2)进行加密得到E2(K2,R2),同时再次使用加密算法E2对标签ID号进行加密,得到E2(K2,ID1)然后将r2以及加密后的结果E2(K2,R2)和E2(K2,ID1)发送给读写器;
(7)Reader收到DataBase发来的r2、E2(K2,R2)和E2(K2,ID1)之后,通过参数r2选择相应的解密算法对数据包E2(K2,R2)进行解密得到R2,然后把R1与R2作为输入参数,使用密钥生成算法L生成密钥L(R1,R2),并将其赋值给Key作为本次通信的动态密钥;最后使用加密算法E2对Key进行加密得到E2(K2,Key),并将其与r2、R1、R2和E2(K2,ID1)一起发送给Tag1。
这里,在通过第二轮安全认证后,还包括将用于数据加密的私有密钥Key设为L(R1,R2)的步骤。三轮安全认证全部通过以后,标签就会将其存储区中的数据发送给读写器,但却是以密文的形式发送的,这里生成的私有密钥Key(也就是所谓的动态密钥)就是用于为认证通过后数据传输加密的,这里使用的加密算法与认证过程中使用的加密算法是不一样的,由于这一部分不是本发明的主要内容,在此不再详细说明。
(8)Tag1收到Reader发来的r2、R1、R2、E2(K2,Key)和E2(K2,ID1)之后,根据r2选择对应的解密算法分别对数据包E2(K2,Key)和E2(K2,ID1)进行解密得到Key和ID1,紧接着将Key存放在动态密钥区,并将解密得到的ID1与标签自身的ID号进行比对,如果比对结果不一致则立即终止本次会话,否则将R1与R2作为输入参数,使用存放在标签中的密钥生成算法L’生成密钥L’(R1,R2),并将其赋值给Key’;最后将解密得到Key与Key’进行比对,如果二者完全一致则通过第三轮安全认证,并发送Ready命令给Reader,告诉它本次会话认证通过,接下来可以发送数据,否则,立即终止本次会话。第三轮安全认证通过后,Tag1就会发送相关命令给Reader,告诉Reader认证通过,并允许对Tag1内的数据进行访问。
由于动态密钥生成算法存放在私有只读存储空间,而且读写器与标签之间只传送入口参数R1和R2,动态密钥的生成和比较都在芯片和读写器内部完成,外部无法访问也无权修改,因而具有很高的保密性。非法标签和读写装置将不能够根据两个参数计算出正确的动态密钥Key,从而无法通过第三轮安全认证,所以本发明的方法可以有效抵制多种安全攻击。
下面对在上述方法实现的过程中出现的一些变量、名词和符号做以下解释和说明:
Reader:RFID读写器。
Tag1:一个RFID标签。
DataBase:与RFID读写器相连接的后台数据库服务器。
ID1:RFID标签Tag1的唯一标识序列号。
r1,r2:用于选择加密算法的参数。
R1,R2:用于生成动态密钥Key的参数。
E1,E2:E1与E2表示参数r1与r2分别对应的加密算法,都属于TEA、DES、IDEA和HIGHT四种算法中的一种。
E1(K1,R1):指使用加密算法E1以及加密算法E1对应的密钥序列K1对参数R1进行加密,其他的类似,就不再逐一说明。
E2(K2,Key):指使用加密算法E2以及加密算法E2对应的密钥序列K2对动态密钥Key进行加密,其他的类似,就不再逐一说明。
Key,Key’:Key和Key’分别表示在Reader和Tag1中使用密钥生成算法生成的动态密钥密钥。
L,L’:L和L’分别表示在Reader和Tag1中存储的密钥生成算法。
L(R1,R2):指在Reader中以R1和R2作为输入,使用密钥生成算法得到的动态密钥。
L’(R1,R2):指在Tag中以R1和R2作为输入,使用密钥生成算法得到的动态密钥。
Ready:安全认证通过后Tag1发给Reader的指示命令,用于告诉Reader本次安全认证通过,接下来可以安全地传输数据。
私有存储空间:有特定结构和访问权限的存储区域,多用于保存一些重要数据,防止非法被窃取和篡改,通常应用于标签或读写器中,在标签中一般需要读写器靠的很近以提供足够高的能量以开启访问开关,访问开关打开以后还需要输入正确的访问口令才可以成功访问,该技术结合软件和硬件的特性来实现高强度的保密性。
在本实施例中,Reader可以是具有RFID读写功能的移动终端,Reader可以通过WIFi网络或者GSM无线网络与后台数据库通信。
本发明的方法主要具有如下几个优点:
1.读写器、标签以及后台数据库中都分别存放着四种轻量级数据加密算法,分别是TEA、DES、IDEA和HIGHT,每一种加密算法都有自己独特的密钥,根据参数输入来决定选用哪一种加密算法。每一次安全认证时,r1与r2都是随机产生的,因而对应的加解密算法的选取也是不可预测的,相邻两次很难出现一样的情况,这样就可以有效抵御重放攻击;读写器和标签中的加密算法以及对应的密钥都存放在私有只读存储空间,外部无权访问也不能够修改,这样就在一定程度上增加了系统的安全性。
2.本发明还采用双密钥三重认证机制,分别采用公用密钥、随机私用密钥以及标签的ID来进行安全认证,只要有一次认证不通过就终止本次通信,这样就增大了外部攻击实施的难度,增强了系统的安全性能。
3.本方法引入存储空间加密等级划分思想,对一些重要的算法存放在私有只读存储空间中,只有芯片内部有权访问,而且无权修改。对一些比较重要的数据存放在私有存储空间内,这些数据只有近距离通信才能修改,而且外部必须提供正确的访问口令才能被修改,这样就充分利用软件和硬件的特性来提高系统安全性能,极大地降低了重要数据被窃取和篡改的风险。
4.在本发明的实施过程中,标签只需要存储四种轻量级安全算法作为算法库,每一次加密或者解密的时候都是从中随机选取一种,在同一时间标签中执行的任然是硬件上容易实现的简单安全算法,这样对标签的硬件配置并没有提出很高的要求,从而使标签成本仍然可以保持在比较低的水平,使得在低配置硬件平台上实现高度的保密性和安全性成为了可能。
5.本方法采用的四种加密算法密文长度均为64位,这就为认证过程中数据格式的统一性提供了保证;而且算法的实现都涉及到多轮移位和替换,因此在硬件方面可以共用部分模块,用同一器件实现,节省了空间和成本,满足Tag的硬件需求;此外,四种加密算法TEA、DES、IDEA和HIGHT都属于轻量级加密算法,都具有显著的快速运行性,所以尽管是采用了四种算法混合,但加解密时的速度足以满足RFID系统快速运行的要求,因此本方法不仅具有很强的安全性而且还具有很高的执行效率。
6.标签匿名性并能抵御跟踪:在Reader向DataBase发出以安全算法E1加密的标签序列号ID1以后,DataBase不是沿用安全算法E1,而是重新选取安全算法E2和随机数R2进行加密,Reader收到DataBase发来的r2和E2(K2,R2)之后也是采用新的安全算法对生成的动态密钥加密,并将加密之后的结果发给Tag1,这样就使得每一次会话都充满随机性。因此,即使攻击方能够成功的对Tag1进行探测,其作用也仅限于某一轮会话,无法从中解出ID号和密钥值,也无法对下一轮会话的内容进行判断和加密和解密,因此能够有效的保证标签的匿名性,攻击方无法获知标签的ID号,也就无法对其进行追踪。
7.数据的可靠性和认证的安全性:Tag1向Reader发出的加密序列,是依靠存储在该Tag中唯一的密钥和本身独一无二的ID号,依靠多种可靠的加密算法计算出来的,即使攻击方在信息传输过程中将其捕获,也无法从含有两个不确定的序列中找出正确的密钥和ID号,也无法判断出当时交互所采用的具体算法,只有含有所有有效信息的合法DataBase才能在收到Tag1发来的加密序列后,使用与Tag1一致的安全算法进行解密来得到正确的ID号,并且通过随机选取另一种安全算法E2及其对应的密钥K2进行加密回复,从而保证了数据的可靠性和认证的安全性。
8.前向安全性并能有效抵御重放攻击:在本方法中,假设攻击方已经捕获了Tag1,并成功获知其ID号以及安全算法E1和E2及其对应的密钥K1和K2,但每一次会话还涉及随机数R1、R2以及根据R1和R2生成的动态密钥Key,攻击方并不能准确获知过去所进行的会话中所采用的随机数,也就无法对其进行重现,也无法利用其进行有效的攻击,从而保证了RFID系统的前向安全性和较好的抵御了重放攻击。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。