一种密钥配置方法和装置
技术领域
本发明涉及网络通信技术领域,特别涉及一种密钥配置方法和装置。
背景技术
WiFi(Wireless Fidelity,无线保真)技术从1997年无线局域网标准IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会)802.11发布以来,在拥有众多在业界领先的公司组成的WiFi联盟的大力推动下,同时以其具有的部署快速、使用便利和传输速率高等优势,发展迅猛。WiFi技术现在已经被广泛应用于各个行业,现在的笔记本电脑、PDA(Personal Digital Assistant,掌上电脑)和手机等都支持WiFi技术,WiFi网络的接入点遍布于酒店、咖啡厅、学校和医院等场所,可以说WiFi技术在生活中无所不在。
随着WiFi技术的发展和广泛应用,与之相关的安全技术需求也随之产生,WPS(WiFi Protected Setup,WiFi安全建立)就是为了保证建立WiFi连接时的安全技术之一。WPS主要强调两点:安全和简单,即配置过程要简单,配置后的网络要安全。现有的WPS主要基于密钥交换算法。
目前WPS应用的场景,主要包括以下两种:第一种是作为enrollee(被注册方)的终端与作为registrar(注册器)的AP(Access Point,接入点)之间进行密钥的配置,以便后续终端与AP之间能够基于配置的密钥进行数据交互。第二种是P2P(Peer to Peer,点到点)的认证配置过程,WiFi技术中P2P的研究是为了在没有诸如蜂窝网或热点等基础设施的情况下,终端设备之间也能够通过WiFi功能实现端到端的直接发现,在该场景下,一个终端作为client(客户端),另一个终端作为GO(Group Owner,组长设备),在client和GO之间进行密钥的配置,以便后续client和GO之间能够基于配置的密钥进行数据交互。
现有技术中采用的密钥配置方式主要是基于密钥交换算法,即第一设备和第二设备分别产生一对公私钥,第一设备和第二设备通过空口互相交换公钥,即第一设备将自身公钥通过空口发送给第二设备,第二设备将自身公钥通过空口发送给第一设备,第一设备和第二设备分别利用对方的公钥和自身的私钥分别生成共享密钥,并利用共享密钥进行后续的安全传输。
然而,现有技术中的上述密钥配置方式比较容易受到攻击,攻击者在空口很容易截获设备之间发送的公钥,利用自己的公钥分别与第一设备和第二设备执行上述密钥交换算法,即冒充第二设备与第一设备建立安全连接,并冒充第一设备与第二设备建立安全连接,使得第一设备与第二设备之间发送的消息被攻击者监听到。
发明内容
有鉴于此,本发明实施例提供了一种密钥配置方法和装置,用于提高第一设备和第二设备之间交互的安全性。
第一方面,本发明实施例提供了一种密钥配置的方法,该方法包括:
第一设备通过安全媒介获取第二设备的公钥;
第一设备将用于得到共享密钥的信息发送给第二设备;
以便所述第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥;
其中所述第一设备利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
根据上述第一方面的实现方式,所述第一设备通过安全媒介获取第二设备的公钥包括:
所述第一设备通过扫描识别码的方式、USB的方式或者近场通信NFC的方式从第二设备获取第二设备的公钥。
在第一方面的第一种实现方式中,所述用于得到共享密钥的信息具体为:第一设备生成的密码;
所述第一设备利用所述用于得到共享密钥的信息得到所述共享密钥包括:所述第一设备将所述密码作为共享密钥;
所述第一设备将用于得到共享密钥的信息发送给第二设备包括:所述第一设备利用第二设备的公钥将所述密码进行加密后发送给所述第二设备;
以便所述第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:以便所述第二设备利用自身的私钥以及用于得到共享密钥的信息生成所述共享密钥包括:所述第二设备利用自身的私钥对所述加密结果进行解密得到所述密码,将所述密码作为共享密钥。
在第一方面的第二种实现方式中,所述用于得到共享密钥的信息具体为:所述第一设备的公钥;
所述第一设备将用于得到共享密钥的信息发送给第二设备包括:所述第一设备利用第二设备的公钥将第一设备的公钥进行加密后,将加密结果发送给第二设备;
以便所述第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:以便所述第二设备利用自身的私钥对所述加密结果进行解密后,得到所述第一设备的公钥,并且生成密码,将该密码作为共享密钥,利用所述第一设备的公钥将该密码进行加密后,将加密结果发送给所述第一设备;
所述第一设备利用自身的私钥得到所述共享密钥包括:所述第一设备利用自身的私钥对接收到的加密结果进行解密后,将得到的密码作为共享密钥。
在第一方面的第三种实现方式中,第一设备和第二设备预定密钥交换算法;
所述用于得到共享密钥的信息具体为:第一设备的公钥;
所述第一设备利用自身的私钥得到所述共享密钥包括:所述第一设备利用第二设备的公钥和自身的私钥按照所述密钥交换算法生成共享密钥;
以便所述第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:以便所述第二设备利用第一设备的公钥以及自身的私钥按照所述密钥交换算法生成共享密钥。
根据上述任一种实现方式,所述第一设备和所述第二设备利用所述共享密钥或所述共享密钥的衍生密钥进行安全连接。
根据上述第一方面的第三种实现方式,该方法还包括:
所述第一设备在得到共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码,将加密结果发送给所述第二设备;以便所述第二设备利用第二设备得到的共享密钥或者共享密钥的衍生密钥对接收到的加密结果进行解密,得到密码;该密码用于第一设备和第二设备的安全连接;或者,
所述第二设备在得到共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码,将加密结果发送给所述第一设备;所述第一设备利用自身生成的共享密钥对接收到的加密结果进行解密,得到密码;该密码用于第一设备和第二设备之间的安全连接。
根据上述第一方面的第三种实现方式,所述方法还包括:所述第一设备和所述第二设备预定密钥交换算法包括:
所述第一设备和所述第二设备上预先配置有所述密钥交换算法所使用的参数;或者,
所述第一设备和所述第二设备接收第三方的配置设备发送的所述密钥交换算法所使用的参数。
根据上述第一方面的第三种实现方式,所述第一设备将用于得到共享密钥的信息发送给第二设备包括:
所述第一设备利用第二设备的公钥对所述第一设备的公钥进行加密后,将加密结果发送给所述第二设备;
以便所述第二设备对所述加密结果进行解密,得到所述第一设备的公钥。
结合上述任一种实现方式,该方法还包括:
所述第一设备得到共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第一验证值,将该第一验证值发送给第二设备;
以便第二设备利用第二设备得到的共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第二验证值,将生成的第二验证值与接收到的第一验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下,所述第二设备利用所述共享密钥或共享密钥的衍生密钥与所述与第一设备进行安全连接。
结合上述任一种实现方式,该方法还包括:第一设备接收所述第二设备发送的第一验证值,所述第一验证值是所述第二设备利用共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成的验证值;
第一设备利用第一设备得到的共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第二验证值,将生成的第二验证值与接收到的第一验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下所述第一设备利用所述共享密钥或共享密钥的衍生密钥与所述第二设备进行安全连接。
结合上述任一种实现方式,所述第一设备通过WPS认证过程中的第一消息发送所述用于得到共享密钥的信息;或者,
所述第一设备向所述第二设备发送通知所述第二设备开始WPS认证过程的触发消息,并通过WPS认证过程中的第二消息发送所述用于得到共享密钥的信息;或者,
所述第一设备通过四次握手过程中的第一消息发送所述用于得到共享密钥的信息;或者,
所述第一设备通过通知所述第二设备开始四次握手过程的触发消息发送所述用于得到共享密钥的信息。
第二方面,一种密钥配置的方法,该方法包括:
第二设备通过安全媒介将第二设备的公钥提供给第一设备;
第二设备接收第一设备发送来的用于得到共享密钥的信息;
第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥;
其中所述第一设备利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
第二方面的第一种实现方式中,所述第二设备通过安全媒介将第二设备的公钥提供给第一设备包括:
所述第二设备通过提供识别码供第一设备扫描的方式、USB的方式或者NFC的方式将第二设备的公钥提供给第一设备。
结合第二方面和第二方面的第一种实现方式,所述用于得到共享密钥的信息具体为:第一设备生成的密码;
所述第一设备利用所述用于得到共享密钥的信息得到所述共享密钥包括:所述第一设备将所述密码作为共享密钥;
所述接收第一设备发送来的用于得到共享密钥的信息包括:接收所述第一设备利用第二设备的公钥将所述密码进行加密后发送来的加密结果;
所述利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:所述第二设备利用自身的私钥对所述加密结果进行解密得到所述密码,将所述密码作为共享密钥。
结合第二方面和第二方面的第一种实现方式,所述用于得到共享密钥的信息具体为:所述第一设备的公钥;
所述接收第一设备发送来的用于得到共享密钥的信息包括:接收所述第一设备利用第二设备的公钥将第一设备的公钥进行加密后发送来的加密结果;
所述利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:所述第二设备利用自身的私钥对所述加密结果进行解密后,得到所述第一设备的公钥,并且生成密码,将该密码作为共享密钥,利用所述第一设备的公钥将该密码进行加密后,将加密结果发送给所述第一设备;
所述第一设备利用自身的私钥得到所述共享密钥包括:所述第一设备利用自身的私钥对接收到的加密结果进行解密后,将得到的密码作为共享密钥。
结合第二方面和第二方面的第一种实现方式,所述方法还包括:所述第一设备和所述第二设备预定密钥交换算法;
所述用于得到共享密钥的信息具体为:所述第一设备的公钥;
所述第一设备利用自身的私钥得到所述共享密钥包括:所述第一设备利用第二设备的公钥和自身的私钥按照所述密钥交换算法生成共享密钥;
所述利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥包括:所述第二设备利用所述第一设备的公钥以及自身的私钥按照所述密钥交换算法生成共享密钥。
结合以上实现方式,所述第一设备和所述第二设备利用所述共享密钥或所述共享密钥的衍生密钥进行安全连接。
结合以上实现方式,该方法还包括:
所述第二设备接收所述第一设备在得到共享密钥后利用共享密钥或者共享密钥的衍生密钥加密一个密码所得到的加密结果,利用得到的共享密钥对接收到的加密结果进行解密,得到所述密码;该密码用于第一设备和第二设备的安全连接;或者,
所述第二设备在生成共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码,将加密结果发送给所述第一设备;以便所述第一设备利用得到的共享密钥对接收到的加密结果进行解密,得到密码;该密码用于第一设备和第二设备之间的安全连接。
结合以上实现方式,所述第一设备和所述第二设备预定密钥交换算法包括:
所述第一设备和所述第二设备上预先配置有所述密钥交换算法所使用的参数;或者,
所述第一设备和所述第二设备接收第三方的配置设备发送的所述密钥交换算法所使用的参数。
结合以上实现方式,所述接收第一设备发送来的用于得到共享密钥的信息包括:
所述第二设备接收所述第一设备利用第二设备的公钥对所述第一设备的公钥进行加密后的加密结果;
对所述加密结果进行解密,得到所述第一设备的公钥。
结合以上实现方式,该方法还包括:
所述第一设备得到共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第一验证值,将该第一验证值发送给第二设备;
所述第二设备利用第二设备得到的共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第二验证值,将生成的第二验证值与接收到的第一验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下,所述第二设备利用所述共享密钥或共享密钥的衍生密钥与所述第一设备进行安全连接。
结合以上实现方式,所述第二设备得到共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第三验证值,将该第三验证值发送给第一设备;
以便所述第一设备利用第一设备得到的共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第四验证值,将生成的第四验证值与接收到的第三验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下所述第一设备利用所述共享密钥或共享密钥的衍生密钥与所述第二设备进行安全连接。
结合以上实现方式,所述第二设备通过WPS认证过程中的第一消息接收所述用于得到共享密钥的信息;或者,
所述第二设备接收所述第一设备发送的通知所述第二设备开始WPS认证过程的触发消息,并通过WPS认证过程中的第二消息接收所述用于得到共享密钥的信息;或者,
所述第二设备通过四次握手过程中的第一消息接收所述用于得到共享密钥的信息;或者,
所述第二设备通过通知所述第二设备开始四次握手过程的触发消息接收所述用于得到共享密钥的信息。
第三方面,本发明提供了一种密钥配置的装置,该装置位于第一设备中,该装置包括:
安全获取单元,用于通过安全媒介获取第二设备的公钥;
密钥处理单元,用于将用于得到共享密钥的信息发送给第二设备,以及利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥;
所述用于得到共享密钥的信息供所述第二设备结合自身的私钥得到共享密钥。
根据上述第三方面的实现方式,所述安全获取单元,具体用于通过扫描识别码的方式、USB的方式或者NFC的方式从第二设备获取第二设备的公钥。
在第三方面的第一种实现方式中,所述密钥处理单元包括:
第一密钥生成子单元,用于生成密码,将所述密码作为共享密钥;
第一密钥传输子单元,用于利用所述第二设备的公钥将所述密码进行加密后,将加密结果发送给所述第二设备,以供所述第二设备利用自身的私钥对所述加密结果进行解密得到所述密码并将所述密码作为共享密钥。
在第三方面的第二种实现方式中,所述密钥处理单元包括:
第二密钥传输子单元,用于利用第二设备的公钥将第一设备的公钥进行加密后,将加密结果发送给第二设备;
第二密钥生成子单元,用于接收到第二设备发送的加密结果后,利用自身的私钥对加密结果进行解密,将得到的密码作为共享密钥。
在第二方面的第三种实现方式中,所述密钥处理单元包括:
第三密钥生成子单元,用于利用第二设备的公钥和第一设备的私钥按照所述第一设备和所述第二设备预定的密钥交换算法生成共享密钥;
第三密钥传输子单元,用于将第一设备的公钥发送给所述第二设备,以供所述第二设备利用第一设备的公钥以及自身的私钥按照所述密钥交换算法生成共享密钥。
根据上述第三方面中的任一种实现方式,所述共享密钥或所述共享密钥的衍生密钥用于第一设备与第二设备之间进行的安全连接。
在第三方面的第三种实现方式中,所述第三密钥生成子单元,还用于在得到共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码;
所述第三密钥传输子单元,还用于将第三密钥生成子单元的加密结果发送给第二设备;或者,
所述第三密钥传输子单元,还用于接收第二设备发送来的加密结果;
所述第三密钥生成子单元,还用于利用得到的共享密钥对所述第三密钥传输子单元接收到的加密结果进行解密,得到密码;
其中,所述密码用于第一设备和第二设备的安全连接。
在第三方面的第三种实现方式中,该装置还包括:参数配置单元,用于存储预先配置的所述密钥交换算法所使用的参数,或者接收并存储第三方的配置设备发送的所述密钥交换算法所使用的参数。
根据上述第三方面中的任一种实现方式,所述安全获取单元,还用于通过安全媒介获取第二设备的地址信息;
所述密钥处理单元,具体用于依据所述第二设备的地址信息将用于得到共享密钥的信息发送给第二设备。
在第三方面的第三种实现方式中,所述第三密钥传输子单元在将第一设备的公钥发送给所述第二设备时,具体用于利用第二设备的公钥对所述第一设备的公钥进行加密后,将加密结果发送给所述第二设备,以供所述第二设备对所述加密结果进行解密后得到所述第一设备的公钥。
根据上述第三方面中的任一种实现方式,该装置还包括:第一验证单元,用于在所述密钥处理单元得到共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第一验证值,将该第一验证值发送给第二设备,
以便第二设备利用第二设备得到的共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第二验证值,将生成的第二验证值与接收到的第一验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下,所述第二设备利用所述共享密钥或共享密钥的衍生密钥与所述第一设备进行安全连接。
根据上述第三方面中的任一种实现方式,该装置还包括:第二验证单元,用于接收到第二设备发送的第三验证值后,利用所述密钥处理单元生成的共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第四验证值,将生成的第四验证值与接收到的第三验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下所述第一设备利用所述共享密钥或共享密钥的衍生密钥与所述第二设备进行安全连接,其中,所述第三验证值为所述第二设备得到共享密钥后,利用所述共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成的。
根据上述第三方面中的任一种实现方式,所述密钥处理单元,具体用于通过WPS认证过程中的第一消息发送所述用于得到共享密钥的信息;或者,
向所述第二设备发送通知所述第二设备开始WPS认证过程的触发消息,并通过WPS认证过程中的第二消息发送所述用于得到共享密钥的信息;或者,
通过四次握手过程中的第一消息发送所述用于得到共享密钥的信息;或者,
通过通知所述第二设备开始四次握手过程的触发消息发送所述用于得到共享密钥的信息。
第四方面,本发明实施例提供了一种密钥配置的装置,该装置位于第二设备中,该装置包括:
安全发送单元,用于通过安全媒介将第二设备的公钥提供给第一设备;
密钥处理单元,用于利用自身的私钥和第一设备发送来的用于得到共享密钥的信息得到共享密钥;
其中所述第一设备利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
根据上述第四方面的实现方式,所述安全发送单元,具体用于通过提供识别码供第一设备扫描的方式、USB的方式或者NFC的方式将第二设备的公钥提供给第一设备。
在第四方面的第一种实现方式中,所述密钥处理单元具体包括:
第一信息传输子单元,用于接收第一设备发送来的利用第二设备的公钥对第一设备生成的密码进行加密所得到的加密结果;
第一密钥生成子单元,用于利用第二设备的私钥对所述加密结果进行解密得到所述密码,将所述密码作为共享密钥。
在第四方面的第二种实现方式中,所述密钥处理单元具体包括:
第二信息传输子单元,用于接收第一设备利用第二设备的公钥将第一设备的公钥进行加密后得到的加密结果;将第二密钥生成子单元得到的加密结果发送给所述第一设备,以便所述第一设备利用自身的私钥对接收到的加密结果进行解密后,将得到的密码作为共享密钥;
第二密钥生成子单元,用于利用自身的私钥对所述第二信息传输子单元接收到的加密结果进行解密,得到所述第一设备的公钥,并且生成密码,将该密码作为共享密钥,利用所述第一设备的公钥将该密码进行加密后得到加密结果。
在第四方面的第三种实现方式中,所述密钥处理单元具体包括:
第三信息传输子单元,用于接收所述第一设备发送来的第一设备的公钥;
第三密钥生成子单元,用于利用第一设备的公钥以及自身的私钥按照所述第一设备和所述第二设备预定的密钥交换算法生成共享密钥。
根据上述第三方面的任一种实现方式,所述共享密钥用于第一设备和第二设备之间的安全连接。
根据第四方面的第三种实现方式,所述第三信息传输子单元,还用于接收第一设备在利用第二设备的公钥和自身的私钥按照所述密钥交换算法生成共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码得到的加密结果;所述第三密钥生成子单元,还用于利用得到的共享密钥对所述第三信息传输子单元接收到的加密结果进行解密,得到所述密码,其中,所述密钥用于第一设备和第二设备之间的安全连接;或者,
所述第三密钥生成子单元,还用于在得到共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码得到加密结果;所述第三信息传输子单元,还用于将所述第三密钥生成子单元生成的加密结果发送给第一设备,以便所述第一设备在利用第二设备的公钥和自身的私钥按照所述密钥交换算法生成共享密钥后,对接收到的加密结果进行解密,得到所述密码,其中,所述密钥用于第一设备和第二设备之间的安全连接。
根据第四方面的第三种实现方式,该装置还包括:参数配置单元,用于存储预先配置的所述密钥交换算法所使用的参数,或者接收并存储第三方的配置设备发送的所述密钥交换算法所使用的参数。
根据第四方面的第三种实现方式,所述第三信息传输子单元,具体用于接收第一设备发送来的利用第二设备的公钥对第一设备的公钥进行加密后的加密结果,对该加密结果进行解密,得到所述第一设备的公钥。
在上述第三方面的任一种实现方式中,该装置还包括:第一验证单元,用于如果接收到第一设备发送的第一验证值,则利用所述密钥处理单元得到的共享密钥、该共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第二验证值,将生成的第二验证值与接收到的第一验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下,所述第二设备利用所述共享密钥或共享密钥的衍生密钥与第一设备进行安全连接。
在上述第四方面的任一种实现方式中,该装置还包括:
第二验证单元,用于在所述密钥处理单元得到共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成第三验证值,将该第三验证值发送给第一设备;
以便所述第一设备利用第一设备得到的共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成第四验证值,将生成的第四验证值与接收到的第三验证值进行比对,如果两者一致,则验证通过,在验证通过的情况下所述第一设备利用所述共享密钥或共享密钥的衍生密钥与所述第二设备进行安全连接。
在上述第四方面的任一种实现方式中,所述密钥处理单元,具体用于通过WPS认证过程中的第一消息获取所述用于得到共享密钥的信息;或者,
通过WPS认证过程中的第二消息获取所述用于得到共享密钥的信息;或者,
通过四次握手过程中的第一消息获取所述用于得到共享密钥的信息;或者,
通过通知所述第二设备开始四次握手过程的触发消息获取所述用于得到共享密钥的信息。
由以上技术方案可以看出,在本发明中第一设备通过安全媒介获取第二设备的公钥,保证了第二设备的公钥到达第一设备,第一设备就能够根据第二设备的公钥生成共享密钥,避免了攻击者冒充第二设备与第一设备建立安全连接,从而使得攻击者无法监听第一设备与第二设备之间的消息,提高了第一设备和第二设备之间交互的安全性。
附图说明
图1为本发明实施例一提供的密钥配置方法的流程示意图;
图2为本发明实施例二提供的密钥配置方法的流程示意图;
图3为本发明实施例三提供的密钥配置方法的流程示意图;
图4为本发明实施例四提供的密钥配置方法的流程示意图;
图5为本发明实施例五提供的密钥配置方法的流程示意图;
图6为本发明实施例六提供的密钥配置方法的流程示意图;
图7为本发明实施例七提供的密钥配置方法的流程示意图;
图8为本发明实施例提供的一种位于第一设备中的密钥配置装置的结构示意图;
图9为本发明实施例提供的第二种位于第一设备中的密钥配置装置的结构示意图;
图10为本发明实施例提供的第三种位于第一设备中的密钥配置装置的结构示意图;
图11为本发明实施例提供的一种位于第二设备中的密钥配置装置的结构示意图;
图12为本发明实施例提供的第二种位于第二设备中的密钥配置装置的结构示意图;
图13为本发明实施例提供的第三种位于第二设备中的密钥配置装置的结构示意图;
图14为本发明实施例提供的第一设备的硬件结构示意图;
图15为本发明实施例提供的第二设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明的核心思想包括,第一设备通过安全媒介获取第二设备的公钥,将用于得到共享密钥的信息发送给第二设备;第二设备利用所述用于得到共享密钥的信息和自身的私钥得到共享密钥;其中所述第一设备利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
本发明可以采用密钥交换的方式进行共享密钥的配置,也可以不采用密钥交换的方式进行共享密钥的配置。下面分别通过几个具体的实施例对本发明提供的方法进行详细描述。
实施例一、
在本实施例中,采用的是密钥交换的方式进行共享密钥的配置,第一设备和第二设备预定密钥交换算法,密钥交换算法是后续第一设备和第二设备在生成共享密钥时所采用的算法,可以采用但不限于:D-H算法、RSA算法或EIGamal算法等,根据不同的密钥交换算法,预先共享的参数有所不同。
共享密钥交换算法所使用的参数的方式可以包括但不限于以下两种:第一种方式:预先在第一设备和第二设备上配置密钥交换算法所使用的参数;第二种方式:通过第三方的设备将密钥交换算法所使用的参数发送给第一设备和第二设备。
在本发明的各实施例中均以D-H算法为例,第一设备和第二设备预先共享参数g和P,预先在第一设备和第二设备上共享参数g和P,其中P是素数,g是P的原根。另外,在第一设备和第二设备都具有各自的公钥和私钥,第一设备上的公钥和私钥分别为PkeyA和keyA,第二设备上的公钥和私钥分别为PkeyB和keyB。本发明后续实施例二至五中均存在上述配置,不再一一赘述。
图1为本发明实施例一提供的密钥配置方法的流程示意图,如图1所示,该流程可以包括以下步骤:
步骤101:第一设备通过安全媒介获取第二设备的公钥PkeyB。
本步骤中所述的安全媒介是能够保证第二设备的公钥PkeyB能够到达第一设备而不被中间的攻击者截取的媒介,可以包括但不限于以下几种:通过扫描识别码的方式,通过USB(Universal Serial Bus,通用串行总线)的方式或者通过NFC(Near FieldCommunication,近场通信)的方式。
其中图1中以扫描识别码的方式为例,第一设备扫描第二设备的识别码,该识别码可以是诸如二维码、条形码等,在识别码中包含有第二设备的公钥PkeyB,还可以包含第二设备的设备信息,主要是地址信息,还可以包括但不限于以下设备信息:UUID(UniversallyUnique Identifier,通用唯一识别码)、制造商、序列号、设备能力、信道信息等。其中信道信息可以帮助第一设备通过Wifi网络快速发现第二设备,从而加快步骤103的执行效率。设备能力指的是该设备支持的算法、认证方法、设备角色信息、设备类型信息等,其中设备角色信息是指该设备在注册时充当的角色,可以是enrollee、registrar、client或GO等。设备类型信息可以是无线终端(诸如Wifi终端、蓝牙终端、Zigbee终端等诸如手机、电脑、传感器等)、接入点(在Wifi网络中是AP,蓝牙网络中可以是蓝牙网关、Zigbee网络中可以是物联网网关等)、传感器节点、中心节点等。
步骤102:第一设备利用第二设备的公钥PkeyB和自身的私钥keyA生成共享密钥DHkeyA。
在此第一设备按照预先与第二设备共享的密钥交换算法来产生共享密钥DHkey,以D-H算法为例,第一设备的公钥PkeyA为:
PkeyA=(g^keyA)mod(P),其中keyA为第一设备的私钥,为随机数。
第二设备的公钥PkeyB为:
PkeyB=(g^keyB)mod(P),keyB为第二设备的私钥,也是随机数。
利用PkeyA和keyA生成的共享密钥DHkeyA为:
DHkeyA=((PkeyB)^keyA)mod(P)。
步骤103:第一设备依据第二设备的设备信息(即第二设备的地址信息)将自身的公钥PkeyA发送给第二设备。
可选地,可以利用第二设备的公钥PkeyB将第一设备的公钥PkeyA进行加密,将加密结果发送给第二设备,这样可以提高安全性。
利用公钥加密可以分为两种方式:
第一种加密方式:如果公钥是用于非对称加密的公钥,则可以直接用于加密,需要使用对应的私钥进行解密。
第二种加密方式:加密时采用公钥的部分信息,或者基于公钥衍生的信息作为对称密钥进行加密,解密时要采用对称密钥来解密。公钥是用于密钥交换的公钥或者用于非对称加密的公钥。
后续的加密和解密过程可以根据具体情况采用上述两种加密方式中的其中一种。此处加密采用的是第二种加密方式。
更进一步地,第一设备还可以利用生成的共享密钥DHkeyA、DHkeyA的衍生密钥以及明文(该明文与第二设备预先约定)中的至少一种生成验证值,将该验证值发送给第二设备,以供第二设备进行验证。生成验证值的方式与第二设备预先约定,例如采用生成hash(哈希)值的方式。
上述的明文可以采用但不限于:第二设备的公钥PkeyB,预先与第二设备共享的参数,从第二设备获取的设备信息所包含的参数(例如第二设备生成的现场值nonce),第一设备发送给第二设备的消息中的部分内容,等等。另外,本发明实施例并不限于衍生密钥的生成方式,只要第一设备和第二设备预先约定衍生密钥的生成方式即可。
举个例子,第一设备可以对第二设备的公钥PkeyB进行哈希后得到hash值,将该hash值作为验证值发送给第二设备。再举个例子,第一设备可以将共享密钥DHkeyA结合一个与第二设备共享的参数生成验证值后发送给第二设备。
步骤104:第二设备接收到第一设备的公钥PkeyA,利用PkeyA和自身的私钥keyB生成共享密钥DHkeyB。
在本步骤之前,如果第一设备发送给第二设备的是加密结果,则第二设备首先对该加密结果进行解密,得到第一设备的公钥PkeyA。这里第二设备生成的公私钥(PkeyB,keyB)的方式能够保证用公钥PkeyB加密的结果能够解密,该方式是现有技术,在此不再赘述。
同样以D-H算法为例,第二设备生成的共享密钥DHkeyB为:
DHkeyB=((PkeyA)^keyB)mod(P)
由D-H算法可知,DHkeyA=DHkeyB。
如果第二设备接收到第一设备发送的验证值,则同样利用生成的共享密钥DHkeyB、DHkeyB的衍生密钥和明文(该明文与第一设备预先约定)中的至少一种生成验证值,将生成的验证值与收到的验证值进行比对,如果一致,则验证通过,第二设备后续可以采用该共享密钥DHkeyB与第一设备进行交互。
更进一步地,第二设备可以利用生成的共享密钥DHkeyB、DHkeyB的衍生密钥和明文(该明文与第一设备预先约定)中的至少一种生成验证值,将该验证值发送给第一设备。第一设备接收到该验证值后,同样利用自身生成的共享密钥DHkeyA、DHkeyA的衍生密钥和明文(该明文与第二设备预先约定)中的至少一种生成验证值,将该验证值与接收到的验证值进行比对,如果一致,则验证通过,第一设备后续可以采用该共享密钥DHkeyA与第二设备进行交互。
实施例一提供的密钥配置方式可以很好的应用于WPS认证流程和四次握手流程中,下面分别通过实施例二和实施例三对应用于WPS认证流程进行详细描述,通过实施例四和实施例五对应用于四次握手流程中的过程进行详细描述。
实施例二、
本实施例中以密钥配置应用于WPS认证流程为例,假设第一设备在WPS认证过程中角色为registrar,第二设备为enrollee,或者第一设备为GO,第二设备为client,鉴于WPS认证的要求,M1消息必须从enrollee或client发出。基于此,本发明实施例二提供的密钥配置方法流程如图2所示,包括以下步骤:
步骤201同步骤101。
步骤202同步骤102。
步骤203:第一设备向第二设备发送触发消息。
该触发消息用于通知第二设备开始进行密钥配置,该触发消息可以包含在其他消息中发送,诸如包含在发现消息或者广播消息中,例如如果第一设备为AP,则可以通过广播消息发送,如果第一设备为无线终端,则可以通过发现消息发送。
步骤204:第二设备向第一设备发送M1消息。
该M1消息中包含版本号、第二设备生成的现场值Nonce2,第二设备的设备信息。
另外,第二设备还可以发送利用自身的公钥PkeyB生成的验证值,例如PkeyB的hash值,供第一设备进行验证。如果第一设备接收到验证值,则首先利用第二设备的公钥PkeyB生成验证值,将生成的验证值与接收到的验证值进行比较,如果一致,则验证通过,执行步骤205。
步骤205:第一设备利用DHkeyA、第二设备的现场值Nonce2以及第一设备生成的现场值Nonce1生成衍生密钥。
在此除了利用DHkeyA之外,并不限于第一设备生成衍生密钥的方式和参数,只要采用与第二设备约定的方式即可。为了最大限度地适应现有WPS认证过程,可以利用共享密钥DHkeyA、第二设备的现场值Nonce2以及第一设备生成的现场值Nonce1来生成衍生密钥,具体可以采用如下方式:
KDK=HMAC-SHA-256DHKey A(Nonce2||EnrolleeMAC||Nonce1),即KDK是DHKey A与Nonce2,第二设备的MAC地址以及Nonce1的hash结果。
AuthKey||KeyWrapKey||EMSK=kdf(KDK,“Wi-Fi Easy and Secure KeyDerivation”,640),即AuthKey,KeyWrapKey,EMSK是KDK结合字符串“Wi-Fi Easy andSecure Key Derivation”进行迭代产生的640bit的密钥,AuthKey取其中256bit,KeyWrapKey取其中128bit,EMSK取其中256bit。KDK、AuthKey、KeyWrapKey和EMSK都可以作为共享密钥的衍生密钥。
步骤206:第一设备向第二设备发送M2消息,该M2消息包含第一设备的公钥PkeyA、Nonce1和Nonce2。
另外,第一设备还可以利用M1消息、M2消息结合Authkey生成验证值,例如生成hash值,供第二设备进行验证。如果该验证值通过M2消息发送,那么生成验证值的M2消息为不包含该验证值时的M2消息。
步骤207:第二设备利用第一设备的公钥PkeyA和自己的私钥keyB生成共享密钥DHkeyB,并利用DHkeyB、Nonce1和Nonce2生成衍生密钥。
在此生成衍生密钥的方式可以参考步骤205中的描述。
第二设备如果接收到验证值,则同样利用M1消息、M2消息(不包含验证值的M2消息)结合计算得到的衍生密钥Authkey生成验证值,将生成的验证值与接收到的验证值进行比较,如果一致,则验证通过,第二设备后续可以采用该共享密钥DHkeyB与第一设备进行交互。
第二设备还可以进一步利用自己生成的Authkey、M2消息以及完成消息生成验证值,将该验证值通过完成消息发送给第一设备进行验证,生成验证值所利用的完成消息为不包含验证值的完成消息。第一设备接收到验证值后,利用自己生成的Authkey、M2消息以及完成消息生成验证值,将自己生成的验证值与接收到的验证值进行对比,如果一致,则验证通过,第一设备后续可以采用该共享密钥DHkeyB或共享密钥的衍生密钥与第二设备进行交互。
另外,在该实施例中,第一设备在步骤201中获取第二设备的公钥的同时,还可以获得第二设备的现场值Nonce2,这样第二设备在向第一设备发送的M1消息中就可以不再携带Nonce2,这种情况下,步骤205就可以在步骤202之后执行。
实施例三、
本实施例中仍以密钥配置应用于WPS认证流程为例,与实施例二不同的是,本实施例中假设第一设备在WPS认证过程中角色为enrollee,第二设备为registrar,鉴于WPS认证的要求,M1消息必须从enrollee发出。基于此,本发明实施例三提供的密钥配置方法流程如图3所示,包括以下步骤:
步骤301同步骤101。
步骤302同步骤102。
步骤303:第一设备向第二设备发送M1消息,该M1消息中至少包括第一设备的公钥PkeyA和第一设备生成的现场值Nonce1。还可以包含版本号、第一设备的设备信息等。
步骤304:第二设备利用第一设备的公钥PkeyA和自身的私钥keyB生成共享密钥DHkeyB,并利用DHkeyB、第二设备的现场值Nonce2以及第一设备生成的现场值Nonce1生成衍生密钥。
生成衍生密钥的方式与实施例二中描述的相同,在此不再赘述。
步骤305:第二设备向第一设备发送M2消息,该M2消息包含Nonce2和Nonce1。
另外,第二设备还可以利用M1消息、M2消息结合Authkey生成验证值,例如生成hash值,供第一设备进行验证。如果该验证值通过M2消息发送,那么生成验证值的M2消息为不包含该验证值时的M2消息。
步骤306:第一设备利用DHkeyA、Nonce2和Nonce1生成衍生密钥。
如果第一设备接收到验证值,同样利用M1消息、M2消息(不包含验证值的M2消息)结合计算得到的衍生密钥Authkey生成验证值,将生成的验证值与接收到的验证值进行比较,如果一致,则验证通过,第一设备后续可以采用该共享密钥DHkeyB与第二设备进行交互。
第一设备还可以进一步利用自己生成的Authkey、M2消息以及完成消息生成验证值,将该验证值通过完成消息发送给第二设备进行验证,生成验证值所利用的完成消息为不包含验证值的完成消息。第二设备接收到验证值后,利用自己生成的Authkey、M2消息以及完成消息生成验证值,将自己生成的验证值与接收到的验证值进行对比,如果一致,则验证通过,第二设备后续可以采用该共享密钥DHkeyB或者共享密钥的衍生密钥与第一设备进行交互。
另外,在本实施例中,第一设备在步骤301中获取第二设备的公钥的同时,还可以获得第二设备的现场值Nonce2,这样第二设备在向第一设备发送的M2消息中就可以不再携带Nonce2,这种情况下步骤306就可以在步骤302之后执行。
实施例四、
本实施例中以密钥配置应用于四次握手流程为例,假设第一设备在四次握手过程中角色为Authenticator(认证方),第二设备作为supplicant(申请方),四次握手流程中M1消息必须由Authenticator发送,基于此,本发明实施例四提供的密钥配置方法流程如图4所示,包括以下步骤:
步骤401同步骤101。
步骤402同步骤102。
步骤403:第一设备向第二设备发送M1消息,该M1消息包含自身的公钥PkeyA和自身产生的随机数ANonce(AP随机值)。
步骤404:第二设备利用PkeyA和自身的私钥keyB生成共享密钥DHkeyB,并且利用自身产生的随机数SNonce(站点随机值)以及DHkeyB和ANonce生成PTK(PairwiseTransient Key,成对临时密钥)。
在生成PTK时,也可以利用SNonce、ANonce以及DHkeyB的衍生密钥,具体生成PTK的方式可以采用现有方式,在此不加以限制。
步骤405:第二设备向第一设备发送M2消息,该M2消息中包含SNonce以及该M2消息的MIC(Message Integrity Code,消息完整性编码)。
其中M2消息的MIC可以是DHkeyB或者DHkeyB的衍生密钥结合M2消息的hash值,或者PTK的衍生密钥结合M2消息的hash值,主要用于进行消息的完整性校验。
步骤406:第一设备利用DHkeyA以及该M2消息生成MIC,利用生成的MIC验证接收到的MIC,如果一致,则利用SNonce、ANonce以及DHkeyA(或者DHkeyA的验证密钥)生成PTK。
如果该MIC在步骤405中是利用DHkeyB的衍生密钥结合M2消息生成的,那么在此步骤406中就利用DHkeyA的衍生密钥和M2消息生成MIC;如果该MIC在步骤405中是利用PTK的衍生密钥结合M2消息生成的,那么在此步骤406中就先可以生成PTK,利用PTK的衍生密钥和M2消息生成MIC,然后利用生成的MIC对接收到的MIC进行验证。当然,无论哪种情况也可以都生成PTK后再生成MIC进行验证。
步骤407:第一设备利用PTK加密信任状,将加密的信任状以及M3消息的MIC值发送给第二设备。
该MIC值是利用DHkeyA和M3消息进行hash后生成的。
步骤408:第二设备利用DHkeyB和M3消息生成MIC值,利用生成的MIC值对接收到的MIC进行验证,如果验证通过,利用自身生成的PTK解密获得信任状。
步骤409:第二设备发送M4消息以及该消息的MIC给第一设备进行确认。
至此就完成了第一设备和第二设备之间的四次握手,实际上在步骤404就已经完成了共享密钥的共享,第一设备和第二设备就能够利用共享密钥或共享密钥的衍生密钥进行后续交互,后续的步骤405和步骤409是四次握手的固有流程,只是在交互过程中利用了共享密钥。
实施例五、
本实施例中仍以密钥配置应用于四次握手流程为例,假设第一设备在四次握手过程中角色为supplicant,第二设备作为Authenticator,四次握手流程中M1消息必须由Authenticator发送,基于此,本发明实施例五提供的密钥配置方法流程如图5所示,包括以下步骤:
步骤501同步骤401。
步骤502同步骤402。
步骤503:第一设备向第二设备发送触发消息,该触发消息中包含第一设备的公钥PkeyA,通知第二设备开始四次握手过程。
步骤504:第二设备利用PkeyA和自身的私钥keyB生成共享密钥。
步骤505:第二设备向第一设备发送M1消息,该M1消息包含第二设备产生的随机数ANonce。
步骤506:第一设备利用ANonce和自己产生的SNonce、DHkeyA产生PTK。
步骤507:第一设备将SNonce以及M2消息的MIC通过M2消息发送给第二设备。
M2消息的MIC可以是DHkeyA或者DHkeyA的衍生密钥结合M2消息的hash值,或者PTK的衍生消息结合M2消息的hash值,主要用于进行消息的完整性校验。
步骤508:第二设备利用DHkeyB以及该M2消息生成MIC,利用生成的MIC验证接收到的MIC,如果一致,则利用ANonce、SNonce和DHkeyB生成PTK。
如果步骤507中利用DHkeyA的衍生密钥结合M2消息生成MIC,则在步骤508中利用DHkeyB的衍生密钥结合M2消息生成MIC,然后进行验证。如果步骤507中利用PTK的衍生密钥结合M2消息生成MIC,则在步骤508中先生成PTK,再利用PTK的衍生密钥和M2消息生成MIC,然后进行验证。当然,无论哪种情况也可以都生成PTK后再生成MIC进行验证。
步骤509:第二设备利用PTK加密信任状,将加密的信任状以及M3消息的MIC值发送给第一设备。M3消息的MIC值是利用DHkeyB和M3消息生成的。
步骤510:第一设备利用DHkeyA和M3消息生成MIC值,利用生成的MIC值对接收到的MIC进行验证,如果验证通过,利用自身生成的PTK解密获得信任状。
步骤511:第一设备发送M4消息以及该消息的MIC给第二设备进行确认。
至此就完成了第一设备和第二设备之间的四次握手,实际上在步骤504就已经完成了共享密钥的共享,第一设备和第二设备就能够利用共享密钥进行后续交互,后续的步骤505和步骤511是四次握手的固有流程,只是在交互过程中利用了共享密钥。
在上述实施例一至实施例五所述的各流程中,除了第一设备和第二设备利用共享密钥进行后续交互过程之外,在双方都产生共享密钥之后,可以由一方利用生成的共享密钥或者共享密钥的衍生密钥加密一个密码发送给另一方,其中该密码可以是信任状或者会话密钥等,可以是随机生成的,也可以是按照某个算法生成的,在此不加以限制。另一方利用自身生成的共享密钥或者共享密钥的衍生密钥进行解密得到密码,双方可以利用该密码或者该密码的衍生密钥进行后续交互过程。
实施例六、
本实施例不采用密钥交换的方式进行密钥配置,在本实施例中第一设备和第二设备分别存在一对公私钥,即第一设备上有公钥PkeyA和私钥keyA,第二设备上有公钥PkeyB和私钥keyB,公私钥的产生方式在此不具体限制,特征是,利用公钥PkeyA进行加密的结果能够采用私钥keyA进行解密,利用公钥PkeyB进行加密的结果能够采用私钥keyB进行解密。图6为本发明实施例六提供的密钥配置方法的流程示意图,如图6所示,该方法包括以下步骤:
步骤601同步骤101。
如果第一设备是registrar、AP、GO或者中心节点,那么按照步骤602至步骤604的流程执行。
步骤602:第一设备利用第二设备的公钥PkeyB加密一个密码,将加密结果发送给第二设备。其中该密码可以是信任状或者会话密钥等,可以是随机生成的,也可以是按照某个算法生成的,在此不加以限制。
本步骤中的加密方式可以采用实施例一中所述的第一种加密方式。
更进一步地,第一设备可以利用第二设备的公钥PkeyB生成一个验证值,例如生成PkeyB的hash值发送给第二设备,第二设备接收到验证值后,首先利用自身的公钥PkeyB生成验证值,将生成的验证值与接收到的验证值进行比对,如果一致,则确定验证通过,继续执行步骤603。
步骤603:第二设备利用自己的私钥keyB对加密结果进行解密,得到密码。
步骤604:第一设备和第二设备利用上述的密码或者该密码的衍生密钥进行后续的交互。
该实施例中是以第一设备是registrar、AP、GO或者中心节点为例的,如果第二设备是registrar、AP、GO或者中心节点,则按照实施例七中所示的流程执行。
实施例七、
图7为本发明实施例七提供的密钥配置方法的流程示意图,如图7所示,该方法包括:
步骤701同步骤101。
步骤702:第一设备向第二设备发送自身的公钥PkeyA。
在此,为了提高安全性,第一设备可以利用第二设备的公钥PkeyB加密PkeyA后发送给第二设备,第二设备利用自身的私钥keyB进行解密后得到PkeyA。
此处的加密可以采用实施例一中所述的第一种加密方式。
步骤703:第二设备利用第一设备的公钥PkeyA加密一个密码,将加密结果发送给第一设备。其中该密码可以是信任状或者会话密钥等,可以是随机生成的,也可以是按照某个算法生成的,在此不加以限制。
此处的加密可以采用实施例一中所述的第一种加密方式。
在此第二设备可以利用第一设备的公钥PkeyA生成一个验证值,例如生成PkeyA的hash值发送给第一设备,第一设备接收到验证值后首先利用自身的公钥PkeyA生成验证值,将生成的验证值与接收到的验证值进行比对,如果一致,则确定验证通过,继续执行步骤704。
步骤704:第一设备利用自己的私钥keyA对加密结果进行解密,得到密码。
步骤705:第一设备和第二设备利用上述的密码或者密码的衍生密钥进行后续的交互。
如果第一设备和第二设备的角色或类型是一致的,例如都是无线终端设备,或者都是enrollee等,那么无论采用实施例六还是实施例七中的方式均可。
在实施例六中用于得到共享密钥的信息就是第一设备生成的密码,实施例七中用于得到共享密钥的信息就是第一设备的公钥。
需要说明的是,上述实施例六和实施例七中所示的方式同样可以适用于WPS认证流程或四次握手流程,仅需将WPS认证流程中或四次握手流程中涉及到的共享密钥替换为实施例六或实施例七中的密码即可,在此不再赘述。
以上是对本发明所提供的方法进行的详细描述,在由第一设备和第二设备构成的***中,下面分别对第一设备和第二设备进行详细描述。图8为本发明实施例提供的密钥配置装置的结构图,该密钥配置装置位于第一设备中,主要包括:安全获取单元10和密钥处理单元20。
其中安全获取单元10用于通过安全媒介获取第二设备的公钥。
具体地,安全获取单元10可以通过但不限于扫描识别码的方式、USB的方式或者NFC的方式从第二设备获取第二设备的公钥。以扫描识别码的方式为例,安全获取单元10扫描第二设备的识别码,该识别码可以是诸如二维码、条形码等,在识别码中包含有第二设备的公钥PkeyB,还可以包含第二设备的设备信息,主要是地址信息,还可以包括但不限于以下设备信息:UUID、制造商、序列号、设备能力、信道信息等。设备能力指的是该设备支持的算法、认证方法、设备角色信息、设备类型信息等,其中设备角色信息是指该设备在注册时充当的角色,可以是enrollee、registrar、client或GO等。设备类型信息可以是无线终端(诸如Wifi终端、蓝牙终端、Zigbee终端等)、接入点(在Wifi网络中是AP,蓝牙网络中可以是蓝牙网关、Zigbee网络中可以是物联网网关等)、传感器节点、中心节点等。
密钥处理单元20用于将用于得到共享密钥的信息发送给第二设备;以及利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
这样第二设备就能够结合自身的私钥和用于得到共享密钥的信息得到共享密钥。
第一设备和第二设备可以采用密钥交换的方式进行共享密钥的配置,也可以不采用密钥交换的方式进行共享密钥的配置,因此,对应的密钥处理单元20可以采用以下两种方式实现:
第一种实现方式:不采用密钥交换的方式,这种方式对应于上述方法实施例六和七中所描述的内容,此时密钥处理单元20的结构可以存在两种:
结构1)如图8中所示,可以包括:第一密钥生成子单元81和第一密钥传输子单元82。
其中第一密钥生成子单元81用于生成密码,将密码作为共享密钥。其中该密码可以是信任状或者会话密钥等,可以是随机生成的,也可以是按照某个算法生成的,在此不加以限制。
第一密钥传输子单元82用于利用第二设备的公钥将密码进行加密后,将加密结果发送给第二设备,以供第二设备利用自身的私钥对加密结果进行解密得到密码并将密码作为共享密钥。
结构2)如图9中所示,可以包括:第二密钥传输子单元83和第三密钥传输子单元84。
第二密钥传输子单元83用于利用第二设备的公钥将第一设备的公钥进行加密后,将加密结果发送给第二设备。
这样第二设备在接收到该解密结果后,利用自身的私钥对该加密结果进行解密后得到第一设备的公钥,生成一个密码,将该密码作为共享密钥,然后利用第一设备的公钥对该密码进行加密后,将该加密结果发送给第一设备。
这样,第二密钥生成子单元84接收到第二设备发送的加密结果后,利用自身的私钥对加密结果进行解密,将得到的密码作为共享密钥。
第二种实现方式:采用密钥交换的方式。第一设备和第二设备预定密钥交换算法,此时密钥处理单元20的结构如图10中所示包括:第三密钥生成子单元91和第三密钥传输子单元92。
第三密钥生成子单元91用于利用第二设备的公钥和第一设备的私钥按照密钥交换算法生成共享密钥。本发明实施例中共享密钥算法可以采用但不限于:D-H算法、RSA算法或EIGamal算法等,以D-H算法为例,共享密钥DHKeyA=((PkeyB)^keyA)mod(P),其中PkeyB为第二设备的公钥,keyA为第一设备的私钥,P为预先共享的密钥交换算法所使用的参数。
第三密钥传输子单元92用于将第一设备的公钥发送给第二设备,以供第二设备利用第一设备的公钥以及自身的私钥按照密钥交换算法生成共享密钥。类似地,共享密钥DHkeyB=((PkeyA)^keyB)mod(P),PkeyA为第一设备的公钥,keyB为第二设备的私钥,由D-H算法可知,DHkeyA=DHkeyB。
在该种方式中,该装置还可以进一步包括参数配置单元30,用于存储预先配置的密钥交换算法所使用的参数,或者接收并存储第三方的配置设备发送的密钥交换算法所使用的参数。也就是说,密钥交换算法所使用的参数可以采用两种方式预先共享,第一种是采用预先配置的方式,即静态配置的方式,第二种是采用由第三方的配置设备发送的方式。
第一设备和第二设备除了采用共享密钥进行安全交互之外,在该第二种实现方式中,第三密钥生成子单元92还可以用于在生成共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码,第三密钥传输子单元91还用于将第三密钥生成子单元92的加密结果发送给第二设备,供第二设备利用自身生成的共享密钥进行解密后得到该密码。这种情况下,第一设备和第二设备可以利用该密码进行后续安全连接,这里的密码可以是信任状或会话密钥等。或者,
由第二设备利用自身生成的共享密钥加密一个密码,将该密码发送给第一设备。此时上述的第三密钥传输子单元91接收第二设备发送来的加密结果。第三密钥生成子单元92利用生成的共享密钥对第三密钥传输子单元91接收到的加密结果进行解密,得到密码(这种情况图中未示出)。这种情况下,第一设备和第二设备可以利用该密码进行后续安全连接,这里的密码可以是信任状或会话密钥等。
另外,在该第二种实现方式中,为了提高交互的安全性,第二密钥传输子单元92在将第一设备的公钥发送给第二设备时,可以利用第二设备的公钥对第一设备的公钥进行加密后,将加密结果发送给第二设备,以供第二设备对加密结果进行解密后得到第一设备的公钥。上述第二种实现方式对应于实施例一中所描述的内容。
基于以上两种实现方式,由于安全获取单元10能够通过安全媒介获取第二设备的设备信息,该设备信息中可以包含第二设备的地址信息,密钥处理单元20就可以依据第二设备的地址信息将用于得到共享密钥的信息发送给第二设备。
基于以上两种实现方式,该装置还可以进一步包括第一验证单元40,用于在密钥处理单元20生成共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成验证值,将该验证值发送给第二设备。
第二设备收到该验证值后,利用自己生成的共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成验证值,将生成的验证值与接收到的验证值进行比对,如果一致,则确定验证通过,第二设备后续可以采用共享密钥与第一设备进行交互。
基于以上两种实现方式,由于第一设备也可能接收到第二设备发送的验证值,因此该装置还可以进一步包括第二验证单元50,用于接收到第二设备发送的验证值后,利用密钥处理单元20生成的共享密钥、共享密钥的衍生密钥或者与第二设备预先约定的明文中的至少一种生成验证值,将生成的验证值与接收到的验证值进行比对,如果一致,则验证通过,第一设备后续可以采用共享密钥或者共享密钥的衍生密钥与第二设备进行交互。
上述的密钥配置方式可以很好的应用于WPS认证过程和四次握手过程中,当应用于WPS认证过程时,密钥处理单元20可以通过WPS认证过程中的第一个消息(即M1消息)发送用于得到共享密钥的信息;或者,由第一设备向第二设备发送通知第二设备开始WPS认证过程的触发消息,密钥处理单元20通过WPS认证过程中的第二个消息(即M2消息)发送用于得到共享密钥的信息。具体参见实施例二和实施例三中所描述的内容。
当应用于四次握手过程中时,密钥处理单元20可以通过四次握手过程中的第一个消息(即M1消息)发送用于得到共享密钥的信息;或者,通过通知第二设备开始四次握手过程的触发消息发送用于得到共享密钥的信息。具体参见实施例四和实施例五所描述的内容。
在WPS认证过程和四次握手过程中,具体通过哪个消息发送用于得到共享密钥的信息与第一设备的角色有关,具体参见实施例二至实施例五中所描述的内容,在此不再赘述。
图11为本发明实施例提供的密钥配置装置的结构示意图,该密钥配置装置位于第二设备中,如图11所示,该装置包括:安全发送单元01和密钥处理单元02。
其中安全发送单元01用于通过安全媒介将第二设备的公钥提供给第一设备。具体地,安全发送单元01可以通过提供识别码供第一设备扫描的方式、USB的方式或者NFC的方式将第二设备的公钥提供给第一设备。以提供识别码供第一设备扫描的方式为例,在第二设备上设置有识别码,该识别码可以是诸如二维码、条形码等,在识别码中包含有第二设备的公钥PkeyB,还可以包含第二设备的设备信息,主要是地址信息,还可以包括但不限于以下设备信息:UUID、制造商、序列号、设备能力、信道信息等。设备能力指的是该设备支持的算法、认证方法、设备角色信息、设备类型信息等,其中设备角色信息是指该设备在注册时充当的角色,可以是enrollee、registrar、client或GO等。设备类型信息可以是无线终端(诸如Wifi终端、蓝牙终端、Zigbee终端等)、接入点(在Wifi网络中是AP,蓝牙网络中可以是蓝牙网关、Zigbee网络中可以是物联网网关等)、传感器节点、中心节点等。
密钥处理单元02用于利用自身的私钥和第一设备发送来的用于得到共享密钥的信息得到共享密钥。
根据第一设备发送用于得到共享密钥的信息的方式,密钥处理单元02可以采用以下两种方式实现:
第一种实现方式:不采用密钥交换的方式,此时密钥处理单元02的结构可以采用以下两种:
结构1)如图11中所示,可以包括:第一信息传输子单元11和第一密钥生成子单元12。
其中第一信息传输子单元11用于接收第一设备利用第二设备的公钥对第一设备生成的密码进行加密所得到的加密结果。第一密钥生成子单元12用于利用第二设备的私钥对加密结果进行解密得到密码,将密码作为共享密钥。上述第一种实现方式对应于实施例六所描述的内容。
结构2)如图12所示,可以包括:第二信息传输子单元31和第二密钥生成子单元32。
其中,第二信息传输子单元31接收第一设备利用第二设备的公钥将第一设备的公钥进行加密后得到的加密结果;将第二密钥生成子单元32得到的加密结果发送给所述第一设备,以便第一设备利用自身的私钥对接收到的加密结果进行解密后,将得到的密码作为共享密钥。
第二密钥生成子单元32,用于利用自身的私钥对所述第二信息传输子单元接收到的加密结果进行解密,得到所述第一设备的公钥,并且生成密码,将该密码作为共享密钥,利用所述第一设备的公钥将该密码进行加密后得到加密结果。
第二种实现方式,采用密钥交换的方式,这种方式下第一设备和第二设备预定密钥交换算法,此时用于得到共享密钥的信息为第一设备的公钥,这种方式下密钥处理单元02的结构如图13中所示具体包括:第三信息传输子单元21和第三密钥生成子单元22。
其中第三信息传输子单元21用于接收第一设备发送来的第一设备的公钥,第三密钥生成子单元22用于利用第一设备的公钥以及自身的私钥按照密钥交换算法生成共享密钥。本发明实施例中共享密钥算法可以采用但不限于:D-H算法、RSA算法或EIGamal算法等,以D-H算法为例,共享密钥DHKeyB=((PkeyA)^keyB)mod(P),其中PkeyA为第一设备的公钥,keyB为第二设备的私钥,P为预先共享的密钥交换算法所使用的参数。
该种方式中,该装置还可以进一步包括:参数配置单元03用于存储预先配置的密钥交换算法所使用的参数,或者接收并存储第三方的配置设备发送的密钥交换算法所使用的参数。也就是说,密钥交换算法所使用的参数可以采用两种方式预先共享,第一种是采用预先配置的方式,即静态配置的方式,第二种是采用由第三方的配置设备发送的方式。
第一设备和第二设备除了采用上述的共享密钥进行后续安全连接之外,在第二种实现方式下,第三信息传输子单元21在接收第一设备在利用第二设备的公钥和自身的私钥按照所述密钥交换算法生成共享密钥后,可以进一步利用共享密钥或者共享密钥的衍生密钥加密一个密码得到的加密结果;第三密钥生成子单元22利用自身生成的共享密钥对第三信息传输子单元21接收到的加密结果进行解密,得到密码。后续第一设备和第二设备可以采用该密码进行安全交互,这里的密码可以是信任状或会话密钥等。
或者,第三密钥生成子单元22在生成共享密钥后,利用共享密钥或者共享密钥的衍生密钥加密一个密码得到加密结果。第三信息传输子单元21将所述第三密钥生成子单元22生成的加密结果发送给第一设备;供第一设备利用共享密钥进行解密后得到该密码(该种情况图中未示出),后续第一设备和第二设备可以采用该密码进行安全交互,这里的密码可以是信任状或会话密钥等。
另外,在该第二种实现方式中,为了提高交互的安全性,第三信息传输子单元21还用于接收第一设备发送来的利用第二设备的公钥对第一设备的公钥进行加密后的加密结果,对该加密结果进行解密,得到第一设备的公钥。上述第二种方式对应于实施例一中所描述的内容。
基于以上两种实现方式,该装置还可以进一步包括:第一验证单元04,用于如果接收到第一设备发送的验证值,则利用密钥处理单元02生成的共享密钥、该共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成验证值,将生成的验证值与接收到的验证值进行比对,如果一致,则验证通过,第二设备后续可以采用共享密钥或者共享密钥的衍生密钥与第一设备进行交互。
基于以上两种实现方式,由于第二设备也可能向第一设备发送验证值,因此该装置还可以进一步包括:第二验证单元05,用于在密钥处理单元02生成共享密钥后,利用共享密钥、共享密钥的衍生密钥或者与第一设备预先约定的明文中的至少一种生成验证值,将该验证值发送给第一设备。
上述的密钥配置方式可以很好的应用于WPS认证过程和四次握手过程中,当应用于WPS认证过程时,密钥处理单元02可以通过WPS认证过程中的第一个消息获取用于得到共享密钥的信息;或者,通过WPS认证过程中的第二个消息获取用于得到共享密钥的信息。具体参见实施例二和实施例三中所描述的内容。
当应用于四次握手过程中时,密钥处理单元02可以通过四次握手过程中的第一个消息获取用于得到共享密钥的信息;或者,通过通知第二设备开始四次握手过程的触发消息获取用于得到共享密钥的信息。具体参见实施例四和实施例五所描述的内容。
上述的第一设备和第二设备可以是诸如个人计算机、笔记本电脑、无线电话、个人数字处理(PDA)、传感器节点、AP等。需要说明的是,本发明所提供的方法和装置并不限于WiFi网络,可以用于任意的诸如蓝牙、Zigbee等无线网络,甚至可以应用于有线网络中的密钥配置。
上述的第一设备如图14所示包括:处理器、存储器和通信总线,所述处理器通过通信总线与存储器连接,所述存储器中保存有实现密钥配置方法的指令,进一步地,所述第一设备还包括通信接口,通过通信接口与其他设备通信连接。
当处理器调取存储器中实现密钥配置方法的指令时,可以执行如下步骤:
通过安全媒介获取第二设备的公钥;
将用于得到共享密钥的信息发送给第二设备,以便所述第二设备利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥;
利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
当处理器调取存储器中实现密钥配置方法的指令时,可以执行前述方法实施例中第一设备所执行的步骤,具体可参考前述方法实施例,在此不再赘述。
另外,上述的第二设备如图15所示,包括:处理器、存储器和通信总线,所述处理器通过通信总线与存储器连接,所述存储器中保存有实现密钥配置方法的指令,进一步地,所述第二设备还包括通信接口,通过通信接口与其他设备通信连接。
当处理器调取存储器中实现密钥配置方法的指令时,可以执行如下步骤:
通过安全媒介将第二设备的公钥提供给第一设备;
接收第一设备发送来的用于得到共享密钥的信息;
利用自身的私钥和所述用于得到共享密钥的信息得到共享密钥;
其中所述第一设备利用所述用于得到共享密钥的信息或者自身的私钥得到所述共享密钥。
当处理器调取存储器中实现密钥配置方法的指令时,可以执行前述方法实施例中第二设备所执行的步骤,具体可参考前述方法实施例,在此不再赘述。
本发明所描述的设备在架构上都包含一些基本组件,如总线、处理***、存储***、一个或多个输入/输出***、和通信接口等。总线可以包括一个或多个导线,用来实现设备中各组件之间的通信。处理***包括各类型的用来执行指令、处理进程或线程的处理器或微处理器。存储***可以包括存储动态信息的随机访问存储器(RAM)等动态存储器,和存储静态信息的只读存储器(ROM)等静态存储器,以及包括磁或光学记录介质与相应驱动的大容量存储器。输入***供用户输入信息到服务器或终端设备,如键盘、鼠标、手写笔、声音识别***、或生物测定***等,如果是无头设备,则可以不包含人机交互功能的输入***。输出***可以包括用来输出信息的显示器、打印机、扬声器、指示灯等。通信接口用来使服务器或终端设备与其它***或***进行通信。通信接口之间可通过有线连接、无线连接、或光连接连接到网络中。
各设备上均包含有用来管理***资源、控制其它程序运行的操作***软件,以及用来实现特定功能的应用软件。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。