一种RFID系统密钥无线生成的方法与流程

文档序号:16290056发布日期:2018-12-18 20:32阅读:237来源:国知局
一种RFID系统密钥无线生成的方法与流程

本发明涉及射频识别技术领域,具体涉及一种RFID系统密钥无线生成的方法。



背景技术:

伴随着科技的不断进步,射频识别技术在日常生活中应用的越来越广泛。在现有的RFID系统中,一般是由读写器、标签、后端数据库三部分组成,其中读写器与后端数据库之间是通过网线进行的有线数据传输方式,因此两者之间的通信一般认为是安全可靠的,故可将两者看成一个整体;而读写器与标签之间的传输是通过无线的方式进行数据信息的交换,该方式下存在一定的安全缺陷,其中读写器与标签之间的共享密钥的安全性将直接影响两者之间传输的数据是否安全可靠,因此共享密钥的安全是通信过程中要重点保证安全的对象。

现有的RFID系统中,标签因受到成本低的要求,导致标签端的存储空间、计算能力、数据交流方式等方面都受到严重的制约,标签端的计算能力尤其受限,无法进行传统的大量计算,因此在现有的RFID系统中,标签与读写器之间的共享密钥,绝大多数都是事先设置好初始密钥值。这样虽然在一定程度上减少了标签端的计算量,但同时也存在一定的安全隐患,攻击者可以通过一些攻击手段来获得初始密钥值,从而进一步获取其他隐私的信息,因此这种方式产生的密钥具有一定的安全缺陷。



技术实现要素:

为了克服现有技术存在的缺点与不足,本发明提供一种RFID系统密钥无线生成的方法。

本发明采用如下技术方案:

一种RFID系统密钥无线生成的方法,所述RFID系统包括标签及读写器,所述读写器内存有标签的标识符ID;

包括如下:

读写器确定密钥生成类型;所述密钥生成类型包括单个标签密钥生成、批量密钥生成及群组密钥生成;

根据不同密钥生成类型,读写器和标签之间生成共享密钥。

所述单个标签密钥生成类型具体为一个标签生成一个共享密钥,具体过程如下:

S1.1读写器向标签发送密钥生成请求指令;

S1.2标签收到请求命令,计算A=ID_R⊕ID_L,然后将(A,i)传给读写器,其中ID_R是标签标识符ID的右半部分的值,ID_L是标签标识符ID的左半部分的值,其中i为标签编号;

S1.3读写器接收到S1.2的信息后,读写器验证标签是否伪造,如果伪造则通信立刻终止,否则读写器产生两个长度为L位的随机数r1和r2,计算B=IDi_R⊕r1和D=IDi_L⊕r2,最后将(B,D)传给标签;

S1.4标签收到读写器发送的(B,D),标签通过ID_R和ID_L计算得到随机数r1和r2,r1=B⊕ID_R,r2=D⊕ID_L,进一步计算得到E=Cro(r1,ID_R)⊕Cro(r2,ID_L),最后将(E,i)传给读写器;

S1.5读写器接收到(E,i)后,读写器计算E`=Cro(r1,IDi_R)⊕Cro(r2,IDi_L),并将E`的值与E的值进行对比,若不相等,说明标签是伪造的,通信立刻终止;若相等,则读写器计算F=Cro(IDi_R,r1)⊕Cro(IDi_L,r2)&r1&r2和ki=Cro(IDi_R,r1)⊕Cro(IDi_L,r2),并将ki作为读写器与标签i之间的共享密钥,最后把F传给标签;

S1.6标签在收到读写器发送来的F以后,标签首先通过计算得到的随机数r1、r2以及自身存放的ID_R、ID_L来计算F`=Cro(ID_R,r1)⊕Cro(ID_L,r2)&r1&r2,并将F`的值与F的值进行对比,若不相等,说明读写器是伪造的,通信立刻终止;若相等,然后标签就利用ID_R、ID_L、r1、r2来计算k=Cro(ID_R,r1)⊕Cro(ID_L,r2),并将k作为自身与读写器之间的共享密钥。

所述批量密钥生成具体为一组标签分别生成不同的密钥,包括如下步骤:

