1. 三次互认证协议
三次互认证协议是REID系统认证的一般模式。在该互认证过程中,属于同一应用的所有标签和读写器共享同一加密秘钥。标签和读写器之间的互认证过程如图1所示。由于同一应用的所有标签都使用唯一的加密密钥,所以三次互认证协议具有安全隐患。

图1 三次互认证协议
2. Yoking-proof协议
由于标签是一种便宜的小器件,它们之间不能通信。因此,Juels提出了一种名为“Yoking-proof”的安全协议,该协议可以通过将读写器作为通信媒介使两个标签相互通信。
在该协议中,由于标签通过使用随机数来计算MAC,所以攻击者可以通过保留先前的随机数来进行重放攻击。
3. 使用时间戳的Yoking-proof协议
一种使用时间戳的Yoking-proof协议可以用来定位重放攻击。在协议中,标签通过把密钥应用到来自数据库的时间戳上来计算MAC。因此,可以通过MAC来验证时间戳。由于标签通过使用时间戳来计算MAC,所以该协议可以通过MAC重用来阻止重放攻击。但是,该协议依赖于功耗,增加了系统的计算负载和标签成本。使用时间戳的Yoking-proof协议如图2所示。

图2 Yoking-proof协议
4. 分布式询问一应答协议
Rhee等人提出了一种适用于分布式数据库环境的RΠD认证协议,答型双向认证协议,其协议流程如图3所示。

图3 分布式询问一应答认证协议
该分布式RFID询问一应答协议的执行过程如下:
(1)读写器生成一秘密随机数RReader,向标签发送Query认证请求,将,RReader,发送给标签;
(2)标签生成一随机数RTag,计算H(ID||Reader||RTag),其中ID为标签的标识,标签将(H(ID||RReader||RTag)发送给读写器;
(3)读写器将(H(ID||RReader||RTag),RReader,RTag)发送给后台数据库;
(4)后台数据库检查是否有某个IDj(1≤j≤n),使得H(ID||Reader||RTag)=H(ID||RReader||RTag)成立;如果有,则认证通过,并将H(IDj||RTag)发送给读写器;
(5)读写器将H(IDj||RTag)转发给标签;
(6)标签验证H(IDj||RTag)=H(ID||RTag)是否成立,如果成立,则认证通过。
到目前为止,还没有发现该协议有明显的安全漏洞或缺陷。但是,在本方案中,执行一次认证协议需要标签进行两次Hash运算。标签电路中自然也需要集成随机数发生器和Hash函数模块,因此它也不适合于低成本RFID系统。
5. LCAP协议
LCAP协议也是询问一应答协议,但是与前面的其他同类协议不同,它每次执行之后都要动态刷新标签的ID,其协议流程如图4所示。

图4 LCAP协议
LCAP协议的执行过程如下:
(1)读写器生成一秘密随机数R,向标签发送Query认证请求,将R发送给标签;
(2)标签计算HaID=H(ID)和HL(ID||R),其中ID为标签的标识,HL表示Hash函数H输出的左半部分,标签将(HaID,HL(ID||R))发送给读写器;
(3)读写器将(HaID,R,HL(ID||R))发送给后台数据库:
(4)后台数据库检查Prey数据条目中HaID的值是否与所接收到的HaID一致。如果一致,则使用R和Prey数据条目中的ID信息来计算HR(ID||R),其中HR表示Hash函数H输出的右半部分;然后,后台数据库更新Curr数据条目中的信息如下:HaID=H(ID⊙R),ID=ID⊙R。Prey数据条目中的TD数据域设为HaID=H(ID⊙R)。最后,将HR(ID||R)发送给读写器;
(5)读写器将HR(ID||R)转发给标签;
(6)标签验证HR(ID||R)的有效性,如果有效,则更新其ID为ID=ID⊙R。
由上面的叙述可知,标签是在接收到消息5且验证通过之后才更新其ID的,而在此之前,后台数据库己经成功完成相关D的更新。因此,与基于Hash的ID变化协议的情况类似,LCAP协议也不适合于使用分布式数据库的普适计算环境,同时也存在数据库同步的潜在安全隐患。
6. David数字图书馆RFID协议
David等提出了数字图书馆RFID协议,其使用基于预共享密钥的伪随机函数来实现认证,协议流程如图5所示。

图5 David数字图书馆RFID协议