一种基于对称密钥池和跨中继的改进型AKA身份认证系统和方法与流程

文档序号:15845093发布日期:2018-11-07 08:54阅读:309来源:国知局
一种基于对称密钥池和跨中继的改进型AKA身份认证系统和方法与流程

本发明涉及安全通信技术领域,具体涉及基于群组数据网络的私密身份认证和密钥协商。

背景技术

鉴权,即身份认证是实现信息安全的基本技术,系统通过审查用户的身份来确认该用户是否具有对某种资源的访问和使用权限,同样也可以进行系统与系统间的身份认证。

随着量子计算机的发展,经典非对称加密算法将不再安全,无论是认证还是加解密领域,对称密钥算法将大行其道。比如目前在移动通信领域比较常用的基于对称密钥算法的鉴权方法之一的aka机制。aka全称“authenticationandkeyagreement”,即鉴权和密钥协商。顾名思义,aka机制在身份认证的同时并进行了密钥的协商,为后续通信的加密提供了密钥保障。

作为安全性升级的方案,对称密钥池的方式将是一种保证密钥安全的重要方案乃至主流方案。同时可以对对称密钥池中的全部或部分内容进行加密存储,加密密钥可以存储到对称密钥池宿主的安全隔离装置中。后续对对称密钥池进行密钥操作时,需要由安全隔离装置解密后使用。有关对称密钥池可参见公开号为cn105337726a,发明名称为“基于量子密码的端对端手持设备加密方法及系统”的发明专利文献,公开了一种基于量子密码的端对端手持设备加密方法,其量子通信的两台密钥分发设备之间,通过qkd形成了一对对称密钥,用于qkd双方的用户进行量子加密通信。

在一部分单位组成的组播网络中,群组成员通过群组密钥加密的方式加密发送数据。目前,在群组会话领域一般采取两种群组会话密钥生成方式:群组密钥分配和群组密钥协商。群组密钥分配的优点在于简单,并且只需要较少的计算量和通信量。但是这种密钥建立的方式需要一个可信的第三方作为密钥分配者。这一条件在现实网络环境下很难实现。群组密钥协商的协议中,所有参与者提供协议规定的秘密信息,共同建立会话密钥。尽管群组密钥协商协议与群组密钥分配协议相比需要消耗更多的计算量和通信量,但不需要可信第三方的参与。这一优点使得群组密钥协商成为目前群组密钥建立协议中的研究热点。

现有技术存在的问题:

1.在群组通信中,群组密钥协商所涉及到的密钥种子通常只有1个或者少量,无法保持密钥种子的新鲜性或者可变动的范围较小,容易被破解。

2.目前群组中实现成员与中继之间的加密方式主要依靠群组密钥进行加密,双方之间没有用于单独通信的密钥,重要信息的传输相对不够安全。一旦群组密钥被破解,所有的信息都会泄露。

3.aka机制中密钥生成中的随机数参数处于暴露状态,会增加协商密钥被破解的风险。并且sqn的校验机制的验证呈范围性,不具有唯一性,存在一定的偶然性。

4.鉴权中消息的收发均大多采用明文形式发送或者保密性不强的加密方式进行加密,这样容易将关键信息泄露,降低鉴权的安全性。



技术实现要素:

本发明提供一种基于对称密钥池的改进型身份认证系统,可进一步提高通信的安全性。

一种基于对称密钥池和跨中继的改进型身份认证系统,包括参与aka身份认证的成员、中继和服务器,所述成员、中继和服务器三者共享有群组密钥池;成员和中继还分别有用于生成鉴权密钥的私有密钥池,成员和中继相互独立的与服务器共享其私有密钥池;

成员和中继在aka身份认证过程中分别利用来自群组密钥池的密钥种子再结合第一随机数参数计算得到成员和中继之间的第一协商密钥;所述第一随机数参数是利用指针地址a在群组密钥池中相应获得,中继通过服务器获取所述指针地址a,成员经由中继从服务器获取计算指针地址a的参数,再通过该参数生成所述指针地址a;

成员和服务器在aka身份认证过程中分别利用两者之间的鉴权密钥再结合第二随机数参数计算得到成员和服务器之间的第二协商密钥;所述第二随机数参数是利用指针地址b在成员和服务器之间的私有密钥池中相应获得,成员经由中继从服务器获取计算指针地址b的参数,再通过该参数生成所述指针地址b;

计算指针地址a的参数以及计算指针地址b的参数均为服务器生成的随机数a,该随机数a从服务器经由中继发送至成员过程中,采用服务器和成员之间共享的鉴权密钥加密。

本发明中成员和中继在aka身份认证过程中共享相应的指针地址,该指针地址即为所述的指针地址a,通过该指针地址a参与协商密钥算法。本发明中成员和服务器在aka身份认证过程中共享相应的指针地址,该指针地址即为所述的指针地址b,通过该指针地址b参与协商密钥算法。共享过程既可以是直接获得,也可以是获得必要的参数,而后自行计算生成。

本发明中,成员和中继之间通过aka身份认证共享第一协商密钥,在之后的通信过程中,两者单独通信时的加密方式可采用第一协商密钥,其他成员无法获知内容,即使群组密钥池本身被破解,但第一协商密钥仍可进一步保障其通信的安全性。

同理,成员和服务器也通过上述同一aka身份认证过程共享第二协商密钥,用于之后的相互加密通信,本发明aka身份认证系统中采用成员和中继之间、以及成员和服务器的双重鉴权机制,可使群组成员与服务器(即密钥管理服务器)之间通过中继建立间接的安全独立通信。

