基于公钥的射频识别双向认证方法

文档序号:7551197阅读:297来源:国知局
专利名称:基于公钥的射频识别双向认证方法
技术领域
本发明属于信息安全技术领域,主要涉及到射频识别系统中射频识别标签与其读卡器之间的双向认证技术,可用于射频识别系统通信中读卡器与标签的相互认证中。
背景技术
射频识别RFID是一种非接触式双向通信的自动识别技术,用于实现对物品的标识。RFID的非接触识别和多目标识别等特点,使其广泛应用于军事、制造业、商业、日常生活等领域。同时,RFID通信系统的安全机制不完善,使得安全与隐私问题日益突出,制约了它的大规模应用。RFID系统主要由三部分组成:标签Tag、读写器Reader和后台服务器Back-endServer,其中:标签是所附着物品或持有者的信息载体;读写器是读写标签的设备,负责向后台数据库传送标签信息并执行指令;后台服务器用来存储和处理标签与读写器的数据信息,对它们进行管理和控制。读写器与后台服务器有较强的计算与存储能力,它们之间的通信信道在RFID系统中假定是安全的,而标签与读写器之间通信信道的安全问题是RFID研究领域有待解决的问题。针对RFID系统的安全与隐私问题,采用密码学方法设计一个安全的认证协议,对标签和读写器进行认证的方法成为普遍认可的解决方法。为降低成本,计算和存储能力很弱的被动标签被广泛使用,这使得设计的认证协议必须是标签能够承受的轻量级协议。因此,设计一个安全的低成本的认证协议成为研究的热点。现有的各种低成本RFID认证协议,如由Feldhofer提出的基于对称密码算法的询问一响应协议和由Girault, Poupard和Stern共同提出基于公钥的cryptoGPS方案,其中:Feldhofer提出的询问一响应协议,是第一个基于对称密码算法的RFID认证协议,该方案基于AES块密码,由读写器发送随机数作为询问请求,后由标签响应。该方案虽能以较低成本实现认证,在0.35 um CMOS工艺下只需要3595个等效门即可,但是,该认证方案由于受对称密码算法密钥分配的影响,其灵活性差,限制了射频识别RFID的应用范围和提供服务的形式,使该认证方案的实际应用受到了限制;由Girault, Poupard和Stern共同提出的基于公钥的cryptoGPS方案,是一种基于椭圆曲线加密算法ECC的认证方案,该方案是将标签的复杂计算交给读写器预先计算后存储优待券,是现有基于公钥密码的认证方案中最省资源的设计,适用于低成本的RFID标签,但是,该方案由于只实现了读写器对标签的单向认证,且其密钥管理方法与对称密码算法相当,不能体现公钥管理的灵活性优势,故限制了其在RFID中的应用。综上,现有的RFID认证协议存在的以下缺陷:1、现有的RFID认证协议均是单向认证协议,只能解决读写器对标签合法性的认证问题,不能解决标签对读卡器的验证问题,也不利于标签对读卡器权限的检验以及对读卡器的动态授权,影响大规模RFID网络应用的推广。2、采用对称密码算法设计的低成本认证协议,虽然能满足标签资源受限的要求,但是,部署规模受到密钥分配的严重限制,灵活性也不够,不适合大规模的应用。3、当前已有的采用公钥密码算法设计的协议,占用的资源较多,远远超过了低成本标签的资源承受范围,而且这些协议并没有解决公钥的密钥分发问题,无法体现公钥管理的优势和使用的灵活性,使得标签在应用范围和提供服务的形式上都严重受限。4、不能完全抵抗现有的各种攻击手段,安全性能不够。

