一种使用基于ID的密码术进行网络和服务统一认证的方法与流程

文档序号:16363638发布日期:2018-12-22 08:18阅读:244来源:国知局
一种使用基于ID的密码术进行网络和服务统一认证的方法与流程

本发明涉及一种运营提供商和服务提供商之间的认证框架的方法和系统。具体地,本发明涉及一种根据基于id的密码术的运营提供商和服务提供商之间的统一认证框架的方法和系统。

现有技术概述

在当前的3g/4g蜂窝网络中,在用户设备(userequipment,ue)和网络之间采用相互认证,以保护移动设备和网络在数据通信期间不被窃听或操纵。3g/4g采用的当前相互认证协议是认证和密钥协商(authenticationandkeyagreement,aka)。为了执行aka,ue和核心网(corenetwork,cn)需要在两侧都保存一些预共享的机密信息。

在3g/4g网络中,在网络侧,凭证保存在名为归属用户服务器(homesubscriberserver,hss)的服务器中;而在ue侧,凭证保存在名为全球用户身份模块(universalsubscriberidentitymodule,usim)卡的独立设备中。usim卡是内嵌在ue内usim槽中的计算设备。usim和ue可以通过特殊接口交换信息。目前,3g/4g网络在相互认证中使用对称密钥。因此,对于给定的国际移动用户识别码(internationalmobilesubscriberidentification,imsi),保存在相应usim和hss中的凭证是相同的。

当ue想要接入网络并传输和接收数据时,ue必须基于aka执行与cn的相互认证。图1所示的aka过程称为网络接入认证。在aka过程中,ue首先向移动性管理实体(mobilitymanagemententity,mme)发送附着请求。响应于接收到附着请求,mme将附着请求转发到hss,hss随后基于与ue共享的凭证生成认证向量。将认证向量发送到mme,mme随后向ue发送包含认证材料的认证数据响应。ue对网络进行认证,然后将包含认证码的用户认证发送给mme。进而,mme对认证码进行验证并对ue进行认证。在认证之后,ue与mme和enb交换密钥材料以进一步生成用于控制和数据面的会话密钥。

在传统的通信系统中,当用户想要使用任何第三方服务时,必须进行服务认证。通常,服务认证基于“用户名+密码”,其安全级别远低于网络接入认证。用户必须首先进行网络接入认证,然后进行服务认证才能使用该服务。因此,必须维护两个认证系统以提供这种类型的认证服务。

因此,本领域技术人员正努力为用户提供更好的认证系统和方法,以便与运营提供商和服务提供商进行认证。



技术实现要素:

本发明实施例提供的系统和方法解决了上述和其它问题,并且在本领域中取得了进步。根据本发明的系统和方法实施例的第一个优点是仅需要一个认证消息来认证蜂窝网络和服务提供商,这极大地方便了用户并减少了网络开销。根据本发明的系统和方法实施例的第二个优点是网络和服务统一认证框架实现了与网络认证相同的安全级别,该安全级别远高于服务认证的级别。

根据本发明的一方面,通过以下方式提供了一种统一认证方法,用于使设备根据基于身份的密码术来认证第一提供商网络和第二提供商网络,其中所述设备、第一提供商网络和第二提供商网络中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk)。所述统一认证方法包括:所述设备生成认证数据包并向所述第一提供商网络传输所述认证数据包,所述认证数据包包括认证类型(auth.type)和所述第二提供商网络的id(sp_id),其中所述auth.type包括:第一类型,其中认证涉及所述第一提供商网络的单元和所述第二提供商网络的单元;第二类型,其中认证涉及所述第一提供商网络的所述单元;以及第三类型,其中认证涉及所述第二提供商网络的所述单元;响应于接收到所述认证数据包,所述第一提供商网络的所述单元基于所述认证类型确定认证的类型;响应于确定所述第一类型的认证,所述第一提供商网络的所述单元生成第一认证响应消息并向所述设备传输所述第一认证响应消息,并基于所述sp_id向所述第二提供商网络的所述单元传输所述认证数据包;以及响应于接收到所述认证数据包,所述第二提供商网络的所述单元生成第二认证响应消息并向所述设备传输所述第二认证响应消息。根据本发明的实施例,所述sig_de由所述设备使用所述设备的所述秘密密钥和所述全局公钥(globalpublickey,gpk)生成。根据本实施例的实施例,所述认证数据包还包括第一随机数(rand1)、所述设备的标识(device_id)和设备签名(sig_de)。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第二随机数(rand2)。随后,所述方法根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成包含rand2的第一加密消息m1;使用所述第一提供商网络的所述秘密密钥和gpk生成签名(sig_an);以及向所述设备传输所述第一认证响应消息,其中所述第一认证响应消息包括所述第一提供商网络的标识(an_id)、rand1、m1和sig_an。

根据本发明实施例,所述方法还包括:响应于接收到所述第一认证响应消息,所述设备执行以下步骤:通过使用an_id和所述gpk验证sig_an来认证所述第一提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m1以获得rand2;使用所述预定义的kdf导出第一会话密钥(k_com),其中输入参数是rand1和rand2;将所述第一会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第一消息认证码(mac1),其中rand2和k_com作为所述输入;以及向所述第一提供商网络的所述单元传输mac1。

根据本发明实施例,所述方法还包括:响应于接收到所述mac1,所述第一提供商网络的所述单元执行以下步骤:使用预定义的密钥导出函数(keyderivationfunction,kdf)导出所述第一会话密钥(k_com),其中输入参数是rand1和rand2;使用所述相同mac生成函数生成mac,其中rand2和k_com作为所述输入;确定mac1是否等于mac;以及响应于mac1等于mac,将所述第一会话密钥k_com保存在所述第一提供商网络的所述单元的存储器中。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第三随机数(rand3);根据ibe使用所述device_id生成包含rand3的第二加密消息(m2);使用所述第二提供商网络的所述秘密密钥和所述gpk生成签名(sig_sp);以及生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息,其中所述第二认证响应消息包括所述第二提供商网络的标识(sp_id)、rand1、m2和sig_sp。

根据本发明实施例,所述方法还包括:响应于接收到所述第二认证响应消息,所述设备执行以下步骤:通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m2以获得rand3;使用所述预定义的kdf导出第二会话密钥(k_ser),其中输入参数是rand1和rand3;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第二消息认证码(mac1),其中rand3和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac2。

根据本发明实施例,所述方法还包括:响应于接收到所述mac2,所述第二提供商网络的所述单元执行以下步骤:使用所述预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand3;使用所述相同mac生成函数生成mac,其中rand3和k_ser作为所述输入;确定mac2是否等于mac;以及响应于mac2等于mac,将所述第二会话密钥k_ser保存在所述第二提供商网络的所述单元的存储器中。

根据本发明实施例,所述方法还包括:响应于确定所述第二类型的认证,所述第一提供商网络的所述单元生成第三认证响应消息并向所述设备传输所述第三认证响应消息。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第三认证响应消息并向所述设备传输所述第三认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;响应于验证成功,生成第二随机数(rand2)。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第三认证响应消息并向所述设备传输所述第三认证响应消息的步骤还包括:根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成包含所述rand2的第一加密消息(m1);使用所述第一提供商网络的所述秘密密钥和gpk生成签名(sig_an);生成所述第三认证响应消息并向所述设备传输所述第三认证响应消息,其中所述第三认证响应消息包括所述第一提供商网络的标识(an_id)、rand1、m1和sig_an。

根据本发明实施例,所述方法还包括:响应于接收到所述第三认证响应消息,所述设备执行以下步骤:通过使用an_id和所述gpk验证sig_an来认证所述第一提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m1以获得rand2;使用所述预定义的kdf导出第一会话密钥(k_com),其中输入参数是rand1和rand2;将所述会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第一消息认证码(mac1),其中rand2和k_com作为所述输入;以及向所述第一提供商网络的所述单元传输mac1。

