考虑到RFID标签固有的内部资源有限、能量有限和快速读取的要求,在设计基于加密方案的安全协议时,所采用的密码算法在保证安全的情况下应该是越简单越好。复杂度高的算法在计算时间和计算量上都比较耗费,不适合应用于低成本的电子标签中,因此很少采用公钥加密算法。现有的认证协议大都是基于哈希函数加密技术实现的。
一般情况下,我们假定标签是被动式标签,也即是无源标签,它的低成本使得它的存储容量非常小,只能存储少量的数据信息,而且它计算能力很低。所以,在初始化时,标签Tag中只限于存储自己的唯一的标识符ID经过运算后的哈希值H(ID),本方案采用的是第三章构造的双混沌加密算法产生的哈希值。后台数据库系统中存储的是与Tag的ID相对应的H(ID’),这样做的目的是防止后台数据库被非法入侵者入侵后造成标签ID泄露。协议流程图如下图2所示。
4.1 协议的描述
协议认证过程如下:
(1)RFID读写器生成一随机数Rr,然后把Rr和请求Query一起发送给标签。
(2)标签接收读写器发送过来的Rr,对Rr进行Hash运算,然后把加密后的结果进行异或H1=H(ID)?H(Rr),发送给读写器。
(3)读写器接收标签发送过来的H1数据后,将H1和Rr发送至后台系统中。
(4)后台系统接收H1和Rr后,运算得到如图示数据。随后在数据库中查找是否存在。若存在,则证明该标签是合法的,否则是不合法。
(5)后台数据库生成一随机数Rd,然后把H2=H(ID’)?H(Rd)和Rd一起发送到阅读器,阅读器接收数据后,再发送至标签。
(6)标签接收数据H2和Rd后,首先进行验证,看是否存在ID使得H(ID)=H2?H(Rd),若存在,则证明读写器合法,否则,则证明读写器不合法。至此,双方认证结束。