发明内容
本发明的目的在于克服上述已有方法的不足,提出一种基于公钥的射频识别双向认证方法,以进一步降低占用资源,实现读写器与标签的双向认证。为实现上述目的,本发明包括以下步骤:(I)读写器生成随机数rs和读写器公钥n,读写器将询问信号Q、随机数rs、读写器公钥n与读写器的身份1 发送给标签;(2)标签收到数据后,检查读写器公钥n是否为标签所存储的集合N中的元素,如果不是,则通信结束;如果是,则进行如下操作:(2a)由标签随机产生128位会话密钥f,用读写器公钥n将会话密钥f利用加密函数En加密,加密结果记作a=En(f);(2b)从标签预存储的m个优待券中选取一个优待券,记作(rs, !TiP),并采用轻量级流密码算法Grain vl加密随机数rs、与标签证书Certt,加密结果记作b=Gf(rs IriPl | Certt),其中,是 `随机数,P为选定的公钥密码算法中椭圆曲线的基点,为椭圆曲线点乘运算结果,Gf是流密码算法Grain vl加密函数;(2c)将两个加密结果a与b发送给读写器;(3)读写器收到数据后,先解密a获得会话密钥f,再由会话密钥f解密b获得所述的rs、r,P和Certt ;通过读写器验证rs,如果验证不正确,则终止协议,否则,截取标签证书Certt的160位数据Cert 1 t,同时产生32位的随机数c,并采用Grain vl算法使用会话密钥f对数据Cert',和随机数c加密,加密结果记作Gf (Cert ' t||c);最后将加密结果Gf (Cert ' t||c)发送给标签;(4)标签解密Gf (Cert ’ t)获得数据Cert ’ t和随机数C,验证数据Cert ’ t是否为标签证书Certt的部分位,如果不是,则通信结束;如果是,则标签对读写器的认证成功,再计算中间值Y=I^sXcmodq,将中间值y值发送给读写器,其中,s是标签的私钥,q为160位低汉明重量数据,是椭圆曲线有限域的阶,mod q为对阶q的取模运算;(5)读写器收到数据后,利用双方公钥V=-SP对标签进行认证,验证关系式yP+cV=riP是否成立,如果成立,则读写器对标签的认证成功,该标签是读写器合法的通信对象;如果不成立,则认证失败,通信结束。与现有技术相比,该发明提出的认证方法有以下优点:I)本发明实现了标签与读写器的双向认证;2)在标签的运算中,公钥n选择为低汉明重量数据,降低了标签的计算量;3)标签的随机数生成和流密码加解密,采用面向硬件的轻量级序列密码算法Grain vl算法,Grain vl算法硬件内存低、占用门数少及功耗低等优点,大大减少了标签所需资源;
4)将128位的会话密钥f扩展成1024位低汉明重量数据后再做Rabin加密,提高协议安全性的同事也大大的减少了标签的计算量;5)协议中标签上耗费资源较多的乘法运算及取模运算采用两个低资源乘法器来实现,减少了标签所需资源。下面结合附图对本发明作进一步说明:


图1是本发明基于公钥的射频识别双向认证示意图;图2是本发明生成读写器公钥n的流程图;图3是本发明进行平方运算f ' 2的第一低资源乘法器结构图;图4是本发明进行取模运算modn的第二低资源乘法器结构图。
具体实施例方式本发明提出了一种基于公钥的射频识别双向认证方法,该认证方法基于公钥密码中的椭圆曲线密码,已知椭圆曲线C,基点P,预先给标签分配一个160位私钥S,双方公钥V=_sP,读写器公钥n的集合N=Inci, Ii1, n2, n3}, m个预计算优待券Cri, T1, P)及标签证书Certt= (IDt, V=-sP, sigCA),其中,巧是随机数,rf为椭圆曲线点乘结果,IDt是标签的身份,sigCA是认证中心CA对标签的签字。参照图1,本发明的双向认证过程如下:步骤I,读写器操作:`
(Ia)读写器生成随机数rs,即采用轻量级序列密码算法Grain vl算法生成随机数匕;(Ib)生成读写器公钥n,参照图2,本步骤的具体实现如下:(lbl)选定一个512位模4余3的素数作为读写器公钥n的第一因子p,并要求中间值P-1有大素因子,具体操作如下:(Ibll)采用Grain vl算法生成一个496位的素数作为中间值p_l的大素因子yi ;(lbl2)取中间值 p-1 的另一因子 y2=215+l,(lbl3)则读写器公钥n的第一因子p=2*yi*y2+l ;(lbl4)对第一因子p进行素性检验,若不是素数,中间值p-1的另一因子自加2,即y2=y2+2,再判断因子y2是否满足y2 < 216,若满足,则返回(lbl3);若不满足,则返回(Ibll);若第一因子p是素数,则进行后续操作;(lb2)根据读写器公钥n的取值范围确定读写器公钥n的第二因子q=n/p的取值范围:(lb21)读写器公钥n的前500位的最高位为1,其余位是0,后524位随机选取;读写器公钥n的的取值范围是[nmin,nmax],其中,最小值nmin= [10000……0001,最大值nmax=1000……0111……111,最小值[nmin首尾为1,中间位均为0 ;最大值[nmax首位与后524位全为1,中间位均为0 ;(lb22)由关系式 qmin=nmin/p, qmax=nmax/p,得到第二因子 q 的取值范围[qmin, qmax];
( lb3)在第二因子q的取值范围内搜索出一个模4余3的素数作为第二因子q,并要求p-1与q_l的最大公因子gcd(p_l, q-1)最小,具体操作如下:(lb31)令读写器公钥n的第一因子q= Qfflin ;(lb32)对第一因子q做模4余3的检验:如果模值不为3,则对第一因子q自加1,即q=q+l,直到第一因子q是模4余3的数;(lb33)判断第一因子q〈 q_是否成立,如果满足进行后续操作;若不满足,则返回
I;(lb34)检验p-1的大素因子Y1是否整除q_l,若整除,则说明gcd(p_l, q-1)较大,不满足要求,返回I ;若不整除,继续后续操作;( lb35)对第一因子q进行素性检验,若不是素数,第一因子q自加4,返回(lb3c);若是素数,继续后续操作;(lb4)由关系式n=pq,得到读写器公钥n的值;(Ic)读写器将询问信号Q、随机数rs、读写器公钥n与读写器的身份1 发送给标签。步骤2,标签操作:检查收到的读写器公钥n是否是其所存储的读写器公钥n集合N中的元素,如果不是,则通信结 束;如果是,则继续以下操作:(2a)标签生成并加密会话密钥:(2al)标签采用Grain vl算法产生128位随机数作为会话密钥f ;(2a2)将生成的128位会话密钥的每一位嵌入到1024位空数据的每个字节的最低位,得到嵌入后的数据f';(2a3)对嵌入后的数据做Rabin加密,加密结果记作a=En (f) = f 2modn,其中,f' 2是1024位数据f'的平方运算,mod n是对读写器公钥n的取模运算;(2b)从标签预存储的m个优待券中选取一个优待券,记作Cri, !TiP),其中,rt是随机数,r, P为椭圆曲线点乘运算结果;(2c)采用Grain vl算法加密随机数rs、!TiP与标签证书Certt,加密结果记作b=Gf(rs| IriPl I Certt),其中,Gf是流密码算法Grain vl加密函数;(2d)将加密结果a与b发给读写器。步骤3,读写器向标签证明身份:(3a)用Rabin解密算法解密收到的加密结果a,获得会话密钥f ;(3b)利用会话密钥f采用Grain vl算法解密加密结果b,获得随机数I^riP与标签证书Certt ;(3c)验证随机数rs是否被改变,若随机数rs被改变,则终止协议;若随机数rs未被改变,则继续以下操作:(3cI)截取标签证书Certt的160位数据Cert丨t ;(3c2)采用Grain vl算法生成一个32位的随机数c ;(3c3)采用Grain vl算法并使用会话密钥f对数据Cert ' t和随机数c加密,力口密结果记作Gf (Cert丨11 I c); (3c4)将加常结果Gf (Cert ' 11 I c)发送给标签。
步骤4,标签对读写器进行认证:(4a)标签采用Grain vl算法解密加密结果Gf (Ceri^ t),获得数据Ceri^ t和随机数c ;(4b)标签验证数据Cert ’ t是否为标签证书Certt的部分位,如果不是,则通信结束;如果是,则标签对读写器的认证成功,继续以下操作;标签计算中间值yzri+sXcmodq,并将中间值y值发送给读写器,其中,s是标签的私钥,Q为椭圆曲线有限域的阶,mod q为对阶q的取模运算。步骤5,读写器对标签的认证:读写器利用双方公钥V=-SP对标签进行认证,读写器验证关系式yP+cV=riP是否成立,如果成立,则读写器对标签的认证成功,该标签是合法通信对象;如果不成立,则认证失败,通信结束。上述方法中耗费资源较多是乘法运算,故对所述步骤(2a3)中对公式a=En(f)=f ’ 2Hiodn的平方运算和取模运算,采用两种新型低资源乘法实现,其中:(I)对加密函数En(f)中Rabin加密的平方运算f ' 2采用如图3所示的第一低资源乘法器实现,该乘法器由4个I位乘法器,4个16位加法器和多个移位寄存器组成,其运算步骤如下:首先,向I位乘法器输入被乘数f '的16位和乘数的8位,4个I位乘法器并行计算,该I位乘法器相当于一个特殊的与非门,乘数输入为I时,输出被乘数;乘数输入为0,则输出0 ;其次,将I位乘法器输出的数`据进入到初始置零的移位寄存器,移位寄存器Regl6、Reg32、Reg48和Reg64分别将I位乘法器输出结果存储在移位寄存器的高16位,其余位均为0,间接实现将乘法结果左移0位、16位、32位和48位;接着,将移位寄存器输出数据进入到16位加法器做加法运算,相加后进位返回参与下一次计算,相加后的结果存入RAM ;接着,将RAM中存储的结果进入64位移位寄存器,间接实现将数据左移64位;最后,将64位移位寄存器与第二次计算每个时钟输出的16位数据输入到16位加法器,相加后进位返回,相加结果存入RAM ;该乘法器重复运行32次后,即可完成加密函数En (f)中Rabin加密的平方运算f丨2,该乘法器共需要1600个门即可实现,耗时为2048个时钟周期。(2)对加密函数En(f)中Rabin加密的取模运算mod n采用如图4所示的第二低资源乘法器实现,该乘法器由2个8位乘法器,3个8位加法器,2个16位加法器和多个移位寄存器组成,其运算步骤如下:首先,向8位乘法器输入被乘数的8位和乘数的8位,2个8位乘法器并行计算;其次,将8位乘法器输出的数据进入到16位加法器,输出结果的高8位作为进位返回参与下一次计算,低8位输出;接着,将16位加法器输出数据进入到初始置零的移位寄存器,移位寄存器RegS和Regl6分别将8位乘法器输出结果存储在移位寄存器的高8位,其余位均为0,间接实现将乘法结果左移0位和8位;接着,将移位寄存器输出数据进入到8位加法器做加法运算,相加后进位返回参与下一次计算,相加后的结果存入RAM ;接着,将RAM中存储的结果进入16位移位寄存器,间接实现将数据左移16位;最后,将16位移位寄存器与第二次计算每个时钟输出的8位数据输入到8位加法器,相加后进位返回,相加结果存入RAM ;该乘法器重复运行32次,即可完成加密函数En (f)中Rabin加密的取模运算modn,该乘法器共需要1678个门,耗时为1088个时钟周期。综上所述,本发明中标签只需3278个门即可实现与读写器的双向认证,这满足RFID认证中标签的低成本实现要求。
权利要求
1.一种基于公钥的射频识别双向认证方法,其特征在于,包括以下步骤: (1)读写器生成随机数rs和读写器公钥n,读写器将询问信号Q、随机数rs、读写器公钥n与读写器的身份1 发送给标签; (2)标签收到数据后,检查读写器公钥n是否为标签所存储的集合N中的元素,如果不是,则通信结束;如果是,则进行如下操作: (2a)由标签随机产生128位会话密钥f,用读写器公钥n将会话密钥f利用加密函数En加密,加密结果记作a=En(f); (2b)从标签预存储的m个优待券中选取一个优待券,记作(ri,r,P),并采用轻量级流密码算法Grain vl加密随机数I^riP与标签证书Certt,加密结果记作b=Gf(rs | TiP Certt),其中,^是随机数,P为选定的公钥密码算法中椭圆曲线的基点,riP为椭圆曲线点乘运算结果,Gf是流密码算法Grain vl加密函数; (2c)将两个加密结果a与b发送给读写器; (3)读写器收到数据后,先解密a获得会话密钥f,再由会话密钥f解密b获得所述的rs、r,P和Certt ;通过读写器验证rs,如果验证不正确,则终止协议,否则,截取标签证书Certt的160位数据Cert 1 t,同时产生32位的随机数c,并采用Grain vl算法使用会话密钥f对数据Cert',和随机数c加密,加密结果记作Gf (Cert ' 11 I c);最后将加密结果Gf (Cert丨11 I c)发送给标签; (4)标签解密Gf(Cert丨t)获得数据Cert丨t和随机数C,验证数据Cert丨t是否为标签证书Certt的部分位,如果不是,则通信结束;如果是,则标签对读写器的认证成功,再计算中间值y^i+s X cmodq,将中间值y值发送给读写器,其中,s是标签的私钥,q为160位低汉明重量数据,是椭圆曲线有限域的阶,mod q为对阶q的取模运算; (5)读写器收到数据后,利用双方公钥V=-SP对标签进行认证,验证关系式uP+cV=riP是否成立,如果成立,则读写器对标签的认证成功,该标签是读写器合法的通信对象;如果不成立,则认证失败,通信结束。
2.根据权利要求1所述的基于公钥的射频识别双向认证方法,其中步骤(I)所述的读写器生成公钥n,按如下步骤进行: (Ia)选定一个512位模4余3的素数作为读写器公钥n的第一因子p,并要求p_l有大素因子; (Ib)根据读写器公钥n的数据要求确定读写器公钥n的取值范围,即读写器公钥n的前500位的最高位为I,其余位是0,后524位随机选取; (Ic)由读写器公钥n的取值范围确定第二因子q=n/p的取值范围,在第二因子q的取值范围内搜索出一个模4余3的素数作为第二因子q,并要求P-1与q_l的最大公因子gcd(p-l, q-1)最小; (Id)由关系式n=pq,确定读写器公钥n的值。
3.根据权利要求1所述的基于公钥的射频识别双向认证方法,其中步骤(2a)所述的用加密函数En加密,按如下操作进 行: (2al)将128位的会话密钥f扩展成1024位的低汉明重量数据f丨,即将会话密钥f的每一位嵌入到一个1024位空数据的每个字节的最低位,嵌入后的数据记为f丨; (2a2)对低汉明重量数据f '做Rabin加密,得到加密结果:En(f)=f ' 2modn,其中,f ; 2是1024位低汉明重量数据f '的平方运算,modn是对读写器公钥n的取模运算。
4.根据权利要求3所述的基于公钥的射频识别双向认证方法,其中步骤(2a2)中平方运算f丨2,是通过第一低资源乘法器实现,其运算步骤如下: 首先,向I位乘法器输入被乘数f'的16位和乘数f'的8位,4个I位乘法器并行计算,该I位乘法器相当于一个特殊的与非门,乘数输入为I时,输出被乘数;乘数输入为0,则输出0 ; 其次,将I位乘法器输出的数据进入到初始置零的移位寄存器,移位寄存器Regie、Reg32、Reg48和Reg64分别将I位乘法器输出结果存储在移位寄存器的高16位,其余位均为0,间接实现将乘法结果左移0位、16位、32位和48位; 接着,将移位寄存器输出数据进入到16位加法器做加法运算,相加后进位返回参与下一次计算,相加后的结果存入RAM ; 接着,将RAM中存储的结果进入64位移位寄存器,间接实现将数据左移64位; 最后,将64位移位寄存器与第二次计算每个时钟输出的16位数据输入到16位加法器,相加后进位返回,相加结果存入RAM ; 该乘法器重复运行32次后,即可完成该1024位的低汉明重量数据f '的平方运算f '
5.根据权利要求3所述的基于公钥的射频识别双向认证方法,其中步骤(2a2)中取模运算modn,是通过第二低资源乘法器实现,其运算步骤如下: 首先,向8位乘法器输入被乘数的8位和乘数的8位,2个8位乘法器并行计算; 其次,将8位乘法器输出的数据进入到16位加法器,输出结果的高8位作为进位返回参与下一次计算,低8位输出; 接着,将16位加法器输出数据进入到初始置零的移位寄存器,移位寄存器RegS和Regl6分别将8位乘法器输出结果存储在移位寄存器的高8位,其余位均为0,间接实现将乘法结果左移0位和8位; 接着,将移位寄存器输出数据进入到8位加法器做加法运算,相加后进位返回参与下一次计算,相加后的结果存入RAM ; 接着,将RAM中存储的结果进入16位移位寄存器,间接实现将数据左移16位; 最后,将16位移位寄存器与第二次计算每个时钟输出的8位数据输入到8位加法器,相加后进位返回,相加结果存入RAM ; 该乘法器重复运行32次,即可完成取模运算modn。
全文摘要
本发明公开了一种基于公钥的射频识别双向认证方法,主要解决现有射频识别认证中标签成本过高且通信安全性不足的问题。其实现步骤是(1)由读写器将询问信号Q、随机数rs、读写器公钥n与读写器的身份IDr发送给标签;(2)标签验证读写器公钥n后生成会话密钥f,并将会话密钥f和标签证书Certt加密后发给读写器;(3)由读写器截取标签证书Certt的160位数据Cert't加密后发给标签,向标签证明身份;(4)标签通过验证Cert't认证读写器,并计算中间值发给证明身份;(5)读写器利用公钥V完成对标签的认证。本方法实现了标签与读写器的双向认证,有效降低了标签的计算量和占用资源,同时也保证了通信安全性,能更好的适用于资源受限的射频识别系统。
文档编号H04L9/32GK103078744SQ20131003028
公开日2013年5月1日 申请日期2013年1月25日 优先权日2013年1月25日
发明者董庆宽, 魏丽丽, 丁文秀, 李小平, 刘彦明, 赵蕾, 黎剑兵 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1