物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于Hash链的RFID认证协议

作者:赵太飞,邹波,尹航
来源:2016年微型机与应用第19期
日期:2017-11-02 14:22:48
摘要:为了提高大规模RFID系统的认证效率,通过分析现有RFID系统的认证效率和安全性,提出了一套基于Hash函数的改进协议。向RFID读写器加入过滤规则,能够有效过滤恶意和无效的认证请求;对标签的访问计数器值的分层化、更新和重置,可以有效提高后端数据库检索数据的命中率。通过分析和测试,该协议能够有效抵御假冒攻击、重传攻击等不安全问题,有效提高RFID认证的效率,降低认证服务器计算负荷。

  0引言

  射频识别技术(Radio Frequency Identification,RFID)是一种非接触式的自动识别技术。RFID系统通过射频信号来识别目标对象,可工作在各种恶劣的环境下,且使装备该标签的设备变得智能,可以实现与信息系统进行实时交流。RFID技术的应用遍及各个领域,例如商品溯源、移动支付、供应链溯源、门禁系统等。随着物联网的不断发展和RFID的大规模使用,如何在保证RFID系统安全性的前提下,提高RFID系统的认证效率,成为影响RFID大规模推广应用的技术难点。

  1相关研究

  近年来,RFID安全问题成为研究热点之一,由于RFID标签自身资源的限制,在设计RFID标签认证协议时,除了考虑安全性,还要考虑标签自身存储空间和运算能力限制的问题。

  为了提高RFID安全性,目前一般采用两种手段:物理方式和密码学方式。物理方式需要额外的设备支持,增加了成本,同时使用会造成一定的不便,所以密码学是提高RFID安全性的主流方式。

  近年来密码学中有众多的加密技术,主要包括AES、DES、基于Hash函数的加密算法等。AES、DES等加密方式因资源消耗大,受RFID标签自身资源的限制,较少被使用,而基于Hash函数的安全机制资源消耗相对较低,因此基于Hash函数的认证协议受到越来越多的关注。NTT实验室提出了Hash链方法[1],它是一种采用共享秘密的询问—应答协议,具有不可分辨性和前向安全性,但该协议只能进行单向认证,安全性上存在一定缺陷,后台数据检索计算量大;袁署光[2]等人提出一种基于Hash函数的认证协议,其利用对称秘钥方式,能够抵御重传攻击、假冒攻击等,但该协议服务器运算量巨大,数据库检索命中率低;刘明生[3]等人提了的基于Hash函数的RFID安全认证协议,协议中传递标签ID的Hash值为静态的,能有效降低后端数据库检索数据的计算量,但不能提高检索的命中率,并且存在被跟踪的风险。

  2安全问题分析

  RFID系统面临的安全问题[4]主要包括:(1)假冒攻击(spoofing attack),通过使用假冒读写器来记录标签的响应,再用该响应去响应合法的读写器,让合法的读写器认为该标签还存在,通过RFID的认证,事实上该标签已经离去;(2)重传攻击(replay attack),是通过截取标签和读写器之间通信的有效信号,再在RFID系统中进行重传而对系统进行的一种攻击;(3)去同步化(desynchronization),指通过对标签进行恶意认证或者攻击,导致后端数据与标签中存储的信息不一致,进而导致标签无法认证的一种攻击。

  3认证方案

  通过标签访问计数器值的自更新特性与密值,结合Hash函数进行RFID认证,虽然能够抵抗标签伪装等攻击,但是该协议标签数量较大,若干标签存在恶意认证时,根据k值来检索数据库中标签记录,将导致检索范围过大,标签记录命中率降低,而数据库的每次数据比对都会进行一定量的Hash计算,这会导致服务器耗费大量的时间和资源来进行运算,进而导致这个RFID系统效率低下。

  针对基于Hash链的RFID安全双向认证协议做如下改进:对k值进行分层化处理,可以有效提高数据库标签记录检索的命中率;认证请求中使用RFID读写器产生随机数,将标签响应中推算出的随机数与该随机数进行比较,过滤无效的认证会话;RFID读写器保存上一次认证会话中接收的标签响应,RFID读写器接收到的标签响应与上次会话中使用的标签响应进行比较,如果相同就过滤该认证会话(标签在每次认证会话中会更新认证响应),提高认证请求的有效性,减少服务器的运行压力。有关协议中的参数如表1所示。

  预备:对每个标签的k值的范围进行分层化处理,例如0~999,1 000~9 999,将k置为所在分层的最小值。当k为所在分层区间k的最大值时,k+1将重置k的值为该分层区间的最小值,同时置f的值为“1”,每个标签配置一个初始密值S,为RFID系统筛选两个碰撞和复杂度都较低的Hash函数,将标签k、ID、S存储到数据库。

  步骤(1):RFID读写器产生一个随机数rR,向标签发送Query、rR认证请求。

  步骤(2):标签接收到RFID读写器发送的认证请求后,将k值与随机数rR相加得到rk,然后标签读取存储器数据,计算G(IDrk),G(S),然后向RFID读写器发送k、rk、G(IDrk)、G(S)以及标志位f;同时更新S=H(S),更新k=k+1,当k为所在分层的最大值时,k+1将重置k的值为该分层的最小值,同时置f的值为“1”,否则f值不更新。

  步骤(3):RFID读写器接收到来自标签的信息后,先通过rk和k计算出随机数rR′,比较该rR′是否与刚发出的rR一致,如果不一致,则该数据为无效数据,直接丢弃;如果一致则进一步判断G(IDrk)和G(S)。比较与该阅读器上次认证时保留的G(ID′rk′)和G(S′)是否一致,如果一致则为无效数据,直接丢弃;如果不一致,则将数据k、rk、G(IDrk)、G(S)以及标志位f发送到后端数据库。

  步骤(4):后端服务器接收到RFID读写器传递的数据后,先判断k值的范围区间,确定该标签在哪个分层,然后判断f值是否为“1”,如果是转入①,否则转入②。

  ①在数据库中找到该分层的所有标签数据记录,检查该记录中是否还有没有对比的记录,如果有转入③;否则,标签不合法,停止认证。

  ②在数据库中找到该分层的标签数据记录,在此记录中检查是否还有符合k″≤k没有对比的记录,如果有转入④;否则,标签不合法,停止认证。

  ③读取一条还没有对比的标签数据记录的ID″,计算G(ID″rk),再与G(IDrk)比较,如果相等,则转入⑤,否则转入①。

  ④读取一条k″≤k且还没有对比的标签数据记录的ID″,计算G(ID″rk),再与G(IDrk)比较,如果相等,则转入⑥,否则转入②。

  ⑤比较k与k″的大小,如果k与k″相等则取d=0,否则取d=k+l-k″;然后比较G(Hd(S″))与G(S),如果相等,则转入⑦,否则转入①。

  ⑥计算d=k-k″,然后比较G(Hd(S″))与G(S),如果相等,则转入⑦,否则转入②。

  ⑦后端数据库更新当前标签记录的访问计数器k″=k+1和密值S″=Hd+1(S″),如果k为该区间的最大值,则k″置为该区间的最小值,然后计算G(ID″S″)发送给标签。

  步骤(5):阅读器将后端服务器发送来的G(ID″S(k″))转发给标签。

  步骤(6):标签从存储器中获取ID与密值S,计算G(IDS)与G(ID″S″)是否相等,如果相等则认证成功,同时将标志位f置为“0”,否则认证失败。

  协议认证过程如图1所示。