本发明中更进一步的改进是成员、中继和服务器(即密钥管理服务器)三者共享有群组密钥池,其所提供的密钥量较大,结合更新策略可保证密钥种子的新鲜性,更加不容易被破解。

本发明中更进一步的改进是生成协商密钥时采用的随机数参数并不在网络中直接传输,而是传输相关的指针地址或生成指针地址的参数,成员和中继依据所拥有的指针地址或生成指针地址的参数再结合本地的群组密钥池或私有密钥池才可以生成随机数参数,进一步提高了安全级别。

为了保证aka身份认证过程的安全,在成员与中继之间,以及中继与服务器之间通信时,均采用加密通信。

作为优选,进行aka身份认证过程中成员与中继之间利用群组密钥池加密通信,中继与服务器之间利用两者预先共享的协商密钥加密通信,aka身份认证过程具体包括:

成员向中继发送鉴权请求;

中继响应于该鉴权请求并从服务器获得相应的认证向量,且该认证向量包含有所述指针地址a以及随机数a;

中继向成员发送提问消息,且该提问消息中包含来自认证向量的随机数a;

成员响应于所述提问消息向中继发送分别针对中继和服务器的鉴权应答;

中继对针对己方的鉴权应答进行验证后,向服务器转发针对服务器的鉴权应答,并从服务器获取相应的验证结果;

中继根据己方以及服务器验证结果,向成员发送相应的鉴权结果以供成员进行确认完成aka身份认证。

由于随机数a已经通过服务器和成员之间共享的鉴权密钥加密一次,而在成员与中继之间加密通信是还要再利用群组密钥池加密,因此总体上生成所述指针地址a的参数是经过两次加密的。同理在中继与服务器之间利用协商密钥加密通信时,生成随机数a总体上也是是经过两次加密的。随机数a采用双重加密,进一步提高安全性。

在成员向中继发送鉴权请求、中继向成员发送提问消息、成员向中继发送鉴权应答以及中继向成员发送鉴权结果过程中,涉及了成员与中继之间的通信,由于两者共享群组密钥池,因此可利用群组密钥池加密通信。

作为优选,成员与中继通信时,主动方生成随机数形式的协商码,利用该协商码通过指定的指针地址算法获得指针地址,依据该指针地址从群组密钥池取出指定长度的随机数,再利用指定的密钥生成算法和取出的随机数生成群聊保密性密钥和群聊完整性密钥;

群聊完整性密钥用于结合通信内容生成以及校验相应的验证码;

群聊保密性密钥用于结合通信内容进行加密以及解密。

同理,中继从服务器获得认证向量以及验证结果时,包括中继向服务器发送认证向量请求,服务器向中继发送认证向量反馈,中继向服务器发送二级鉴权应答(即转发来自成员的针对服务器的鉴权应答),以及服务器向中继发送服务端鉴权结果(即服务器端的验证结果),都涉及了中继与服务器之间的通信,由于两者预先共享了协商密钥,因此可利用中继与服务器之间的共享密钥加密通信。

中继与服务器之间的协商密钥可依据现有技术生成,另外中继与服务器之间可以共享私有密钥池,因此中继与服务器之间的协商密钥可以利用私有密钥池生成,进一步提高安全性。

作为优选,所述指针地址a是随机数a结合成员与服务器之间的鉴权密钥通过指定算法相应获得;所述指针地址b是利用所述随机数a结合成员与服务器之间的鉴权密钥通过指定算法相应获得。

成员与服务器之间利用私有密钥池生成两者之间的鉴权密钥可采用现有手段,同理中继与服务器之间也可以根据需要利用私有密钥池生成两者之间的鉴权密钥。

作为优选,生成第一协商密钥的密钥种子是利用指针地址c从群组密钥池相应获取,指针地址c是采用随机数b通过指定算法相应获得,所述随机数b由中继生成并通过所述提问消息分发给成员。

除了拥有群组密钥池外,密钥种子的获得还需要相应的指针地址b,随机数b由中继生成,结合指针地址算法获得指针地址b,这样可以进一步提高安全性,

本发明用于生成各协商密钥的信息,可以是密钥种子、随机数参数或用于生成前者的指针地址a、随机数a、指针地址b、随机数b、指针地址c、相应算法以及算法id等,认证向量以及提问消息中包括至少一部分以上信息,使得成员和中继最终获取所有生成协商密钥的条件。

作为优选,所述鉴权请求中还携带有成员生成的且为真随机数形式的通信标识符,该通信标识符在中继从服务器获得认证向量时发送给服务器,服务器利用成员与服务器之间的鉴权密钥加密该通信标识符并依次随认证向量以及提问消息发送给成员,成员利用所述通信标识符校验提问消息。

作为优选,在鉴权请求中,所述通信标识符采用成员与服务器之间的鉴权密钥加密。

由于进行aka身份认证过程中成员与中继之间利用群组密钥池加密通信,这就相当于针对通信标识符进行了双重加密。

另外由于采用了成员与服务器之间的鉴权密钥加密,因此对中继也是保密的。

作为优选,在鉴权请求中,还包括在后续通信中,成员与中继之间使用协商密钥时的消息加密算法id和消息认证算法id。

作为优选,所述认证向量中还包括服务器指定的成员与中继之间生成协商密钥时的算法id,中继依据该算法id生成协商密钥,还通过提问消息将算法id发送给成员,以供成员生成协商密钥。

协商密钥包括保密性密钥和完整性密钥,相应的算法id也包括了生成保密性密钥的算法id和生成完整性密钥算法id。

