一种双层/双向认证的随机Hash锁RFID安全协议
无线射频识别技术RFID(Radio Frequency Identification)或称电子标签技术是一种利用射频通信实现的非接触式双向通信技术,以达到自动识别目标对象并获取相关数据的目的,具有精度高、适应环境能力强、抗干扰性强、操作快捷等许多优点。它已经逐渐应用于物流、防伪、门禁、电子钱包、高速公路收费等领域。RFID 系统一般由RFID标签(Tag)、RFID 标签读写器以及RFID应用数据库(DB)三大部分构成,如图1所示。其中,RFID标签与读写器之间是射频无线通信,而读写器与应用数据库之间则是通过互联网进行的有线(也可以是无线)通信。
RFID系统要想得到普遍应用,特别是在有严格安全要求的防伪领域得到广泛应用,还需要解决RFID的低成本与安全性这一对矛盾。当前RFID的安全机制主要有物理机制与密码机制两大类。由于物理安全机制受到成本或法律因素等极大制约,使密码安全机制越来越受到人们的青睐。在通用安全应用中,具有比较成熟和先进的加解密算法如DES、 AES、RSA、椭圆曲线密码等算法,可以较好地抵制非法读取、位置跟踪、拒绝服务、伪装哄骗、重放攻击等安全威胁,具有较好的安全可靠性。但实现AES等算法需要大约20 000个~30 000个逻辑门,实现RSA、椭圆曲线密码等公钥密码算法则需要更多的逻辑门。而电子标签受到低成本(约为0.05美元)限制,通常只能拥有大约5 000个~10 000个逻辑门,而且这些逻辑门主要用于实现一些最基本的标签功能,仅剩少许可用于实现安全功能。因此,RFID 安全性的难点在于,RFID标签的有限计算资源难以实现复杂的加解密算法。目前关于RFID的密码安全方案主要有:(1)基于Hash函数的Hash-lock协议[1-2]、随机化Hash-lock协议[3]、Hash链协议[4]、ID变化协议、数字图书馆RFID协议、分布式RFID协议、LCAP协议[5];(2)基于TEA算法的的TEA协议[6]、XXTEA协议;(3)基于公钥的再加密方案[5]。其中,基于Hash函数的方案因其实现电路简单尤其成为研究的热点。参考文献[5]对基于Hash函数的各类算法比较分析后认为:它们或者不能满足较高的安全要求,或者不能满足低成本的实用性要求。参考文献[7]提出了一种轻量级RFID安全协议,并进行了改进。参考文献[8]提出了一种Key值更新的随机Hash锁协议,对随机Hash锁协议进行了改进。参考文献[9]、[10]也都基于Hash锁协议提出了一些新的改进。
本文在分析几种随机Hash锁协议的基础上提出了一种将双重认证与双向认证相结合的随机Hash锁的RFID安全协议,将原始ID经加密后写入标签中,原始ID的加解密都只在后台服务器中完成,而在RFID标签和阅读器中出现的ID(称为认证ID),都是经过加密后的数据,即使出现了安全攻击,也不会获得真正的ID,杜绝了产品被假冒的可能。
1 Hash锁相关协议分析
在分析RFID系统的安全性时,通常作如下假定:
(1)标签与读写器之间的通信信道是不安全的,而标签读写器与后端数据库之间的通信信道则是安全的。
(2)协议所使用的密码构造,如伪随机生成函数、加密体制、签名算法、MAC 机制以及哈希函数等,都是安全的。
Hash锁相关协议均采用Hash函数作为电子标签的访问锁,只有通过认证的阅读器才能取得对标签有效数据进行访问(解锁),否则标签处于锁定状态。使用的Hash函数H应满足如下要求[10]:
(1)对于任意长度的消息M,H返回固定长度 m 的函数值h=H(M)。
(2)在资源有限的RFID芯片上,对给定的M很容易计算出h。
(3)即使知道H的算法的情况下,从给定的h很难还原出M。
(4)即使知道 H的算法的情况下,对于特定的M,很难找到另一个M′,使得H(M)=H(M′)。
1.1 Hash锁协议
Hash锁协议的主要内容如下:
(1)锁定标签:读写器生成一个随机密钥Key,读写器将真实ID、Key一起写入标签后,标签进入锁定状态。同时读写器计算meataID=H(Key),并将metaID、Key、ID写入后台数据库中;
(2)认证解锁:读写器在需要读写标签中的信息时,先发送访问请求,标签计算meatID=H(Key),然后将metaID经读写器返回至数据库,并查找与metaID相符的记录,并将其Key发送给标签。标签计算其metaID并比较metaID与H(Key′)是否相符,若相符则解锁。
该协议的优点是:在认证过程中使用对真实ID加密后的metaID;缺点是:对密钥进行明文传输,且metaID是固定不变的,不利于防御信息跟踪威胁。
1.2 随机Hash锁协议
随机Hash锁协议的认证过程如下:标签在收到读写器的读写请求后,生成一随机数R,并计算H(Key||R)其中,||表示将Key和R进行连接,并将(R,H(Key||R))数据对送至后台数据库。数据库查询满足H(Key′||R)=H(Key||R)的记录。若找到则将对应的ID′发往标签,标签比较ID与ID′是否相同以确定是否解锁。
该协议的优点是:为认证过程中出现的随机信息避免了信息跟踪,但仍出现了ID的明文传输,易遭到窃听威胁。
1.3 Hash链协议
在Hash链协议中,标签在每次认证过程中其密钥Key值是不断更新的,每次更新后的Key′=H(Key),从而形成1个Hash链。其认证过程如下:标签在收到读写器的读写请求后,利用当前密钥Key计算下次密钥Key′=H(Key),在更新当前密钥为Key′后经读写器返给数据库,数据库对第一条标签记录,判断G(Hi(Key0))的结果是否与Key′相等。若相等则返回相应记录的ID′值至标签,标签再比较ID与ID′是否相同,以确定是否解锁。
该协议优点:具有不可分辨性及前向安全性。但容易受到重传和假冒攻击,且计算量大,不适于标签数目较多的情况。
前述三种协议基本上都只具备单向认证能力,即只完成了读写器(后台数据库)对标签的身份认证,尚未实现标签对读写器的认证功能,因此这些协议都是不完善的。
1.4 Key值更新的随机Hash锁协议
Key值更新的随机Hash锁协议提供了读写器与标签之间的双向认证功能。其双向认证过程如下:
(1)读写器对标签的认证。认证时数据库生成一随机密码R,经读写器连同查询请求一同发往标签。标签计算H(Key)及H(Key||R)后将其发往数据库,数据库对每一记录判断H(Key′||R)=H(Key||R)与H(Key′)=H(Key)是否成立。若找到符合条件的记录,则完成了读写器对标签的认证过程,继续进行标签对读写器的认证;否则停止认证过程。
(2)标签对读写器的认证。数据库计算找到记录的H(ID′||R)与H(ID′),并经读写器将其发送给标签。数据库还计算S(Key)和H(S(Key)),并将数据库中的Key值更新为S(Key);标签判断H(ID||R)=H(ID′||R)与H(ID)=H(ID′)。若两者均成立,则完成标签对读写器的认证过程,将标签中的Key值更新为S(Key)。
该协议保证了前向安全性,实现了标签和读写器的双向认证,同时标签上只实现Hash函数功能而将随机数发生器改为在资源丰富的后台数据库中,有利于标签的低成本实现。但在该协议中,每次认证成功后需要更新标签中的Key值,由于Key是存放在EEPROM中的,更新一次需要较长的时间,这在某些移动应用的场合中如物流、高速公路收费站等场合可能会影响读取的可靠性。同时,该协议中最终ID还是会在读写器和标签间明文传递,不利于保密性要求较高的场合。
2 双层/双向认证的随机Hash锁协议
鉴于前述几种基于Hash锁的RFID协议存在不能满足RFID应用中低成本及安全性要求,结合几种方法的主要思想,本文提出了一种双层/双向认证的随机Hash锁RFID安全协议,实现了安全高效、双向认证的读取访问控制。
2.1基本思想
将认证过程划分为通信和鉴别两层。通信层主要提供通信双方身份的相互认证(双向认证) 。鉴别层主要提供对鉴别产品的身份认证。具体而言,对每个产品标签分配一个原始标识ID0,在数据库系统上采用DES等先进算法加密后作为ID写入标签,然后在读写器与标签之间利用随机Hash锁协议进行双向认证。双向认证通过后标签将ID发送给数据库服务器经解密后得到ID0′。服务器再比较ID0与ID0'是否相等以进行二次认证。
2.2 认证过程
双层/双向认证的随机Hash锁协议的主要过程如图2所示。其具体过程如下:
(1)锁定标签。数据库生成ID0并利用密钥K0进行加密ID=DK0(ID0),并生成随机密钥K1,将ID、K1经读写器写入标签。这里的加密过程是在资源丰富的服务器上完成的,所以可以采用目前先进的复杂的密码机制,如DES、AES、RSA等。
(2)读写器对标签的认证:①认证开始时,读写器生成一随机数R,连同查询请求Q一同发给标签;②标签计算H(K1||R)和H(K1),并将结果返回给读写器;③读写器将H(K1||R)、H(K1)及R传送给服务器,并在数据库中查询每个标签是否满足H(Ki||R)=H(K1||R)并且H(Ki)=K(K1)。若未找到则表明是非法标签;若找到则完成了读写器对标签的认证,尚需要继续对读写器进行验证。
(3)标签对读写器的认证:①数据库利用找到的记录的IDi,计算H(IDi)及H(IDi||R),并将其送给读写器;②读写器将H(IDi)及H(Idi||R)送给标签;③标签判断是否满足H(IDi)=H(ID)及H(IDi||R)=H(ID||R),若满足则完成了标签对读写器的验证,同时完成标签与读写器之间的双向认证;否则为非法读写器。
(4)双层认证: 标签返回ID给数据库,从数据库获得密钥K0对ID进行解密获得最终的ID0′,并比较ID0′与ID0是否相符,从而最终确认产品的合法性。
2.3 性能分析
(1) 提供了双向认证过程。既有读写器对标签的认证,也有标签对读写器的认证,保证了只有合法的读写器和合法标签才能进行有效通信。在双向认证过程中采用随机Hash锁,可以有效防止对标签和读写器信息的非法读取、位置跟踪、窃听、重放等安全风险。
(2) 提供了双层加密机制。第1层加密传输主要用于通信实体的身份认证,在读写器与标签之间通信数据是随机加密后的数据,在数据库与读写器之间的加密采用的是假设安全的,可以采用复杂的加密方案。第2层加密主要用于鉴别产品的身份认证。
(3) 提供了产品身份的最终鉴别。防伪层加/解密过程只在认证服务器里完成,其密钥K0和产品原始ID0只在服务器里存储和运算,避免了产品身份信息在网络传输中的非法窃听、非法读取、假冒哄骗、重放等安全风险,实现了产品身份的有效鉴别。
(4) 实现简单高效。该协议无需复杂的随机数发生器,适合于低成本的RFID应用;认证过程无须更新标签和数据库中的Key值,可以大大缩短认证时间,提高系统的吞吐率。
目前出现了多种RFID安全协议,但多数协议只是针对安全风险的某些方面,有些协议由于成本过高、认证时间过长等原因不实用。本文提出的双层/双向认证的随机Hash锁RFID安全协议,将分层认证与双向认证的思想相结合,具有低成本、运算高效、认证可靠、安全性高等特点,可以有效地应用于产品防伪、电子钱包等对身份认证要求较高的RFID应用领域。
此外,本协议所使用的Hash函数主要在目前资源有限的标签中实现,待标签技术进一步发展,资源相对丰富和运算能力足够强时,可以将Hash函数改成更加可靠的公钥函数,而协议的执行过程可以不做大的改动,这将是下一步的研究内容。