发明名称 基于比特串的RFID系统中标签与后端数据库的认证协议
摘要 一种基于比特串的RFID系统中标签与后端数据库的认证协议,1)读写器发送一个随机比特串R和查询请求Query给标签;2)收到请求后,标签生成随机正整数n<sub>1</sub>和n<sub>2</sub>,由此产生第一比特串PID<sub>1L</sub>和第二比特串PID<sub>2R</sub>,计算标签安全标识符的临时值SID<sub>temp</sub>,然后计算比特串<img file="dsa00000555343200011.GIF" wi="701" he="59" />发送结果R’||n<sub>1</sub>||n<sub>2</sub>给读写器;3)读写器收到标签发送来的R’||n<sub>1</sub>||n<sub>2</sub>后,将自己的身份标识ID<sub>Reader</sub>和随机比特串R与其进行串联,得到ID<sub>Reader</sub>||R||R’||n<sub>1</sub>||n<sub>2</sub>,对其进行加密,将所得的密文发送给后端数据库;4)后端数据库计算<img file="dsa00000555343200012.GIF" wi="162" he="43" />以得到<img file="dsa00000555343200013.GIF" wi="506" he="58" />然后在后端数据库中搜索是否存在合适的第一变量SID<sub>pre</sub>或第二变量SID<sub>cur</sub>,其PID<sub>1Ltemp</sub>与PID<sub>2Rtemp</sub>的异或计算结果等于上面计算出的<img file="dsa00000555343200014.GIF" wi="239" he="48" />)读写器收到后端数据库发来的消息后进行解密:6)验证。
申请公布号 CN102436592A 申请公布日期 2012.05.02
申请号 CN201110230282.0 申请日期 2011.08.12
申请人 郑州轻工业学院 发明人 甘勇;贺蕾;金保华;钱慎一;孙彤
分类号 G06K17/00(2006.01)I 主分类号 G06K17/00(2006.01)I
代理机构 郑州中原专利事务所有限公司 41109 代理人 张绍琳;李想
主权项 1.一种基于比特串的RFID系统中标签与后端数据库的认证协议,其特征在于,它包括以下步骤:1)读写器发送一个随机比特串R和查询请求Query给标签;2)收到请求后,标签生成随机正整数n<sub>1</sub>和n<sub>2</sub>,由此产生第一比特串PID<sub>1L</sub>和第二比特串PID<sub>2R</sub>,并计算标签安全标识符的临时值SID<sub>temp</sub>为<img file="FSA00000555343400011.GIF" wi="1660" he="151" />然后计算比特串<img file="FSA00000555343400012.GIF" wi="699" he="60" />并发送结果R’||n<sub>1</sub>||n<sub>2</sub>给读写器;其中,ROL为循环左移,ROR为循环右移,<maths num="0001"><![CDATA[<math><mrow><mi>ROL</mi><msub><mrow><mo>(</mo><mi>SID</mi><mo>)</mo></mrow><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>1</mn></msub><mo>+</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></msub></mrow></math>]]></maths>表示将标签安全标识符SID循环左移<maths num="0002"><![CDATA[<math><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><msub><mrow><mo>&CirclePlus;</mo><mi>n</mi></mrow><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></math>]]></maths>位,<maths num="0003"><![CDATA[<math><mrow><mi>ROL</mi><msub><mrow><mo>(</mo><mi>SID</mi><mo>)</mo></mrow><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>1</mn></msub><mo>+</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></msub></mrow></math>]]></maths>表示将标签安全标识符SID循环右移<img file="FSA00000555343400016.GIF" wi="833" he="62" />mod为模运算;SID为标签安全标识符,它是一个随机设定的比特串,其值保密设置在标签本身和授权的后端数据库中;标签安全标识符的临时值SID<sub>temp</sub>在协议的一轮执行完成后删除;第一比特串PID<sub>1L</sub>是指从SID最左边的位开始,长度为n<sub>1</sub>比特的比特串;第二比特串PID<sub>2R</sub>是指从SID最右边的位开始,长度为n<sub>2</sub>比特的比特串;第一临时比特串PID<sub>1Ltemp</sub>是指从标签安全标识符的临时值SID<sub>temp</sub>最左边的位开始,长度为n<sub>1</sub>比特的比特串;第二临时比特串PID<sub>2Rtemp</sub>是指从标签安全标识符的临时值SID<sub>temp</sub>最右边的位开始,长度为n<sub>2</sub>比特的比特串;n<sub>1</sub>,n<sub>2</sub>为由标签生成的随机正整数,且满足L/2>Len(n<sub>1</sub>)≥10,L/2>Len(n<sub>2</sub>)≥10;长度L为标签安全标识符SID的长度,也是标签安全标识符的临时值SID<sub>temp</sub>的长度,单位为比特;Len(n<sub>1</sub>)和Len(n<sub>2</sub>)分别表示n<sub>1</sub>和n<sub>2</sub>的长度,单位为比特;<img file="FSA00000555343400017.GIF" wi="119" he="50" />为异或运算符,“||”为变量串联运算符;3)读写器收到标签发送来的R’||n<sub>1</sub>||n<sub>2</sub>后,将自己的身份标识ID<sub>Reader</sub>和随机比特串R与其进行串联,得到ID<sub>Reader</sub>||R||R’||n<sub>1</sub>||n<sub>2</sub>,对其进行加密,将所得的密文发送给后端数据库;在后端数据库中为每一个标签均存储两个变量,其中第一变量SID<sub>pre</sub>是上一轮认证成功时的标签安全标识符SID值,第二变量SID<sub>cur</sub>是上一轮认证成功并更新后的标签安全标识符SID值,在初始化阶段,SID<sub>pre</sub>=SID<sub>cur</sub>;4)后端数据库计算<img file="FSA00000555343400021.GIF" wi="159" he="43" />以得到<img file="FSA00000555343400022.GIF" wi="509" he="59" />然后在后端数据库中搜索是否存在合适的第一变量SID<sub>pre</sub>或第二变量SID<sub>cur</sub>,其第一临时比特串PID<sub>1Ltemp</sub>与第二临时比特串PID<sub>2Rtemp</sub>的异或计算结果等于上面计算出的<img file="FSA00000555343400023.GIF" wi="175" he="48" />若存在这样的第一变量SID<sub>pre</sub>,则认为该标签是有效标签,后端数据库通过对标签的认证,后端数据库用该第一变量SID<sub>pre</sub>值,计算出标签安全标识符的临时值SID<sub>temp</sub>,更新第二变量<maths num="0004"><![CDATA[<math><mrow><msub><mi>SID</mi><mi>cur</mi></msub><mo>=</mo><mi>ROL</mi><msub><mrow><mo>(</mo><mi>SI</mi><msub><mi>D</mi><mi>pre</mi></msub><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><mo>&CirclePlus;</mo><mi>R</mi><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></msub><mo>,</mo></mrow></math>]]></maths>然后发送加密后的(S||SID<sub>pre</sub>)给读写器,其中验证值<img file="FSA00000555343400025.GIF" wi="603" he="60" />PID<sub>1Mtemp</sub>为SID<sub>temp</sub>中自位置n<sub>1</sub>到位置m的比特串,PID<sub>2Mtemp</sub>为SID<sub>temp</sub>中自位置(m+1)到位置n<sub>2</sub>的比特串,m为SID<sub>temp</sub>居中的位置;若存在这样的第二变量SID<sub>cur</sub>,也认为该标签是有效标签,后端数据库通过对标签的认证,后端数据库用该第二变量SID<sub>cur</sub>值计算出标签安全标识符的临时值SID<sub>temp</sub>,依次更新第一变量SID<sub>pre</sub>=SID<sub>cur</sub>,第二变量<maths num="0005"><![CDATA[<math><mrow><msub><mi>SID</mi><mi>cur</mi></msub><mo>=</mo><mi>ROL</mi><msub><mrow><mo>(</mo><mi>SI</mi><msub><mi>D</mi><mi>cur</mi></msub><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><mo>&CirclePlus;</mo><mi>R</mi><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></msub><mo>,</mo></mrow></math>]]></maths>然后发送加密后的(S||SID<sub>pre</sub>)给读写器,其中验证值<maths num="0006"><![CDATA[<math><mrow><mi>S</mi><mo>=</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>Mtemp</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>Mtemp</mi></mrow></msub><mo>;</mo></mrow></math>]]></maths>若不存在这样的第一变量SID<sub>pre</sub>和第二变量SID<sub>cur</sub>,则认为该标签是无效标签,不通过认证,并发送一个加密后的终止信号给读写器;5)读写器收到后端数据库发来的消息后进行解密:若后端数据库通过了对标签的认证,则读写器解密后得到(S||SID<sub>pre</sub>),从中提取出第一变量SID<sub>pre</sub>,保存在自己的存储器中,转发验证值S给标签;若后端数据库没有通过对标签的认证,则解密后得到的是终止信号,读写器发送长度大于等于L/4比特且小于等于3L/4比特的随机比特串给标签;6)标签根据在步骤2)中计算出的标签安全标识符的临时值SID<sub>temp</sub>得出PID<sub>1Mtemp</sub>和PID<sub>2Mtemp</sub>,然后用同样的方法计算比较值<img file="FSA00000555343400031.GIF" wi="633" he="60" />将比较值S’与收到的验证值S进行对比;若两者相同,则认为该后端数据库通过了认证,是可信的,并更新自己存储的标签安全标识符<maths num="0007"><![CDATA[<math><mrow><mi>SID</mi><mo>=</mo><mi>ROL</mi><msub><mrow><mo>(</mo><mi>SI</mi><mi>D</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mrow><mrow><mo>(</mo><msub><mi>PID</mi><mrow><mn>1</mn><mi>L</mi></mrow></msub><mo>&CirclePlus;</mo><msub><mi>PID</mi><mrow><mn>2</mn><mi>R</mi></mrow></msub><mo>&CirclePlus;</mo><mi>R</mi><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>1</mn></msub><mo>&CirclePlus;</mo><msub><mi>n</mi><mn>2</mn></msub><mo>)</mo></mrow><mi>mod</mi><mi>L</mi></mrow></msub><mo>,</mo></mrow></math>]]></maths>否则,则认为该后端数据库没有通过认证,终止协议。
地址 450002 河南省郑州市东风路5号