作为优选,服务器和中继分别计算期望认证应答,用于对来自成员且针对己方的鉴权应答进行验证;

服务器端的期望认证应答利用随机数a以及成员与服务器之间的鉴权密钥生成;

中继端的期望认证应答利用随机数a、随机数b以及群组密钥池生成,所述认证向量中还包含有随机数a,中继从认证向量中提取获得随机数a。

作为优选,所述aka身份认证系统基于无线多跳网络实施,参与aka身份认证的还包括在成员与中继之间透传消息的若干通信节点。

每一通信节点可以视为其中一成员,若成员与中继之间没有其他通信节点则相当于两者而直接通信,若还有其他通信节点,则成员与中继之间的消息的传递需要通过依次转发,但转发的通信节点不参与对该消息的加密和解密。除非是针对各成员都需要接收的群组消息,则群组内成员均可对该消息进行解密。

参与aka身份认证的服务器可以有多个,各服务器均处在量子通信网络中,与中继直接通信的服务器为第一服务器,所述第二协商密钥为成员和第一服务器之间共享。

服务器有多个时例如,其中一个为与中继所归属的第一服务器,其中另一个为成员所归属的第二服务器,且第一服务器和第二服务器中的一者拥有群组密钥池;

第一服务器接收来自中继的认证向量请求后,将该认证向量请求转发给第二服务器,第二服务器响应于所述认证向量请求并生成相应的认证向量,再以认证向量反馈的形式将所述认证向量经由第一服务器发送至中继。

中继归属第一服务器,可理解两者可安全通信,即预先共享协商密钥,以及共享私有密钥池。成员归属第二服务器,可理解两者共享鉴权密钥,以及共享私有密钥池,另外第二服务器还预存与成员相关的信息,该信息可随认证向量以及提问消息发送至成员,供成员对提问消息进行认证。

由于各服务器之间可实施安全通信,任何一个服务器都可以根据需要向其他服务器请求所需的数据,因此也可将多个服务器看做一个整体,并不影响本发明的实施。

本发明还提供一种基于对称密钥池和跨中继的改进型aka身份认证方法,包括:

步骤s1,成员向中继发送鉴权请求;

步骤s2,中继响应于该鉴权请求向服务器发送认证向量请求,

步骤s3,服务器响应于该认证向量请求,生成认证向量以及成员和服务器之间的第二协商密钥,并通过认证向量反馈将所述认证向量发送给中继;所述认证向量包含有指针地址a以及采用服务器和成员之间的鉴权密钥加密的随机数a;

所述指针地址a是随机数a结合成员与服务器之间的鉴权密钥通过指定算法相应获得,所述随机数a由服务器生成;

步骤s4,中继接收认证向量反馈后,向成员发送提问消息,且该提问消息中包含来自认证向量的采用服务器和成员之间的鉴权密钥加密的随机数a;

所述成员、中继和服务器三者共享有群组密钥池,中继接收认证向量反馈后还通过指针地址a在群组密钥池中相应获得第一随机数参数,第一随机数参数结合群组密钥池的密钥种子计算得到成员和中继之间的第一协商密钥;

步骤s5,成员接收所述提问消息,并向中继发送分别针对中继和服务器的鉴权应答;

成员接收所述提问消息后还通过随机数a相应生成成员和中继之间的第一协商密钥;

成员接收所述提问消息后还通过随机数a生成指针地址b,再通过指针地址b在成员和服务器之间的私有密钥池中相应获得第二随机数参数,第二随机数参数结合成员和服务器之间的鉴权密钥计算得到成员和服务器之间的第二协商密钥;

步骤s6,中继对针对己方的鉴权应答进行验证后,向服务器转发针对服务器的二级鉴权应答;

步骤s7,服务器接收二级鉴权应答并进行验证后将相应的服务端鉴权结果发送给中继;

步骤s8,中继根据己方以及服务器验证结果,向成员发送相应的鉴权结果以供成员进行确认完成aka身份认证。

各步骤的相关操作也可以结合本发明有关aka身份认证系统中的相关描述,不再赘述。

本发明在群组密钥协商方面提高了密钥种子的容量和可更换性,同时还保证了密钥生成所需随机数的真随机性及安全,在很大程度上提升了群聊信息的高保密性。在身份认证及密钥协商方面,本发明实现了群组内成员与中继、密钥管理服务器三方之间的双重鉴权。群组密钥池和私有密钥池为成员与中继、密钥管理服务器之间的协商密钥提供了大量的随机数,提高了协商密钥被破解的难度。其中,群组成员与密钥管理服务器之间单独协商密钥可以将一些重要的数据高度加密,防止消息传输过程中发生信息泄露。鉴权过程中消息的传输采用群组密钥或中继与密钥管理服务器之间的会话密钥和鉴权密钥双重加密,非关键信息群组外无法获得,关键信息群组内其他成员(包括中继)无法获得,因此所协商的密钥具有高安全性。同时,在该鉴权体系中所使用的鉴权密钥会定期更换,降低了鉴权密钥被破解的风险。经典aka鉴权机制中的消息新鲜度校验通过随机数作为唯一识别符来检验,降低了校验通过的偶然性,并且解决了aka鉴权中sqn校验机制的重同步漏洞。同时,密钥管理服务器处于量子通信网络中,各服务器之间的传输均采用的是qkd方式的加密传输,确保了跨服务器的消息传输的安全。

附图说明

图1为实施例1的场景图;

图2为实施例1中成员c、r和s分别所拥有的部分参数示意图;

图3为实施例1的鉴权流程图(虚线为鉴权密钥组更新时额外的消息传输流程);