根据本发明实施例,所述方法还包括:响应于接收到所述mac1,所述第一提供商网络的所述单元执行以下步骤:使用预定义的密钥导出函数(keyderivationfunction,kdf)导出所述会话密钥(k_com),其中输入参数是rand1和rand2;使用所述相同mac生成函数生成mac,其中rand2和k_com作为所述输入;确定mac1是否等于mac;以及响应于mac1等于mac,将所述会话密钥k_com保存在所述第一提供商网络的所述单元的存储器中。

根据本发明实施例,所述方法还包括:响应于确定所述第三类型的认证,所述第一提供商网络的所述单元向所述第二提供商网络的所述单元传输所述认证数据包。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;响应于验证成功,生成第三随机数(rand3)。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤还包括:根据ibe使用所述device_id生成包含rand3的第二加密消息(m2);使用所述第二提供商网络的所述秘密密钥和所述gpk生成签名(sig_sp);生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息,其中所述第二认证响应消息包括所述第二提供商网络的标识(sp_id)、rand1、m2和sig_sp。

根据本发明实施例,所述方法还包括:响应于接收到所述第二认证响应消息,所述设备执行以下步骤:通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m2以获得rand3;使用所述预定义的kdf导出第二会话密钥(k_ser),其中输入参数是rand1和rand3;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第二消息认证码(mac1),其中rand3和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac2。

根据本发明实施例,所述方法还包括:响应于接收到所述mac2,所述第二提供商网络的所述单元执行以下步骤:使用所述预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand3;使用所述相同mac生成函数生成mac,其中rand3和k_ser作为所述输入;确定mac2是否等于mac;以及响应于mac2等于mac,将所述第二会话密钥k_ser保存在所述第二提供商网络的所述单元的存储器中。

根据本发明的另一方面,提供了一种使用基于身份的密码术的认证框架中的设备,所述认证框架涉及所述设备、第一提供商网络和第二提供商网络,其中所述设备、所述第一提供商网络的单元和所述第二提供商网络的单元中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk),所述设备包括:处理器、存储器和指令,其中所述指令存储在所述存储器上并且可由所述处理器执行以用于:生成认证类型(auth.type),其中所述auth.type包括:第一类型,其中认证涉及所述第一提供商网络的所述单元和所述第二提供商网络的所述单元;第二类型,其中认证涉及所述第一提供商网络的所述单元;以及第三类型,其中认证涉及所述第二提供商网络的所述单元;生成认证数据包,其中所述认证数据包包括auth.type和服务提供商网络的id(sp_id);以及向所述第一提供商网络的所述单元传输所述认证数据包。所述sig_de通过所述设备的所述秘密密钥和所述gpk生成。

根据本发明实施例,所述指令还包括用于以下操作的指令:生成第一随机数(rand1);以及生成设备签名(sig_de),其中所述认证数据包还包括rand1、所述设备的标识(device_id)和sig_de。

根据本发明实施例,响应于所述auth.type是所述第一类型或第二类型的认证,所述指令还包括用于以下操作的指令:从所述第一提供商网络的所述单元接收第一认证响应消息,其中所述第一认证响应消息包括所述第一提供商网络的标识(an_id)、rand1、由所述第一提供商网络的所述单元根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成的包含第二随机数(rand2)的第一加密消息m1,以及使用所述第一提供商网络的所述秘密密钥和所述gpk的签名(sig_an);通过使用an_id和所述gpk验证sig_an来认证所述第一提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m1以获得rand2;使用所述预定义的kdf导出所述第一会话密钥(k_com),其中输入参数是rand1和rand2;将所述第一会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第一消息认证码(mac1),其中rand2和k_com作为所述输入;以及向所述第一提供商网络的所述单元传输mac1。

根据本发明实施例,响应于所述auth.type是所述第一类型或第二类型的认证,所述指令还包括用于以下操作的指令:从所述第二提供商网络的所述单元接收第二认证响应消息,其中所述第二认证响应消息包括所述第二提供商网络的标识(sp_id)、rand1、由所述第二提供商网络的所述单元根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成的包含第三随机数(rand3)的第二加密消息m2,以及使用所述第二提供商网络的所述秘密密钥和所述gpk的签名(sig_sp);通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m2以获得rand3;使用所述预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand3;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第二消息认证码(mac1),其中rand3和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac2。

根据本发明实施例,响应于所述auth.type是所述第三类型的认证,所述指令还包括用于以下操作的指令:从所述第二提供商网络的所述单元接收认证响应消息,其中所述认证响应消息包括所述第二提供商网络的标识(sp_id)、rand1、由所述第二提供商网络的所述单元根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成的包含第二随机数(rand2)的加密消息m,以及使用所述服务提供商网络的所述秘密密钥和所述gpk的签名(sig_sp);通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述设备的所述秘密密钥解密m2以获得rand2;使用所述预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand2;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成消息认证码(messageauthenticationcode,mac),其中rand2和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac。

根据本发明的另一方面,提供了一种使用基于身份的密码术的的认证框架中的运营提供商网络,所述认证框架涉及设备、服务提供商网络和所述运营提供商网络,其中所述设备、运营提供商网络和服务提供商网络中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk),所述运营提供商网络包括:认证节点,包括处理器、存储器和指令,其中所述指令存储在所述存储器上并且可由所述处理器执行以用于:从所述设备接收认证数据包,所述认证数据包包括第一随机数(rand1)、认证类型(auth.type)、服务提供商网络的id(sp_id)、所述设备的标识(device_id)和设备签名(sig_de),其中所述auth.type包括:第一类型,其中认证涉及所述运营商和服务提供商网络;第二类型,其中认证涉及所述运营提供商网络;以及第三类型,其中认证涉及所述服务提供商网络;基于所述认证类型确定认证的类型;响应于确定所述第一类型的认证,生成第一认证响应消息并向所述设备传输所述第一认证响应消息,并基于所述sp_id向所述第二提供商网络的单元传输所述认证数据包;响应于确定所述第二类型的认证,生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息;以及响应于确定所述第三类型的认证,向所述第二提供商网络的所述单元传输所述认证数据包。sig_de由所述设备使用所述设备的所述秘密密钥以及所述公钥(globalpublickey,gpk)生成。所述认证数据包还包括第一随机数(rand1)、所述设备的标识(device_id)和设备签名(sig_de)。

根据本发明实施例,所述指令存储在所述认证节点的所述存储器上以生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,包括用于以下操作的指令:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第二随机数(rand2)。

根据本发明实施例,所述指令存储在所述认证节点的所述存储器上以生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,还包括用于以下操作的指令:根据基于身份的加密(identitybasedencryption,ibe)使用所述device_id生成包含rand2的第一加密消息(m1);使用所述运营提供商网络的所述秘密密钥和所述gpk生成签名(sig_an);以及生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,其中所述第一认证响应消息包括所述运营提供商网络的标识(an_id)、rand1、m1和sig_an。

根据本发明实施例,所述指令存储在所述认证节点的所述存储器上以生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,还包括用于以下操作的指令:接收所述设备通过mac生成函数生成的第一消息认证码(mac1),其中rand2和第一会话密钥(k_com)作为所述输入;使用预定义的密钥导出函数(keyderivationfunction,kdf)导出所述第一会话密钥(k_com),其中输入参数是rand1和rand2;使用mac生成函数生成mac,其中rand2和k_com作为所述输入;确定mac1是否等于mac;响应于mac1等于mac,将所述第一会话密钥k_com保存在所述认证节点的所述存储器中。

根据本发明的另一方面,提供了一种使用基于身份的密码术的认证框架中的服务提供商网络,所述认证框架涉及设备、运营提供商网络和所述服务提供商网络,其中所述设备、运营提供商网络和服务提供商网络中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk),所述服务提供商网络包括:认证单元,包括处理器、存储器和指令,其中所述指令存储在所述存储器上并且可由所述处理器执行以用于:从所述运营提供商网络接收认证数据包,所述认证数据包包括第一随机数(rand1)、认证类型(auth.type)、服务提供商网络的id(sp_id)、所述设备的标识(device_id)和设备签名(sig_de),其中所述auth.type包括:第一类型,其中认证涉及所述运营商和服务提供商网络;第二类型,其中认证涉及所述运营提供商网络;以及第三类型,其中认证涉及所述服务提供商网络;使用所述device_id和所述gpk验证所述sig_de;响应于验证成功,生成第三随机数(rand3)。

