一种采用双层校验的RFID离线匿名群证明协议
2018-12-20周志彬王国军贾维嘉
周志彬 王国军 刘 琴 贾维嘉
1(湖南师范大学信息科学与工程学院 长沙 410012) 2(中南大学信息科学与工程学院 长沙 410083) 3(广州大学计算机科学与教育软件学院 广州 510006) 4(湖南大学信息科学与工程学院 长沙 410082) 5(上海交通大学计算机科学与工程系 上海 200240)
无线射频识别(radio frequency identification, RFID)技术是物联网环境下普遍采用的一种物理层无线通信技术.该技术能够将附着有RFID标签(Tag)的物品通过阅读器(Reader)将数据传输至后台服务器(Server),从而实现物品的网络互联,具有很重要的现实意义,被应用到物联网的各个领域.由于RFID主要是通过无线方式实现信息传递,而通信双方都是性能受限的设备,随着其应用越来越广泛,其安全性与隐私性成为了当前的研究热点[1-4].在其基础之上提出的RFID群证明技术是一种防伪造协议[5-6],其基本思想是利用物联网中的阅读器在某个既定的时间段内,对属于同一个群组(group)的2个或者多个标签信息进行收集,如果时间段设置足够短,可以认为这些标签同时出现在Reader识别范围内,称为同时扫描(simultaneous scan),然后生成一个群证明(grouping proof)作为同时扫描到多个标签的证据,提交给后台的验证服务器(Verifier)验证,确保多标签组成的实体的完整性.RFID群证明技术可用于药剂核对、物流信息校验等,因而在物联网环境下的医疗卫生[7-9]、物流管理[10-11]等领域有着广泛的应用.
根据在协议执行中Reader与后台的数据连接状态,群证明协议分为在线与离线2种.在线协议中,Reader与后台的Verifier始终保持连接,群证明的验证也是由Verifier在线完成[12-13].而离线协议不要求Reader与Verifier的连续数据连接,Reader处于离线模式下工作,从Verifier获取群信息以后,先与群组内标签分别进行通信,发送随机数NR搜集Tag的信息认证码(message authentication code, MAC)响应,计算群证明;最后再与Verifier建立连接,提交并验证群证明数据,其系统模型如图1所示:
Fig. 1 System model of off-line grouping proof protocol图1 离线群证明协议系统模型
这种方式不要求Reader与Verifier的实时连接,具备更好的实用性,但也存在一定的安全问题,其中最主要的问题就是grouping-proof的正确性只能通过Verifier进行,如果在群证明过程中有无关Tag或者敌手冒充的Tag参与协议,则协议生成的proof在Reader提交给Verifier之前,都不会被发现,因此无法适用于一些时效性要求较高的场合.但如果完全将验证grouping-proof的权限交给Reader,在Reader不可信的情况下,又难免造成Tag信息的泄露,威胁Tag的隐私安全.
本文的主要贡献包括4个方面:
1) 对Batina的协议[14]进行了分析,指出其在冒充攻击以及中间人攻击中存在一定的安全风险;
2) 构建了一种消息封装方式,通过会话密钥和群组密钥,将标签的身份信息封装在群证明消息中,使得群证明消息中包含群成员信息以及身份信息;
3) 基于该消息封装方式,提出了一种支持2个标签的RFID离线匿名双层校验群证明协议,该协议能够在确保标签隐私的前提下授权阅读器进行群证明校验,提高系统对于非法群证明的响应效率,并在其基础上将其扩充为AGPDL,支持多个标签的双层校验群证明;
4) 对AGPDL协议进行了安全性分析和性能分析,指出其相对于其他群证明协议的优势.
1 相关工作
群证明的思想最早由Juels[5]在2004年提出,称为”yoking-proof”,通过Reader对标签信息的搜集,其能够完成对2个标签的群证明,在后续的研究中,这一思路被不断地扩展,其中Saito[6]对yoking-proof的一些安全问题进行了分析,并提出了相应的改进,首次引入群组(group)的概念,支持多个标签参与群证明,最终发展成为grouping-proof群证明协议.
就目前来说,由于在线模式的群证明协议对网络连接要求较高,在许多场景中的实用性不高,当前的群证明协议的研究均是针对离线模式来进行的.
Burmester等人[15]对离线群证明协议进行了分析,指出大部分协议存在的一些问题:1)容易遭到重放攻击,敌手可以通过对之前协议会话中的消息进行记录与重放,欺骗标签,从而进行群证明的伪造;2)Reader缺乏对群证明有效性进行校验的功能.如果敌手通过某种方式伪造无效的群证明,在提交到后台之前都无法发现,从而降低了协议的执行效率;3)部分协议不支持匿名,无法保护标签的隐私信息.作者后来在文献[16]中,针对这些问题进行了改进,提出采用数据编码的方式对标签信息进行校验,提升了系统的安全性.
在协议的安全算法方面,考虑到RFID标签有限的计算能力,许多的RFID群证明安全协议均采用位运算或者单向Hash函数来实现消息的加密[8,16-18],其中文献[8]提出了IMRIP群证明协议,使用伪随机数发生器与二进制位运算实现了智能医疗中的用药管理,并进行了安全性分析与性能分析,能够以较小的开销防御冒充攻击、重放攻击等攻击手段,同时也能确保阅读器数据的安全,具有较强的实用性.这类方案具有计算开销低、系统响应快的优点,但安全性并不高,很难应用在安全性要求较高的场合中.许多学者开始研究如何将传统加密方案应用到RFID标签中,但一方面由于RFID系统中标签的数量十分庞大,对称加密会带来大量的密钥分配开销,不具备实际意义;另一方面,对称加密算法的系统开销过大,不适用于RFID系统[19].现有的研究均是基于公钥加密来进行的.由于相对于RSA加密方案,ECC在安全性和性能开销方面更加适合,成为了研究的主要方向.Batina等人在文献[20]中提出了一种适用于ECC的RFID标签芯片;随后提出了基于ECC的RFID认证协议[21];基于该协议,Batina等人[22]设计了ID-transder认证协议,并于文献[14]中,将其应用于RFID群证明中,提出了标签防串谋群证明协议CTP(colluding tag prevention).该协议能够在Reader和Tag不可信的情况下确保生成有效的离线群证明;但之后Hermans等人[23]和Kang[24]的研究中指出,CTP协议存在一些安全问题.其中文献[23]指出其容易遭受冒充攻击与中间人攻击;文献[24]指出其标签容易遭受恶意追踪,并提出采用Reader与Tag之间的双向认证来防止冒充与追踪.
2 CTP群证明协议描述
在本节中,我们主要介绍文献[14]中提出的CTP协议,并对该协议进行安全性分析.
2.1 CTP协议描述
CTP协议中使用的符号标识如表1所示:
Table 1 Notation of CTP表1 CTP符号标识
CTP的协议流程如图2所示,在协议执行前,TagA与TagB已经存储了Verifier的公钥Y.
Fig. 2 CTP protocol图2 CTP协议
协议中“Start left”与“Start right”消息用于让Tag确认自己在协议中的位置.TagA随机选择整数rA,计算TA,1,由Reader转发到TagB.后者随机选择整数rB,计算TB,1,并使用自己的私钥sB以及rB,点rSTA,1的x坐标x(rsTA,1),和rs计算TB,2.然后将{TB,1,TB,2}发送给Reader.接下来,Reader将TB,2转发给TagA,后者使用TB,2,私钥sA,以及rA,公钥Y计算TA,2,最后,由Reader向Verifier提交群证明:
(TA,1,TA,2,rs,TB,1,TB,2).
(1)
Verifier收到群证明后,进行校验:
sAP=(y-1TA,2-TA,1)x(TB,2)-1,
(2)
sBP=(y-1TB,2-TB,1)x(rsTA,1)-1.
(3)
如果校验通过,则群证明有效,添加时间戳后存储在服务器上.
2.2 CTP协议安全性分析
CTP协议能够通过椭圆曲线加密保证群证明的有效性,但仍存在一些问题.其中包括冒充攻击、中间人攻击[23]以及恶意追踪[24].其中,文献[24]通过加入Reader与Tag之间的双向认证来解决冒充攻击,为此要求所有Tag均必须存储Reader的公钥,但考虑到实际的RFID中,Reader往往会经常发生变化,该方案在密钥分配上将会带来一定的困难.此外,CTP协议还容易遭受拒绝服务攻击(deny of proof, DoP)攻击[25].DoP攻击的作用在于有意构建无效的群证明,敌手于协议执行时在合法Tag中混入非法Tag,并参与到群证明的生成.这样一来,就能够干扰正常的群证明计算,该攻击方式主要针对离线模式的群证明协议,因为离线模式下,只有将群证明数据提交到Verifier验证时才能发现其是否合法,敌手很容易让Reader计算出大量无效群证明,干扰协议的执行.
为了避免DoP攻击,就必须在将群证明数据提交到Verifier之前,授权Reader对Tag的消息进行校验,为此,Reader需要存储Tag的身份信息,而考虑到RFID系统中,Reader并不属于可信实体,如果敌手通过某种方式,获取了Reader中的数据,会造成Tag信息的泄露,从而给整个系统带来安全威胁.
3 系统模型与安全性需求
3.1 系统模型
本文中RFID群证明协议一共包含3个部分:Reader,Tag,Verifier,三者的特点描述如下:
本文中,Reader被看成一个有可能被不可信第三方入侵的设备,敌手能够通过入侵Reader获取其中的数据.
本文中考虑的Tag属于低功耗的被动标签,具有有限的存储空间以及计算能力,容易被敌手控制,并获取其数据.根据需要,标签被划分为不同的群组(group),表示为G={G1,G2,…,Gn}.
Verifier是一个位于后台的可信第三方,保存了所有的密钥以及标签的群组信息.
在协议执行前,Verifier将群组信息发送至Reader,授权其进行群证明数据的收集和校验.在协议执行过程中,Reader对群组内的标签进行信息搜集,并计算相应的群证明GP.经过第1层校验后提交到Verifier,并由Verifier进一步验证.
在协议的执行过程中,存在2种信道,其中Reader与Tag的通信信道被认为是不安全的,敌手能够窃听甚至控制该信道中的信息.而Reader与Verifier间的信道被认为是安全的,敌手无法窃听和修改其中传输的信息.
3.2 敌手模型
在群证明协议中,敌手的目的主要有2个:1)伪造能够通过Verifier验证的群证明;2)获取关于Reader与Tag的隐私数据.文献[26]给出了关于敌手能力的一般性定义:敌手能够完全控制Reader与Tag之间的信道,包括对信道中的消息进行修改、延迟以及重放.除此之外,敌手能够对Tag进行入侵甚至完全控制.
3.3 RFID群证明协议的安全需求
群证明协议的安全需求包含5个方面:
1) 匿名性.敌手无法通过对协议消息的窃听获取关于消息来源者的信息.
2) 位置隐私.敌手无法对Reader或Tag的位置进行追踪.
3) 抵抗重放攻击.敌手无法通过使用之前协议会话中的消息来欺骗Reader或者Tag,生成有效的群证明.
4) 抵抗DoP攻击.敌手无法在协议执行过程中通过非法Tag生成无效群证明,提交到Verifier,影响到系统对于非法群证明的响应速度.
5) Tag隐私数据保护.在Reader被敌手侵入的情况下,敌手无法通过存储在Reader中的数据获取关于Tag的秘密信息.
4 AGPDL协议描述
为了解决第3节中提到的问题,我们提出采用双层校验的AGPDL群证明协议.为叙述方便,我们首先将群组中的标签数量设置为2个,即TagA与TagB.之后本文将该协议扩展至多个标签的情况.为确保2个标签被“同时扫描”,AGPL中的协议各方通过各自的计时器来判断协议会话是否超时,如果会话超时,则终止协议.协议中的相关符号说明如表1所示.
AGPL协议的包含3个阶段:1)初始化阶段;2)群证明生成阶段;3)校验阶段.
4.1 初始化阶段
后台服务器对所有标签进行分组,不失一般性,本文假设群组包含的标签数量为2个的情况,协议中的符号标识名称及描述如表2所示,其中TagA与TagB被划分为同一个群组G.
Table 2 Notation of AGPDL表2 AGPDL符号标识
Verifier为群组G选择随机数kG∈,并计算KG=kGP作为群组G的公钥,然后将私钥kG与Reader共享,并将公钥KG存储在TagA,TagB中,同时存储二者的公钥{SA,SB}.
4.2 群证明计算阶段
群证明计算阶段的协议流程如图3所示:
Fig. 3 AGPDL protocol with two tags图3 2标签的AGPDL协议流程
1) Reader选择伪随机数rs,使用当前的群组公钥计算Hash函数C=h(rs⊕KG),并与消息“Start left”一起发送给TagA.
(4)
最后将消息{ma,ra}发送给Reader.
3) Reader将rs,mA,C以及消息“Start right”发送给TagB.
4) TagB首先使用自己的群组公钥KG验证C的合法性,如果验证成功,选择伪随机数k2∈,计算rB,,并计算:
(5)
(6)
其中,TB用于Reader验证TagB的group身份,mB用于Verifier对TagB的身份进行确认.并发送消息{mB,TB,rB}给Reader.
5) Reader发送TB给TA.
6) TagA计算
(7)
并发送至Reader.
最终,Reader生成grouping-proof为
GP={mA,TA,mB,TB,rA,rB,rs}.
(8)
4.3 群证明验证阶段
验证一共分为2个阶段进行:1)Reader匿名验证阶段;2)Verifier认证阶段.
1) Reader匿名验证阶段
(9)
(10)
2) Verifier认证阶段
群证明GP第2阶段的验证由Verifier进行,主要用于确认参与群证明的Tag身份,其认证过程如下:
u1=rswmodn,
(11)
u2=rAwmodn.
(12)
最后验证
rA=x(u1P+u2SA)
(13)
是否成立,如果成立,则验证成功,否则验证失败.
5 协议的扩展
之前的协议描述中,假定每个群组中的Tag数量为2个,接下来对协议进行扩展,使其能够应用在包含多个Tag的群组中.
5.1 3标签的情况
首先,我们讨论groupG包含3个Tag的情况,即TagA,TagB,TagC,此时群证明的计算流程如图4所示.
Fig. 4 AGPDL protocol with three tags图4 3标签的AGPDL协议
图4中,虚线表示该协议消息是经过Reader转发的.mA,TB,mB的计算分别如式(4)~(6)所示.其中TagC的协议消息的计算为
(14)
(15)
TC被发送到TagA.TagA计算:
(16)
最后,Reader计算的群证明可以表示为
GP3={mA,TA,mB,TB,mC,TC,rA,rB,rC,rs}.
(17)
为了进行群证明校验,Reader匿名验证阶段的验证式修改为
(18)
(19)
(20)
5.2 多标签的情况
进一步考虑群组G={Tag1,Tag2,…,Tagn}(n≥3)的情况,可以得到多Tag群证明的计算链如图5所示:
Fig. 5 AGPDL protocol with n tags图5 n标签的AGPDL协议
同理,可得消息Ti与mi的计算表达式为
(21)
相应的群证明:
GP={m1,T1,r1,m2,T2,r2,…,mn,Tn,rn}.
(22)
Reader匿名校验阶段采用的验证式为
(23)
Verifier按照式(11)~(13)的方式对群证明进行最终的验证,并认证Tag的身份.
6 安全性分析
6.1 匿名性
在协议执行中,实体间传递的消息集合可以表示为{{mi,Ti,ri|i=1,2,…,n},rs},其中{ri|i=1,2,…,n}以及rs分别是由Tag与Reader生成的伪随机数,而其余消息均是通过这些伪随机数计算生成.敌手无法通过这些消息确定发送方的身份,从而确保了协议各方的匿名性.
6.2 位置隐私
6.3 防御DoP攻击
在DoP攻击中,敌手通过使用非法Tag参与群证明,破坏协议的执行,在AGPDL中,敌手在不知道群组密钥的情况下,无法以大概率构造出合法的GPi,从而无法通过验证式,协议在Reader验证阶段就会提前终止,而不会被提交到Verifier.
6.4 Tag隐私信息保护
在AGPDL中,为了在抵御DoP攻击的同时,最大程度地确保Tag信息的安全性,Reader中存储的信息为{kG,KG},其中并不包含标签的身份信息,即使敌手通过某种方式控制了Reader,并得到了其中的数据,也无法据此推断出Tag的任何隐私信息.
6.5 防御冒充攻击
敌手的冒充攻击分为2种情况:冒充Tag或者冒充Reader.其中,冒充Tag的攻击中,敌手希望能够冒充一个合法的Tag,欺骗Reader通过群证明,并进一步欺骗Verifier.而冒充Reader主要是搜集Tag的秘密信息,或者在没有扫描到Tag的情况下生成grouping-proof,欺骗Verifier.现分别描述如下:
1) 敌手冒充Tag
2) 敌手冒充Reader
敌手冒充Reader,能够搜集到的信息为GPi,所有消息均采用密文传输,在不知道Tag密钥的情况下,敌手无法通过这些消息反推出Tag的身份信息,也同样无法在不同时扫描到所有Tag的情况下提交有效的群证明.
6.6 防御重放攻击
本文采用文献[27]中使用的敌手模型,对于重放攻击,定义能被敌手访问的oracle包含4个:
1)Launch()→π,m.该oracle发起一个新的协议实例π,并且产生由Reader发出的第1条消息m.
2)SendTag(Tagi,m)→m′.该oracle将消息m和一个Tag的别名vtag作为输入,功能是将消息m发送给vtag对应的标签Tagi,i∈[1,n],并返回标签的响应消息m′.
3)SendReader(π,m)→m′.该oracle表示在协议实例π中,将消息m发送给Reader,并返回其响应m′.
4)Corrupt(Tagi)→α.该oracle表示对Tagi进行破解,并获取其内部信息α={si,P,KG}.
1) 系统设置阶段
定义一个挑战者S,完成下列工作:①使用安全参数k初始化系统,其中k表示ECC的密钥长度.②设置Reader,Verifier以及标签集合.
2) 询问阶段
敌手A调用Launch,SendTag,SendReader,获取相关信息,另外,敌手还能够调用Corrupt(Tagi),其中Tagi≠Tagx.
3) 挑战阶段
A调用Launch(),发起一个新的群证明协议实例π,使用在询问阶段得到的信息参与该协议,最终返回一个待验证的群证明p,证明协议π在Tagx没有参与协议的情况下,同时扫描到了group中包含Tagx在内的标签集合{Tagi:i∈[1,n],Tagx}.如果p能够同时被Reader和Verifier验证通过,S输出1,否则输出0.
(24)
Fig. 6 The replay attack图6 重放攻击
具体攻击过程如下:
1) 询问阶段
① 敌手A执行Launch()→π,δ,发起新的群证明协议实例π,并产生Reader的初始化消息δ={“Start first”,rs,C}.
③ 对于i=j+1,敌手A执行
(25)
得到返回值m′={ri,mi,Ti}.其中:
(26)
S将m′加入到τ中.
④ 对于i>j+1,敌手A执行
SendTag(Tagi,{rs,Ti-1,C})→m′,
(27)
得到返回值m′={ri,mi,Ti}.其中:
(28)
S将m′加入到τ中.
⑤S查询集合τ,输出
(29)
作为待定群证明.
2) 挑战阶段
① 由于敌手A能够对除Tagx之外的所有Tag调用Corrupt(Tagi)→α,得到这些标签的密钥,因此协议π中的验证表达式
(30)
在x≠i时成立.
② 对于标签Tagx,其对应的验证表达式为
(31)
证毕.
协议与其他方案的安全性比较如表3所示:
Table 3 Security Comparison of Grouping-Proof Protocols表3 群证明协议安全性对比
Notes:“√” means the protocol can provide corresponding security; “×” means the protocol can't provide corresponding security.
通过比较可以看出,AGPDL基本能够满足RFID群证明的安全需求,对于冒充攻击以及DoP攻击相对于其他协议具有一定的优势.
7 性能分析
在AGPDL中,主要的运算包含4种:基于椭圆曲线下的点乘(point multiplication)、模乘(modular multiplication)、取逆运算(modular inversion)以及Hash运算,分别表示为:Tecm,Tmul,Tinv,Th.文献[30]指出这4种运算的开销可以统一由模乘运算来进行等效,即Tinv≈3Tmul,Tecm≈1200Tmul,Th≈3.6Tmul.于是CTP与AGPDL的Tag端运算开销比较如表4所示:
Table 4 Comparison of Computational Cost表4 运算开销对比
通过比较可以看出:相对于CTP协议,本文协议在保证双层校验、防御DoP攻击的同时,性能开销有所降低.另外,考虑2标签AGPDL与n标签AGPDL的比较,可以看到标签侧的运算开销一致,协议具有较好的可扩展性.
8 总 结
本文提出了一种采用双层校验的离线RFID群证明协议AGPDL,与传统的将群证明的校验完全交给Verifier不同,本文加入了Reader的匿名校验阶段,能够在确保标签隐私信息安全的情况下,由Reader提前对群证明数据进行检查,防止DoP攻击,提升系统的效率和实时性.同时能够防止冒充攻击、重放攻击,并确保协议各方的匿名性.