图4为实施例2的场景图;

图5为实施例2中成员c、r、s1和s2分别所拥有的部分参数示意图;

图6为实施例2的鉴权流程图(虚线为鉴权密钥组更新时额外的消息传输流程);

图7为实施例2的衍生场景图。

具体实施方式

实施例1

系统说明

本实施例的场景如图1所示,本图中,成员r、成员a0、成员a1成员a2、成员a3、成员a4及成员c均为同一群组的成员,成员r为中继单位。本图中参与鉴权的主动方为c,含有私有密钥池kc和群组密钥池kg;参与鉴权被动方为r,含有私有密钥池kr和群组密钥池kg。私有密钥池为成员与服务器双方之间的对称密钥池,而群组密钥池为群组内的各成员之间的对称密钥池。成员s为密钥管理服务器,也作服务端,成员c和成员r皆归属于s,含有所有成员的私有密钥池及群组密钥池kg。成员r作为通信中继,已经与成员s进行了身份认证与密钥协商,因此r与s之间的通信已经实现对称加密,r侧的协商密钥用ckr和ikr表示,s侧的协商密钥用ckr’和ikr’表示。

如图2所示,成员c、成员r和成员s的身份识别码分别为id=idc、id=idr和id=ids,同时成员c和成员r都记录有归属密钥管理服务器的身份识别码pid,即成员s的id——ids。c、r和s的密码学模块均持有相对应的密钥池(包括私有密钥池和群组密钥池)、各类算法和鉴权密钥组。鉴权密钥组长度为2,第一组为历史密钥,第二组为使用密钥,每一组鉴权密钥都有保密性密钥和完整性密钥,其归属的密钥管理服务器拥有对应的鉴权密钥组。鉴权密钥组是基于私有密钥池实现的。每个密钥的符号表达详见图2。

本实施例中,成员c、成员r均有安全隔离装置以存储密钥池。本实施例中成员c和成员r鉴权后最终协商的密钥为消息加密密钥ckcr(即保密性密钥)和消息认证密钥ikcr(即完整性密钥),成员c和服务端s最终协商的密钥为消息加密密钥ckcs(即保密性密钥)和消息认证密钥ikcs(即完整性密钥)。

本实施例可能处于无线多跳网络,那么成员c和成员r之间可能并非处于直接通信。如图1中,成员c与成员r之间消息的传递需要通过成员a1的转发。其中成员a1不参与对该消息的加密和解密。如果群组成员所发送的消息的群组消息,则群组内成员均可对该消息进行解密。

本发明中名词的后缀a、b等字母编号,后缀1、2等数字编号、前缀第一、第二等序号仅为了区分和便于描述,并不对作为对名词本身含义的限定。

在通信双方中,内容相应的密钥、验证码等为了区分持有者的不同一般通过上角标’区分,例如成员产生rand1发给中继,中继持有并使用该随机数时即称为随机数rand1’,但两者内容是相同的。

流程说明

本实施例的鉴权消息流程示意图请参考图3,实线表示的消息为本实施例的鉴权及密钥协商部分。本实施例的详细说明如下:

步骤1:成员c向中继r发起鉴权请求

1.1、群密钥生成:成员c根据需要,产生一个随机数rand1,随机数rand1优选为量子真随机数发生器生成的量子随机数,以提高安全性,既可以预先生成并存储以供调用,也可以依照发送群聊消息的需要而生成。将rand1作为参数输入到指针地址算法中。根据得到的指针地址从群组密钥池kg取出指定长度的随机数。利用密钥生成算法和取出的随机数生成群聊保密性密钥ckg和群聊完整性密钥ikg。

1.2、生成鉴权请求:成员c产生一个随机数rand2,随机数rand2优选为量子真随机数发生器生成的量子随机数,以提高安全性能,既可以预先生成并存储以供调用,也可以依照生成鉴权请求的需要而生成。将随机数rand2和鉴权请求的服务端方的关键信息拼接,和鉴权密钥组中使用组的完整性密钥kic2一起作为参数输入到消息认证算法中,生成消息认证码mac1。在和上述拼接好的关键信息后附加上消息认证码mac1,和鉴权密钥组中使用组的保密性密钥kec2一起作为参数输入消息加密算法生成密文m1。

将密文m1、成员c归属的密钥管理服务器的身份识别码ids、参数kla及鉴权请求的中继r方的关键信息拼接,和群聊完整性密钥ikg一起作为参数输入到消息认证算法中,生成消息认证码mac2。kla参数包括了本次与密钥管理服务器s协商的保密性密钥ckcs和消息认证密钥ikcs的密钥长度lc1和li1,和与中继r协商的保密性密钥ckcr和消息认证密钥ikcr的密钥长度lc2和li2,以及与密钥管理服务器s之间的消息加密算法idcks和消息认证算法idiks和与密钥管理服务器r之间的消息加密算法idckr和消息认证算法idikr。这样的设定可以满足应用层对算法的要求和密钥的要求。

在上述的拼接好的关键信息后附加上消息认证码mac2,和群聊保密性密钥ckg一起作为参数输入消息加密算法生成密文m2。鉴权请求中包括明文形式的成员c(即鉴权主动方)的身份识别码idc、中继成员r(即鉴权被动方)的身份识别码idr和随机数rand1及密文m2。

1.3、发送鉴权请求:成员c发送鉴权请求,鉴权请求可能为直接发送至中继r,也可能通过多跳网络的传输模式发送给中继r。根据消息中接收方指定为idr。其他群组成员不会解密解析该请求消息。

步骤2:中继r接收鉴权请求,向服务端转发鉴权请求