基于Hash链的RFID认证协议

基于Hash链的RFID认证协议

  4协议安全性分析

  RFID系统面临的主要安全问题[6]有:假冒攻击、重传攻击、追踪、去同步化。这里定义读写器向标签传递信息的无线信道为前向信道,标签向读写器传递信息的无线信道为后向信道[7],对协议进行安全性分析。

  4.1假冒攻击

  攻击者使用伪装的读写器通过前向信道向标签发送Query和rR认证请求,获取到标签的响应k、rR、f、G(IDrk)、G(S);再在下一次与合法读写器进行认证时,读写器发送Query和rR认证请求,攻击者通过后向信道使用上次截获的k、rk、f、G(IDrk)、G(S)来响应读写器,然而由于读写器每次发送的rR都是一个随机产生的随机数,所以前后两次的随机数rR和rk-k不一致,无法进行假冒攻击。

  4.2重传攻击

  在读写器向标签发送Query和rR认证请求之后,攻击者获取到k、rk、f、G(IDrk)、G(S);在以后的认证会话中,攻击者通过后向信道响应k、rk、f、G(IDrk)、G(S),从而发动重传攻击;在读写器接收到k、rk、f、G(IDrk)、G(S)过后,进行一次过滤处理,与上一次接收到的G(ID″rk′)、G(S′)进行比较,看数据内容是否相同,如果相同,则直接丢弃该数据,然后再判决rk-k和rR的值是否一致,因为前后两次认证过程中读写器生成的rR不同,由此可见该协议对重传攻击具有安全性。

  4.3追踪

  攻击者使用伪装的读写器向标签发送认证请求,获取到标签的响应k、rk、f、G(IDrk)、G(S),然后通过该响应来追踪该标签;由于每次发起认证请求时,读写器都会重新产生一个随机数用于认证,并且标签自生的k、S(k)也是不断变化的,所以rk也会不断变化,f值只能是“0”或“1”无法实现追踪,因此该标签的响应是不断变化的,所以该协议能够很好地抵制追踪攻击。

  4.4去同步化

  认证过程中,因为采用的是无线信道,故有可能造成数据传输的丢失,或人为对标签进行恶意攻击,然后导致标签的数据与后端数据库数据不一致,使标签无效化,无法完成认证操作。后端数据库可以根据k值和f值来确保标签密值的成功匹配,每次成功认证过后,后端数据库也会根据标签传来的信息,更新后端数据库的数据。

  5协议效率分析

  本协议对Hash链的RFID安全双向认证协议[5]做了改进,进一步提高了后端数据库检索的效率,读写器端增加过滤功能,能够有效地拦截恶意的认证请求,很好地减少服务器资源的浪费。

  通过k值的分层化处理可以有效地缩小数据检索的范围,快速定位到需要检索的k值的数值范围,从而确定待检索的数据记录所在的k值分层;再根据k值进一步缩小检索数据记录的范围,因为在f为“0”时,被检索记录的k″必须满足k″≤k。

  标志位“f”的作用主要是为了处理k值在完成多次认证过后导致k值越界,导致标签去同步化,无法进行认证。

  在认证会话中,读写器不是将标签响应的数据进行一个简单的数据传递,让服务器进行数据的处理;而是对标签响应的数据进行了一个数据过滤,能够有效地过滤无效认证会话和恶意认证,降低服务器的运行负荷,避免不必要的服务器资源浪费。

  6性能分析

  本文使用MATLAB对基于Hash链的RFID安全双向认证协议提出的基于Hash链的RFID安全双向认证协议与本文改进的协议进行了仿真测试,对比了后端服务器在比较次数、哈希运算次数的差别。本文提出的改进协议细节上与基于Hash链的RFID安全双向认证协议有些不同,有的特性未在测试数据上很好地体现出来,例如标签阅读器的过滤功能,可以过滤一部分无效的认证请求,降低后端服务器的运行负荷。

  将基于Hash链的RFID安全双向认证协议测试组命名为A组,本文改进协议分成3组进行测试,分别命名为B组、C组和D组。测试中先去除标签阅读器的过滤功能。假定A组中一共有2 000个标签,后端服务器也有2 000条对应的标签数据,并且每个标签和服务器之间已发生不超过50次的随机访问会话,同时标签数据与后端服务器同步,再随机抽取200个标签发生随机次数(不超过20次)的恶意访问,造成标签数据与后端数据库数据的不同步,然后随机发起2 000 000次的访问会话。B组分为a1、b1分层,C组分为a2、b2、c2分层,D组分为a3、b3、c3、d3分层,每个分层的标签数、k值范围以及发生随机恶意访问(不超过20次)的标签数具体信息如图2所示。首先每个分层的每个标签与服务器之间发生不超过50次的随机访问会话,同时标签数据与后端服务器是同步的,再随机抽取表2中所述的标签个数发生随机次数(不超过20次)的恶意访问,造成标签数据与后端数据库的不同步,最后以组为单位,每组随机发起2 000 000次的访问会话,统计以上A、B、C、D四组数据可以得到表3测试数据。

基于Hash链的RFID认证协议

基于Hash链的RFID认证协议

  本文协议对标签k进行分层处理后,分为多个组,根据以上测试结果可以得出,相比基于Hash链的RFID安全双向认证协议,本文协议能有效地减少后端服务器的运算次数,其次k值分层处理的分层数越多,后端服务器的运算次数越少。

  7结束语

  随着物联网的不断发展,RFID系统被广泛使用,但RFID安全问题和认证效率问题成为制约RFID系统广泛使用的关键。由于RFID标签自身的局限性,采用密码学的RFID安全认证协议成为提高认证效率和解决RFID安全性问题的重要方法。本文提出了一种基于Hash链的改进协议,能有效地抵抗假冒攻击、重传攻击、追踪和去同步化,利用访问计数器值的分层特性及自更新和重置特点,提高了数据库中标签数据的命中率,通过标签阅读器的过滤功能,有效地过滤无效的认证请求,从而降低了RFID认证时后台服务器的资源消耗,有效提高系统的认证效率。