1.本发明涉及通信
技术领域:
:,尤其涉及一种密钥协商方法及系统。
背景技术:
::2.随着通信技术的发展,信息网络环境日益复杂,通信环境中的设备之间信息交互越来越多。在通信过程中,通信的参与方保证通信信息安全,也越来越重要。通信双方建立一个共享密钥(key),真正通信时使用共享密钥通信,是保证信息安全的前提。3.密钥协商(keyagreement)是建立共享密钥的基本方式,密钥协商分为两种方案,第一种是隐式密钥方案,该方案以明文形式交互参数信息,然后通信双方基于参数计算得到共同的密钥,密钥信息不在通信链路上传输。第二种是显式密钥方案,该方案中密钥在一侧产生,以密文形式发送到另外一端。4.但是对于一些特殊的应用场景,例如,在一些嵌入式设备启动场景中,设备处于信息孤岛状态,当第一次与外部主机连接时,如何识别外部主机的身份并与外部主机完成密钥协商建立共享key,是当前亟待解决的技术问题。现有技术中提出了一种能够在完成密钥协商的同时,也会完成双方身份验证的方案,但是双方身份验证的基础必须是通信双方彼此共享一段秘密信息。技术实现要素:5.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的密钥协商方法及系统。6.本发明的一个方面,提供了一种密钥协商方法,所述方法包括:接收端设备接收到请求端设备发送的密钥请求时,根据密钥请求中携带的第一签名信息对请求端设备进行身份验证;若请求端设备通过身份验证,则接收端设备生成共享密钥,并根据共享密钥生成第二签名信息;接收端设备获取请求端设备的第一公钥,根据请求端设备的第一公钥对所述第二签名信息进行加密并将得到的密文信息发送到请求端设备,以供请求端设备根据自身私钥对密文信息进行解密得到第二签名信息,并根据所述第二签名信息对接收端设备进行身份验证,若接收端设备通过身份验证,则从第二签名信息中提取共享密钥,使用共享密钥对请求端设备自身的第一身份信息进行加密并将得到的密文信息返回接收端设备;接收端设备采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商。7.进一步地,所述第一签名信息包括请求端设备的第一身份信息和第一签名值,所述第一签名值是请求端设备采用自身的私钥对第一身份信息签名后得到的签名值。8.进一步地,所述根据密钥请求中携带的第一签名信息对请求端设备进行身份验证包括:接收端设备查询预设的请求端设备公钥信息表,以获取与所述第一身份信息匹配的请求端设备的第一公钥;接收端设备根据所述第一公钥对所述第一签名值进行验证,若验证通过,则请求端设备通过身份验证。9.进一步地,所述接收端设备查询预设的请求端设备公钥信息表,以获取与所述第一身份信息匹配的请求端设备的第一公钥,包括:接收端设备根据所述第一身份信息查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系;或接收端设备计算所述第一身份信息的hash值,根据所述第一身份信息的hash值查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。10.进一步地,所述接收端设备生成共享密钥,并根据共享密钥生成第二签名信息,包括:接收端设备生成随机数,将所述随机数作为共享密钥;接收端设备采用自身的私钥对接收端设备的第二身份信息和共享密钥的组合数据进行签名后得到的第二签名值;将所述第二身份信息、共享密钥和第二签名值进行组合,生成第二签名信息。11.进一步地,所述请求端设备根据所述第二签名信息对接收端设备进行身份验证,包括:请求端设备查询预设的接收端设备公钥信息表,以获取与所述第二身份信息匹配的接收端设备的第二公钥;请求端设备根据所述第二公钥对所述第二签名信息进行完整性验证,若验证通过,则接收端设备通过身份验证。12.进一步地,所述请求端设备查询预设的接收端设备公钥信息表,以获取与所述第二身份信息匹配的接收端设备的第二公钥,包括:请求端设备根据所述第二身份信息查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系;或请求端设备计算所述第二身份信息的hash值,根据所述第二身份信息的hash值查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。13.进一步地,所述请求端设备使用共享密钥对请求端设备自身的第一身份信息进行加密并将得到的密文信息返回接收端设备,包括:请求端设备使用共享密钥对第一身份信息和共享密钥的组合数据进行加密,并将得到的密文信息发送到接收端设备;或请求端设备计算第一身份信息和共享密钥的组合数据的hash值;使用共享密钥对组合数据的hash值进行加密,并将得到的密文信息发送到接收端设备。14.进一步地,所述接收端设备采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商,包括:接收端设备采用共享密钥对接收到的密文信息进行解密;若解密成功,则验证解密后的数据是否为请求端设备的第一身份信息和共享密钥的组合数据,或请求端设备的第一身份信息和共享密钥的组合数据的hash值;若验证成功,则判定请求端设备接收到所述共享密钥,完成密钥协商。15.本发明的另一方面,还提供了一种密钥协商系统,所述系统包括请求端设备和接收端设备,所述请求端设备和接收端设备采用如上所述密钥协商方法实现密钥协商。16.本发明实施例提供的密钥协商方法及系统,无需通信双方共享一段秘密信息,只需要经过两次密文数据交换就能同时完成密钥协商和双方身份认证。在保证密钥安全的同时,也保证了协商效率,达到与隐式密钥协商方案相同的效果。17.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明18.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1为本发明实施例提供的密钥协商方法的流程图;图2为本发明实施例提供的密钥协商方法的整体交互流程框图。具体实施方式19.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。20.本
技术领域:
:技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。21.本
技术领域:
:技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。22.图1示意性示出了本发明一个实施例的密钥协商方法的流程图。参照图1,本发明实施例的密钥协商方法具体包括以下步骤:s11、接收端设备接收到请求端设备发送的密钥请求时,根据密钥请求中携带的第一签名信息对请求端设备进行身份验证。23.本实施例中,设定通信双方为设备a和设备b,其中,设备a为接收端,设备b为请求端,实现接收端设备a对请求端设备b之间的密钥协商和身份相互认证。a中存储支持密钥协商的对方的公钥信息表(publickeytable)供查询使用。b中存储支持所有分发密钥的对方的公钥信息表(publickeytable)。24.s12、若请求端设备b通过身份验证,则接收端设备a生成共享密钥,并根据共享密钥生成第二签名信息。25.s13、接收端设备a获取请求端设备b的第一公钥,根据请求端设备b的第一公钥对所述第二签名信息进行加密并将得到的密文信息发送到请求端设备b,以供请求端设备b根据自身私钥对密文信息进行解密得到第二签名信息,并根据所述第二签名信息对接收端设备a进行身份验证,若接收端设备a通过身份验证,则从第二签名信息中提取共享密钥,使用共享密钥对请求端设备b自身的第一身份信息进行加密并将得到的密文信息返回接收端设备a。26.s14、接收端设备a采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商。27.本实施例中,接收端设备a采用共享密钥对接收到的密文信息进行解密并对请求端设备b的身份信息进行校验,若解密并校验成功则完成密钥协商。28.本发明实施例提供的密钥协商方法,无需通信双方共享一段秘密信息,只需要经过两次密文数据交换就能同时完成密钥协商和双方身份认证。在保证密钥安全的同时,也保证了协商效率,达到与隐式密钥协商方案相同的效果。29.本发明实施例中,第一签名信息包括请求端设备b的第一身份信息和第一签名值,所述第一签名值是请求端设备b采用自身的私钥对第一身份信息签名后得到的签名值。具体的,请求端设备b对自己的身份信息(b_user_id)即第一身份信息签名后得到第一签名值(signature1),并将全部内容作为第一身份信息(b_user_id,signature1)发送给接收端设备a。30.本实施例中,所述的根据密钥请求中携带的第一签名信息对请求端设备b进行身份验证具体实现过程如下:接收端设备a查询预设的请求端设备公钥信息表,以获取与所述第一身份信息匹配的请求端设备b的第一公钥;接收端设备a根据所述第一公钥对所述第一签名值进行验证,若验证通过,则请求端设备b通过身份验证。进一步地,接收端设备a获取请求端设备b的第一公钥,可通过以下两种实现方式获取:第一种方式,接收端设备a根据所述第一身份信息查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系。31.第二种方式,接收端设备a计算第一身份信息即请求端设备b的身份信息b_user_id的hash值,根据第一身份信息的hash值查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。32.本发明的密钥协商方法的整体交互流程如图2所示。具体的,以第二种方式为例进行说明,接收端设备a收到请求端设备b的密钥请求消息后,首先使用b的身份信息(b_user_id)计算hash值。使用hash结果查询publickeytable得到请求端设备b的公钥(bpublickey)即第一公钥。使用请求端设备b的bpublickey验证第一身份信息(b_user_id,signature1)中的签名。验证签名通过时,表示接收端设备a收到的消息确实是请求端设备b发送的密钥请求,开始密钥协商。验证签名失败时,表示这条消息不是请求端设备b发送的密钥协商请求,接收端设备a忽略此次请求,密钥协商失败。33.本发明实施例中,第二签名信息包括接收端设备a的第二身份信息、接收端设备生成的共享密钥key和第二签名值,第二签名值是接收端设备a采用自身的私钥(aprivatekey)对第二身份信息(a_user_id)和共享密钥key的组合数据(a_user_id,key)进行签名后得到签名值。34.本实施例中,所述的接收端设备a生成共享密钥,并根据共享密钥生成第二签名信息,具体实现方式如下:接收端设备a生成随机数,将所述随机数作为共享密钥;接收端设备a采用自身的私钥对接收端设备a的第二身份信息和共享密钥的组合数据进行签名后得到的第二签名值;将所述第二身份信息、共享密钥和第二签名值进行组合,生成第二签名信息。35.如图2所示,具体的,接收端设备a产生一个随机数作为共享密钥key,并使用自己的私钥(aprivatekey)对(a_user_id,key)的值计算签名值得到第二签名值(signature2),并将全部内容作为第二签名信息(a_user_id,key,signature2)。36.本实施例中,请求端设备b根据所述第二签名信息对接收端设备a进行身份验证的具体实现方式如下:请求端设备b查询预设的接收端设备a公钥信息表,以获取与所述第二身份信息匹配的接收端设备a的第二公钥;请求端设备b根据所述第二公钥对所述第二签名信息进行完整性验证,若验证通过,则接收端设备a通过身份验证。进一步地,请求端设备b获取接收端设备a的第二公钥,可通过以下两种实现方式获取:第一种方式、请求端设备b根据所述第二身份信息查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系。37.第二种方式、请求端设备b计算所述第二身份信息的hash值,根据所述第二身份信息的hash值查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。38.如图2所示,具体的,以第二种方式为例进行说明,接收端设备a在根据共享密钥生成第二签名信息之后,使用请求端设备b的publickey对第二签名信息(a_user_id,key,signature2)加密,得到密文信息。接收端设备a将密文信息发送给请求端设备b。请求端设备b收到密文后,使用自身的私钥bprivatekey解密得到(a_user_id,key,signature)明文。请求端设备b通过计算接收端设备a的a_user_id即第二身份信息的hash值查询publickeytable,得到接收端设备a的apublickey即第二公钥。请求端设备b使用接收端设备a的apublickey验证(a_user_id,key,signature)消息的完整性。如果消息完整,则认为key是用户a发送的合法共享密钥,继续协商密钥。如果消息验签失败则请求端设备b认为不是用户a回复的有效消息,拒绝使用key,密钥协商失败。本实施例中,接收端设备a采用请求端设备b的publickey加密(a_user_id,key,signature)消息,既可以验证请求端设备b的身份信息,又传递了key,并且也让请求端设备b验证了a的身份信息,有效提高安全性。39.本实施例中,请求端设备b使用共享密钥key对请求端设备b自身的第一身份信息b_user_id等信息处理后进行加密并将得到的密文信息返回接收端设备a的具体实现方式包括如下两种:第一种方式,请求端设备b使用共享密钥对第一身份信息和共享密钥的组合数据(b_user_id,key)进行加密,并将得到的密文信息发送到接收端设备a。40.第二种方式,请求端设备b计算第一身份信息和共享密钥的组合数据(b_user_id,key)的hash值;使用共享密钥对组合数据的hash值进行加密,并将得到的密文信息发送到接收端设备a。41.本实施例中,接收端设备a采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商的具体实现方式如下:接收端设备a采用共享密钥对接收到的密文信息进行解密;若解密成功,则验证解密后的数据是否为请求端设备的第一身份信息和共享密钥的组合数据,或请求端设备的第一身份信息和共享密钥的组合数据的hash值;若验证成功,则判定请求端设备b接收到所述共享密钥,完成密钥协商。其中,解密后的数据的具体内容需要根据加密时的数据内容确定。42.如图2所示,具体的,以第二种方式为例进行说明,接收端设备a收到密文后,使用共享密钥key解密,并验证接收端设备a解密后的明文是否等于(b_user_id,key)的hash值。校验成功时,表示接收端设备a知道了请求端设备b正确接收到了共享密钥key,密钥协商成功。校验失败时,则表示本次密钥协商失败。密钥协商成功后,接收端设备a使用key与请求端设备b进行交互信息。本实施例中,接收端设备a需要确认请求端设备b是否收到了秘钥信息,所以请求端设备b要返回一个ack消息。ack消息格式采用(b_user_id,key)的hash值的密文,这里将待加密的消息中融入key值,并且传递的是key的hash值,增加了第三方破解的难度,提高了协商方案的安全性。43.本发明实施例提供的密钥协商方法具有以下有益的技术效果,分析如下:1、防止窃听。接收端设备a端发送的(a_user_id,key,signature)是密文,是接收端设备a使用请求端设备b的publickey加密的,窃听者拿到的是密文。没有请求端设备b的私钥信息,无法正常解密。请求端设备b端发送的是(b_user_id,key)的hash的密文。只有用户b拥有正确的key,其他用户无法正确解密这段密文。44.2、防止篡改。请求端设备b发送的是带签名的信息,其他用户修改信息后,接收端设备a验签失败。若其他用户修改密文信息,导致解密得到错误的明文,明文的完整性验证会失败。45.3、防止身份冒充。如果第三者c冒充请求端设备b,由于c没有b的私钥信息,则无法正确解密得到正确的key。直接导致无法得到正确的(b_user_id,key)hash值,接收端设备a校验信息失败,导致密钥协商失败。如果第三者c冒充a,则c没有a的privatekey,则无法对消息生成第二签名值。b在验证第二签名消息(a_user_id,key,signature)时会失败,导致本次秘钥协商终止。46.本发明的另一实施例还提供了一种密钥协商系统,所述系统包括请求端设备和接收端设备,所述请求端设备和接收端设备采用如上任一实施例所述密钥协商方法实现密钥协商。47.本发明实施例提供的密钥协商方法及系统,无需通信双方共享一段秘密信息,只需要经过两次密文数据交换就能同时完成密钥协商和双方身份认证。在保证密钥安全的同时,也保证了协商效率,达到与隐式密钥协商方案相同的效果。48.此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。49.最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
技术特征:
1.一种密钥协商方法,其特征在于,所述方法包括:接收端设备接收到请求端设备发送的密钥请求时,根据密钥请求中携带的第一签名信息对请求端设备进行身份验证;若请求端设备通过身份验证,则接收端设备生成共享密钥,并根据共享密钥生成第二签名信息;接收端设备获取请求端设备的第一公钥,根据请求端设备的第一公钥对所述第二签名信息进行加密并将得到的密文信息发送到请求端设备,以供请求端设备根据自身私钥对密文信息进行解密得到第二签名信息,并根据所述第二签名信息对接收端设备进行身份验证,若接收端设备通过身份验证,则从第二签名信息中提取共享密钥,使用共享密钥对请求端设备自身的第一身份信息进行加密并将得到的密文信息返回接收端设备;接收端设备采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商。2.根据权利要求1所述的方法,其特征在于,所述第一签名信息包括请求端设备的第一身份信息和第一签名值,所述第一签名值是请求端设备采用自身的私钥对第一身份信息签名后得到的签名值。3.根据权利要求2所述的方法,其特征在于,所述根据密钥请求中携带的第一签名信息对请求端设备进行身份验证包括:接收端设备查询预设的请求端设备公钥信息表,以获取与所述第一身份信息匹配的请求端设备的第一公钥;接收端设备根据所述第一公钥对所述第一签名值进行验证,若验证通过,则请求端设备通过身份验证。4.根据权利要求3所述的方法,其特征在于,所述接收端设备查询预设的请求端设备公钥信息表,以获取与所述第一身份信息匹配的请求端设备的第一公钥,包括:接收端设备根据所述第一身份信息查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系;或接收端设备计算所述第一身份信息的hash值,根据所述第一身份信息的hash值查询预设的请求端设备公钥信息表,所述请求端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。5.根据权利要求1所述的方法,其特征在于,所述接收端设备生成共享密钥,并根据共享密钥生成第二签名信息,包括:接收端设备生成随机数,将所述随机数作为共享密钥;接收端设备采用自身的私钥对接收端设备的第二身份信息和共享密钥的组合数据进行签名后得到的第二签名值;将所述第二身份信息、共享密钥和第二签名值进行组合,生成第二签名信息。6.根据权利要求5所述的方法,其特征在于,所述请求端设备根据所述第二签名信息对接收端设备进行身份验证,包括:请求端设备查询预设的接收端设备公钥信息表,以获取与所述第二身份信息匹配的接收端设备的第二公钥;请求端设备根据所述第二公钥对所述第二签名信息进行完整性验证,若验证通过,则
接收端设备通过身份验证。7.根据权利要求6所述的方法,其特征在于,所述请求端设备查询预设的接收端设备公钥信息表,以获取与所述第二身份信息匹配的接收端设备的第二公钥,包括:请求端设备根据所述第二身份信息查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息之间的对应关系;或请求端设备计算所述第二身份信息的hash值,根据所述第二身份信息的hash值查询预设的接收端设备公钥信息表,所述接收端设备公钥信息表中包括有设备公钥与设备身份信息的hash值之间的对应关系。8.根据权利要求1所述的方法,其特征在于,所述请求端设备使用共享密钥对请求端设备自身的第一身份信息进行加密并将得到的密文信息返回接收端设备,包括:请求端设备使用共享密钥对第一身份信息和共享密钥的组合数据进行加密,并将得到的密文信息发送到接收端设备;或请求端设备计算第一身份信息和共享密钥的组合数据的hash值;使用共享密钥对组合数据的hash值进行加密,并将得到的密文信息发送到接收端设备。9.根据权利要求8所述的方法,其特征在于,所述接收端设备采用共享密钥对接收到的密文信息进行解密,若解密并校验成功则完成密钥协商,包括:接收端设备采用共享密钥对接收到的密文信息进行解密;若解密成功,则验证解密后的数据是否为请求端设备的第一身份信息和共享密钥的组合数据,或请求端设备的第一身份信息和共享密钥的组合数据的hash值;若验证成功,则判定请求端设备接收到所述共享密钥,完成密钥协商。10.一种密钥协商系统,其特征在于,所述系统包括请求端设备和接收端设备,所述请求端设备和接收端设备通过如权利要求1-9任一项所述密钥协商方法实现密钥协商。
技术总结
本发明提供一种密钥协商方法及系统,该方法包括:根据请求端设备发送的密钥请求中携带的第一签名信息对请求端设备进行身份验证;若通过身份验证,则生成共享密钥,并根据共享密钥生成第二签名信息;获取请求端设备的公钥,根据请求端设备的公钥对第二签名信息进行加密并将密文信息发送到请求端设备,请求端设备根据自身私钥对密文信息进行解密得到第二签名信息,并根据第二签名信息对接收端设备进行身份验证,若通过身份验证,则通过共享密钥对请求端设备的身份信息进行加密并将密文信息返回接收端设备,接收端设备采用共享密钥对接收到的密文信息进行解密。本发明能同时完成密钥协商和双方身份认证,在保证密钥安全的同时,保证协商效率。保证协商效率。保证协商效率。
技术研发人员:赵连讯 薛红军
受保护的技术使用者:北京得瑞领新科技有限公司
技术研发日:2022.03.10
技术公布日:2022/4/15
转载请注明原文地址:https://win.8miu.com/read-1143797.html