2.1、中继r识别消息,拆分解析消息:中继r接收到来自成员c的鉴权请求后,解析请求消息得到鉴权请求主动方的身份识别符idc’、鉴权请求被动方(即中继r)的身份识别符idr’和随机数rand1’及密文m2’。中继r验证idr’与己方身份识别码进行对比,相匹配后进行下一步。

2.2、中继r解密认证消息:将rand1’作为参数输入到指定的指针地址算法中。根据得到的指针地址从群组密钥池kg取出指定长度的随机数。利用指定的密钥生成算法和取出的随机数生成群聊保密性密钥ckg’和群聊完整性密钥ikg’。利用群聊保密性密钥ckg’和对应的消息解密算法将密文m2’解密得到鉴权请求的相关信息、参数kla’、密文m1’和消息认证码mac2’。利用群聊完整性密钥ikg’和对应的消息认证算法对关键信息进行计算,得到消息认证码mac3。将mac3和mac2’进行对比,如果相等,则说明消息未被篡改;否则,该请求无效。

2.3、中继r生成认证向量请求:中继r根据成员c的身份识别码idc’、成员c归属的密钥管理服务器的身份识别码ids’和参数kla’以及密文m1’生成向密钥管理服务器s的认证向量的请求。利用中继r和密钥管理服务器s的协商密钥的完整性密钥ikr及相应的消息认证算法生成消息认证码mac4,将认证向量请求和mac4一起用协商密钥的保密性密钥ckr和消息加密算法进行加密得到密文m3。

2.4、中继r发送认证向量请求:中继r将自身身份识别符idr和密钥管理服务器s的身份识别符ids以及密文m3打成相应格式的消息包。中继r将请求发送至s。

步骤3:服务端接收认证向量请求,生成认证向量

3.1、服务端接收请求消息,解密认证该消息:密钥管理服务器s收到来自中继r的认证向量的请求。解析得到密文m3’。服务端s利用与中继r的协商密钥ckr’和ikr’对密文m3’进行解密和消息认证得到idc”、ids”、kla”和密文m1”。解密及消息认证的具体流程请参考上述步骤2.2。

3.2、服务端s解密认证密文m1”:密钥管理服务器s根据请求中的idc”和ids”找到指定鉴权密钥组,取出使用密钥组中的保密性密钥kec2’和完整性密钥kic2’。密钥管理服务器s利用密钥kec2’和指定的消息解密算法对密文m1”进行解密得到随机数rand2’、服务端方相关鉴权信息及mac1’。再利用密钥kic2’和指定的消息认证算法对随机数rand2’和服务端方相关鉴权信息的拼接数据进行计算得到消息认证码mac5。密钥管理服务器s将mac5和mac1’进行对比,如果相等,则说明消息未被篡改;否则鉴权异常。

3.3、服务端s生成认证向量:密钥管理服务器s将使用密钥组中的kic2’作认证向量的计算密钥。密钥管理服务器s产生一个随机数rand3,随机数rand3优选为量子真随机数发生器生成的量子随机数,以提高安全性,既可以预先生成并存储以供调用,也可以依照服务端的需要而生成。以上中继r相关信息均为中继r的认证向量请求中包含的信息。同时密钥管理服务器s产生一个时间戳ts。设群组密钥池kg的总数据量为pa。设成员c的私有密钥池kc的总数据量为pb。设用作成员c和服务端s之间的保密性密钥ckcs的密钥种子(即随机数)为n1,其指针地址为pc1,长度为kla”指定的lc1’,完整性密钥ikcs的密钥种子(即随机数)为n2,指针地址为pi1,长度为kla”指定的li1’。n1和n2分别取自与成员c对应的私有密钥池。设成员c与中继r之间协商密钥的保密性密钥ckcr的指针地址为pc2,完整性密钥ikcr的指针地址为pi2。具体的计算公式如下(⊕表示按位异或,||表示串接):

计算密钥协商码(kia):kia=idf6||idf7||idf11||idf12||ts;

计算服务端s的期望认证应答(xress):xress=f1(kic2’,rand3);

计算ckcr的指针地址(pc2):pc2=f2(kic2’,rand3,pa);

计算ikcr的指针地址(pi2):pi2=f3(kic2’,rand3,pa);

计算ckcs的指针地址(pc1):pc1=f4(kic2’,rand3,pb);

计算ikcs的指针地址(pi1):pi1=f5(kic2’,rand3,pb);

计算服务端保密性密钥(ckcs):ckcs=f6(kic2’,n1);

计算服务端完整性密钥(ikcs):ikcs=f7(kic2’,n2);

网络认证令牌(autn)=rand2’||rand3||kia;

计算消息认证码(mac6):mac6=f8(kic2’,autn);

计算消息密文(m4):m4=f9(kec2’,autn||mac6);

认证向量(av):av=rand3||kia||pc2||pi2||m4;

(注:算法f1和f8为指定的消息认证算法,f2、f3、f4和f5为指定的指针地址算法,f6和f7为指定的密钥生成算法,f9为指定的消息加密算法。idf6和idf7为算法f6和f7的算法id。idf11和idf12为ckcr和ikcr的密钥生成算法id)

3.4、服务端s发送认证向量至中继r:密钥管理服务器以上述方法产生n组认证向量(均用于同一次鉴权),并利用与r的协商密钥ckr’和ikr’加密后发送至中继r。加密及消息认证的流程请参考上述步骤2.3。

步骤4:中继r接收消息,计算协商密钥并向c发起提问