S2.1读写器向一组标签广播密钥生成请求命令;

S2.2标签收到命令后,组内标签计算G=IDi_R⊕IDi_L,然后将(G,i)传给读写器;

S2.3读写器在接收(G,i)后,读写器查看是否存储相对应i`,若没有,则说明标签是伪造的,通信立刻终止;若有,则读写器计算IDi_R⊕IDi_L,将计算结果与S2.2的G值进行对比,若不相等,则说明标签是伪造的,若相等,则读写器产生两个长度为L位的随机数r1和r2,然后计算H=IDi_R⊕r1和M=IDi_L⊕r2,最后将(H,M,i)发送给组内的所有标签;

S2.4组内的所有标签在收到读写器收到(H,M,i)后,标签验证i与所存放的是否一致,若不一致,则舍弃,若一致,则标签通过ID_R和ID_L计算得到随机数r1和r2,具体为:r1=H⊕ID_R,r2=M⊕ID_L;进一步计算N=Cro(r1,ID_R)⊕Cro(r2,ID_L),最后将(N,i)传给读写器;

S2.5读写器在收到(N,i)后,读写器首先利用与编号i对应标识符计算N`=Cro(r1,IDi_R)⊕Cro(r2,IDi_L),并将N`的值与N的值进行对比,若不相等,说明标签是伪造的,通信立刻终止;若相等,然后读写器计算Q=Cro(IDi_R,r1)⊕Cro(IDi_L,r2)&r1&r2和ki=Cro(IDi_R,r1)⊕Cro(IDi_L,r2),并将ki作为读写器与标签i的共享密钥,最后把(Q,i)发送给组内的所有标签;

S2.6标签在收到读写器发送来的(Q,i)以后,标签首先验证接收到的i与自身存放的编号是否一致,若不一致,标签就舍弃该消息;若一致,标签就通过计算得到的随机数r1、r2以及自身存放的ID_R、ID_L来计算Q`=Cro(ID_R,r1)⊕Cro(ID_L,r2)&r1&r2,并将Q`的值与Q的值进行对比,若不相等,说明读写器是伪造的,通信立刻终止;若相等,然后标签就利用ID_R、ID_L、r1、r2来计算k=Cro(ID_R,r1)⊕Cro(ID_L,r2),并将k作为标签与读写器之间的共享密钥。

所述群组密钥生成具体为:读写器为一组标签同时产生一个共同的组密钥,包括如下步骤:

S3.1读写器向全组标签广播密钥生成请求指令;

S3.2组内标签收到该命令后,各个标签将自身存放的IDi_R发送给读写器;

S3.3读写器收到标签回复后,逐一对比收到的IDi_R与读写器存储的每个标签对应的IDi_R进行对比,若不一致则说明有标签没有响应此命令,此时读写器将再次发送密钥生成请求命令;若完全一致,则说明组内所有标签均已应答,然后读写器产生长度为L位的随机数r,计算k=Cro(ID1_L,r)⊕Cro(ID2_L,r)⊕······⊕Cro(IDn_L,r),接着再计算ki=k⊕Cro(IDi_L,i),并将k作为一个共享群组密钥,把ki作为相对应标签Ti计算密钥生成因子,其中n为组内标签个数,i为组内标签编号;

S3.4读写器将(IDi_R,ki)发送给组内的所有标签;

S3.5标签收到后,把验证收到的IDi_R与标签本身的ID_R是否一致,若一致,则标签计算k=ki⊕Cro(ID_L,i),所述i为标签的编号,并将k作为群组密钥;若不一致,标签就舍弃该消息。

所述三个随机数r1、r2及r的长度为L位,均为二进制随机数。

标签存有标签标识符ID的左半部分的值及右半部分的值,其长度均为L位。

所述读写器存储标签的标识符ID的左半部分的值IDi_L及右半部分的值IDi_R,其长度为L位。

所述读写器根据用户选择方式确定密钥生成类型。

所述读写器接收到S1.2的信息后,读写器验证标签是否伪造,如果伪造,则通信立刻终止,具体验证方法为:读写器收到(A,i)之后,读写器首先查看是否存放相对应的i`,若没有,说明标签是伪造的,通信立刻终止;若有,然后读写器利用相对应的自身存放的IDi_L和IDi_R的值来计算IDi_R⊕IDi_L,并将计算结果与接收到的A进行比对,若不相等,说明标签是伪造的。

