微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > Key值更新随机Hash锁对RFID安全隐私的加强

Key值更新随机Hash锁对RFID安全隐私的加强

时间:09-21 来源:互联网 点击:
2.2.3 Hash链(Hash Chain)

NTT实验室提出了一个Hash链方法,其保证了前向安全性,工作机制如下:锁定标签:对于标签ID,阅读器随机选取一个数Sl发送给标签,并将(ID,S )存储到后台数据库中,标签存储接收



到Sl后,进入锁定状态。

解锁标签:在第i次事务交换中,阅读器向标签发出询问消息,标签回答ai=G(S。),并更新Si+l=H(s。),其中G和H为单向Hash函数,如图4所示。

阅读器接收到ai后,搜索数据库中所有的(ID,S1)数据对,并为每个标签计算ai =G(H (s1)),比较ai*是否等于ai,若相等,则返回相应ID。

方法优点:具有不可分辨性,因为G是单向Hash函数,外人获得a。值不能推算出S。值,当外人观察标签输出时,G输出的是随机数,所以不能将a。和a。+l联系起来;具有前向安全性,因为H是单向Hash函数,即使窃取了Si+1值,也无法推算出S 值,所以无法获得标签历史活动信息。

方法缺点:需要为每一个标签计算ai*:G(H (s1)),假设数据库中存储的标签个数为N,则需进行N个记录搜索,2N个Hash函数计算,N次比较,计算和比较量较大,不适合标签数目较多的情况。

3 Key值更新随机Hash锁

鉴于上述几种安全隐私保护方法存在的缺陷,并结合几种方法的思想,本文提出了一种“Key值更新随机Hash锁”方法,实现了安全高效的读取访问控制。

3.1工作原理

数据库记录主要包括4列:H(Key),ID,Key,Pointer,主键为H(Key)。其中ID为标签唯一标志号,Key是阅读器为每个标签选取的随机关键字,H(Key)是Key的单向Hash函数H计算值,Pointer是数据记录关联指针,主要用来保证数据的一致性。

下面详细阐述该方法的基本工作原理:

(1)锁定标签

对于标签ID,首先阅读器随机选取一个数作为该标签的Key,将Key值发送给该标签,并建立标签在数据库中的初始记录(H(Key),ID,Key,0)),标签将接收到的Key值存储下来后,进入锁定状态。

(2)解锁标签

1)数据库首先产生一个随机数R,传送给阅读器,然后阅读器将询问消息Query和R都发送给标签;

2)标签根据接收到的R和自身Key值,计算H(Key)和H(KeylIR)的值,然后将(H(Key),H(KeylIR))数据对发送给阅读器,接着自行计算H(IDIIR)和Key =S(key),但此时Key值并不更新。

3)阅读器查找数据库中的记录, 若找到记录i:

(H(Keyi),IDk,Key。,Pointeri),其中H(Key。):H(Key),则数据库计算H(KeyjIIR),并比较H(Key ItR)与接收到的H(KeyIIR)值是否相等。若不相等,则忽略此消息,表明标签是非法标签,在此阅读器完成对标签的合法性验证;若相等则继续下一步;

4)数据库计算H(IDkIIR)的值,并将IDk和H(IDkIIR)的值都传送给阅读器。然后阅读器将H(IDkIIR)发送给标签;

5)数据库计算Key*i=S(key。)和H(Key* )的值。若Pointeri:O, 则在数据库中添加新的记录J:(H(Key*i),IDbKey i,i),并将记录i修改成(H(Key。),IDbKeyij); 若Pointer !=O, 则找到第Pointer。条记录, 将其修改成(H(Key i),IDk,Key i,i);

6)在标签接收到H(IDkIIR)后,比较其与标签在第2步中计算的H(IDIIR)是否相等,若相等,则将自身的Key值更新为Key ,标签进入解锁状态,对阅读器开放其所有功能;若不相等,表明阅读器是非法阅读器,标签保持沉默,在此标签完成对阅读器的验证。如图5所示。



3.2 数值实验

设数据库初始时存储了两个标签,ID分别为1、2,随机选择的Key分别为5、12,数据库初始化如表1所示。



设阅读器要询问ID为1的标签,首先阅读器向标签发送询问消息和随机数3,标签向阅读器回答数据(H(5),H(5II3)),接着自行计算自身的H(IDIIR)=H(1Il3)值和Key =s(5);阅读器根据H(5)查找后台数据库,找到记录1:(H(5),1,5,0),数据库计算H(KeyllR)=H(5lI3),与接收到的H(5113)相等,至此验证了标签是合法的;接着数据库计算H(IDIIR)=H(1 113),并将(1,H(1113))传送给阅读器,由此阅读器知道了该标签的ID为1,然后阅读器将H(1113)发送给标签; 数据库计算Key*I=s(5), 由于PointerI=0,数据库中新建一条记录3:(H(s(5)),1,s(5),1),并将记录1修改为(H(5),1,5,3)。标签接收到数据H(1 113)后,比较发现其等于之前计算的H(IDIIR),于是将自身Key值更新为s(5)。此时数据库中的数据记录如表2所示。



下一次再与标签1通信时,数据库根据标签的H(Key)=H(s(5))查找到第3条记录,该记录的Pointer为1,则第2次更新Key值的记录将会覆盖第1条记录。

当标签被询问过一次之后,数据库中始终保持了两条与该标签有关的数据记录,这主要是为了保证数据的一致性。假设在这次通信中阅读器发送的数据H(ll3)并未成功地被标签接收到,则标签1的Key值将不会更新,此时数据库的第3条记录是错误的。那么在下次与标签1的通信中,查找到的仍是记录1,数据库根据记录1的Pointer值为3,将修改第3条记录,如此就保证了数据的一致性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top