4.1、中继r接收消息,并解密认证该消息:中继r接收到来自服务端s的加密信息,利用与服务端s的协商密钥ckr和ikr对消息进行解密及消息认证,具体流程请参考上述步骤2.2。

4.2、中继r生成协商密钥:中继r在n组认证向量中,取序号为0的一组认证向量av(0)。中继r从认证向量av(0)中解析得到rand3’、kia’、pc2’、pi2’、m4’,并进一步解析kia’得到idf6’、idf7’、idf11’、idf12’、ts’。中继r生成一个随机数rand4,随机数rand4优选为量子真随机数发生器生成的量子随机数,以提高安全性,既可以预先生成并存储以供调用,也可以依照中继r的需要而生成。利用随机数rand4和指定的指针地址算法计算得到指针地址。根据指针地址从群组密钥池中取出指定长度的随机数作为ckcr和ikcr的密钥种子,设为k。并根据认证向量av(0)中的指针地址pc2’和pi2’从群组密钥池kg中取出指定长度的随机数n3和n4。ckcr和ikcr的计算公式如下所示

计算中继r的期望认证应答(xresr):xresr=f10(k,rand3’);

计算中继r的保密性密钥(ckcr):ckcr=f11(k,n3);

计算中继r的完整性密钥(ikcr):ikcr=f12(k,n4);

(注:f10为指定的消息认证算法,f11和f12分别为指定的密钥生成算法)

4.3、中继r向成员c发送提问消息:中继r在提问消息内加入rand4||m4’。中继r产生一个随机数rand5,随机数rand5优选为量子真随机数发生器生成的量子随机数,以提高安全性,既可以预先生成并存储以供调用,也可以依照中继r的需要而生成。中继r利用群组消息加密的方式对提问消息加密发送给成员c。具体加密流程请参考上述步骤1的相应部分,其中rand4用途等同于rand1。

步骤5:成员c验证提问消息,并返回应答

5.1、成员c接收消息,并解密认证提问消息:成员c根据随机数rand5’及相应算法对提问消息进行解密及消息认证。具体流程请参考上述步骤2.2。解密得到rand4’、和m4”。

5.2、成员c解析验证中继r的提问消息:成员c利用kec2和kic2以及相对应的消息解密算法和消息认证算法对m4”进行解密和消息认证,得到autn’。具体流程请参考上述步骤2.2。成员c将autn’拆分成rand2”、rand3”和kia”。成员c将rand2”和rand2进行对比,如果相同,则证明为同一次鉴权业务的提问消息,否则,鉴权异常。

5.3、成员c生成协商密钥并生成应答消息:在提问消息通过校验后,成员c利用rand3”和kic2通过和服务端s中相同的算法计算及操作得到ckcs’和ikcs’(具体步骤请参考上述步骤3.3的相应部分)。再利用rand3”和kic2通过与服务端s中f2和f3相对应的指针地址算法计算得到pc2”和pi2”。成员c利用rand3’和指针地址pc2”、pi2”通过和中继r中相同的算法及操作得到密钥种子k’与协商密钥ckcr’和ikcr’(请参考步骤4.2)。协商密钥的生存周期在amf”中得到以及下面数据的加密的算法也从amf”中解析。成员c将rand3”和kic2通过与f2对应的算法进行计算得到消息认证码ress。成员c利用k’和随机数rand3”通过与中继r中f10对应的算法计算得到消息认证码resr。

5.4、成员c返回应答消息:成员c将消息认证码ress利用鉴权密钥kec2和kic2进行消息认证码的生成和消息的加密得到密文m5。具体加密方式请参考上述步骤1.2。成员c将密文m5和resr以群组消息加密的方式加密发送给中继r,具体加密流程请参考上述步骤1。

步骤6:中继r验证成员c身份,转发认证应答

6.1、中继r认证应答消息:中继r接收到a端的应答消息后,用群组消息解密的方式对应答消息解密认证并解析得到m5’和resr’,具体的解密及消息认证流程请参考上述步骤2.2。将resr’和中继r计算得到的xresr进行对比,如果两者相同,则中继r认证成员c身份成功,如果两者不同,则身份认证失败。

6.2、中继r转发提问应答消息至服务端s:中继r将解析得到的密文m5’通过ckr和ikr加密发送给密钥管理服务器s。具体加密流程请参考上述步骤2.3。

步骤7:服务端s接收验证成员c身份,返回鉴权结果

7.1、服务端s接收并解密认证中继r转发的认证应答:密钥管理服务器s接收到来自中继r的加密消息,利用与中继r的协商密钥ckr’和ikr’对加密信息进行解密和消息认证得到m5”。解密及消息认证的具体流程请参考上述步骤2.2。密钥管理服务器s利用kec2’和kic2’对密文m5”进行解密并消息认证得到ress’。

7.2、服务端s校验认证应答消息:密钥管理服务器s将ress’与xress进行对比校验,如果两者相同,则成员c身份认证成功,保留本次鉴权生成的ckcs和ikcs;否则,鉴权失败,则清除本次鉴权生成的ckcs和ikcs。

7.3、服务端s将鉴权结果发送至中继r:密钥管理服务器s将鉴权结果利用与中继r的协商密钥ckr’和ikr’进行消息认证码的生成和消息的加密,并将加密信息发送给中继r。

步骤8:中继r接收到服务端s的鉴权结果,将鉴权结果整理返回至成员c

8.1、中继r接收到服务端s的鉴权结果并解密认证:中继r接收到密钥管理服务器s发送的加密信息。利用与密钥管理服务器s的协商密钥ckr和ikr对加密信息进行解密并消息认证得到密钥管理服务器s的鉴权结果。