根据本发明实施例,所述指令还包括用于以下操作的指令:根据ibe使用所述device_id生成包含rand3的第二加密消息(m2);使用所述服务提供商网络的所述秘密密钥和所述gpk生成签名(sig_sp);生成所述第二认证响应消息并向所述设备传输第二认证响应消息,其中所述第二认证响应消息包括所述服务提供商网络的标识(sp_id)、rand1、m2和sig_sp。

根据本发明实施例,所述指令还包括用于以下操作的指令:接收所述设备通过mac生成函数生成的第二消息认证码(mac2),其中rand3和第二会话密钥(k_ser)作为所述输入;使用预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand3;使用所述mac生成函数生成mac,其中rand3和k_ser作为所述输入;确定mac2是否等于mac;以及响应于mac2等于mac,将所述第二会话密钥k_ser保存在所述认证单元的所述存储器中。

根据本发明的另一方面,提供了一种统一认证方法,用于使设备根据基于身份的密码术来认证第一提供商网络和第二提供商网络,其中所述设备、第一提供商网络和第二提供商网络中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk),所述统一认证方法包括:所述设备生成随机数(rand1)并导出第一对称密钥(k_c)和第二对称密钥(k_s);所述设备生成认证数据包并向所述运营提供商网络传输所述认证数据包,所述认证数据包包括rand1、认证类型(auth.type)、所述第二提供商网络的id(sp_id)、所述设备的标识(device_id)和设备签名(sig_de),其中所述auth.type包括:第一类型,其中认证涉及所述第一提供商网络的单元和所述第二提供商网络的单元;第二类型,其中认证涉及所述第一提供商网络的所述单元;以及第三类型,其中认证涉及所述第二提供商网络的所述单元;响应于接收到所述认证数据包,所述第一提供商网络的所述单元基于所述认证类型确定认证的类型;响应于确定所述第一类型的认证,所述第一提供商网络的所述单元生成第一认证响应消息并向所述设备传输所述第一认证响应消息,并基于所述sp_id向所述第二提供商网络的所述单元传输所述认证数据包;以及响应于接收到所述认证数据包,所述第二提供商网络的所述单元生成第二认证响应消息并向所述设备传输所述第二认证响应消息。所述sig_de由所述设备使用所述设备的所述秘密密钥和所述全局公钥(globalpublickey,gpk)生成。

根据本发明实施例,所述第一对称密钥(k_c)通过所述设备的所述私钥(xh(device_id))和所述第一提供商网络的所述单元的标识(bs_id)导出,所述第二对称密钥(k_s)通过所述xh(device_id)和所述第二提供商网络的所述单元的所述标识(sp_id)导出。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第二随机数(rand2)。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤还包括:通过所述第一提供商网络的所述私钥(xh(bs_id))和所述device_id导出所述第一对称密钥(k_c);使用所述k_c生成包含rand2的第一加密消息(m1),并且可使用以下方式表示:m1=en(rand2,k_c);使用所述第一提供商网络的所述秘密密钥和所述gpk生成签名(sig_an);以及生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,其中所述第一认证响应消息包括所述第一提供商网络的标识(an_id)、rand1、m1和sig_an。

根据本发明实施例,所述方法还包括:响应于接收到所述第一认证响应消息,所述设备执行以下步骤:通过使用an_id和所述gpk验证sig_an来认证所述第一提供商网络;响应于认证成功,使用所述第一对称密钥k_c解密m1以获得rand2;使用预定义的kdf导出第一会话密钥(k_com),其中输入参数是rand1和rand2;将所述第一会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第一消息认证码(mac1),其中rand2和k_com作为所述输入;以及向所述第一提供商网络的所述单元传输mac1。

根据本发明实施例,所述方法还包括:响应于接收到所述mac1,所述第一提供商网络的所述单元执行以下步骤:使用所述预定义的密钥导出函数(keyderivationfunction,kdf)导出所述第一会话密钥(k_com),其中输入参数是rand1和rand2;使用所述相同mac生成函数生成mac,其中rand2和k_com作为所述输入;确定mac1是否等于mac;以及响应于mac1等于mac,将所述第一会话密钥k_com保存在所述第一提供商网络的所述单元的存储器中。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第三随机数(rand3)。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤还包括:通过所述第二提供商网络的所述私钥(xh(sp_id))和所述device_id导出所述第二对称密钥(k_s);使用所述k_s生成包含rand3的第二加密消息(m2);使用所述第二提供商网络的所述秘密密钥和所述gpk生成签名(sig_sp);生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息,其中所述第二认证响应消息包括所述第二提供商网络的标识(sp_id)、rand1、m2和sig_sp。

根据本发明实施例,所述方法还包括:响应于接收到所述第二认证响应消息,所述设备执行以下步骤:通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述第二对称密钥k_s解密m2以获得rand3;使用所述预定义的kdf导出所述第二会话密钥(k_ser),其中输入参数是rand1和rand3;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第二消息认证码(mac1),其中rand3和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac2。

根据本发明实施例,所述方法还包括:响应于接收到所述mac2,所述第二提供商网络的所述单元执行以下步骤:使用所述预定义的kdf导出第二会话密钥(k_ser),其中输入参数是rand1和rand3;使用所述相同mac生成函数生成mac,其中rand3和k_ser作为所述输入;确定mac2是否等于mac;响应于mac2等于mac,将所述第二会话密钥k_ser保存在所述第二提供商网络的所述单元的存储器中。

根据本发明的另一方面,提供了一种统一认证方法,用于使设备根据基于身份的密码术来认证第一提供商网络和第二提供商网络,其中所述设备、第一提供商网络和第二提供商网络中的每一个具有公钥生成器发布的不同私钥以及相同全局公钥(globalpublickey,gpk)。所述统一认证方法包括:所述设备生成随机数(rand1)并导出dh公钥(a),所述dh公钥(a)由a=grand1modp导出,其中mod表示所述取模运算;所述设备生成认证数据包并向所述运营提供商网络传输所述认证数据包,所述认证数据包包括dh公钥(a)、认证类型(auth.type)、所述第二提供商网络的id(sp_id)、所述设备的标识(device_id)以及设备签名(sig_de),其中所述auth.type包括:第一类型,其中认证涉及所述第一提供商网络的单元和所述第二提供商网络的单元;第二类型,其中认证涉及所述第一提供商网络的所述单元;以及第三类型,其中认证涉及所述第二提供商网络的所述单元;响应于接收所述认证数据包,所述第一提供商网络的所述单元基于所述认证类型确定认证的类型;响应于确定所述第一类型的认证,所述第一提供商网络的所述单元生成第一认证响应消息并向所述设备传输所述第一认证响应消息,并基于所述sp_id向所述第二提供商网络的所述单元传输所述认证数据包;以及响应于接收到所述认证数据包,所述第二提供商网络的所述单元生成第二认证响应消息并向所述设备传输所述第二认证响应消息。所述sig_de由所述设备使用所述设备的所述秘密密钥和所述全局公钥(globalpublickey,gpk)生成。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第二随机数(rand2)。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤还包括:导出dh公钥(b),其中b=grand2modp;以及导出第一会话密钥(k_com),其中k_com=arand2modp。

根据本发明实施例,所述第一提供商网络的所述单元生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息的步骤还包括:使用所述第一提供商网络的所述秘密密钥和所述gpk生成签名(sig_an);以及生成所述第一认证响应消息并向所述设备传输所述第一认证响应消息,其中所述第一认证响应消息包括所述第一提供商网络的标识(an_id)、dh公钥(a)、dh公钥(b)和sig_an。

根据本发明实施例,所述方法还包括:响应于接收到所述第一认证响应消息,所述设备执行以下步骤:通过使用an_id和所述gpk验证sig_an来认证所述第一提供商网络;响应于认证成功,使用所述dh公钥(b)导出所述第一会话密钥k_com,其中k_com=brand2modp;将所述第一会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第一消息认证码(mac1),其中所述dh公钥(b)和k_com作为所述输入;以及向所述第一提供商网络的所述单元传输mac1。

