本发明涉及射频识别技术领域,特别涉及一种rfid系统中标签与读写器之间双向认证的方法。
背景技术:
无线射频识(radiofrequencyidentification,rfid)是一种通过无线电信号自动识别目标标签且同时读写相关数据的技术。rfid系统一般由标签、读写器、后端数据库三者组成,其中因标签成本较低、容易部署、便于携带、寿命较长等众多优点,使得无线射频识别技术已经广泛应用在汽车收费、物流、门禁控制等各个领域中。因标签与读写器之间并不是有线方式通信,而是采用无线方式,故易被攻击者攻击,从而截获传输的数据信息,存在一定的安全隐患。为确保系统的通信安全性及可靠性,必须要保证读写器与标签之间通信消息安全,因此需要为其设计出双向认证协议以保证信息的安全可靠。
技术实现要素:
本发明提出了一种利用剩余定理及字合成运算来实现rfid系统认证的方法,通过此方法解决了rfid系统中标签及读写器之间相互认证的问题。
为解决上述技术问题,本发明采用的技术方案分为以下七个步骤:
(1)读写器生成随机数x,在计算m1、m2,向标签发送认证请求命令及m1、m2。
(2)标签根据m1、m2验证读写器的真伪,为真,进行步骤(3);否则,协议终止。
(3)标签生成随机数y,在计算m3、m4、m5、m6,并向读写器发送m4、m5、m6。
(4)读写器根据m4、m5、m6验证标签的真伪,为真,进行步骤(5);否则,协议终止。
(5)读写器计算m7,在更新信息,向标签发送m7。
(6)标签根据m7验证读写器的真伪,为真,进行步骤(7);否则,协议终止。
(7)标签更新信息,到此读写器、标签之间双向认证顺利结束。
在步骤(1)中,读写器生成随机数x,在计算m1、m2,向标签发送认证请求命令及m1、m2。
在步骤(2)中,标签根据m1、m2验证读写器的真伪,为真,进行步骤(3);否则,协议终止。
在步骤(3)中,标签生成随机数y,在计算m3、m4、m5、m6,并向读写器发送m4、m5、m6。
在步骤(4)中,读写器根据m4、m5、m6验证标签的真伪,为真,进行步骤(5);否则,协议终止。
在步骤(5)中,读写器计算m7,在更新信息,向标签发送m7。
在步骤(6)中,标签根据m7验证读写器的真伪,为真,进行步骤(7);否则,协议终止。
在步骤(7)中,标签更新信息,到此读写器、标签之间双向认证顺利结束。
附图说明
图1rfid系统双向认证流程图
图2字合成运算流程图
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
对协议中出现的符号进行如下说明:
字合成运算是指由x的前l-m位与y的后m位组合而形成新的l位数组,其中m的设定为:m=hw(y),hw(y)表示为y的汉明重量,字合成运算用符号syn(x,y)表示。
比如:取长度l=12,设x=001010100111,y=110011001001,设定m=hw(y)=7,则根据上述字合成运算的定义可以得到syn(x,y)=100100100101,具体运算过程如图2所示。
为了使算法具有一定的使用价值,规定该算法可以在如下场景中使用以及做出以下假设:
1)后端数据库与读写器之间通过有线方式通信,认为安全可靠;
2)将后端数据库与读写器看成一个整体,本文协议中简记为读写器;
3)读写器与标签之间通过无线方式通信,认为不安全,攻击者主要攻击区域;
4)读写器及标签存放的信息安全可靠,攻击者无法窃取;
5)读写器一端因包含数据库,故具备较强的计算能力及查询能力;
6)认证协议开始之前,标签端存放信息如下:(k,id,n),读写器端存放信息如下:(ki,idi,n)。rfid系统双向认证算法具体过程如图1所示:
对图1中出现的符号m1,m2,m3,m4,m5,m6,m7的说明:
整个rfid系统双向认证算法步骤描述如下:
第一步骤:
读写器首先生成一个随机数,记作x;然后计算可以得到m1、m2;最后将<m1、m2、request>一并传送给标签。其中request表示认证请求命令。
第二步骤:
标签接收到读写器发送来的信息后,首先验证
1)标签生成一个随机数,记为y;
2)利用id、x、y、k_l、k_r计算m3、m4;
3)基于二次剩余定理计算m5、m6;其中有关二次剩余定理加解密过程可参考文献[19];
4)将<m4、m5、m6>一并传送给读写器。
第三步骤:
读写器在接收到标签发送来的信息后,进行如下操作:
1)通过m6、n,同时结合二次剩余定理对y进行解密,可得到4个模平方根,依次记作:y1、y2、y3、y4;
2)通过m4、k_l、k_r来确定上述y1、y2、y3、y4中有关y的取值;
3)通过m5、n、x,同时结合二次剩余定理对m3进行解密,可得到4个模平方根,依次记作:m3_1、m3_2、m3_3、m3_4;
4)通过id、y、x可以计算得到一个m3`;
5)比对m3`与上述m3_1、m3_2、m3_3、m3_4中的值。若不存在相等的值,表明解密失败,说明标签是伪造的,协议立刻终止;若相等,表明上述解密过程是正确的,然后进行步骤6);
6)比对解密得到的y是否与count的值相等。若相等,协议立刻终止;否则,将y的值赋值给count,即count=y,然后进行步骤7);
7)读写器查询<id、k、k_old>的组合,然后计算m7,接着读写器端开始更新共享密钥,最后将m7传送给标签。更新共享密钥过程如下:k_old=k,k_new=prng(k)。
第四步骤:
标签在接收到读写器发送来的信息后,进行如下操作:
1)通过id、y、k_r可以计算得到一个m7`;
2)比对m7`与接收到的m7的值是否相等。若不相等,表明读写器是伪造的,协议立刻终止;否则,说明读写器为真,进行步骤3);
3)标签端开始更新共享密钥,更新过程如下:k_old=k,k_new=prng(k)。