8.2、中继r将鉴权结果返回至成员c:如果密钥管理服务器的鉴权结果为成功,则中继r将成功的结果返回至成员c,如果失败,则中继r将失败的鉴权结果返回至成员c。中继r将认证结果返回到成员c,鉴权结果同样利用群组消息加密的方式进行加密发送至成员c,消息认证码的生成与加密请参考上述步骤1。如果是成功的,则保留本次鉴权生成的ckcr和ikcr;如果是失败的,则清除本次鉴权生成的ckcr和ikcr。

步骤9:成员c接收验证认证结果

成员c接收到中继r的返回消息,利用群组消息解密的方式对中继r的返回结果进行解密认证。成员c解析认证结果,判断本次身份认证是否成功。如果失败,则进行重新发起鉴权请求;如果成功,则接下来的消息传输均可进行加解密。

鉴权密钥的更新

本发明中,成员与服务器之间的鉴权密钥可根据需求进行更新,例如根据设定的更新周期,或响应于上层应用的更新请求等。

鉴权密钥的更新方法与上述鉴权方法中ckcs和ikcs的生成方法相似,具体的消息流程请参考图3。密钥管理服务器s使用算法f4或f5来生成鉴权密钥的指针地址,根据指针地址从成员c所对应的私有密钥池中取出指定长度的随机数,与鉴权密钥kic2’利用密钥生成算法计算得到新的鉴权密钥。在第一次时,默认采用私有密钥池开头的随机数作为鉴权密钥。进行鉴权密钥更新时,将现使用的鉴权密钥覆盖前一次的鉴权密钥组,将同步的鉴权密钥组覆盖现使用的密钥组,鉴权密钥的更新如图3所示。中继r中仅生成xresr,不再生成相关的协商密钥。

鉴权与鉴权密钥更新组合

当鉴权密钥的更新需要与鉴权绑定时,成员c可以步骤1的鉴权请求中声明,例如在鉴权请求中设置识别符。鉴权密钥更新的方式请参考本实施例的“鉴权密钥的更新”。但是此时中继r中依旧会生成与成员c的协商密钥。

鉴权异常的处理

成员c与服务端s之间的收发的消息可能是鉴权请求、认证向量请求、认证向量反馈、提问消息、鉴权应答、二级鉴权应答、服务端鉴权结果或者鉴权结果。结合图3,鉴权请求、认证向量请求、认证向量反馈、提问消息、鉴权应答、二级鉴权应答、服务端鉴权结果或者鉴权结果分别简称消息①~消息⑧。如果消息传输过程中发生轻度丢包,通过各自的信令重发机制,一般情况下不影响消息的收发。例如成员c向中继r发送鉴权请求后收不到来自中继r的提问消息,会重新生成请求消息并发送给中继r,直到达到请求的最大发送次数;中继r发送提问消息后收不到应答消息,同样会重新发送到最大发送次数。

如果鉴权过程中发生重度丢包甚至断网的情况,则鉴权过程终止,等下应用层下一次鉴权的请求。各类异常情况的处理如下:

1.如果过程只进行鉴权和密钥协商,那么无论消息①、②、③、④、⑤、⑥、⑦、⑧任何一个丢失都不会对私有密钥池及鉴权密钥组造成影响。唯一的影响就是鉴权失败以及密钥协商失败,可根据应用层的请求重新进行鉴权。

2.如果是鉴权密钥的更新,消息①、②、③、④的丢包对鉴权密钥组的同步不影响。当消息⑤、⑥、⑦或者⑧丢包后,成员c无法收到来自中继r的返回消息,则说明本次鉴权密钥的更新失败。成员c会再次进行发起请求,并声明上一次鉴权密钥更新失败。服务端s收到更新请求后,根据上一次更新是否收到鉴权密钥更新的消息来判定使用鉴权密钥组中的第一个或第二个密钥来计算认证向量。如果上一次更新收到鉴权密钥更新的消息,则意味着服务端s已经完成更新,但成员c没有更新,则服务端s使用鉴权密钥组中的第一个密钥来计算认证向量。如果上一次更新没有收到鉴权密钥更新的消息,则意味着服务端s和成员c都没有更新,则服务端s使用鉴权密钥组中的第二个密钥来计算认证向量。

3.如果是鉴权和鉴权密钥更新组合使用时,处理方式可以参考情况2中的异常处理。

实施例2

系统说明

如图4所示,本发明身份认证系统可以包括多个密钥管理服务器,不同密钥管理服务器处于不同的量子网络服务站。每个量子网络服务站均处于量子通信网络中,因此量子网络服务站之间可以通过qkd方式共享站间量子密钥,从而保证信息的高度安全。