如果标签与读写器均合法,则标签存储的标签标识符左半部分与读写器存储相对应的标签的左半部分相等,即IDi_L=ID_L;标签存储的标签标识符右半部分与读写器存储相对应的该标签的右半部分相等,即IDi_R=ID_R;读写器发送到标签的密钥及该标签发送读写器的密钥相等,即ki=k。

本发明具有如下效果:

在本方法中,标签与读写器之间的共享密钥不再是事先设置好的,而是在两者进行双向认证之前,采用无线生成密钥的方法来形成两者之间共享的密钥,这样就可以避免因事先设置初始密钥值而导致的一些不必要的安全隐患问题;

标签端不在有随机数产生器,使得标签端的计算量有一定程度的减少,同时也使得标签端的门电路总个数有所减少,从而达到降低标签成本的目标;

通过安全性分析表明,本方法不仅能够抵抗主动攻击和被动攻击,而且还可以弥补现有技术的不足,可以完全抵抗暴力破解攻击。

附图说明

图1是本发明的工作流程图。

具体实施方式

下面结合实施例及附图,对本发明作进一步地详细说明,但本发明的实施方式不限于此。

实施例

如图1所示,一种RFID系统密钥无线生成的方法,所述RFID系统包括标签、显示屏及读写器,所述显示屏与读写器连接,所述读写器包括后台数据库,存储标签相对应的标签标识符ID。

具体包括:

读写器确定密钥生成类型;具体是显示屏显示密钥生成类型按钮,所述密钥生成类型包括单个标签密钥生成、批量密钥生成及群组密钥生成,用户选择类型,读写器确定密钥生成类型;

根据不同密钥生成类型,读写器和标签之间生成共享密钥。

所述单个标签密钥生成类型具体为一个标签生成一个共享密钥,具体过程如下:

S1.1读写器向标签发送密钥生成请求指令;

S1.2标签收到请求命令,计算A=ID_R⊕ID_L,然后将(A,i)传给读写器,其中ID_R是标签标识符ID的右半部分的值,ID_L是标签标识符ID的左半部分的值,i为标签编号;

S1.3读写器接收到S1.2的信息后,读写器验证标签是否伪造,如果伪造,则通信立刻终止,否则读写器产生两个长度均为L位的随机数r1和r2,计算B=IDi_R⊕r1和D=IDi_L⊕r2,最后将(B,D)传给标签;

读写器接收到S1.2的信息后,读写器验证标签是否伪造,如果伪造,则通信立刻终止,具体验证方法为:读写器收到(A,i)之后,读写器首先查看是否存放相对应的i`,若没有,说明标签是伪造的,通信立刻终止;若有,然后读写器利用相对应的自身存放的IDi_L和IDi_R的值来计算IDi_R⊕IDi_L,并将计算结果与接收到的A进行比对,若不相等,说明标签是伪造的。

S1.4标签收到读写器发送的(B,D),标签通过ID_R和ID_L计算得到随机数r1和r2,r1=B⊕ID_R,r2=D⊕ID_L,进一步计算得到E=Cro(r1,ID_R)⊕Cro(r2,ID_L),最后将(E,i)传给读写器;

S1.5读写器接收到(E,i)后,读写器计算E`=Cro(r1,IDi_R)⊕Cro(r2,IDi_L),并将E`的值与E的值进行对比,若不相等,说明标签是伪造的,通信立刻终止;若相等,则读写器计算F=Cro(IDi_R,r1)⊕Cro(IDi_L,r2)&r1&r2和ki=Cro(IDi_R,r1)⊕Cro(IDi_L,r2),并将ki作为读写器与标签i之间的共享密钥,最后把F传给标签;

S1.6标签在收到读写器发送来的F以后,标签首先通过计算得到的随机数r1、r2以及自身存放的ID_R、ID_L来计算F`=Cro(ID_R,r1)⊕Cro(ID_L,r2)&r1&r2,并将F`的值与F的值进行对比,若不相等,说明读写器是伪造的,通信立刻终止;若相等,然后标签就利用ID_R、ID_L、r1、r2来计算k=Cro(ID_R,r1)⊕Cro(ID_L,r2),并将k作为自身与读写器之间的共享密钥。

所述批量密钥生成具体为一组标签分别生成不同的密钥,包括如下步骤:

S2.1读写器向一组标签广播密钥生成请求命令;

S2.2标签收到命令后,组内标签计算G=IDi_R⊕IDi_L,然后将(G,i)传给读写器;

S2.3读写器在接收(G,i)后,读写器查看是否存储相对应i`,若没有,则说明标签是伪造的,通信立刻终止;若有,则读写器计算IDi_R⊕IDi_L,将计算结果与S2.2的G值进行对比,若不相等,则说明标签是伪造的,若相等,则读写器产生两个长度均为L位的随机数r1和r2,然后计算H=IDi_R⊕r1和M=IDi_L⊕r2,最后将(H,M,i)发送给组内的所有标签;