根据本发明实施例,所述方法还包括:响应于接收到所述mac1,所述第一提供商网络的所述单元执行以下步骤:使用所述相同mac生成函数生成mac,其中dh公钥(b)和k_com作为所述输入;确定mac1是否等于mac;以及响应于mac1等于mac,将所述第一会话密钥k_com保存在所述第一提供商网络的所述单元的存储器中。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤包括:使用所述device_id和所述gpk验证所述sig_de;以及响应于验证成功,生成第三随机数(rand3)。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤还包括:导出dh公钥(c),其中c=grand3modp;以及导出第二会话密钥(k_ser),其中k_ser=arand3modp。

根据本发明实施例,所述第二提供商网络的所述单元生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息的步骤还包括:使用所述第二提供商网络的所述秘密密钥和所述gpk生成签名(sig_sp);以及生成所述第二认证响应消息并向所述设备传输所述第二认证响应消息,其中所述第二认证响应消息包括所述第二提供商网络的标识(sp_id)、dh公钥(a)、dh公钥(c)和sig_sp。

根据本发明实施例,所述方法还包括:响应于接收到所述第二认证响应消息,所述设备执行以下步骤:通过使用sp_id和所述gpk验证sig_sp来认证所述第二提供商网络;响应于认证成功,使用所述dh公钥(c)导出所述第二会话密钥k_ser,其中k_ser=crand3modp;将所述第二会话密钥保存在所述设备的所述存储器中;使用mac生成函数生成第二消息认证码(mac2),其中所述dh公钥(c)和k_ser作为所述输入;以及向所述第二提供商网络的所述单元传输mac2。

根据本发明实施例,所述方法还包括:响应于接收到所述mac2,所述第二提供商网络的所述单元执行以下步骤:使用所述相同mac生成函数生成mac,其中dh公钥(c)和k_ser作为所述输入;确定mac2是否等于mac;以及响应于mac2等于mac,将所述第二会话密钥k_ser保存在所述第二提供商网络的所述单元的存储器中。

附图说明

在以下详细描述中描述并在以下附图中示出根据本发明的以上优点和特征:

图1示出了aka过程;

图2示出了根据本发明的使用认证类型来指示认证的类型以进行该认证;

图3示出了根据本发明的一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程300;

图4示出了根据本发明的一种使用对称密钥方法对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程400;

图5示出了根据本发明实施例的一种使用diffie-hellman对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的替代过程500;

图6示出了双方之间的标准diffie-hellman密钥协商过程;

图7示出了根据本发明实施例的一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的替代过程700;

图8示出了根据本发明实施例的一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的替代过程800;

图9示出了根据本发明实施例的一种对用于导出密钥的随机数进行加密的服务提供商认证过程的过程900;

图10示出了根据本发明实施例的一种对用于导出密钥的随机数进行加密的运营提供商认证过程的过程1000;

图11示出了根据本发明的由设备210执行的过程1100;

图12示出了根据本发明实施例的由运营提供商220的认证节点执行的过程1200;以及

图13示出了根据本发明实施例的由服务提供商230的认证单元执行的过程1300。

具体实施方式

本发明涉及一种运营提供商和服务提供商之间的认证框架的方法和系统。具体地,本发明涉及一种根据基于id的密码术的运营提供商和服务提供商之间的统一认证框架的方法和系统。

通过根据本发明的系统和方法主要可以解决三个问题。首先,当前的运营提供商网络接入认证与服务提供商网络认证是分开的。因此,终端设备必须经过两个认证过程才能访问运营提供商网络和服务提供商网络。

其次,当前的服务提供商网络认证通常基于“用户名+密码”。换句话说,用户需要记住多组“用户名+密码”才能访问多个服务。这带来了不便和麻烦。通过所提出的统一认证,服务提供商网络认证可以与运营提供商网络认证一起完成,或者通过运营提供商网络认证方法完成。这意味着用户不需要记住任何密码,这给用户带来了极大便利。

最后,可以克服的另一个问题是在采用统一认证时保证用户隐私。具体地,用户和服务提供商之间的消息不应暴露给移动网络运营商(mobilenetworkoperator,mno),并且用户和mno之间的消息不应暴露给服务提供商。

在本发明中,提出了一种使用基于id的密码术的第一提供商网络和第二提供商网络统一认证方案。本质上,本概念是使用一个认证消息来成功实现第一提供商网络接入认证和第二提供商网络认证。出于本发明的目的,第一网络是运营提供商网络,第二网络是服务提供商网络。此外,引入了称为认证类型的新参数。认证类型用作指示符以识别用户希望继续进行哪些类型的认证(例如,仅运营提供商网络访问、仅服务提供商网络访问或统一认证)。此外,提出了几种不同的方法来保护用于生成会话密钥的随机数。

基于身份的密码术(identity-basedcryptography,ibc)是一种公钥密码术,其中公钥是已知字符串,例如电子邮件地址、电话号码、域名或物理ip地址。对于基于ibc的系统,公钥生成器可以基于给定的全局公钥(globalpublickey,gpk)和全局秘密密钥(globalsecretkey,gsk)为任何给定id生成私钥(skid)。所生成的私钥skid与gpk和id一起分发给实体(alice或bob)。

ibc包括基于身份的加密(identity-basedencryption,ibe)和基于身份的签名(identity-basedsignature,ibs)。ibe主要用于加密,而ibs主要用于签名消息。例如,当想要向bob发送秘密消息时,alice加密具有bob的id的消息。当bob收到消息时,bob用其私钥解密该消息。当alice希望bob对其自身进行认证时,alice首先生成随机数,并进一步基于已知算法使用skid和gpk生成随机数的签名。然后,alice将带有随机数、签名及其id的消息发送给另一个实体bob。在接收到该消息之后,bob基于已知算法使用所接收的随机数、签名,id和gpk对alice进行认证。如果验证成功,bob随后会与alice进行认证。同样,alice也可以使用bob的签名和id对实体bob进行认证。通过上面的示例,可以看出基于ibc的认证的优势在于在认证中不需要集中式服务器来保留设备凭证。

图2示出了使用认证类型250来指示认证的类型以进行该认证。如上所述,本发明公开了一种使用基于id的密码术的运营提供商网络和服务提供商网络统一认证方案。虽然ue210可以与运营提供商220和服务提供商230进行认证,但是本发明中提出的认证过程还允许用户单独地与运营商和服务提供商进行认证。因此,认证类型250用于识别要进行的认证的类型。出于本发明的目的,如果认证类型250是第一类型1,则ue与运营提供商220和服务提供商230两者进行认证。如果认证类型250是第二类型2,则ue与运营提供商220进行认证以进行运营商网络访问。如果认证类型250是第三类型3,则ue与服务提供商230进行认证以进行服务级访问。

首先讨论认证类型250的第一类型1,然后是第二类型2和第三类型3。

图3示出了一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程300。具体地,ibe用于加密随机数。

过程300开始于步骤305,即设备210生成随机数(rand1)。然后,设备210在步骤310中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。由于过程300是运营提供商和服务提供商的统一认证过程,因此过程300的认证类型250是第一类型的认证1。

在步骤315中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是统一认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤320中,an将认证消息转发给服务提供商的认证单元。

在步骤325中,认证节点生成加密消息m1,并向设备210发送认证响应消息。加密消息m1根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,device_id)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤330中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果验证成功,则设备使用其私钥和设备的skid解密消息m1以获得rand2。然后,设备使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。然后,设备210将密钥k_com保存在其存储器中。rand1也包含在认证响应消息中以防止重放攻击。

在步骤335中,设备210使用mac生成函数生成消息认证码(mac1),其中rand2和k_com作为输入。设备向an发送mac1。

在步骤340中,响应于从设备210接收mac1,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。本领域技术人员将认识到,an可以在该步骤中而不是在步骤315中导出密钥(表示为k_com)。具体地,在接收到mac1时,an在对mac1进行验证之前导出密钥(表示为k_com)。

在步骤345中,响应于从an接收到认证消息,服务提供商230的认证单元首先基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand3)。然后,认证单元使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。

