史志才,王益涵,张晓梅,陈计伟,陈珊珊
(上海工程技术大学 电子电气工程学院,上海 201620)
随着物联网的普及与应用,作为重要感知手段的无线射频识别(Radio Frequency Identification,RFID)技术得到了人们普遍关注,并广泛应用于金融、交通运输、健康医疗、物流等领域[1-3]。然而,因RFID标签具有结构简单、计算存储资源有限、使用开放的无线通信方式等特点,使得解决RFID系统的隐私保护和安全问题存在很大难度。而且,目前处于主流的被动式标签通常仅能存储数百个存储位,拥有5 000个~10 000个等效逻辑门(其中仅有250个~3 000个等效逻辑门用于安全用途),难以支持高强度、复杂的加密操作。在这种资源受限的特殊条件下,安全、高效、低资源消耗的RFID安全和隐私保护方法的研究成为一个具有挑战性的新课题。特别是在许多应用场合下,常用多个标签来标识同一个物体,因而需要给出多个标签同时存在的证明,如文献[4]提出用2个标签分别标识药品和说明书,并给出2个标签同时存在的证明协议。针对同时存在许多其他应用多标签标识同一物体的场合,研究者陆续提出了一些组证明协议[5-7],但均存在隐私泄露[8-10]、缺少前向安全性[11-12]等缺陷。
本文在不可信阅读器存在的情况下,采用哈希函数、随机数产生函数以及简单位运算,提出一种实用、安全的轻权组证明协议。该协议采用哈希操作、密钥的随机化和及时更新以保证协议的隐私和前向安全性,并运用激活-休眠机理和过滤-响应机制以及身份认证以保证协议的效率,通过广播信道的点到点通信降低标签端的计算负荷。
RFID系统一般包括射频标签、读写器和后端服务器3个部分,RFID系统组成如图1所示[13-14],其中t表示标签。标签是一块具有天线和少量存储计算资源的硅片,其中存储有该芯片的唯一标志码;目前采用较多的为被动标签,这种标签是一种无源标签,它内部没有供电电源,需要通过读写器发射的射频信号感应出供电电压,因而只能在较小的范围内进行通信。读写器是一个以射频信号形式发送和接收信息的设备,它对标签中存储的信息进行读写,以有线或者无线的方式与后端服务器进行信息交换。后端服务器也称为验证器(Verifier),它存储与标签相关的大量信息,负责完成认证、数据处理和显示等复杂工作。
图1 RFID系统组成Fig.1 RFID system composition
在很多情况下,标签常被分成多个组,每个组用来标识一个物体。一个组证明是指给出一个组内的多个标签同时存在证据的过程。按照验证器在组证明过程中的角色,组证明协议分成2种:在线协议和离线协议。在线协议要求验证器一直参与协议的运行过程,而离线协议仅要求验证器参与协议的某些工作,如证据的验证。显然,离线组证明协议的效率较高,因此,当前的许多组证明协议均采用离线形式。从另一个角度来看,组证明可分成串行模式和并行模式。在串行模式下,各个标签依次通过顺序签名完成组证据的收集;而在并行模式下,各个标签同时对带有各个标签标识的消息进行签名,进而完成组证据的收集。显然,在并行模式下的组证明效率较高。
目前RFID系统中使用的标签一般为被动标签,其计算和存储资源有限,难以实现复杂的密码学运算,故假设标签与阅读器间的通信是不安全的;而阅读器与验证器因具有充足的计算存储资源来完成各种复杂的加密操作,故假设它们之间的通信是安全的。而且假设验证器是唯一可以信任的安全实体,而阅读器和标签是一些潜在的不可信实体。在考虑RFID系统的安全性时,常引入另外一个实体:敌手,它是一个多项式时间算法,能够窃听、截获、篡改、伪造和重放标签与阅读器间的所有会话,其攻击目标是伪造一个组证明并能通过验证器的验证,或者获得系统的密钥、身份标识等隐私信息。对于一个RFID系统,要求它能够确保匿名性、保密性和前向安全性,并能够抵御信息泄露、窃听、跟踪、重放和去同步等攻击。
如上文所述,组证明模式下的RFID系统包括验证器、阅读器、标签和敌手4类实体,假设有一个验证器、一个阅读器和多个标签,所有标签可能是一个组,也可能组成多个组,当存在多个组时,由验证器根据感知情况决定查询组别。
本文基于哈希操作、随机数生成和简单位运算,提出一个运行于并行模式的离线组证明协议。该协议通过阅读器与各个标签的交互形成组证据,然后提交给验证器验证。
本文协议的设计采用随机化标签发出的消息以抵抗跟踪和重放攻击,利用哈希秘密信息确保隐私性,通过更新密钥来确保前向安全性,运用激活-休眠机理来保证协议效率。此外,借鉴以太网协议的原理,实现无线广播信道上阅读器与标签间的点到点通信,有效降低标签端的计算负荷,通过验证器对标签的认证以避免验证无效的组证据。
表1 认证协议中的符号及含义Table 1 Symbols and meanings in the authentication protocol
协议的工作过程如下:
1)阅读器发送消息“hello”激活附近的标签,启动一次组证明过程。
2)被激活的各个标签随机化其组标识,产生响应消息,经过阅读器发送给验证器。
3)验证器分析是否存在多个组;若存在多个组,则选择一个组,产生组查询消息,通过阅读器发送给标签,同时启动时间戳。
4)待查询组中的标签保持激活状态,其他标签进入休眠状态。
5)阅读器与标签交互,产生组证据,并发送给验证器。
6)验证器首先确定是否超时,若没有超时则认证组证据包含的所有标签;若所有标签均通过认证,则验证组证据的正确性。
7)验证器首先更新秘密信息,然后通知标签更新秘密信息。
组证明过程如图2所示。
图2 协议的组证明过程Fig.2 Group proof process of the protocol
组证明具体描述如下:
1)阅读器发送消息“hello”,激活附近的所有标签。
2)被激活的标签分别产生随机数rj=prng()和消息gmj=hash(gid⊕rj),其中gid为标签的组标识。标签发送消息gmj‖rj给阅读器。
3)阅读器将接收的所有消息{gmj‖rj}发送给验证器。
4)验证器根据所接收到的消息{gmj‖rj}确定一个待查询的组,假设该组由组标识gid来标识;验证器启动时间戳t,生成随机数rv=prng(t)和消息m1=hash(gid⊕rv);发送m1‖rv给阅读器。
5)阅读器广播m1‖rv给附近所有标签。
6)标签接收到m1‖rv后,它使用自己的gid生成tm1=hash(gid⊕rv),并与接收到的m1进行比较;若相同,则保持激活/活跃状态;否则变为休眠状态。以后仅处于激活状态的标签(称为活跃标签)响应阅读器的请求。该方法称为激活-休眠机理,可以有效避免无效标签的参与,提高协议的效率。
7)对于活跃标签j,它首先生成一个伪随机数rtj=prng(rv⊕tkj),然后使用它的tkj和tidj分别生成m2j=hash(tkj⊕rtj)和m3j=hash(tidj⊕rtj),发送m2j‖m3j‖rtj阅读器。
8)阅读器接收所有活跃标签的消息后,计算mp=hash(m21⊕m22⊕…⊕m2k)并广播给所有活跃标签,k是活跃标签的个数。
9)每个活跃标签接收mp后,用它的密钥tkj对mp进行签名,即tpj=hash(tkj⊕mp),并发送tpj给阅读器。
10)阅读器接收所有tpj,计算p=hash(tp1⊕tp2⊕…⊕tpk);然后生成组证据gp=(rt1,m21,m31,rt2,m22,m32,…,rtk,m2k,m3k,mp,p),并发送gp给验证器。
12)验证器判断组证据的正确性,即根据gp中的部分消息以及本端存储的各个标签的密钥和标识信息分别计算mp和p,并分别与接收的值进行比较,若相同则证明成功,说明该组的标签目前同时存在;然后进行下一步,否则证据无效,协议退出。
然后验证器广播m4j‖rtj给所有标签。rtj由标签j生成,可以用来标识该标签,相当于该标签的MAC地址,说明消息m4j‖rtj只发送给标签j。
14)每个标签接收到m4j‖rtj后,它比较本身的rtj和接收的rtj:若两者不等,则标签丢掉该消息,不做任何处理;若两者相等,标签则响应消息,计算tm4=hash(tkj⊕tidj⊕rv⊕rtj),并与接收的m4j进行比较:若两者相同,则标签更新密钥等信息,即令tkj=prng(tkj⊕rv⊕rtj),tidj=prng(tidj⊕rv⊕rtj)。协议执行完毕。
对于所提出的组证明协议,假设阅读器是不可信的,它可以伪装成一个合法的阅读器与验证器及标签进行通信,可以截获阅读器和标签间的每个会话和消息。其中,消息gmj、m1、m2j、m3j、m4j和tpj包括了系统的密钥、标识等秘密信息(如gid、tkj、tidj)。由定义1可知,敌手从任何一个消息中猜测出秘密信息的概率是σ,而且σ≤2-d。当d≥32时,有σ≤2-32。显然σ可以忽略,则认为组证明协议是隐私安全的。
Pr[tidi=tidj]=2-1+ε
其中,ε为敌手同时猜测出tidi和tidj的概率。根据定义1,ε≤2-d×2-d,若d=32,有σ≤2-64。由定义3,有σ=2Pr[tidi=tidj]-1=2ε≤2-63。所以,σ是可以忽略的,组证明协议具有不可区分安全性。
显然σ1和σ2均是可以忽略的,因此,提出的组证明协议具有前向安全性。
此外,协议通过保存前后2次证明过程的秘密有效抵抗了因秘密更新不同步而引起的去同步攻击。协议每次开始均由验证器和标签分别产生随机数去随机化会话消息,以抵御重放攻击。所有包含标识信息的消息均经过哈希函数的处理,标识信息没有采用明文形式进行传输,使得协议具有匿名性,有效抵御了窃听攻击,很好地保护了系统的隐私信息。
为减少碰撞和降低标签的计算负荷,协议采用了激活-休眠机理,使得只有处于目标组中的标签才参与组证明过程;此外,阅读器到标签间点对点的通信过程中借鉴了以太网协议,采用过滤-响应机制,标签对来自阅读器的请求进行过滤,只有目的标签才响应阅读器的请求,从而在共享的无线信道上实现阅读器和标签间点对点的通信,减少了标签碰撞。而且在验证组证据前,先对标签进行认证,有效避免了验证一些无效的证据,从而提高了协议的证明效率。
1)激活-休眠机理。对于所提出的组证明协议,允许同时存在多组标签,每个标签组由组标识符gid唯一地标识。当组证明开始时,各个标签响应来自阅读器的“hello”消息,然后将自己经过随机化的组标识信息通过阅读器发送给验证器。验证器识别目前存在的组,并从中选择一个查询组,将其随机化的组标识信息通过阅读器广播给所有标签;各标签接收到消息后判断是否为被查询对象,若不是则进入休眠状态,暂时不再响应阅读器的查询,这样大幅度减少了标签碰撞的概率,提高了协议的效率。
2)过滤-响应机制。协议中的阅读器与标签间有两种通信方式:广播和点对点。以往的组证明协议对这2种方式没有加以区分,导致一些标签承担了不必要的计算量。阅读器与标签间的信道为无线共享信道,适合广播通信方式。当进行点对点通信时,阅读器采用广播信道发送消息给某个标签,借鉴以太网的数据链路层协议,采用标签产生的伪随机数(rtj)作为标签的MAC地址;验证器经广播信道发送消息(m4j‖rtj),所有标签均接收该消息,但仅拥有rtj的标签j对其进行响应,从而实现了无线广播信道上的点对点通信;其他标签因不响应消息而免除了许多不必要的计算消耗。
3)先认证后证明。目前许多组证明协议并没有实现对标签的认证功能,导致非法标签可以伪造有效证据。本协议首先根据收集的组证据对标签进行认证,只有参与组证明的标签均通过认证,才去判断组证据的有效性。一旦发现有非法标签,则协议将不再继续执行,从而使协议可以及时发现无效的组证明过程,提高协议的效率。
本文提出的组证明协议与一些典型的组证明协议的比较如表2所示,其中,√表示有,×表示无。
表2 本文协议与典型组证明协议的对比Table 2 Comparison of group proof protocols with different typical group proof protocols herein
为解决组证明协议存在的隐私泄露、缺少前向安全性等问题,本文在分析现有组证明协议安全问题的基础上,提出一个具有隐私保护和前向安全性的组证明协议,其为并行模式下的离线组证明协议,采用激活-休眠机制和过滤-响应机制降低标签的碰撞概率以及标签端的计算负荷,并结合认证技术防止无效组证据的验证。分析结果证明,该协议具有隐私性和前向安全性,能够抵抗窃听、跟踪、重放、去同步等攻击。本文协议仅使用哈希函数、伪随机数生成函数和位运算等操作,即可满足计算存储资源受限环境下组证明的需求。