本发明涉及物联网领域,更具体地说,涉及一种防重放的认证方法及系统。
背景技术:
在很多物联网应用环境中,需要智能终端与物联网设备芯片之间、或者物联网设备芯片与物联网设备芯片之间进行相互认证、安全通讯。
现有的技术方案中,有基于公钥的证书体系,每个设备都有一个私钥以及公钥证书,公钥证书都是用ca的私钥进行签名的,通过验证对方的签名值就可以鉴别对方的身份。但是基于公钥的认证体系,需要集成rsa、ecc等公钥密码,占用芯片的面积非常大,成本比较高。在很多轻量级以及超轻量级的芯片中并不适用。
另外一种是基于对称密码的认证体系,每个物联网设备出厂时都自带一个设备码,此设备码就是以后用来跟此设备进行通讯的加密密钥。设备最开始使用时,认证双方先将需要发送的消息,用此密钥进行加密,如果对方可以进行解密,那么判断对方是一个合法的认证方。但是由于采用了固定密钥,因此很容易被重放攻击,因此必须加入防重放因子,一般来说防重放的因素都包括时间戳,计数值,随机数。然而,轻量级的物联网设备芯片一般都是没有记录当前时间的功能。对于计数值,很多时候都是用智能手机等智能终端跟物联网设备芯片进行认证,因此对于保存累计的计数值也不方便。最好的方法就是采用随机数的方式,每次物联网设备生成一个随机数用来进行挑战-应答的认证,这样可以防止重放攻击。但是现有的随机数都是真随机数,也即采用物理模拟随机源的生成方式,此种方式对技术要求比较高,而且成本比较高,不太适合在轻量级物联网设备芯片上使用。
技术实现要素:
本发明的主要目的在于提出一种防重放的认证方法及系统,旨在解决现有技术中,物联网设备在进行挑战-应答的认证时,采用物理模拟随机源的生成方式生成真随机数,技术要求高、且成本高,不适用于轻量级物联网设备芯片的问题。
为解决上述技术问题,本发明提供一种防重放的认证方法,包括:
应答方采用第一预设加密算法将自身唯一标识信息以及认证请求通过加密密钥进行加密,并将加密后的信息发送给挑战方;
挑战方对接收到的信息进行解密,并判断该认证请求是否合法,若是,则生成第一随机数,第一随机数为伪随机数,并采用第一预设加密算法将第一随机数以及唯一标识信息通过加密密钥进行加密后发送给应答方;
应答方对接收到的信息进行解密,并判断该唯一标识信息是否正确,若是,则将第一随机数进行预设数学算法变换,生成第二随机数;并采用第一预设加密算法将第二随机数以及唯一标识信息通过加密密钥进行加密后发送给挑战方;
挑战方对接收到的信息进行解密,并判断该唯一标识信息是否正确,并判断该第二随机数是否等于将第一随机数进行预设数学算法变换之后的结果,若均是,则应答方挑战成功,本次认证通过。
其中,生成第一随机数的过程包括:
将伪随机数的初始种子划分为等比特的两部分,将前半部分记为第一子随机数,后半部分记为第二子随机数;
以第一子随机数为密钥,将第二子随机数加1为明文进行第二预设加密算法的加密,生成第一密文,将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值。
其中,在将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值之后,还包括:
以第一子随机数为密钥,将更新后的第二子随机数加1为明文进行第二预设加密算法的加密,生成第一结果;
以第一子随机数为密钥,将更新后的第二子随机数加2为明文进行第二预设加密算法的加密,生成第二结果;
令第一子随机数的值等于第一结果,第二子随机数的值等于第二结果,以此来更新第一子随机数、第二子随机数的值。
其中,第一预设加密算法和第二预设加密算法相同。
其中,加密密钥和伪随机数的初始种子在挑战方的芯片生产时被写入芯片中。
进一步地,本发明提供一种防重放的认证系统,包括:应答方和挑战方;
应答方用于采用第一预设加密算法将自身唯一标识信息以及认证请求通过加密密钥进行加密,并将加密后的信息发送给挑战方;
挑战方用于对接收到的信息进行解密,并判断该认证请求是否合法,若是,则生成第一随机数,第一随机数为伪随机数,并采用第一预设加密算法将第一随机数以及唯一标识信息通过加密密钥进行加密后发送给应答方;
应答方用于对接收到的信息进行解密,并判断该唯一标识信息是否正确,若是,则将第一随机数进行预设数学算法变换,生成第二随机数;并采用第一预设加密算法将第二随机数以及唯一标识信息通过加密密钥进行加密后发送给挑战方;
挑战方用于对接收到的信息进行解密,并判断该唯一标识信息是否正确,并判断该第二随机数是否等于将第一随机数进行预设数学算法变换之后的结果,若均是,则应答方挑战成功,本次认证通过。
其中,生成第一随机数的过程包括:
将伪随机数的初始种子划分为等比特的两部分,将前半部分记为第一子随机数,后半部分记为第二子随机数;
以第一子随机数为密钥,将第二子随机数加1为明文进行第二预设加密算法的加密,生成第一密文,将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值。
其中,在将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值之后,还包括:
以第一子随机数为密钥,将更新后的第二子随机数加1为明文进行第二预设加密算法的加密,生成第一结果;
以第一子随机数为密钥,将更新后的第二子随机数加2为明文进行第二预设加密算法的加密,生成第二结果;
令第一子随机数的值等于第一结果,第二子随机数的值等于第二结果,以此来更新第一子随机数、第二子随机数的值。
其中,第一预设加密算法和第二预设加密算法相同。
其中,加密密钥和伪随机数的初始种子在挑战方的芯片生产时被写入芯片中。
有益效果
本发明提供了一种防重放的认证方法及系统,该防重放的认证方法包括:应答方采用第一预设加密算法将自身唯一标识信息以及认证请求通过加密密钥进行加密,并将加密后的信息发送给挑战方;挑战方对接收到的信息进行解密,并判断该认证请求是否合法,若是,则生成第一随机数,第一随机数为伪随机数,并采用第一预设加密算法将第一随机数以及唯一标识信息通过加密密钥进行加密后发送给应答方;应答方对接收到的信息进行解密,并判断该唯一标识信息是否正确,若是,则将第一随机数进行预设数学算法变换,生成第二随机数;并采用第一预设加密算法将第二随机数以及唯一标识信息通过加密密钥进行加密后发送给挑战方;挑战方对接收到的信息进行解密,并判断该唯一标识信息是否正确,并判断该第二随机数是否等于将第一随机数进行预设数学算法变换之后的结果,若均是,则应答方挑战成功,本次认证通过;采用上述方案,挑战方不需要物理模拟随机源的生成方式生成真随机数,而是采用伪随机数进行挑战-应答的认证,该认证具有防重放攻击的功能,可以实现快速认证、安全性高、容易实现、低成本的效果,适用于轻量级物联网设备芯片。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1为本发明第一实施例提供的一种防重放的认证方法的流程图;
图2为本发明第二实施例提供的一种防重放的认证系统的示意图。
具体实施方式
第一实施例
本实施例提供了一种防重放的认证方法,参见图1,图1为本实施例提供的一种防重放的认证方法的流程图,该防重放的认证方法包括以下步骤:
s101:应答方采用第一预设加密算法将自身唯一标识信息以及认证请求通过加密密钥进行加密,并将加密后的信息发送给挑战方;
应答方也即被认证方,包括物联网设备、智能终端等,第一预设加密算法包括aes算法、des算法、sm4算法等;挑战方也即认证方,包括物联网设备等;
加密密钥是在挑战方的芯片生产时由外界写入芯片中的,加密密钥是真随机数。
加密密钥一般写在物联网设备芯片的说明书或者是贴在物联网设备上,这样别的设备第一次与其连接时,也输入相同的加密密钥,以后就可以用这个加密密钥作为每次通讯的加密密钥。
加密密钥可以取128比特。
s102:挑战方对接收到的信息进行解密,并判断该认证请求是否合法,若是,则生成第一随机数,第一随机数为伪随机数,并采用第一预设加密算法将第一随机数以及唯一标识信息通过加密密钥进行加密后发送给应答方;
其中,生成第一随机数的过程包括:
将伪随机数的初始种子划分为等比特的两部分,将前半部分记为第一子随机数,后半部分记为第二子随机数;
其中,伪随机数的初始种子在挑战方的芯片生产时被写入芯片中;
示例性的,伪随机数的初始种子s,可以取256比特,将该伪随机数的初始种子s划分为等比特的两部分,将前半部分记为第一子随机数s1,也即第一子随机数s1为s的前128比特,后半部分记为第二子随机数s2,也即第二子随机数s2为s的后128比特;
以第一子随机数为密钥,将第二子随机数加1为明文进行第二预设加密算法的加密,生成第一密文,将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值;
第二预设加密算法可以采用sp800-90a,或者是安全比特在80位以上的流密码算法,这样可以保证生成的随机数满足前后向安全、sp800-22的随机性统计特征,最简单的方式是采用sp800-90a中的分组密码生成的drnd,第二预设加密算法包括aes算法、des算法、sm4算法等;
示例性的,以s1为密钥,s2+1为明文进行aes加密,生成的128比特密文,将该密文记为第一密文,将其作为第一随机数就行输出,同时用s2=s2+1来更新s2。
可选的,在一种实施方式中,第一预设加密算法和第二预设加密算法相同,例如当第一预设加密算法为aes算法时,第二预设加密算法也为aes算法,这样可以节省物联网设备芯片的面积。
可选的,可以采用以下方案来保证生成第一随机数的过程的安全性:在将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值之后,还包括:
以第一子随机数为密钥,将更新后的第二子随机数加1为明文进行第二预设加密算法的加密,生成第一结果;
示例性的,以s1为密钥,s2+1为明文进行aes加密,生成第一结果c1;
以第一子随机数为密钥,将更新后的第二子随机数加2为明文进行第二预设加密算法的加密,生成第二结果;
示例性的,以s1为密钥,s2+2为明文进行aes加密,生成第二结果c2;
令第一子随机数的值等于第一结果,第二子随机数的值等于第二结果,以此来更新第一子随机数、第二子随机数的值;
也即令s1=c1,s2=c2,以此来更新s1,s2的值。
s103:应答方对接收到的信息进行解密,并判断该唯一标识信息是否正确,若是,则将第一随机数进行预设数学算法变换,生成第二随机数;并采用第一预设加密算法将第二随机数以及唯一标识信息通过加密密钥进行加密后发送给挑战方;
例如,第二随机数可以是将第一随机数加1得到,或者第二随机数可以是将第一随机数减1得到,或者第二随机数可以是将第一随机数加3得到等。
s104:挑战方对接收到的信息进行解密,并判断该唯一标识信息是否正确,并判断该第二随机数是否等于将第一随机数进行预设数学算法变换之后的结果,若均是,则应答方挑战成功,本次认证通过。
本实施例方案中,安全加密使用了分组算法,分组密码的初始加密密钥是在物联网设备生产的时候写入的真随机数;
认证协议的防重放攻击使用了伪随机数,伪随机数的初始种子是在物联网设备芯片生产的时候写入的;
认证协议的每一步都通过第一预设加密算法进行加密;
认证方式采用了基于伪随机数的挑战-应答协议;
本协议可以用在任何需要身份认证的情境下使用;
通过本实施例的实施,挑战方不需要物理模拟随机源的生成方式生成真随机数,而是采用伪随机数进行挑战-应答的认证,该认证具有防重放攻击的功能,可以实现快速认证、安全性高、容易实现、低成本的效果,适用于轻量级物联网设备芯片,且可以在现有的很多物联网设备芯片中快速部署。
第二实施例
本实施例提供一种防重放的认证系统,参见图2,图2为本实施例提供的一种防重放的认证系统的示意图,该防重放的认证系统包括:应答方201和挑战方202;
应答方201用于采用第一预设加密算法将自身唯一标识信息以及认证请求通过加密密钥进行加密,并将加密后的信息发送给挑战方202;
应答方201也即被认证方,包括物联网设备、智能终端等,第一预设加密算法包括aes算法、des算法、sm4算法等;挑战方202也即认证方,包括物联网设备等;
加密密钥是在挑战方202的芯片生产时由外界写入芯片中的,加密密钥是真随机数。
加密密钥一般写在物联网设备芯片的说明书或者是贴在物联网设备上,这样别的设备第一次与其连接时,也输入相同的加密密钥,以后就可以用这个加密密钥作为每次通讯的加密密钥。
加密密钥可以取128比特。
挑战方202用于对接收到的信息进行解密,并判断该认证请求是否合法,若是,则生成第一随机数,第一随机数为伪随机数,并采用第一预设加密算法将第一随机数以及唯一标识信息通过加密密钥进行加密后发送给应答方201;
其中,生成第一随机数的过程包括:
将伪随机数的初始种子划分为等比特的两部分,将前半部分记为第一子随机数,后半部分记为第二子随机数;
其中,伪随机数的初始种子在挑战方202的芯片生产时被写入芯片中;
示例性的,伪随机数的初始种子s,可以取256比特,将该伪随机数的初始种子s划分为等比特的两部分,将前半部分记为第一子随机数s1,也即第一子随机数s1为s的前128比特,后半部分记为第二子随机数s2,也即第二子随机数s2为s的后128比特;
以第一子随机数为密钥,将第二子随机数加1为明文进行第二预设加密算法的加密,生成第一密文,将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值;
第二预设加密算法可以采用sp800-90a,或者是安全比特在80位以上的流密码算法,这样可以保证生成的随机数满足前后向安全、sp800-22的随机性统计特征,最简单的方式是采用sp800-90a中的分组密码生成的drnd,第二预设加密算法包括aes算法、des算法、sm4算法等;
示例性的,以s1为密钥,s2+1为明文进行aes加密,生成的128比特密文,将该密文记为第一密文,将其作为第一随机数就行输出,同时用s2=s2+1来更新s2。
可选的,在一种实施方式中,第一预设加密算法和第二预设加密算法相同,例如当第一预设加密算法为aes算法时,第二预设加密算法也为aes算法,这样可以节省物联网设备芯片的面积。
可选的,可以采用以下方案来保证生成第一随机数的过程的安全性:在将第一密文作为第一随机数就行输出,同时令第二子随机数的值等于第二子随机数加1,以此来更新第二子随机数的值之后,还包括:
以第一子随机数为密钥,将更新后的第二子随机数加1为明文进行第二预设加密算法的加密,生成第一结果;
示例性的,以s1为密钥,s2+1为明文进行aes加密,生成第一结果c1;
以第一子随机数为密钥,将更新后的第二子随机数加2为明文进行第二预设加密算法的加密,生成第二结果;
示例性的,以s1为密钥,s2+2为明文进行aes加密,生成第二结果c2;
令第一子随机数的值等于第一结果,第二子随机数的值等于第二结果,以此来更新第一子随机数、第二子随机数的值;
也即令s1=c1,s2=c2,以此来更新s1,s2的值。
应答方201用于对接收到的信息进行解密,并判断该唯一标识信息是否正确,若是,则将第一随机数进行预设数学算法变换,生成第二随机数;并采用第一预设加密算法将第二随机数以及唯一标识信息通过加密密钥进行加密后发送给挑战方202;
例如,第二随机数可以是将第一随机数加1得到,或者第二随机数可以是将第一随机数减1得到,或者第二随机数可以是将第一随机数加3得到等。
挑战方202用于对接收到的信息进行解密,并判断该唯一标识信息是否正确,并判断该第二随机数是否等于将第一随机数进行预设数学算法变换之后的结果,若均是,则应答方201挑战成功,本次认证通过。
本实施例方案中,安全加密使用了分组算法,分组密码的初始加密密钥是在物联网设备生产的时候写入的真随机数;
认证协议的防重放攻击使用了伪随机数,伪随机数的初始种子是在物联网设备芯片生产的时候写入的;
认证协议的每一步都通过第一预设加密算法进行加密;
认证方式采用了基于伪随机数的挑战-应答协议;
本协议可以用在任何需要身份认证的情境下使用;
通过本实施例的实施,挑战方202不需要物理模拟随机源的生成方式生成真随机数,而是采用伪随机数进行挑战-应答的认证,该认证具有防重放攻击的功能,可以实现快速认证、安全性高、容易实现、低成本的效果,适用于轻量级物联网设备芯片,且可以在现有的很多物联网设备芯片中快速部署。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。