在步骤350中,认证单元生成加密消息m2,并向设备210发送认证响应消息。加密消息m2根据ibe使用device_id加密rand3而获得,并且可使用以下方式表示:m2=en(rand3,device_id)。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m2和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤355中,响应于从服务提供商230接收到认证响应消息,设备210通过验证认证单元的签名(sig_sp)来对其进行认证。然后,设备使用其私钥解密消息m2以获得rand3。然后,设备210使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。然后,设备将密钥k_ser保存在其存储器中。

在步骤360中,设备使用mac生成函数生成消息认证码(mac2),其中rand3和k_ser作为输入。设备210将mac2发送到服务提供商230的认证单元。

在步骤365中,响应于接收mac2,认证单元对mac2进行验证。为了对mac2进行验证,认证单元使用相同mac生成函数生成mac,其中rand3和k_ser作为输入,并查看mac2是否等于mac。如果验证成功,则认证单元将密钥k_ser保存在其存储器中。本领域技术人员将认识到,认证单元可以在该步骤中而不是在步骤345中导出密钥(表示为k-ser)。具体地,在接收到mac2时,认证单元在对mac2进行验证之前导出密钥(表示为k-ser)。

过程300在步骤365之后结束。重要的是要注意,过程300中示出的步骤可以按所示顺序执行,或以不同顺序执行。例如,可以将步骤310中的认证数据包,即认证消息发送给服务提供商而不是运营提供商。或者,可以将步骤310中的认证数据包,即认证消息发送给服务提供商以及运营提供商。此外,两个或多个步骤可以并行执行而不是顺序执行。例如,步骤315、325至340可以与步骤345至365并行执行而不脱离本发明。

出于本发明的目的,假设设备210配备有多个公钥和私钥集,并且至少一个密钥集用于ibs,并且至少一个密钥集用于ibe。如果使用多组公钥和私钥,则在发送给运营提供商和服务提供商的认证消息中也会指示用于指示所使用的公钥和私钥集的索引,以便运营提供商和服务提供商知悉用于认证的公钥和私钥集。

出于本发明的目的,仅考虑三方,即设备、mno等运营提供商和服务提供商。这里描述了mno的一个网络单元,即认证节点。mno可以提供另一个网络单元,称之为黑名单服务器。认证节点的功能是在授予设备访问权限之前对设备进行认证。黑名单服务器用于存储被侵设备id。在认证设备之前,认证节点应首先确保设备id不在黑名单服务器中。这里还描述了服务提供商的一个网络单元,即认证单元。服务提供商还可以提供称之为身份管理服务器的另一网络单元。认证单元的功能是在授予设备访问其服务之前对设备进行认证。身份管理服务器用于生成和管理设备的身份。

图4示出了一种使用对称密钥方法对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程400。除了随机数的加密之外,过程400类似于过程300。具体地,还使用对称密钥加密随机数。

过程400开始于步骤405,即设备210生成随机数(rand1)并导出第一对称密钥(k_c)和第二对称密钥(k_s)。第一对称密钥(k_c)利用设备的私钥(xh(device_id))和an的id(bs_id)导出,并且可使用以下方式表示:k_c=e(xh(device_id),h(bs_id))。第二对称密钥(k_s)利用设备的私钥(xh(device_id))和认证单元的id(sp_id)导出,并且可使用以下方式表示:k_s=e(xh(device_id),h(sp_id))。

然后,设备210在步骤410中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。这类似于过程300的步骤310。

在步骤415中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是统一认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。此后,an利用其私钥(xh(bs_id))和设备id(device_id)导出另一对称密钥(k_c),并且可使用以下方式表示:k_c=e(xh(bs_id),h(device_id))。

在步骤420中,an将认证消息转发给服务提供商的认证单元。

在步骤425中,认证节点生成加密消息m1,并向设备210发送认证响应消息。加密消息m1通过使用k_c加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,k_c)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤430中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果认证成功,则使用k_c解密消息m1以获得rand2。然后,使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。设备将密钥k_com保存在其存储器中。在步骤435中,设备210使用mac生成函数生成消息认证码(mac1),其中rand2和k_com作为输入。设备向an发送mac1。

在步骤440中,响应于从设备210接收mac1,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。

在步骤445中,响应于从an接收到认证消息,服务提供商230的认证单元首先基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand3)。然后,认证单元使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。此后,认证单元利用其私钥(xh(sp_id))和设备id(device_id)导出另一对称密钥(k_s),并且可使用以下方式表示:k_s=e(xh(sp_id),h(device_id))。

在步骤450中,认证单元生成加密消息m2,并向设备210发送认证响应消息。加密消息m2通过使用k_s加密rand3而获得,并且可使用以下方式表示:m2=en(rand3,k_s)。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m2和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤455中,响应于从服务提供商230接收到认证响应消息,设备210通过验证认证单元的签名(sig_sp)来对其进行认证。然后,设备使用k_s解密消息m2以获得rand3。然后,设备210使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。然后,设备210将密钥k_ser保存在其存储器中。

在步骤460中,使用mac生成函数生成消息认证码(mac2),其中rand3和k_ser作为输入。设备210将mac2发送到服务提供商230的认证单元。

在步骤465中,响应于接收到mac2,认证单元对mac2进行验证。为了对mac2进行验证,认证单元使用相同mac生成函数生成mac,其中rand3和k_ser作为输入,并查看mac2是否等于mac。如果验证成功,则认证单元将密钥k_ser保存在其存储器中。

过程400在步骤465之后结束。在过程400中,对称密钥k_c和k_s的使用基于ibs方案的重要特征,其为:对于id1_sk=xh(id1)和id2_sk=xh(id2),对称密钥k=e(xh(id1),h(id2))等于k=e(h(id1),xh(id2))。图5示出了一种使用diffie-hellman对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程500。除了随机数的加密之外,过程500类似于过程300。具体地,使用diffie-hellman加密随机数。

过程500开始于步骤505,即设备210生成随机数(rand1)和导出dh公钥(a)。dh公钥(a)由a=grand1modp导出,其中mod表示取模运算。

然后,设备210在步骤510中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、设备的dh公钥(a)和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,a,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。

在步骤515中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是统一认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an计算其dh公钥(b)并导出密钥(表示为k_com)。dh公钥(b)通过b=grand2modp计算得出,而密钥通过k_com=arand2modp导出。

在步骤520中,an将认证消息转发给服务提供商的认证单元。

在步骤525中,认证节点向设备210发送认证响应消息。认证响应消息包括an的id(表示为an_id)、从设备接收的设备的dh公钥(a)、认证节点的dh公钥(b)和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤530中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果认证成功,则使用所接收的dh公钥来导出密钥(k_com),即k_com=brand2modp。然后,设备210将密钥k_com保存在其存储器中。

在步骤535中,设备210使用mac生成函数生成消息认证码(mac1),其中b和k_com作为输入。设备向an发送mac1。

在步骤540中,响应于从设备210接收到mac1,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中b和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。

在步骤545中,响应于从an接收到认证消息,服务提供商230的认证单元首先基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand3)。然后,认证单元通过c=grand3modp计算其dh公钥(c),并通过k_ser=arand3modp导出密钥。

在步骤550中,认证单元向设备210发送认证响应消息。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的设备的dh公钥(a)、认证单元的dh公钥(c)和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤555中,响应于从服务提供商230接收到认证响应消息,设备210通过验证认证单元的签名(sig_sp)来对其进行认证。然后,设备使用所接收的dh公钥导出密钥(k_ser),即k_ser=crand1modp。然后,设备210将密钥k_ser保存在其存储器中。

在步骤560中,设备使用mac生成函数生成消息认证码(mac2),其中c和k_ser作为输入。设备210将mac2发送到服务提供商230的认证单元。

在步骤565中,响应于接收到mac2,认证单元对mac2进行验证。为了对mac2进行验证,认证单元使用相同mac生成函数生成mac,其中c和k_ser作为输入,并查看mac2是否等于mac。如果验证成功,则认证单元将密钥k_ser保存在其存储器中。

