具体实施例:
本实施例中,系统使用前首先需要将连接阅读器的数据库和标签单元进行初始化操作:如图5所示,主要包括以下步骤:
步骤S501,将标签标识隐藏在索引中。
所谓隐藏,即:对标签标识进行运算,得到一个索引值,运算公式如下:
Index=F(ID‖K) (1)
其中,‖为连接符,K为密钥,F函数是一种单向函数,F函数的输入值为标签标识和K的关联值。
公式(1)利用单向函数的单向性实现隐藏标签标识的功能,该单向函数也可以是现有技术中哈希函数(即:H函数)。体现在本实施例中的单向性即:根据标签标识可以得到索引,而根据该索引却无法获取标签标识。
步骤S502,将索引存储于标签单元和数据库。其中,存储于标签单元的索引为第一索引,记为Index,存储于数据库的索引为第二索引。
在RFID系统中,当阅读器与标签单元完成一次认证时,本实施例需要对第一索引和第二索引进行同步更新。为避免更新过程中第一索引与第二索引不同步而导致下一次认证失败,可以在数据库中备份更新前的第二索引,因此,数据库中可以设置两个索引,一个为当前索引Indexc,一个为上一次索引Index1。在后续阅读器与标签单元的认证过程中,当数据库的索引更新成功而第一索引更新失败时,Index=Index1;当两者同步更新成功时,Index=Indexc。
其中,初始化的过程还包括:在标签单元中写入标签标识ID、密钥K;以及在连接阅读器的数据库中写入标签标识ID,当前密钥Kc,上一次密钥K1,以及标签单元的私密信息数据(例如:货物价格、产地等)。其中,当前索引是根据标签标识和当前密钥计算得出的,上一次索引是根据标签标识和上一次密钥计算得出的;因此,在数据库中也有必要存储当前密钥Kc和上一次密钥K1。
初始化完成时,K1=Kc=K,Index1=Indexc=Index,实现标签单元与阅读器的信息同步。标签单元与阅读器可以互相通信,在标签单元与阅读器的通信过程中,阅读器接收标签单元发送的索引,根据索引从与阅读器连接的数据库中获取所述标签单元的标签标识。
初始化结束后,当标签单元进入阅读器的作用范围内,如图6所示,认证过程包括以下步骤:
步骤S601,阅读器产生第一随机数Rr,并向标签单元发送第一随机数Rr。
步骤S602,标签单元接收阅读器发送的第一随机数Rr,根据第一随机数Rr得到第二函数值。该步骤具体包括:
1)、标签单元接收Rr,同时产生第二随机数Rt;
2)、根据存储的标签标识、第一随机数、第二随机数,计算得出第一验证值;计算过程如下:
第一验证值=F(ID‖Rr‖Rt) (2)
其中F函数可以采用与公式(1)同样的单向函数,也可以采用其它单向函数。一般情况下,当采用同样的单向函数时,成本低,便于统一管理;
3)、将所述验证值一分为二,该验证值的右半部分为第二函数值,左半部分为第一函数值。当采用FR表示F函数值的右半部分,FL表示F函数值的左半部分时,则:
第一函数值=FL(ID‖Rr‖Rt) (3)
第二函数值=FR(ID‖Rr‖Rt) (4)
步骤S603,标签单元向阅读器发送第一认证消息和第一认证消息的循环冗余校验码。其中,第一认证消息包括:第一索引Index,标签单元产生的第二随机数Rt,和第一函数值FL(ID‖Rr‖Rt)。
步骤S604,阅读器接收标签单元发送的第一认证消息和第一认证消息的循环冗余校验码。
步骤S605,阅读器根据接收的循环冗余校验码判定所述第一认证消息是否传输正确。是,则转步骤S606,否则,停止认证。具体为:
阅读器接收到第一认证消息后,根据第一认证消息进行计算,得出该第一认证消息的循环冗余校验码,比较计算得出的第一认证消息的循环冗余校验码与标签单元发送的第一认证消息的循环冗余校验码,当两者一致时,确定所述第一认证消息传输正确。
步骤S606,阅读器在数据库中查找是否有与第一认证消息中的第一索引匹配的第二索引。如果有,转步骤S607;否则,停止认证。
步骤S607,阅读器对标签单元进行合法性认证。具体为:
1)、根据匹配的第二索引从数据库获取与其对应的标签标识;
2)、根据该标签标识计算得出第三函数值;
计算过程同步骤S602,并采用同样的算法进行计算,首先,根据标签标识、第一随机数、第二随机数,计算得出第二验证值;然后,将所述第二验证值一分为二,该第二验证值的右半部分为第四函数值,左半部分为第三函数值;
在该步骤和步骤S602中,分解第一验证值和第二验证值的方法是一致的,可以取第一验证值的左半部分和右半部分分别作为第一函数值和第二函数值,以及取第二验证值的左半部分和右半部分分别作为第三函数值和第四函数值;也可以在标签单元和阅读器进行协商的前提下,取第一验证值和第二验证值对应部分(例如:取有序的若干位)或全部分别赋予第一函数值和第三函数值;而另一部分或全部则分别赋予第二函数值和第四函数值;
3)、比较第三函数值与第一函数值是否相等;
4)、如果相等,则认证所述标签单元合法。
阅读器认证标签单元合法后,更新数据库中该标签单元的存储信息。
步骤S608,阅读器判断与第一索引匹配的第二索引是否为当前索引。如果是,则转步骤S609;否则,与第一索引匹配的第二索引为上一次索引,转步骤S610。
步骤S609,根据当前密钥更新数据库中该标签单元的密钥和索引。具体为:
1)、根据当前密钥得到更新后的当前密钥;
2)、更新前的当前密钥作为上一次密钥;
3)、更新前的上一次密钥删除;
4)、根据更新后的当前密钥更新当前索引;
5)、更新前的当前索引作为上一次索引(在更新前的密钥可获取的情况下,也可以根据标签标识和更新前的当前密钥计算得出,但需要进行计算处理,不建议采用);
6)、更新前的上一次索引删除。
本实施例中,索引是通过标签标识和密钥进行计算得出的,因此,更新索引前需要先更新密钥,例如:
其中,
表示位异或运算,K
c’表示更新后的密钥;然后,根据更新后的密钥进一步更新当前索引:Index
c’=F(ID‖K
c’),Index
c’表示更新后的当前索引。密钥的更新可以通过阅读器和标签单元协商来确定,也可以根据阅读器产生的第一随机数R
r进行更新。由于一个阅读器需要与多个标签单元进行认证,因此,根据阅读器产生的第一随机数R
r进行更新更便于数据库对标签单元信息的统一管理。
步骤S610,根据上一次密钥更新数据库中该标签单元的密钥和索引。具体为:
1)、维持上一次索引和上一次密钥不变;
2)、根据上一次密钥得到更新后的当前密钥;
3)、更新前的当前密钥删除;
4)、根据更新后的当前密钥更新当前索引。
在上述过程中, Indexc’=F(ID‖Kc’)。
步骤S611,阅读器向标签单元发送第二认证消息和第二认证消息的循环冗余校验码。该第二认证消息包括第四函数值。
步骤S612,标签单元接收阅读器发送的第二认证消息和第二认证消息的循环冗余校验码。
步骤S613,标签单元根据接收的循环冗余校验码判定第二认证消息是否传输正确。是,则转步骤S614,否则,停止认证。具体为:
标签单元接收到第二认证消息后,根据第二认证消息进行计算,得出该第二认证消息的循环冗余校验码,比较计算得出的第二认证消息的循环冗余校验码与标签单元发送的第二认证消息的循环冗余校验码,当两者一致时,确定所述第二认证消息传输正确。
步骤S614,标签单元根据所述第二认证消息和第二函数值对阅读器进行合法性认证。具体为:比较第二函数值与所述第二认证消息中的第四函数值是否相等;如果相等,则认证所述阅读器合法。
标签单元认证阅读器合法之后,更新自身的存储信息,所述存储信息包括密钥和第一索引。
步骤S615,标签单元更新密钥和索引。具体情况如下所述:
更新的过程如下:与步骤S609和步骤S610相对应的,标签单元先更新密钥: 其中,K’表示更新后的密钥;然后,根据更新后的密钥进一步更新第一索引:Index’=F(ID‖K’),Index’表示更新后的第一索引。
步骤S615,结束认证。
在上述步骤中,数据库中存储的上一次索引是一个备用的索引,当异常情况导致标签单元没有更新第一索引而数据库中的第二索引发生更新时,则在下一次标签单元与阅读器的认证过程中,标签单元发送的第一认证消息中的第一索引与数据库中备用的上一次索引匹配,阅读器仍然可以认证和识别合法的标签单元,实现合法标签单元与合法阅读器之间的正常通信,且通过步骤S610的处理,阅读器和标签单元进行信息的更新后,在下一次的认证过程中,标签单元的信息又与数据库中的当前信息匹配;而不会出现合法标签单元无法通过认证和识别的系统异常。
在上述步骤中,每次认证过程中的第一认证消息中的第一索引、标签单元产生的第二随机数、以及第一函数值都是动态变化的,即使攻击者截获以前的第一认证消息进行重放,由于查找不到匹配的第二索引,大部分攻击信息直接被过滤掉;即使重放的第一认证消息中的第一索引与数据库中其它标签单元的第二索引匹配,由于标签标识的不一致,该攻击信息也无法通过阅读器的认证,确保了RFID系统的机密性、完整性和隐私性。
在上述步骤中,阅读器接收到第一认证消息之后,通过在数据库中快速查找是否有与所述第一索引匹配的第二索引,筛选数据库中的有用信息对标签单元进行合法性认证,与现有技术中阅读器对数据库中所有标签标识进行计算相比,提高了阅读器的工作效率。
在上述步骤中,标签单元根据第二认证消息对阅读器进行合法性认证,由于第二认证消息通常只包括第四函数值,且第四函数值根据第一随机数和第二随机数动态变化且隐藏标签标识,攻击者无法获取标签标识,相比于现有方案将标签标识IDj明文发送给标签单元,确保了RFID系统的机密性、完整性和隐私性。
在上述步骤中,标签单元和阅读器相互认证的第一函数值和第四函数值分别为第一验证值的左半部分和第二验证值的右半部分,标签单元和计算器只需要分别计算一次第一验证值和第二验证值和做一次比较运算,就可以完成阅读器和标签单元之间的双向认证,减少了标签单元和阅读器的计算量;同时,在传输过程中减少了数据传输量。
本发明实施例还提供一种射频识别的安全认证系统,如图7所示,包括标签单元1、阅读器2及数据库3,其中,
阅读器2,用于向标签单元1发送第一随机数,接收标签单元1发送的第一认证消息,从第一认证消息中获取标签单元1的第一索引,查找数据库3中是否有与第一索引匹配的第二索引,如果有,对标签单元1进行合法性认证;认证标签单元1合法之后,向标签单元1发送第二认证消息;
标签单元1,用于接收阅读器2发送的第一随机数,根据第一随机数得到第二函数值,接收阅读器2发送的第二认证消息,根据第二认证消息和第二函数值对阅读器2进行合法性认证。
在该系统中,连接阅读器2的数据库3用于存储标签单元1的信息,信息包括:标签标识,密钥和索引;其中,密钥包括当前密钥和上一次密钥,索引包括当前索引和上一次索引。
其中,在所述阅读器2认证标签单元1合法之后,更新数据库3中标签单元1的存储信息;以及在标签单元1认证阅读器2合法之后,标签单元1更新自身的存储信息。对存储信息进行实时同步更新,在标签单元1和阅读器2根据存储信息进行交互和双向验证的过程中,使得攻击者无法捕捉标签单元1的位置信息、或者仿冒标签标识盗取数据库3中标签单元1的机密信息,确保了RFID系统的机密性、完整性和隐私性。
本发明实施例还提供标签单元,如图8所示,标签单元1包括:
第一随机数接收单元11,用于接收阅读器2发送的第一随机数;
第二函数值获取单元12,用于根据第一随机数得到第二函数值;
第二认证消息接收单元13,用于接收阅读器2发送的第二认证消息;
第二认证单元14,用于根据第二认证消息和第二函数值对阅读器2进行合法性认证。
其中,该标签单元1还可以进一步包括:第二认证消息确定单元15,用于确定第二认证消息传输正确。
其中,第二函数值获取单元12包括:第二随机数产生子单元121,用于产生第二随机数;第一验证值计算子单元122,用于根据第一随机数、第二随机数和自身的标签标识计算得出第一验证值;第一验证值分解子单元123,用于分解第一验证值为第二函数值与第一函数值。
第二认证单元14包括:第二认证消息确定子单元141,用于确定所述第二认证消息传输正确;当第二认证消息确定子单元141确定第二认证消息传输正确时,第二比较子单元142,用于在第二认证消息确定子单元141确定第二认证消息传输正确后,比较第一验证值分解子单元123分解出的第二函数值与第二认证消息携带的第四函数值是否相等;第二认证子单元143,用于在第二函数值与第四函数值相等时,认证阅读器2合法。
其中,该标签单元1还包括:
存储单元15,用于存储自身的存储信息,存储信息包括标签标识、密钥、和第一索引;
第一认证消息处理单元16,用于创建并发送第一认证消息,第一认证消息包括第一索引、第二随机数和第一函数值;
第二更新单元17,用于更新存储单元15存储的信息。
本发明实施例还提供一种阅读器2,如图9所示,包括:
第一索引获取模块21,用于接收标签单元1发送的第一认证消息,从第一认证消息中获取标签单元1的第一索引;
查找模块22,用于查找数据库3是否有与第一索引匹配的第二索引;查找的内容包括当前索引和上一次索引;
第一认证模块23,用于查找模块22查找到数据库3中有与第一索引匹配的第二索引时,对标签单元1进行合法性认证。
阅读器2还包括:
第一随机数处理模块24,用于产生第一随机数,并向标签单元1发送第一随机数。以及还可以进一步包括:第一认证消息确定模块25,用于确定第一索引获取模块21接收的第一认证消息传输正确。
其中,第一认证模块23包括:标签标识获取单元231,用于根据与标签单元1的第一索引匹配的第二索引从数据库3获取标签单元1的标签标识;第三函数值获取单元232,用于根据标签标识、第一随机数和第二随机数得出第三函数值;第一比较单元233,用于比较第三函数值与第一认证消息携带的第一函数值是否相等;第一认证单元234,用于在第三函数值与第一函数值相等时,认证标签单元1合法。第三函数值获取单元232包括:第二验证值计算子单元2321,用于根据标签标识、第一随机数和第二随机数计算得出第二验证值;第二验证值分解子单元2322,用于分解第二验证值为第四函数值与第三函数值。
阅读器2还包括:
第二认证消息处理模块26,用于从第二验证值分解子单元2322获取第四函数值,将第四函数值携带在第二认证消息中发送给标签单元1;
第一更新模块27,用于更新数据库3中标签单元的存储信息。
在RFID系统中,标签单元1的第一验证值分解子单元123分解第一验证值与阅读器2的第二验证值分解子单元2322分解第二验证值的方法是一致的,可以取第一验证值的左半部分和右半部分分别作为第一函数值和第二函数值,以及取第二验证值的左半部分和右半部分分别作为第三函数值和第四函数值;也可以在标签单元和阅读器进行协商的前提下,取第一验证值和第二验证值对应部分(例如:取有序的若干位)或全部分别赋予第一函数值和第三函数值;而另一部分或全部则分别赋予第二函数值和第四函数值。
采用本实施例提供的射频识别的安全认证装置及系统,将标签标识隐藏在索引中传输,阅读器2通过在数据库3中快速查找与第一索引匹配的第二索引,筛选数据库3中的有用信息对标签单元1进行合法性认证,即根据与第一索引匹配的第二索引针对性地调用准确的标签标识对标签单元1进行合法性验证,提高了阅读器2的工作效率;而且,数据库3和标签单元1的存储信息不断更新,更新后的标签单元1的索引(包括第一索引和第二索引)作为下一次阅读器2认证该标签单元1合法性的依据,提高了RFID系统的抗重放攻击能力;另一方面,标签单元1根据第二认证消息对阅读器2进行合法性认证,根据阅读器2产生的第一随机数和标签单元1产生的第二随机数两个挑战因子得出的第二认证消息和第二函数值是动态变化,且第二认证消息中没有明文的标签标识,攻击者无法获取标签标识,确保了标签单元与阅读器的双向认证过程中的信息安全、确保了RFID系统的机密性、完整性和隐私性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。