S2.4组内的所有标签在收到读写器发送的(H,M,i)后,标签验证i与所存放的是否一致,若不一致,则舍弃,若一致,则标签通过ID_R和ID_L计算得到随机数r1和r2,具体为:r1=H⊕ID_R,r2=M⊕ID_L;进一步计算N=Cro(r1,ID_R)⊕Cro(r2,ID_L),最后将(N,i)传给读写器;

S2.5读写器在收到(N,i)后,读写器首先利用与编号i对应的标识符,计算N`=Cro(r1,IDi_R)⊕Cro(r2,IDi_L),并将N`的值与N的值进行对比,若不相等,说明标签是伪造的,通信立刻终止;若相等,然后读写器计算Q=Cro(IDi_R,r1)⊕Cro(IDi_L,r2)&r1&r2和ki=Cro(IDi_R,r1)⊕Cro(IDi_L,r2),并将ki作为读写器与标签i的共享密钥,最后把(Q,i)发送给组内的所有标签;

S2.6标签在收到读写器发送来的(Q,i)以后,标签首先验证接收到的i与自身存放的编号是否一致,若不一致,标签就舍弃该消息;若一致,标签就通过计算得到的随机数r1、r2以及自身存放的ID_R、ID_L来计算Q`=Cro(ID_R,r1)⊕Cro(ID_L,r2)&r1&r2,并将Q`的值与Q的值进行对比,若不相等,说明读写器是伪造的,通信立刻终止;若相等,然后标签就利用ID_R、ID_L、r1、r2来计算k=Cro(ID_R,r1)⊕Cro(ID_L,r2),并将k作为标签与读写器之间的共享密钥。

所述群组密钥生成具体为:读写器为一组标签同时产生一个共同的组密钥,包括如下步骤:

S3.1读写器向全组标签广播密钥生成请求指令;

S3.2组内标签收到该命令后,各个标签将自身存放的IDi_R发送给读写器;

S3.3读写器收到标签回复后,逐一对比收到的IDi_R与读写器存储的每个标签对应的IDi_R,若不一致,则说明有标签没有响应此命令,此时读写器将再次发送密钥生成请求命令;若完全一致,则说明组内所有标签均已应答,然后读写器产生长度为L位的随机数r,计算k=Cro(ID1_L,r)⊕Cro(ID2_L,r)⊕······⊕Cro(IDn_L,r),接着再计算ki=k⊕Cro(IDi_L,i),并将k作为一个共享群组密钥,把ki作为相对应标签Ti计算密钥生成因子,其中n为组内标签个数,i为组内标签编号;

S3.4读写器将(IDi_R,ki)发送给组内的所有标签;

S3.5标签收到后,比对收到的IDi_R与标签本身存储的ID_R是否一致,若一致,则标签计算k=ki⊕Cro(ID_L,i),所述i为标签的编号,并将k作为群组密钥;若不一致,标签就舍弃该消息。

上述生成密钥的过程中,随机数r1、r2及r的长度为L位,均为二进制随机数,比如r1为8位二进制的随机数,如0110 0011。