过程500在步骤565之后结束。图6示出了两方,即alice和bob之间的标准diffie-hellman密钥协商过程。首先,双方必须同意不需要保密的任意数字。在本示例中,“g”和“p”是已知的,而“a”和“b”是未知的,k=abmodp=(gbmodp)b=gabmodp=(gbmodp)a=bamodp。alice为了与bob交换密钥,alice首先为“a”选择一个随机数并确定“a”。然后alice向bob发送“g”、“p”和“a”。响应于从alice接收信息,bob选择“b”并确定“b”。然后,bob向alice发送“b”。对于alice,通过“b”能够确定k,因为k=bamodp。对于bob,通过“a”能够确定k,因为k=abmodp。k是共享秘密密钥,只为alice和bob所知。

图7示出了一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程700。具体地,过程700示出了认证节点代表设备210与服务提供商进行认证。

过程700开始于步骤705,即设备210生成随机数(rand1)。然后,设备210在步骤710中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。

在步骤715中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是统一认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤720中,an将认证消息转发给服务提供商的认证单元。

在步骤725中,响应于从an接收到认证消息,服务提供商230的认证单元首先基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand3)。然后,认证单元使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。

在步骤730中,认证单元生成认证响应消息(m2)并将其发送到an。认证响应消息(m2)包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m1和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。加密消息m1根据ibe使用device_id加密rand3而获得,并且可使用以下方式表示:m1=en(rand3,device_id)。

在步骤735中,响应于接收到m2,认证节点生成加密消息m3,并向设备210发送认证响应消息。加密消息m3根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m3=en(rand2,device_id)。认证响应消息包括m1、an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m3和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤740中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果验证成功,则设备使用其私钥和设备的skid解密消息m3以获得rand2。然后,设备使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。然后,设备210将密钥k_com保存在其存储器中。然后,设备210使用从服务提供商获得的认证响应消息来对认证单元进行认证。设备210然后对服务提供商签名(sig_sp)进行验证。然后,设备使用其私钥解密消息m1以获得rand3。然后,设备210使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。然后,设备210将密钥k_ser保存在其存储器中。

在步骤745,设备210使用mac生成函数生成第一消息认证码(mac1),其中rand2和k_com作为输入,并使用mac生成函数生成第二消息认证码(mac2),其中rand3和k_ser作为输入。设备向an发送mac1和mac2。

在步骤750中,响应于从设备210接收到mac1和mac2,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。本领域技术人员将认识到,an可以在该步骤中而不是在步骤715中导出密钥(表示为k-com)。具体地,在接收到mac1时,an在对mac1进行验证之前导出密钥(表示为k-com)。

在步骤755中,an将mac2转发给服务提供商。

在步骤760中,响应于从an接收到mac2,认证单元对mac2进行验证。为了对mac2进行验证,认证单元使用相同mac生成函数生成mac,其中rand3和k_ser作为输入,并查看mac2是否等于mac。如果验证成功,则认证单元将密钥k_ser保存在其存储器中。本领域技术人员将认识到,认证单元可以在该步骤中而不是在步骤725中导出密钥(表示为k-ser)。具体地,在接收到mac2时,认证单元在对mac2进行验证之前导出密钥(表示为k-ser)。

过程700在步骤760之后结束。

图8示出了一种对用于导出密钥的随机数进行加密的运营提供商和服务提供商统一认证过程的过程800。具体地,过程800示出了在与服务提供商进行认证之前首先与运营提供商220进行认证的顺序过程。

过程800开始于步骤805,即设备210生成随机数(rand1)。然后,设备210在步骤810中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。

在步骤815中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是统一认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤820中,认证节点生成加密消息m1,并向设备210发送认证响应消息。加密消息m1根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,device_id)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤825中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果验证成功,则设备使用其私钥和设备的skid解密消息m1以获得rand2。然后,设备使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。然后,设备210将密钥k_com保存在其存储器中。

在步骤830中,设备210使用mac生成函数生成消息认证码(mac1),其中rand2和k_com作为输入。设备向an发送mac1。

在步骤835中,响应于从设备210接收到mac1,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。本领域技术人员将认识到,an可以在该步骤中而不是在步骤815中导出密钥(表示为k-com)。具体地,在接收到mac1时,an在对mac1进行验证之前导出密钥(表示为k-com)。

在步骤840中,an将认证消息转发给服务提供商的认证单元。认证消息包括设备id(device_id)、指示设备已成功与运营提供商进行认证的指示符(auth_succ)、从设备接收的随机数(rand1)、认证节点的签名(sig_an)。

在步骤845中,响应于从an接收到认证消息,服务提供商230的认证单元首先验证an签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand3)。然后,认证单元使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。然后,认证单元将密钥k_ser保存在其存储器中。

在步骤850中,认证单元生成加密消息m2,并向an发送认证响应消息。加密消息m2根据ibe使用device_id加密rand3而获得,并且可使用以下方式表示:m2=en(rand3,device_id)。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m2和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤855中,响应于从服务提供商230接收到认证响应消息,an通过验证认证单元的签名(sig_sp)来对其进行认证。如果认证成功,则an生成消息认证码mac2并向设备发送消息。该消息包括加密消息m2、指示服务提供商被成功认证的指示符(sp_auth)和mac2。mac2由an使用m2、sp_auth、k_com生成,并且可使用以下方式表示:mac2=mac(m2,sp_auth,k_com)。

在步骤865中,响应于从an接收到消息,设备对mac2进行验证。为了对mac2进行验证,设备使用相同mac生成函数生成mac,并查看mac2是否等于mac。如果验证成功,则设备使用其私钥解密消息m2以获得rand3。然后,设备210使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。然后,设备210将密钥k_ser保存在其存储器中。

过程800在步骤865之后结束。

图9示出了一种对用于导出密钥的随机数进行加密的服务提供商认证过程的过程900。仅当设备已与运营提供商建立网络连接时,此过程才适用。

过程900开始于步骤905,即设备210生成随机数(rand1)。然后,设备210在步骤910中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。由于过程900是服务提供商认证过程,因此过程900的认证类型250是第三类型的认证3。

在步骤915中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是第三类型的认证3,则认证节点在步骤920中将认证消息转发到服务提供商的认证单元。

在步骤925中,响应于从an接收到认证消息,服务提供商230的认证单元首先基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则认证单元生成随机数(rand2)。然后,认证单元使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_ser=kdf(rand1,rand2,……)。

在步骤930中,认证单元生成加密消息(m),并向设备210发送认证响应消息。加密消息m根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m=en(rand2,device_id)。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤935中,响应于从服务提供商230接收到认证响应消息,设备210通过验证认证单元的签名(sig_sp)来对其进行认证。然后,设备使用其私钥解密消息m以获得rand2。然后,设备210使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_ser=kdf(rand1,rand2,……)。然后,设备210将密钥k_ser保存在其存储器中。

在步骤940中,设备使用mac生成函数生成消息认证码(mac1),其中rand2和k_ser作为输入。设备210将mac1发送到服务提供商230的认证单元。

在步骤945中,响应于接收到mac1,认证单元对mac1进行验证。为了对mac1进行验证,认证单元使用相同mac生成函数生成mac,其中rand2和k_ser作为输入,并查看mac1是否等于mac。如果验证成功,则认证单元将密钥k_ser保存在其存储器中。本领域技术人员将认识到,认证单元可以在该步骤中而不是在步骤925中导出密钥(表示为k-ser)。具体地,在接收到mac1时,认证单元在对mac1进行验证之前导出密钥(表示为k-ser)。

过程900在步骤945之后结束。

图10示出了一种对用于导出密钥的随机数进行加密的运营提供商认证过程的过程1000。当设备希望访问运营提供商的网络时,此过程适用。

过程1000开始于步骤1005,即设备210生成随机数(rand1)。然后,设备210在步骤1010中向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。由于过程1000是运营提供商和服务提供商统一认证过程,因此过程1000的认证类型250是第二类型的认证2。

在步骤1015中,响应于接收到认证消息,认证节点首先识别认证类型。如果认证类型是第二类型的认证,则认证节点基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则an生成随机数(rand2)。此后,an使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤1025中,认证节点生成加密消息m1,并向设备210发送认证响应消息。加密消息m1根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,device_id)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤1030中,响应于从an接收到认证响应消息,设备210通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果验证成功,则设备使用其私钥和设备的skid解密消息m1以获得rand2。然后,设备使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。然后,设备210将密钥k_com保存在其存储器中。

