1.一种基于PUF的轻量级RFID双向认证方法,其特征在于,包括以下步骤:S1:生成伪随机数种子;
S2:协议初始化;
S3:双向认证。
其中,
步骤S1具体包括:
S1-1:服务器S向标签T发送request请求;
S1-2:标签T接收到请求后,产生一个随机数r1,标签利用自身的标识假名IDS计算得到A=IDS⊕r1,B=FLIP(IDS_L,IDS_R),然后标签T将A,B发送给服务器S;
S1-3:服务器S接收到A和B后,查找数据库中是否有满足的IDS,拆分为IDS_L与IDS_R后能满足B的值;若不存在,则标签不合法,认证协议失败;若存在,服务器S利用查找出的IDS计算出随机数r1=A⊕IDS,同时产生随机数r2,并计算C=IDS⊕r2,D=FLIP(IDS_L,r2⊕IDS_R),然后服务器S将C、D发送给标签T;
S1-4:标签T接收到C和D后,计算出r2=C⊕IDS,并验证通信值D;
若验证失败,则认证协议失败;
若验证成功,服务器S计算E=FLIP(IDS_R,r2⊕IDS_L),同时计算伪随机数种子Seed1=r1⊕ROT(IDS,r2),Seed2=r2⊕ROT(IDS,r2),并将E发送给服务器S;
同时,服务器在发送C和D后开始计时,若服务器在一定的时间阈值△T内未接收到消息E,则判定发生了非同步攻击,种子同步生成失败;
若服务器在一定的时间阈值△T内接收到了消息E,则服务器S验证通信值E,若验证通过,则同步计算伪随机数种子Seed1=r1⊕ROT(IDS,r2),Seed2=r2⊕ROT(IDS,r2);
步骤S2具体包括:
S2-1:服务器S产生一个激励C,发送给标签T;
S2-2:标签T利用内置的PUF产生R1=PUF(C),R2=PUF(R1),然后发送服务器S;
S2-3:服务器端存储信息R1,R2;
步骤S3具体包括:
S3-1:服务器S使用伪随机数发生器计算K1=PRNG(Seed1),K2=PRNG(Seed2),然后计算M1=ROT(FLIP(K2,K1),K1)⊕Ri,M2=FLIP(ROT(Ri+1,K1),K2),发送给标签T;i是协议认证第i轮;
S3-2:标签T收到M1,M2后,首先计算K1=PRNG(Seed1),K2=PRNG(Seed2),假设此时PRNG的计算次数为n=n0,然后利用K1和K2从M1中提取Ri,利用PUF计算Ri+1=PUF(Ri),并验证M2是否正确;
若验证失败,说明K1,K2与服务器端不同步,发生了非同步攻击,使用种子重新为K1和K2计算出下一对值,PRNG计次n=n+1;
若直到PRNG的计次n>n0+nt时仍未能成功验证M2,则协议认证失败;
若验证成功,标签T计算Ri+2=PUF(Ri+1),M3=ROT(FLIP(K1,K2),K2)⊕Ri+2,M4=FLIP(ROT(Ri+2,K2),K1),发送给服务器S;
S3-3:服务器S从M3中提取Ri+2,并验证通信量M4的正确性,若验证失败,则标签不合法,协议认证失败;
若验证成功,则协议双向认证成功;
然后服务器端更新Ri+1,Ri+2;第i轮认证结束。
2.根据权利要求1中所述的方法,其特征在于,所述FLIP是比特位翻转Z=FLIP(X,Y)计算,具体包括:步骤一:对X作翻转操作
长度为L的二进制串,初始指针j=1,汉明重量为w,对aj...aj+w所在子串翻转,然后指针j=j+1,翻转后新串的汉明重量重新计算,重复此过程,直到j-1+w>L时结束;
步骤二:错位异或
对(一)中得到的X与Y错位异或得到Z。
zj=xj⊕y(j+w)modL
w为Y的汉明重量,L为Y的串长,mod的定义为取余运算,j为x和y两个二进制串中的第j位。