上述生成过程中:⊕:异或运算;&:与运算;Cro(x,y):交叉位运算。

Cro(X,Y)交叉位运算具体地,设X、Y是两个具有偶数位L位的二进制数,X=x1x2x3...xL,Y=y1y2y3...yL;其中,xi,yi取值范围为{0,1},i=1,2,..L;交叉位运算Cro(X,Y)是指由X的奇数位和Y的偶数位相互交叉形成新的L位数组;交叉位运算可在标签中按照如下方法实现:定义两个指针p1和p2分别指向X和Y,当p1指向X的奇数位时,把此位置上的值赋予运算结果的偶数位;当p2指向Y的偶数位时,则把此位置上的指赋予运算结果的奇数位。例如,取长度L=12,设X=111000110110,Y=011001011100,则Cro(X,Y)=110110111001。

本发明的安全性分析:

从被动攻击和主动攻击两个角度进行安全性分析,并且分析的同时针对三种不同场景的应用也给出相对应的安全性分析。

被动攻击

攻击者可以通过监听等手段,来获得标签与读写器之间一个完整的通信信息。

针对单个标签密钥生成情况,攻击者可以截获A,B,D,E,F完整的信息,但是攻击者还是没有办法破解出任何有用的信息。首先A是由ID_R和ID_L进行异或运算得到的,攻击者不知晓这两个具体的数值,没办法破解出有用的信息;其次在B和D两个信息中,一共有四个量,即r1,r2,IDi_R,IDi_L,在这四个量中,攻击者事先不知晓任何一个,因此也没有办法破解出有用的信息;接着在E和F中,都是运用交叉位运算方法对要传输的信息进行加密之后再传输的,这样攻击者更是没有办法获得任何有用的信息;然后E和F中,还有随机数r1和r2,每次生成的密钥过程中随机数都是不一样的,这样攻击者无法破解信息;最后生成的共享密钥也没有在上述过程中传输,所以攻击者即便是获取一个完整的通信过程信息,仍然无法获知任何有用的信息,因此该种情况下本方法可以抵抗被动攻击。

针对批量密钥生成情况,攻击者可以截获G,H,M,N,Q完整的信息,但是攻击者还是没有办法破解出任何有用的信息。首先G是由IDi_R和IDi_L进行异或运算得到的,攻击者不知晓这两个具体的数值,没办法破解出有用的信息;其次在H和M两个信息中,一共有四个量,即r1,r2,IDi_R,IDi_L,在这四个量中,攻击者事先不知晓任何一个,因此也没有办法破解出有用的信息;接着在N和Q中,都是运用交叉位运算方法对要传输的信息进行加密之后再传输的,这样攻击者更是没有办法获得任何有用的信息;然后N和Q中,还有随机数r1和r2,每次生成的密钥过程中随机数都是不一样的,这样攻击者无法破解信息;最后生成的共享密钥也没有在上述过程中传输,所以攻击者即便是获取一个完整的通信过程信息,仍然无法获知任何有用的信息,因此该种情况下本方法可以抵抗被动攻击。

针对群组密钥生成情况,攻击者可以获得IDi_R和ki这个值,但是对于攻击者而言没有任何的用。首先共享密钥在生成的过程中,不仅没有用到IDi_R,而且用到的IDi_L在整个通信过程中根本没有出现过,这样攻击者根本没有办法破解出有用的信息;其次共享密钥的生成过程中,会用到读写器产生的随机数r,而随机数r除了读写器知道之外,其他人是不可能知晓的;接着共享密钥在生成的过程中,采用交叉位运算进行加密,同时与每个标签的IDi_L都有关系,即便是攻击者可以获取一些标签的IDi_L,但是对于攻击者而言还是没有用处的,因为只要其中任何一个地方出错,最后都是无法计算出共享密钥的,因此该种情况下本方法可以抵抗被动攻击。

主动攻击

攻击者可以伪装成合法的读写器给标签发送命令,来获取合法的共享密钥;同样攻击者也可以伪装成合法的标签来响应读写器发来的命令,来获取合法的共享密钥。经过分析会发现,本方法可以抵抗上述两种攻击方式。

(1)攻击者伪装成合法的读写器