在步骤1035中,设备210使用mac生成函数生成消息认证码(mac1),其中rand2和k_com作为输入。设备向an发送mac1。

在步骤1040中,响应于从设备210接收到mac1,an对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果验证成功,则an将密钥k_com保存在其存储器中。本领域技术人员将认识到,an可以在该步骤中而不是在步骤1015中导出密钥(表示为k-com)。具体地,在接收到mac1时,认证节点在对mac1进行验证之前导出密钥(表示为k-com)。

过程1000在步骤1040之后结束。

图11示出了根据本发明的由设备210执行的过程1100。过程1100开始于步骤1105,即生成随机数(rand1)。

在如过程400所述的另一实施例中,可以修改步骤1105以进一步导出第一对称密钥(k_c)和第二对称密钥(k_s)。第一对称密钥(k_c)利用设备的私钥(xh(device_id))和an的id(bs_id)导出,并且可使用以下方式表示:k_c=e(xh(device_id),h(bs_id))。第二对称密钥(k_s)利用设备的私钥(xh(device_id))和认证单元的id(sp_id)导出,并且可使用以下方式表示:k_s=e(xh(device_id),h(sp_id))。

在如过程500所述的另一实施例中,可以修改步骤1105以进一步导出dh公钥(a)。dh公钥(a)由a=grand1modp导出,其中mod表示取模运算。

在步骤1110中,过程1100确定认证的类型。如果认证是针对涉及运营提供商和服务提供商的统一认证,则过程1100指示1以进行第一类型的认证,并且此后继续执行步骤1160。如果认证是针对仅涉及运营提供商的认证,则过程1100指示2以进行第二类型的认证,并且此后继续执行步骤1140。如果认证是针对仅涉及服务提供商的认证,则过程1100指示3以进行第三类型的认证,并且此后继续执行步骤1115。

在步骤1115中,过程1100向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。

在如过程500所述的另一实施例中,可以修改步骤1115,使得认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、设备的dh公钥(a)和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,a,sig_de,……)。

在步骤1120中,过程1100从服务提供商230接收认证响应消息。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m和认证单元签名(表示为sig_sp)。加密消息m通过服务提供商230的认证单元根据ibe使用device_id加密rand2而导出,并且可使用以下方式表示:m=en(rand2,device_id)。

在步骤1125中,过程1100通过认证其签名(sig_sp)来认证服务提供商230。如果认证成功,则过程1100使用设备的私钥解密消息m以获得rand2,并使用预定义的kdf导出密钥(k_ser)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_ser=kdf(rand1,rand2,……)。

在步骤1130中,过程1100将密钥(k-ser)、rand1和rand2保存在存储器中。然后,过程1100生成消息认证码(messageauthenticationcode,mac)并向服务提供商230传输该消息认证码。该mac通过mac生成函数而生成,其中rand2和k_ser作为输入。

步骤1115至1130涉及第三类型的认证,其中设备与服务提供商230进行认证。

在步骤1140中,过程1100向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,device_id,rand1,sig_de,……)。设备签名由设备通过ibs使用设备的秘密密钥(skid)和gpk生成。

在步骤1145中,过程1100从运营提供商220接收认证响应消息。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m和an签名(表示为sig_an)。加密消息m通过运营提供商根据ibe使用device_id加密rand2而导出,并且可使用以下方式表示:m=en(rand2,device_id)。

在步骤1150中,响应于从an接收到认证响应消息,过程1100通过验证an签名(sig_an)来认证an。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果认证成功,则过程1100使用设备的私钥解密消息m以获得rand2,并使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。

在步骤1155中,过程1100将密钥(k-com)、rand1和rand2保存在存储器中。然后,过程1100生成消息认证码(messageauthenticationcode,mac)并向服务提供商230传输该消息认证码。该mac通过mac生成函数而生成,其中rand2和k_com作为输入。

步骤1140至1155涉及第二类型的认证,其中设备与运营提供商220进行认证。

在步骤1160中,过程1100向运营提供商220的认证节点(authenticationnode,an)发送认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。

在步骤1165中,过程1100从运营提供商220或服务提供商230接收第一认证响应消息或第二认证响应消息。出于讨论目的,将假设第一认证响应消息来自运营提供商220,第二认证响应消息来自服务提供商230。

第一认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。加密消息m1通过运营提供商220根据ibe使用device_id加密rand2而导出,并且可使用以下方式表示:m1=en(rand2,device_id)。

在如过程400所述的另一实施例中,可以修改步骤1165,使得第一认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。加密消息m1通过使用k_c对rand2进行加密而获得,并且可使用以下方式表示:m1=en(rand2,k_c)。

在如过程500所述的另一实施例中,可以修改步骤1165,使得第一认证响应消息包括an的id(表示为an_id)、从设备接收的设备的dh公钥(a)、认证节点的dh公钥(b)和an签名(表示为sig_an)。

第二认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m2和认证单元签名(表示为sig_sp)。加密消息m2通过认证单元根据ibe使用device_id加密rand3而导出,并且可使用以下方式表示:m2=en(rand3,device_id)。

在如过程400所述的另一实施例中,可以修改步骤1165,使得第二认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m2和认证单元签名(表示为sig_sp)。加密消息m2通过使用k_s对rand3进行加密而获得,并且可使用以下方式表示:m2=en(rand3,k_s)。

在如过程500所述的另一实施例中,可以修改步骤1165,使得第二认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的设备的dh公钥(a)、认证单元的dh公钥(c)和认证单元签名(表示为sig_sp)。

在步骤1170中,响应于从运营提供商220接收到第一认证响应消息,过程1100通过验证an签名(sig_an)来认证运营提供商220。具体地,设备使用an的id(an_id)和gpk来验证an签名(sig_an)。如果认证成功,则过程1100使用设备的私钥解密消息m1以获得rand2,并使用预定义的kdf导出密钥(k_com)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,......)。

在如过程400所述的另一实施例中,可以修改步骤1170,使得在过程1100通过验证an签名(sig_an)成功认证an之后,过程1100使用k_c解密消息m1以获得rand2。然后,过程1100使用预定义的kdf导出密钥(k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在如过程500所述的另一实施例中,可以修改步骤1170,使得在过程1100通过验证an签名(sig_an)成功认证an之后,过程1100使用所接收的dh公钥导出密钥(k_com),即k_com=brand2modp。

在步骤1170中,响应于从运营提供商220或直接从服务提供商230接收到第二认证响应消息,过程1100通过验证其签名(sig_sp)来认证服务提供商230。如果认证成功,则过程1100使用其私钥解密消息m2以获得rand3,并使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。

在如过程400所述的另一实施例中,可以修改步骤1170,使得在过程1100通过验证服务提供商230的签名(sig_sp)成功认证服务提供商230之后,过程1100使用其私钥解密消息m2以获得rand3,使用预定义的kdf导出密钥(k_ser)。kdf的输入参数应包括rand1和rand3,并且可使用以下方式表示:k_ser=kdf(rand1,rand3,……)。

在如过程500所述的另一实施例中,可以修改步骤1170,使得在过程1100通过验证服务提供商230的签名(sig_sp)成功认证服务提供商230之后,过程1100使用所接收的dh公钥导出密钥(k_ser),即k_ser=crand1modp。

在步骤1175中,过程1100根据在步骤1165中设备接收到的是第一认证响应消息还是第二认证响应消息,将用于运营提供商220的第一凭证或用于服务提供商230的第二凭证保存在存储器中。第一凭证包括密钥(k_com)。第二凭证包括密钥(k_ser)。

在步骤1180中,过程1100根据在步骤1165中设备接收到的是第一认证响应消息还是第二认证响应消息,生成第一消息认证码(mac1)并向运营提供商220传输第一消息认证码,生成第二消息认证码mac2并向服务提供商230传输第二消息认证码。使用mac生成函数生成mac1,其中rand2和k_com作为输入。使用mac生成函数生成mac2,其中rand3和k_ser作为输入。

在步骤1185中,过程1100确定是否已接收到两个认证响应消息。如果已经接收到两个认证响应消息,则过程1100结束。否则,过程1100从步骤1165重复并等待第二认证响应。

图12示出了由运营提供商220的认证节点执行的过程1200。过程1200开始于步骤1205,即从设备210接收认证消息。

在步骤1210中,过程1200基于认证类型(auth.type)250确定认证的类型。如果auth.type指示1,则过程1200确定第一类型的认证,并且此后继续执行步骤1260。如果auth.type指示2,则过程1200确定第二类型的认证,并且此后继续执行步骤1240。如果auth.type指示3,则过程1200确定第三类型的认证,并且此后继续执行步骤1215。

在步骤1215中,过程1200将认证消息转发给服务提供商230的认证单元。

在步骤1240中,过程1200基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则过程1200在步骤1245中生成随机数(rand2)并使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤1250中,过程1200生成加密消息m1,并向设备210发送认证响应消息。加密消息m1根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,device_id)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤1255中,过程1200从设备210接收mac1。作为响应,过程1200通过使用相同mac生成函数生成mac来验证mac1,其中rand2和k_com作为输入,并且查看mac1是否等于mac。如果mac等于mac1,则过程1200在步骤1258中将k_com、rand1和rand2保存在存储器中。本领域技术人员将认识到,认证节点可以在该步骤中而不是在步骤1245中导出密钥(表示为k-com)。具体地,在接收到mac1时,认证节点在对mac1进行验证之前导出密钥(表示为k-com)。