如图4,本图中,成员r、成员a0、成员a1成员a2、成员a3、成员a4及成员c均为同一群组的成员,成员r为中继单位。参与鉴权的主动方为c,含有私有密钥池kc和群组密钥池kg;参与鉴权被动方为r,含有私有密钥池kr和群组密钥池kg;成员s1和s2为密钥管理服务器,也作服务端,成员r归属于s1,成员c归属于s2,密钥管理服务器含有注册成员的私有密钥池,其中密钥管理服务器s1为成员c和中继r的群组密钥池kg的颁发方,同样具有群组密钥池kg。或者如图7,成员c和中继r的群组密钥池kg的颁发方为密钥管理服务器s2,具有群组密钥池kg,而s1没有群组密钥池kg。成员r作为通信中继,已经与成员s1进行了身份认证与密钥协商,因此r与s之间的通信已经实现对称加密,r侧的协商密钥用ckr和ikr表示,s1侧的协商密钥用ckr’和ikr’表示。如图5所示,成员c、成员r、成员s1和成员s2的身份识别码分别为id=idc、id=idr、id=ids1和id=ids2,同时成员c和成员r都记录有归属密钥管理服务器的身份识别码pid,即成员c的pid为ids2,成员r的pid为ids1。c、r、s1和s2的密码学模块均持有相对应的密钥池(包括私有密钥池和群组密钥池)、各类算法和鉴权密钥组。鉴权密钥组长度为2,第一个为历史密钥,第二个为使用密钥,其归属的密钥管理服务器拥有对应的鉴权密钥组。鉴权密钥组是基于私有密钥池实现的。每个密钥的符号表达详见图5。本实施例中,成员c、成员r均有安全隔离装置以存储密钥池。本实施例中成员c和成员r鉴权后最终协商的密钥为消息加密密钥ckcr(即保密性密钥)和消息认证密钥ikcr(即完整性密钥),成员c和服务端s1最终协商的密钥为消息加密密钥ckcs(即保密性密钥)和消息认证密钥ikcs(即完整性密钥)。本实施例可能处于无线多跳网络,那么成员c和成员r之间可能并非处于直接通信。如图1中,成员c与成员r之间消息的传递需要通过成员a1的转发。其中成员a1不参与对该消息的加密和解密。如果群组成员所发送的消息的群组消息,则群组内成员均可对该消息进行解密。

流程说明

本实施例的鉴权消息流程示意图请参考图6,实线表示的消息为本实施例的鉴权及密钥协商部分。本实施例的详细说明如下:

步骤1:成员c向中继r发起鉴权请求

此步骤请参考实施例1中的步骤1。

步骤2:中继r接收鉴权请求,向服务端转发鉴权请求

此步骤请参考实施例1中的步骤2。

步骤3:服务端s1转发认证向量请求

密钥管理服务器s1接收到来自中继r的认证向量的请求。利用与中继r的协商密钥ckr’和ikr’对请求中的密文进行解密和消息认证。解密及消息认证的具体流程请参考上述实施例1中步骤2.2。密钥管理服务器s1根据消息中中继r身份识别符idr和密钥管理服务器s2的身份识别符ids2将请求按指定的格式向量子通信网络中的密钥管理服务器s2。传输中,站与站之间通过qkd方式共享站间量子密钥的方式加密传输。密钥管理服务器s1所在量子网络服务站与密钥管理服务器s2所在量子网络服务站可能为相邻的站,也可能通过多个中继进行通信。

步骤4:服务端s2接收认证向量请求,生成认证向量

密钥管理服务器s2接收到密钥管理服务器s1转发的认证向量请求后,对该请求进行解密、认证和解析。根据请求的相关信息,生成n组的关于成员c的认证向量。具体流程请参考上述实施例1中步骤3。密钥管理服务器s2将n组认证向量及相对应的服务端期望认证应答xress和服务端协商密钥ckcs、ikcs。通过量子通信网络加密发送至密钥管理服务器s1。

步骤5:服务端s1加密转发认证向量

密钥管理服务器s1接收到来自密钥管理服务器s2的n组认证向量。密钥管理服务器s1利用与中继r的协商密钥ckr’和ikr’对认证向量进行消息认证码的生成和消息加密并发送至中继r。具体的加密及消息认证码生成的方式请参考上述实施例1中步骤2.3。

步骤6:中继r接收消息,计算协商密钥并向c发起提问

此步骤请参考实施例1中的步骤4。

步骤7:成员c验证提问消息,并返回应答

此步骤请参考实施例1中的步骤5。

步骤8:中继r验证成员c身份,返回鉴权结果

此步骤请参考实施例1中的步骤6。

步骤9:成员c接收验证认证结果

此步骤请参考实施例1中的步骤7。

鉴权密钥的更新

鉴权密钥的更新方法请参考实施例1中的鉴权密钥更新方法,具体的消息流程请参考图6。

鉴权与鉴权密钥更新组合方法

本组合方法可以参考实施例1的做法。鉴权密钥更新的方式请参考本实施例的“鉴权密钥的更新”。

鉴权异常的处理

异常处理情况请参考实施例1中的处理。当用于鉴权密钥更新或者有鉴权密钥更新参与时,如果消息传输过程中发生丢包异常可参考实施例1。成员c接收到提问消息后,从成员c到密钥管理服务器s2之间的消息传递发生的丢包和实施例1中成员c到密钥管理服务器s之间的异常处理情况一致;密钥管理服务器s2更新鉴权密钥组后,从密钥管理服务器s2到成员c之间的消息传递发生的丢包和实施例1中密钥管理服务器s到成员c之间的异常处理情况一致。

本发明中各个参数的符号只是为了方便说明,并不对本发明构成任何特殊限制。本发明中生成认证向量时可以一次产生n个,n的大小视情况而定。本发明可应用于多种无线多跳网络,如传感器网络、数据链等。

本发明的身份认证及密钥协商系统和方法,为群组成员和中继搭建了一个双方的安全的通道。该机制可保证重要等级高的信息只能由指定的用户可以对此消息进行解密,保证了消息在群组内的安全传输。同时群组密钥池降低了会话密钥(即协商密钥)被破解的风险。

以上公开的仅为本发明的实施例,但是本发明并非局限于此,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。显然这些改动和变型均应属于本发明要求的保护范围保护内。此外,尽管本说明书中使用了一些特定的术语,但这些术语只是为了方便说明,并不对本发明构成任何特殊限制。

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