针对单个标签密钥生成情况,攻击者伪装成合法的读写器向标签发送Request命令,可以得到A的信息,但是因为攻击者不知道相对应标签的IDi_R和IDi_L的值,因此攻击者没有办法计算出正确的B和D的值,标签在接收到B和D的值之后,通过计算可以得到假的随机数r1和r2,再将计算的E的值传给攻击者,而此时攻击者无法验证E的真伪,同时在下一步中,标签可以通过F的值来验证读写器的合法性,通过简单的计算便可以判断出读写器是伪造的,通信马上终止,而到此为止,攻击者并没有获得任何有用的信息,比如:攻击者没有破解出ID_L和ID_R,因此该种情况下本方法可以抵抗主动攻击。

针对批量密钥生成情况,攻击者伪装成合法的读写器向标签发送Request命令,可以得到G的信息,但是因为攻击者不知道相对应标签的IDi_R和IDi_L的值,因此攻击者没有办法计算出正确的H和M的值,标签在接收到H和M的值之后,通过计算可以得到假的随机数r1和r2,再将计算的N的值传给攻击者,而此时攻击者无法验证N的真伪,同时在下一步中,标签可以通过Q的值来验证读写器的合法性,通过简单的计算便可以判断出读写器是伪造的,通信马上终止,而到此为止,攻击者并没有获得任何有用的信息,比如:攻击者没有破解出ID_L和ID_R,因此该种情况下本方法可以抵抗主动攻击。

针对群组密钥生成情况,攻击者伪装成合法的读写器向标签发送Request命令,即便是攻击者之前已经获取所有标签的IDi_R的值,但是共享密钥的计算与标签的IDi_R是没有任何关系的,同时标签的IDi_R与标签的IDi_L之间是没有任何关系的,因此即使攻击者知道标签的IDi_R也是没有任何用处的,同时共享密钥的计算过程中采用交叉位运算进行加密,在传输的过程中信息也是通过加密以后在传给标签的,攻击者也只能截获ki的值,而有此值想要计算出共享密钥k的值是可不能的,因为攻击者不知晓相对应标签的IDi_L的值,因此该种情况下本方法可以抵抗主动攻击。

(2)攻击者伪装成合法标签

针对单个标签密钥生成情况,攻击者伪装成合法的标签,会响应读写器发送来的信息。即便是攻击者已经通过伪装成合法的读写器获取所有标签计算出A的值,但是攻击者在第三步骤中没有办法通过计算得到读写器产生的随机数r1和r2的值,那么攻击者计算出的E的值将会在第四步中被读写器识别出是假的,从而判断出标签是伪造的,通信会立刻终止,而到此为止,攻击者并没有破解出有用的信息,因此该种情况下本方法可以抵抗主动攻击。

针对批量密钥生成情况,攻击者伪装成合法的标签,会响应读写器发送来的信息。即便是攻击者已经通过伪装成合法的读写器获取所有标签计算出G的值,但是攻击者在第三步骤中没有办法通过计算得到读写器产生的随机数r1和r2的值,那么攻击者计算出的N的值将会在第四步中被读写器识别出是假的,从而判断出标签是伪造的,通信会立刻终止,而到此为止,攻击者并没有破解出有用的信息,因此该种情况下本方法可以抵抗主动攻击。

针对群组密钥生成情况,攻击者伪装成合法的标签,会响应读写器发送来的信息。该种情况下的共享密钥的计算过程中没有使用到标签的IDi_R的值,而是使用的标签的IDi_L的值,但是这个值在通信过程中并没有出现过,因此对于攻击者而言是无法知晓的,正是因为如此,攻击者即使得到ki的值,仍然没有办法破解出共享密钥的值,并且共享密钥的计算过程中用到读写器产生的随机数r,随机数每次都是不一样的,这样更加增大攻击者破解的难度,因此该种情况下本方法可以抵抗主动攻击。

综合上面的安全性分析,本方法不仅可以抵抗主动攻击和被动攻击,而且还可以抵抗暴力破解攻击,同时在特定的场景中,还可以马上识别标签或读写器的真伪,从而缩短了认证过程中一些不必要的通信时间。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受所述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1