在步骤1260中,过程1200基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证节点使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则过程1200生成随机数(rand2)并使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_com)。kdf的输入参数包括rand1和rand2,并且可使用以下方式表示:k_com=kdf(rand1,rand2,……)。

在步骤1265中,过程1200将认证消息转发给服务提供商的认证单元。本领域技术人员将认识到,步骤1265可以在步骤1260之前发生而不脱离本发明。

在步骤1270中,过程1200生成加密消息m1,并向设备210发送认证响应消息。加密消息m1根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m1=en(rand2,device_id)。认证响应消息包括an的id(表示为an_id)、从设备接收的随机数(rand1)、加密消息m1和an签名(表示为sig_an)。an签名由an通过ibs使用an的秘密密钥(skid)和gpk生成。

在步骤1275中,过程1200从设备210接收mac1。作为响应,过程1200对mac1进行验证。为了对mac1进行验证,an使用相同mac生成函数生成mac,其中rand2和k_com作为输入,并查看mac1是否等于mac。如果mac1等于mac,则过程1200在步骤1280中将k-com保存在存储器中。本领域技术人员将认识到,认证节点可以在该步骤中而不是在步骤1260中导出密钥(表示为k-com)。具体地,在接收到mac1时,认证节点在对mac1进行验证之前导出密钥(表示为k-com)。

过程1200在步骤1280之后结束。

图13示出了由服务提供商230的认证单元执行的过程1300。过程1300开始于步骤1305,即从an接收认证消息。认证消息包括认证类型(auth.type)250、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。可能的消息格式如下:(auth.type,sp_id,device_id,rand1,sig_de,……)。

在步骤1310中,过程1300基于ibs使用设备id(device_id)来验证设备签名(sig_de)。具体地,认证单元使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则过程1300在步骤1315中生成随机数(rand2)并使用预定义的密钥导出函数(keyderivationfunction,kdf)导出密钥(表示为k_ser)。kdf的输入参数应包括rand1和rand2,并且可使用以下方式表示:k_ser=kdf(rand1,rand2,……)。

在步骤1320中,过程1300生成加密消息(m),并向设备210发送认证响应消息。加密消息m根据ibe使用device_id加密rand2而获得,并且可使用以下方式表示:m=en(rand2,device_id)。认证响应消息包括认证单元的id(表示为sp_id)、从设备接收的随机数(rand1)、加密消息m和认证单元签名(表示为sig_sp)。认证单元签名由认证单元通过ibs使用认证单元的秘密密钥(skid)和gpk生成。

在步骤1325中,过程1300从设备210接收mac1。作为响应,过程1300对mac1进行验证。为了对mac1进行验证,过程1300使用相同mac生成函数生成mac,其中rand2和k_ser作为输入,并查看mac1是否等于mac。如果mac1等于mac,则过程1300在步骤1330中将包括k_ser的凭证保存在存储器中。本领域技术人员将认识到,认证单元可以在该步骤中而不是在步骤1315中导出密钥(表示为k-ser)。具体地,在接收到mac1时,认证单元在对mac1进行验证之前导出密钥(表示为k-ser)。

过程1300在步骤1330之后结束。

总而言之,如果设备210想要与运营和/或服务提供商网络进行认证,则该设备生成认证数据包并向运营提供商网络传输该认证数据包。认证数据包包括认证消息,包括认证类型(auth.type)、服务提供商网络的id(sp_id)、设备id(device_id)、rand1和设备签名(sig_de)。

响应于接收到认证数据包,运营提供商网络确定认证的类型。如果认证是第一类型或第三类型,则运营提供商网络将认证数据包转发到服务提供商网络。运营提供商网络和服务提供商网络都会相应地处理认证数据包,即首先通过验证设备签名(sig_de)来认证设备。具体地,运营提供商网络和服务提供商网络使用设备id(device_id)和gpk来验证设备签名(sig_de)。如果验证成功,则运营提供商网络和服务提供商网络分别生成rand2和rand3。此后,运营提供商网络和服务提供商网络分别生成k_com(使用具有rand1和rand2的kdf)和k-ser(使用具有rand1和rand3的kdf)。随机数(rand2和rand3)通过ibe使用设备id进行加密,然后和各自对应的签名(sig_an和sig_sp)一起传输给设备。或者,可以在运营商和服务提供商接收到mac1和mac2之后生成会话密钥k-com和k-ser。

响应于从运营提供商网络和服务提供商网络接收到加密的随机数,设备使用相应的身份(sig_id和sp_id)来认证签名。如果验证成功,则设备解密随机数(rand2和rand3)并使用rand2和rand1导出用于运营提供商网络的第一会话密钥,并使用rand3和rand1导出用于服务提供商网络的第二会话密钥。然后,设备使用mac生成函数为运营提供商网络生成第一消息认证码(mac1),其中rand2和k_com作为输入,并使用mac生成函数为服务提供商网络生成第二消息认证码(mac2),其中rand3和k_ser作为输入。然后向运营提供商网络传输mac1和mac2。

响应于接收到mac1和mac2,运营提供商网络首先认证mac1。在可选实施例中,运营提供商网络和网络提供商网络分别在认证mac1和mac2之前生成k_com和k-ser。如果验证成功,则运营提供商网络保存第一会话密钥并将mac2转发到服务提供商网络。响应于接收到mac2,服务提供商网络验证mac2。如果验证成功,则运营提供商网络保存第二会话密钥。

第一会话密钥k-com和第二会话密钥k-ser分别由设备用于与运营提供商网络和服务提供商网络进行通信。

所提出的方法可以应用于需要网络接入认证和服务认证的所有通信系统,包括5g通信系统的所有三个主要应用场景:增强型移动宽带(enhancedmobilebroadband,embb)、大规模物联网(massiveinternetofthings,miot)、高可靠低延迟通信(ultrareliablelowlatencycommunication,urllc)。

所提出的网络和服务统一认证使用一个认证数据包来生成两组会话密钥(一组用于网络,另一组用于服务),可以有效地分离网络运营商和服务提供商之间的信息。

注意,ue、设备、运营提供商网络的各种单元以及服务提供商网络的各种单元是众所周知的。因此,为简洁起见,省略了ue、设备、运营提供商网络的单元和服务提供商网络的单元中的每一个的操作系统、配置、结构、组件等。重要的是,根据本发明实施例的方法和系统以存储在存储介质上的指令形式提供,并且可由相应ue、设备、认证节点等运营提供商网络的单元和认证单元等服务提供商网络的单元的处理器执行。

以上是对用于与运营提供商和/或服务提供商进行认证的统一认证框架的方法和系统的实施例的描述。可以预见,本领域技术人员能够并且会基于本发明设计可选方法和系统,这会侵犯如以下权利要求中所述的本发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1