首页> 中国专利> 一种身份隐藏且非延展安全的认证密钥协商方法

一种身份隐藏且非延展安全的认证密钥协商方法

摘要

本发明提供了一种身份隐藏且非延展安全的认证密钥协商方法,包括:第一设备将确定出的X′=AXd发送给第二设备,其中A=ga为第一设备公钥和X=gx和d=hd(X,auxd);第二设备确定Y′=BYe,其中B=gb为第二设备公钥和Y=gy和e=he(Y,auxe),并根据DH-指数y、私钥b以及X′确定S,并基于S确定KA和KB,根据KB和认证加密函数AE确定CB=AE(KB,(IB,B,CERTB,Y,DataB)),并将Y′和CB发送给第一设备;第一设备根据DH-指数x、私钥a以及Y′确定S,并基于S确定KA和KB,第一设备根据KA确定CA=AE(KA,(IA,A,CERTA,X,DataA)),并将CA发送给第二设备。在本会话密钥协商方法中,经合理的参数设置,每个设备运行2.5个模指数运算。这极大地减少了各个设备的数据计算量,提高了会话密钥的生成效率,并具有更优良的应用灵活。

著录项

  • 公开/公告号CN105099671A

    专利类型发明专利

  • 公开/公告日2015-11-25

    原文格式PDF

  • 申请/专利权人 赵运磊;

    申请/专利号CN201510513888.3

  • 发明设计人 赵运磊;李俊全;

    申请日2015-08-20

  • 分类号H04L9/08(20060101);

  • 代理机构

  • 代理人

  • 地址 200433 上海市杨浦区邯郸路220号复旦大学

  • 入库时间 2023-12-18 12:30:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-20

    专利权的转移 IPC(主分类):H04L 9/08 专利号:ZL2015105138883 登记生效日:20220907 变更事项:专利权人 变更前权利人:上海扈民区块链科技有限公司 变更后权利人:赵运磊 变更事项:地址 变更前权利人:202156 上海市崇明区新河镇新中路786弄5号345室 变更后权利人:200438 上海市杨浦区淞沪路2005号复旦大学(江湾校区)计算机学院717室

    专利申请权、专利权的转移

  • 2019-08-23

    专利权的转移 IPC(主分类):H04L9/08 登记生效日:20190802 变更前: 变更后: 申请日:20150820

    专利申请权、专利权的转移

  • 2019-03-15

    授权

    授权

  • 2015-12-23

    实质审查的生效 IPC(主分类):H04L9/08 申请日:20150820

    实质审查的生效

  • 2015-11-25

    公开

    公开

说明书

技术领域

本发明涉及密码技术领域,具体地说,涉及一种身份隐藏且非延展安全的认证密钥协商方法。

背景技术

认证密码协商是密码理论及应用的核心内容。大多数的认证密钥协商协议均需明文传输交互双方的身份和公钥信息。而在移动互联时代,在很多应用中用户的身份和公钥证书信息往往属于敏感信息,因此发展身份隐藏的认证密钥协商方法近年得到了网络与信息安全理论与应用工程的大量关注。

目前主流的身份隐藏密钥协商协议是IETF的IKE协议国际标准。IKE协议运行过程如下:

第一轮:第一用户发送参数X=gx至第二用户,其中,g表示有限群G′的循环子群G的生成元,x表示第一用于的DH-指数;

第二轮:第二用户发送参数Y=gy至第一用户,第二用户还计算参数K=Xy和参数CB=AE(K,(IB,B,CERTB,SigB)),其中SigB是第二用户利用其私钥对(X,Y)的数字签名,第二用户将(Y,CB)发送至第一用户。

第三轮:第一用户计算参数K=Yx和参数CA=AE(K,(IA,A,CERTA,SigA)),其中SigA是第一用户利用其私钥对(X,Y)的数字签名。第一用户将CB发送至用户B。

密码算法的主要计算单元是模指数运算。DSA数字签名标准的生成需要1个模指数运算,签名验证需要2个模指数运算。而对于IKE协议,每个用户需运行1次数字签名生成和1次数字签名验证,共计需运行3个模指数运算。另外,每个用户需运行另外2个模指数运算。

具体而言,这2个模指数运算分别为第一用户计算(X=gx,K=Yx)和第二用户计算(Y=gy,K=Xy)。因此,对于IKE算法来说,每个用户总共至少需要运行5个模指数运算。这也就导致了IKE算法难以在计算受限的设备(例如手机、智能卡等移动设备)上的配置和应用。

因此,在移动互联大规模普及和应用的背景下,亟需一种更为高效的新型身份隐藏且安全的认证密钥协商方法。

发明内容

为解决上述问题,本发明提供了一种身份隐藏且非延展安全的认证密钥协商方法,所述方法包括:

第一设备根据其生成的DH-指数x∈Zq和第一设备的公钥A=ga∈G,第一辅助信息auxA其可为空的数据集合,以及第一设备需加密传输的可为空数据集合DataA,确定第一参数X′=AXd∈G或X′=AdX∈G,其中X=gx∈G,d=h(X,auxd),是一个转换函数,1≤Ld≤|q|,|q|表示q的二进制长度,>auxdauxA{IA,A,CERTA,IB,B,CERTB}DataA,>并将所述第一参数X′以及第一辅助信息auxA发送给第二设备,其中,g表示有限群G′的循环子群G的阶为q的生成元,a∈Zq是第一设备的私钥,IA表示第一设备的身份,CERTA是第一设备的公钥证书,CERTB是第二设备的公钥证书,IB表示第二设备的身份,B=gb∈G是第二设备的公钥,b∈Zq是第二设备的私钥;

第二设备根据其生成的DH-指数y∈Zq和第二设备的公钥B=gb∈G以及第二辅助信息auxB其可为空的数据集合,以及第二设备需加密传输的可为空数据集合DataB,其中b∈Zq是第二设备的私钥,以及接受到所述第一参数X′及第一辅助信息auxA确定第二参数Y′=BYe∈G或Y′=BeY∈G,其中Y=gy∈G,e=he(Y,auxe),是一个转换函数,1≤Le≤|q|,>auxeauxAauxB{X,IB,B,CERTB,IA,A,CERTA}DataB,>he和hd可相同或不同,所述第二设备根据(b,y)以及第二辅助信息auxB以及接收到的所述第一参数X′及所述第一辅助信息auxA,确定预先共享密钥S,根据S以及{X′,Y′,auxA,auxB}的一个子集利用密钥导出函数KDF确定第一设备和第二设备的认证加密密钥KA和KB,其中KA和KB相等或不等,第二设备利用一个对称加密算法AE计算CB=AE(KB,(IB,B,CERTB,Y,DataB)),其中DataB是第二设备其它需加密传输的可为空的数据集合,所述第二设备将第二参数Y′和CB和auxB发送给所述第一设备,并导出会话密钥;

所述第一设备根据(a,x)以及所述第一辅助信息auxA和auxe以及接受到的所述第二参数Y′以及第二辅助信息auxB确定S,根据S以及{X′,Y′,auxA,auxB}的一个子集利用密钥导出函数KDF确定第一设备和第二设备的认证加密密钥KA和KB,然后利用KB解密接收到的所述CB得到(IB,B,CERTB,Y);所述第一设备验证公钥证书CERTB和第二参数Y′的有效性,若验证结果不正确则终止运行,若验证结果正确则计算CA=AE(KA,(IA,A,CERTA,X,DataA)),其中DataA是第一设备其它需加密传输的可为空的数据集合;第一设备将CA发送给第二设备,并导出会话密钥;

所述第二设备利用KA解密接收到的所述CA得到(IA,A,CERTA,X),验证公钥证书CERTA和第一参数X′的有效性,若验证结果不正确则终止运行,若验证结果正确则导出会话密钥;

具体实施中,推荐X′=AXd且Y′=BYe,或,X′=AdX且Y′=BeY;

要求第一设备和第二设备应计算出相同的预先共享密钥S,并导出相同的会话密钥。

根据本发明的一个实施例,

d=hd(IA,A,X,aux′d),aux′d为空或包含一个时间戳和/或一个第一设备选取的随机数rA和/或第二设备的身份和/或公钥信息,其中rA∈auxA或rA∈DataA,hd是一个哈希函数或hd的输出是X的x-轴坐标或X的x-轴坐标的一个函数;

和/或,e=he(IB,B,Y,X′,aux′e)或e=h(IB,B,Y=gy,aux′e),且可为空,或aux′e包含一个时间戳和/或一个第二设备选取的随机数rB和/或第一设备的身份和/或公钥信息,其中rB∈auxB或rB∈DataB,he是一个哈希函数或he的输出是Y的x-轴坐标或Y的x-轴坐标的一个函数;

和/或,auxA包含第一设备生成的随机数和/或时间戳和/或第一设备的身份信息和/或第一设备的IP地址信息,或auxA为空;auxB包含第二设备生成的随机数和/或时间戳和/或第二设备的身份信息和/或第二设备的IP地址信息,或auxB为空;

和/或,根据所需达到的安全强度需要,x的长度|x|以及y的长度|y|可变,以及d的长度Ld以及e的长度Le可变,即:0<|x|≤|q|,0<|y|≤|q|,0<Ld≤|q|,0<Le≤|q|,其中|q|表示的是q的长度,或x=hx(x′,auxx),其中hx:{0,1}*→{0,1}|x|是一个哈希函数,x′∈{0,1}*是第一设备选取的保密的随机数,推荐Ld=Le=[|q|/2],|x|=|y|=[|q|/2]或|x|=|y|=|q|;

和/或,所述第二设备确定出S后,还判断S是否为G′中的单位元,如果S为单位元,则停止执行后续步骤,否则继续后续步骤;和/或,所述第一设备确定出S后,还判断S是否为G′中的单位元,如果S为单位元,则停止执行后续步骤,否则继续后续步骤;

和/或,AE是一个对称认证加密算法,AE可以是确定待状态或随机的算法,并可是带有联合信息的认证加密函数(authenticatedencryptionwithassociateddata,AEAD)并可以提供消息长度隐藏功能。

根据本发明的一个实施例,

|x|=[|q|/2]或|x|=[|q|/4]或|x|=|q|;和/或|y|=[|q|/2]或|y|=[|q|/4]或|y|=|q|;和/或Ld≤[|q|/2]或Le≤[|q|/2],其中对于一个实数α,若α是小数则|[α]表示的是α的向上或向下取整。

根据本发明的一个实施例,

所述第一设备和/或第二设备所述根据如下表达式确定第一设备和第二设备的认证加密密钥KA和KB

{KA,KB,K′}←KDF(S,aux)

>aux{X,Y,auxA,auxB}>

其中,KDF是密钥导出函数,K′∈{0,1}*表示额外的导出密钥,可为空;

所述第一设备和第二设备将会话密钥设定为{KA,KB,K′}或{KA,KB}或K′,或者,会话密钥由K′或S以及>auxK{X,Y,IA,IB,A,B,X,Y,DataA,DataB,auxA,auxB}>导出。比如,会话密钥由KDF(K′,rA||rB),其中rA是第一设备选取的随机数且rA∈DataA或rA∈auxA(推荐rA∈DataA),rB是第二设备选取的随机数且rB∈DataB或rB∈auxB(推荐rB∈DataB),或KDF(K′,X||Y)。

根据本发明的一个实施例,

所述第二设备根据如下表达式确定S:

S=X′(b+ye)t或S=X′(be+y)t

所述第一设备根据如下表达式确定S:

S=Y′(a+xd)t或S=Y′(ad+x)t

其中,t表示伴随因子,即群G′的阶除以群G的阶的商。

推荐为:X′=AXd,Y′=BYe且S=X′(b+ye)t=Y′(a+xd)t,或X′=AdX,Y′=BeY且S=X′(be+y)t=Y′(ad+x)t

根据本发明的一个实施例,

所述第二设备根据如下表达式确定S:

S=X′(b+ye)或S=X′(be+y)

所述第一设备根据如下表达式确定S:

S=Y′(a+xd)或S=Y′(ad+x)

推荐为:X′=AXd,Y′=BYe且S=X′(b+ye)=Y′(a+xd),或X′=AdX,Y′=BeY且S=X′(be+y)=Y′(ad+x)

根据本发明的一个实施例,

所述第一设备在在确定S前,先检测第二参数Y′∈G是否成立,若不成立,则停止执行后续步骤;

且/或,所述第二设备在在确定S前,先检测第一参数X′∈G是否成立,若不成立,则停止执行后续步骤。

根据本发明的一个实施例,

所述第二设备验证第一参数X′的有效性的方法如下:根据方法约定计算d=h(IA,A,X,aux′d),然后验证X′=AXd∈G′(对应X′=AXd∈G这种情况)或X′=AdX∈G′(对应X′=AdX∈G这种情况);

所述第一设备验证第二参数Y′的有效性的方法如下:根据方法约定计算e=h(IB,B,Y=gy,X′,aux′e)或e=h(IB,B,Y,aux′e),然后验证Y′=BYe∈G′(对应Y′=BYe∈G这种情况)或Y′=BeY∈G′(对应Y′=BeY∈G这种情况)。

在现有的确定会话密钥的方法中,协议交互的每个设备均需要至少运行5个模指数运算。而在本发明所提供的会话密钥协商方法中,通过设置Ld=Lh=|q|/2和|x|=|y|=|q|/2,协议交互的每个设备(即第一设备和第二设备)仅需要进行2.5模指数运算。这也就极大地减少了各个设备的数据计算量,提高了会话密钥的生成效率,节省了设备的硬件资源,并在应用上具有更为优良的灵活性。

同时,在协议交互的每个设备进行数据交互的时,由于在本发明所提供的方法中,协议交互的信息并不涉及各个用户或设备的身份和公钥等隐私信息,因此相较于现有的确定会话密钥的方法,本方法能够有效保证用户或设别的隐私信息的安全性。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图做简单的介绍:

图1是根据本发明一个实施例的会话密钥确定方法的流程图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

同时,在以下说明中,出于解释的目的而阐述了许多具体细节,以提供对本发明实施例的彻底理解。然而,对本领域的技术人员来说显而易见的是,本发明可以不用这里的具体细节或者所描述的特定方式来实施。

另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤(尤其是在验证一组数据的有效性时,数据有效性验证的顺序是可变的)。

在密码技术中,G表示一个有限群G′的一个循环子群,其中有限群G′和循环子群G的阶分别为N和q,g是循环子群G的生成元。1G表示有限群G′的单位元,其中,G/1G表示循环子群G中除了单位元1G之外的所有元素所构成的集合,G′/1G表示由有限群G′减去单位元1G之后其他元素的集合(即有限群G′中非1G的集合)。对于任意元素X∈G′,X-1表示元素X相对于有限群G′的逆元,即XX-1=1G

一般而言,循环子群G的阶q为一个大的素数。典型地,|q|为256或512,其中|q|表示q以2进制表示时的长度。Zq为数字集合{0,1,2,...,q-1},而则表示数字集合{1,2,...,q-1}。

为了表述的方便,本发明中,采用乘法表示(multiplicativerepresentation)群上的操作,即有限群G′和循环子群G为乘法群。当然,本方法也可以等价地应用到加法群上,例如椭圆曲线以及其他代数群或具体的群、有限域、复数或复合模(compositemoduli)等。

一般而言,对于乘法群上的操作,指数上的操作是对q的求模,而群上元素的操作是对N或N+1求模操作或其他操作以保证操作的结果是有限群G′或循环子群G中的元素。例如,gx通常指的是gxmodq,gxgy通常表示的是gxgy∈G′,x+y∈Zq表示的是(x+y)modq,xy∈Zq表示的是(xy)modq。

本实施例中,参数G、q和g,所使用的认证加密算法AE及其密钥长度,所使用的AE、KDF等算法,第一参数X′的具体计算方式,第二参数Y′的具体计算方式,参数Ld,Le,L,hd,he会话密钥长度,以及auxA,auxB,aux,auxK,auxh,auxe,DataA,DataB,具体取值和设置方式等可以在发明方法运行之前确定并在运行方法的用户或设备之间达成一致,抑或是运行发明方法的用户和设备在协议运行之前或之中交换和协商这些参数并达成一致,本发明不限于此。

如果离散对数假设在循环子群G上成立,即给定X=gx∈G(其中,x从数字集合中随机选取,LA≤|q|标示0-1串的长度),没有概率多项式时间的算法能够以不可忽略的概率由X求出x。

在后续的描述中,采用IA和IB来标示不同用户或设备的逻辑或区别性的身份(例如名字、设备序列号、email、IP地址或是方法运行中的角色等)。而这些身份标示可可能伴随、包含或包含于一个数字证书。

本实施例中,具有身份标示IA的第一设备具有与之对应的公钥A。本实施例中,A=ga∈G。其中,a标示第一设备的私钥,其可以由第一设备在>Zq*={1,2,...,q-1}>中随机选取。

相应地,本实施例中,具有具有身份标示IB的第二设备具有与之对应的公钥B。本实施例中,B=gb∈G。其中,b标示第二设备的私钥,其可以由第二设备在中随机选取。

需要指出的是,在没有特别说明的情况下,公钥A与第一设备的绑定以及公钥B与第二设备的绑定,是由一个可信第三方机构来执行。例如对于第一设备,可信第三方机构通常会检查第一设备的身份标示IA的有效性以及对应公钥A的有效性,然后对(IA,A)做一个数字签名,并将(IA,A)以及可信第三方所生成的数字前景形成一个针对(IA,A)的公钥证书,即为CERTA

图1示出了本实施例所提供的会话密钥确定方法的流程图。

如图1所示,在本实施例中,第一设备首先根据其公钥A和第一设备的DH密钥成分X的离散对数(即DH-指数)x,确定第一参数X′。本实施例中,第一设备的公钥A可以采用如下表达式确定的道:

A=ga(1)

其中,a表示第一设备的私钥。

第一参数X′可以根据如下表达式计算得到:

X=gx,X′=AXd,d=hd(IA,A,X,tA)(2)

其中tA是一个时间戳信息,d的长度,即Ld,设置为|q|/2。

得到参数X′后,第一设备将{X′,auxA}发送给第二设备。其中,auxA表示第一设备生成的辅助信息(即第一辅助信息)。本实施例中,第一辅助信息auxA为除第一设备的身份标示、公钥以及公钥证书信息之外的其他与协议执行相关的信息的一个子集或序列。

需要指出的是,在本发明的不同实施例宗,第一辅助信息auxA既可以为空,也可以包含重复元素,本发明不限于此。当第一辅助信息auxA为空时,第一设备也就是将第一参数X′发送给第二设备。当第一辅助信息auxA不为空时,第一辅助信息auxA所包含的信息可以包括以下所列项中的任一项或几项:第一设备的IP地址、第二设备的IP地址、第一设备发送的其他随机数和会话标识符sid等。

第二设备接收到第一设备发送来的{X′,auxA}后,计算e=he(IB,B,Y=gy,X′),其中(IB,B)可以用CERTB或CERTB的哈希来替换,t表示伴随因子,它是群G′的阶除以群G的阶的商,B表示第二设备公钥,e的长度,即Le,设置为|q|/2。本实施例中,第二设备根据如下表达式计算第二参数Y′和预先共享密钥S:

Y′=Bgye(3)

S=X′(b+ye)t(4)

本实施例中,第二设备在得到预先共享密钥S后会判断计算得到的预先共享密钥S是否为单位元,即判断S=1G是否成立。如果成立,第二设备将终止执行后续步骤,从而终止会话运行;如果不成立,第二设备则会根据计算得到的参数S来计算{KA,KB,K′}。具体地,本实施例中,第二设备根据如下表达式计算{KA,KB,K′}:

{KA,KB,K′}←KDF(S,aux)(5)

其中,KDF表示密钥导出函数。一般而言,KDF既然可以是一个哈希函数或哈希函数序列(例如HMAC,HKDF等),也可以是一个以预先共享密钥S为随机种子的伪随机函数。aux表示辅助信息,其可以为一个数值字符串集合或计数器。在本发明的不同实施例中,aux可以为集合{X′,Y′,auxA,auxB}的一个子集,推荐在图1所示的实施例中,aux={X′,Y′}。

本实施例中,KA∈{0,1}L表示第一设备使用的认证加密的密钥,其用于认证加密第一设备发送给第二设备的信息,其中L表示的是认证加密函数密钥的长度。KB∈{0,1}L表示第二设备使用的认证加密的密钥,其用于认证加密第二设备发送给第一设备的信息。K′∈{0,1}*是额外导出密钥。需要指出的是,根据应用场景,额外导出密钥K′可以为空。

在本发明的不同实施例中,密钥KA与密钥KB既可以相同,也可以不同。如果密钥KA与密钥KB相同,即存在:

KA=KB=K∈{0,1}L(6)

第二设备则根据根据预先共享密钥S来计算{K,K′},即:

{K,K′}←KDF(S,aux)(7)

需要说明的是,在本发明的不同实施例中,会话密钥和认证密钥既可以由同一个密钥导出函数在相同的输入上导出,也可以由同一密钥导出函数在不同的输入上分别导出。此外,会话密钥和认证密钥还可以由不同的密钥导出函数在相同的输入上或不同的输入上分别导出。在图1所示的实施例中,会话密钥是由K′和auxK={X′,Y′}导出。在应用中,auxK还可以包含{rA,rB},其中rA∈auxA或rA∈DataA,rB∈auxB或rB∈DataB

本实施例中,第二设备计算得到{KA,KB,K′}后,将根据密钥KB来计算第二设备密文CB。具体地,本实施例中,第二设备根据如下表达式计算第二设备密文CB

CB=AE(KB,(IB,B,CERTB,Y,DataB)(8)

其中,IB表示第二设备的身份标示,B表示第二设备的公钥,CERTB表示第二设备的公钥证书,DataB表示第二设备需要进行加密传输的可为空的部分数据,AE是一个认证加密函数,其可以是确定的、或随机的、或带状态的,并可是带有联合信息的认证加密函数(authenticatedencryptionwithassociateddata,AEAD)并可以提供消息长度隐藏功能。若AE是带有联合信息的认证加密函数,Y′和/或auxB的部分(比如第二用户的IP地址,和/或,第一用户的IP地址等)或全部可以作为联合信息的一部分。

本实施例中,DataB为除用户身份IB、公钥B、公钥证书CERTB以外的其他与协议执行相关的信息的一个子集或序列他,其可以为空或包含重复元素。本实施例中,其它与协议执行相关的信息包括以下所列项中的任一项或几项:

用户需传输或认证的消息,全部或部分系统参数,参数{|x|,|y|,Lh,L},参数协议初试者和响应者的标示、IP地址、协议版本,安全参数和密钥参数,协议的会话标志符,用户交换的随机数,时间戳,cookie,认识数值,以及其他协议会话需要传输的信息(例如参数X′和/或参数Y′)等。在图1所示的实施例中,DataB为空。

需要指出的是,本实施例中,AE(KB,(IB,B,CERTB,Y,DataB)指的是先将集合{IB,B,CERTB,Y,DataB}中的所有元素按照预设顺序(该预设顺序可以任意,但是需要协议交换的双方均实现知晓并达成一致)连接,例如得到MB=IB||B||CERTB||B||DataB;随后将MB按照预设编码规则编码成二进制,并将得到的二进制编码利用KB进行认证加密。

第二设备得到第二设备密文CB后,会将{Y′,CB,auxB}发送给第一设备。其中,auxB表示第二辅助信息,其可以是除第二设备的身份标示、公钥以及公钥证书信息之外的其他与协议执行相关的信息的一个子集或序列。第二辅助信息auxB既可以为空,也包含重复元素。例如,第二辅助信息auxB所包含的信息可以为以下所列项中的任一项或几项:第一设备的IP地址、第二设备的IP地址、第二设备发送的其他随机数和会话标识符sid等。

第一设备接收到第二设备发送来的{Y′,CB,axuB}后,会根据第二参数Y′计算S。具体地,本实施例中,第一设备根据如下表达式计算预先共享密钥S:

S=Y′(a+xd)t(9)

第一设备确定得到预先共享密钥S后,会判断预先共享密钥S是否为单位元,即判断S=1G是否成立。如果成立,第一设备将停止执行后续步骤,从而终止会话运行。如果不成立,第一设备则会根据计算得到的预先共享密钥S来计算{KA,KB,K′}。具体地,本实施例中,第一设备根据如下表达式计算{KA,KB,K′}:

{KA,KB,K′}←KDF(S,aux)(10)

随后,第一设备根据得到的第二设备的认证加密密钥KB以及第二设备密文CB来计算(IB,B,CERTB,Y)。具体地,本实施例中,第一设备根据如下表达式计算(IB,B,CERTB,Y):

(IB,B,CERTB,Y)←DE(KB,CB)(11)

其中,DE表示对应于认证加密函数AE的解密函数。

本实施例中,第一设备在得到(IB,B,CERTB,Y)后,会对第二设备的公钥证书CERTB、计算e=he(IB,B,Y=gy,X′)并对第二参数Y′进行验证。具体地,本实施例中,验证Y′=BYe∈G′是否成立,及CERTB的有效性。如果Y′=BYe∈G′且公钥证书CERTB有效,第一设备则认为公钥证书CERTB、以及第二参数Y′通过了验证;否则认为公钥证书CERTB、以及第二参数Y′没有通过验证,此时第一设备将停止进行后续步骤,从而终止会话运行。

当公钥证书CERTB、以及第二参数Y′通过了第一设备的验证操作后,第一设备便可以根据所得到的参数按照预设规则确定出会话密钥。具体地,本实施例中,第一设备优选地利用K′和auxK={X,Y}导出会话密钥。

当公钥证书CERTB、以及第二参数Y′通过了第一设备的验证操作后,第一设备还将根据认证加密密钥KA确定第一设备密文CA。具体地吧,本实施例中,第一设备根据如下表达式计算第一设备密文CA

CA=AE(KA,(IA,A,CERTA,X,DataA))(12)

其中,IA表示第一设备的身份标示,A表示第一设备的公钥,CERTA表示第一设备的公钥证书,DataA表示第一设备需要进行加密传输的可为空的部分数据。若AE是带有联合信息的认证加密函数,X′和/或auxA的部分或全部可以作为联合信息的一部分。在图1所示的实施例中,DataA包含一个时间戳信息tA

第一设备得到第一设备密文CA后,会将第一设备密文CA发送给第二设备。

第二设备接收到第一设备发送来的第一设备密文CA后,会根据第一设备密文CA来确定(IA,A,CERTA,X,DataA)。具体地,本实施例中,第二设备根据如下表达式确定(IA,A,CERTA,X,DataA):

(IA,A,CERTA,X,DataA)←DE(KA,CA)(13)

得到(IA,A,CERTA,X,DataA)后,第二设备将会对所得到的时间戳信息tA和第一参数X′及第一设备的公钥证书CERTA进行验证。具体地,本实施例中,第二设备对时间戳信息tA和公钥证书CERTA的有效性进行验证,并验证X′=AXd∈G′是否成立,如果时间戳信息tA和公钥证书CERTA有效、且X′=AXd∈G′成立,第二设备则认为公钥证书CERTA、以及第一参数X′通过了验证;否则认为时间戳信息tA或公钥证书CERTA或第一参数X′没有通过验证,此时第二设备将停止进行后续步骤,从而终止会话运行。

当第二设备认为时间戳信息tA和公钥证书CERTA、以及第一参数X′通过验证时,第二设备则基于{KA,KB,K′}设置会话密钥。一般而言,若K′为空,即会话密钥设置为{KA,KB},这对应于安全认证信道(而不仅仅是密钥协商)。在图1所示实施例中,优选地利用K′和auxK={X,Y}导出会话密钥。

需要说明的是,在发明的其他实施例中,第一设备和第二设备还可以将其它合理参数设定为会话密钥(例如K′,或由K′或S以及>auxK{X,Y,IA,IB,A,B,DataA,DataB,auxA,auxB}>导出),本发明不限于此。例如在本发明的其他实施例中,第一设备和第二设备还可以根据预设规则,将{KA,KB}或额外导出密钥K′作为会话密钥,抑或是由第三辅助信息auxK以及额外导出密钥K′或预先共享密钥S导出会话密钥。其中,第三辅助信息auxK为{X′,Y′,X,Y,IA,IB,A,B,DataA,DataB,auxA,auxB}子集,且包含第一设备和第二设备的身份标示IA和IB,即存在:

>{IA,IB}auxK{X,Y,X,Y,IA,IB,A,B,DataA,DataB,auxA,auxB}---(14)>

需要指出的是,在上述描述中,第一设备和第二设备还可以采用其他合理的方式来计算预先共享密钥S,本发明不限于此。

例如在本发明的其他实施例中,第二设备还可以采用如下表达式来计算预先共享密钥S:

S=X′(b+ye)(15)

相应地,第一设备则根据如下表达式计算预先共享密钥S:

S=Y′(a+xd)(16)

需要说明的是,在该实施例中,第一设备和/或第二设备还在得到预先共享密钥S后,可不对预先共享密钥S是否为单位元进行检验的,但是此时第二设备需要在计算预先共享密钥S前检查确认X′∈G是否成立。如果成立,则继续进行后续步骤,否则终止执行后续步骤。

同时,还需要指出的是,在本发明的其它实施例中,还可以采用其它合理方式来计算第一参数X′和第二参数Y′,本发明同样不限于此。例如在本发明的一个实施例中,第一设备可以根据如下表达式计算第一参数X′:

X′=AdX(17)

相应地,第二设备则根据如下表达式计算第二参数Y′:

Y′=BeY(18)

此时,在该实施例中,第一设备将根据如下表达式计算预先共享密钥S:

S=Y′(ad+x)t(19)

而第二设备将根据如下表达式计算预先共享密钥S:

S=X′(be+y)t(20)

在该实施例中,第一设备在得到(IB,B,CERTB,Y)后,对第二设备的公钥证书CERTB、第二参数Y′进行验证时,会对公钥证书CERTB的有效性进行验证,并验证且Y′=BeY∈G′是否成立。同理,第二设备在得到(IA,A,CERTA,X)后,对第一设备的公钥证书CERTA、第一参数X′进行验证时,会对公钥证书CERTA的有效性进行验证,并验证X′=AdX∈G′是否成立。

需要说明的是,在本实施例中,DH-指数x和DH-指数y满足如下表达式:

|x|=|y|=Lh=[|q|/2](21)

即,DH-指数x和DH-指数y的二进制长度相等,并等于有限群G′的循环子群G的阶q的二进制长度的一半取整(在不同实施例中,可以为向上取整,也可以为向下取整)。

需要说明的是,在本发明的其他实施例中,DH-指数x和DH-指数y的二进制长度还可以为其他合理值,本发明不限于此。例如在本发明的其他实施例中,DH-指数x和DH-指数y长度还可以满足如下表达式:

|x|=|y|=[|q|/4]或|x|=|y|=|q|(22)

在本发明的另一实施例中,第一设备和第二设备预先配置共享密钥(K1,K2)。第一设备根据其公钥A和第一设备的DH密钥成分X的离散对数x,确定第三参数X″。本实施例中,第一设备的公钥A可以采用如下表达式确定的道:

A=ga(23)

其中,a表示第一设备的私钥。

第三参数X″可以根据如下表达式计算得到:

>X=AXdK1>或X″=AXd(24)

其中d=hd(IA,A,X,rA,tA,IB,B,K1)或d=hd(IA,A,X,rA,tA,IB,B),rA是第一设备选取的随机数。若X″=AXd,优先设置d=hd(IA,A,X,tA,IB,B,K1)。

得到第三参数X″后,第一设备将第三参数X″发送给第二设备。

第二设备接收到第一设备发送来的第三参数X″后,会根据第三参数X″计算预先共享密钥S。同时,第二设备还会计算第四参数Y″。具体地,本实施例中,第二设备在计算预先共享密钥S时,首先根据第三参数X″计算参数X′,随后根据参数X′以及第二设备的DH密钥成分Y的离散对数y计算参数S,即:

>X=XK1>(对于>X=AXdK1>这种情况)(25)

S=X′(b+ye)t(26)

具体地,本实施例中,第二设备根据如下表达式计算第四参数Y″:

>Y=BgyeK1>或Y″=Bgye(27)

其中,t表示伴随因子,B表示第二设备的公钥。其中e=he(IB,B,Y,rB,IA,A,X′,K1)或e=he(IB,B,rB,Y,IA,A,X′),rB是第二设备选取的随机数。若Y″=Bgye,优先设置e=he(IB,B,rB,Y,IA,A,X′,K1)。

本实施例中,第二设备在得到S后会判断计算得到的预先共享密钥S是否为单位元,即判断S=1G是否成立。如果成立,第二设备将通知执行后续步骤,从而终止会话运行;如果不成立,第二设备则会根据计算得到的参数S来计算{KA,KB}。具体地,本实施例中,第二设备根据如下表达式计算{KA,KB}:

>{KA,KB,K}KDF(SK2,X||Y)---(28)>

其中,KDF表示预设密钥导出函数。

需要说明的是,在本发明的不同实施例中,会话密钥和认证密钥既可以由同一个密钥导出函数在相同的输入上导出,也可以由同一密钥导出函数在不同的输入上分别导出。此外,会话密钥和认证密钥还可以由不同的密钥导出函数在相同的输入上或不同的输入上分别导出。

同时,本实施例中,对称密钥(K1,K2)中的参数K1和K2相互独立或相等,并且存在:

|K1|=|K2|=|X′|=|Y′|=|S|(29)

即:参数K1、K2、X′、Y′和S的二进制长度相等或不等。

需要说明的是,在本实施例中,在确定会话密钥时,第一设备和第二设备事先共享对称密钥(K1,K2),即对称密钥(K1,K2)对于第二设备和第二设备来说是已知的。

本实施例中,第二设备计算得到{KA,KB}后,将根据第二设备的认证加密密钥KB来计算第二设备密文CB。具体地,本实施例中,第二设备根据如下表达式计算CB

CB=AE(KB,(IB,B,CERTB,Y,rB)(30)

其中,IB表示第二设备的身份标示,B表示第二设备的公钥,CERTB表示第二设备的公钥证书。

需要指出的是,本实施例中,AE(KB,(IB,B,CERTB,Y,DataB)指的是先将集合{IB,B,CERTB,Y,DataB}中的所有元素按照预设顺序(该预设顺序可以任意,但是需要协议交换的双方均实现知晓并达成一致)连接,例如得到M=IB||B||CERTB||Y||DataB;随后将M按照预设编码规则编码成二进制,并将得到的二进制编码利用KB进行认证加密。

第二设备得到CB后,会将{Y″,CB}发送给第一设备。第一设备接收到第二设备发送来的{Y″,CB}后,会根据第四参数Y″计算预先共享密钥S。具体地,本实施例中,第二设备在计算预先共享密钥S时,首先根据第四参数Y″计算参数Y′,随后根据参数Y′以及第二设备的DH密钥成分X的离散对数x计算预先共享密钥S,即:

>Y=YK1>(对应>Y=BgyeK1>这种情况)(31)

S=Y′(a+xd)t(32)

第一设备确定得到预先共享密钥S后,会判断预先共享密钥S是否为单位元,即判断S=1G是否成立。如果成立,第一设备将停止执行后续步骤,从而终止会话运行。如果不成立,第一设备则会根据计算得到的预先共享密钥S来计算{KA,KB}。具体地,本实施例中,第一设备根据如下表达式计算{KA,KB}:

>{KA,KB,K}KDF(SK2,X||Y)---(33)>

随后,第一设备根据得到的第二设备的认证加密密钥KB以及第二设备密文CB来计算(IB,B,CERTB,Y)。具体地,本实施例中,第一设备根据如下表达式计算(IB,B,CERTB,Y):

(IB,B,CERTB,Y,rB)←DE(KB,CB)(34)

其中,DE表示对应于认证加密函数AE的解密函数。

本实施例中,第一设备在得到(IB,B,CERTB,Y)后,会对第二设备的公钥证书CERTB、第四参数Y″进行验证。具体地,本实施例中,第一设备对公钥证书CERTB的有效性进行验证,并验证(对应这种情况)或Y″=BYe∈G′(对应Y″=BYe这种情况)是否成立,如果公钥证书CERTB和Y″有效则进行后续步骤;否则第一设备将停止进行后续步骤,从而终止会话运行。

当公钥证书CERTB、以及第四参数Y″通过第一设备的验证操作后,第一设备将根据KA确定第一设备密文CA。具体地吧,本实施例中,第一设备根据如下表达式计算第一设备密文CA

CA=AE(KA,(IA,A,CERTA,X,tA,rA))(32)

第一设备得到第一设备密文CA后,会将第一设备密文CA发送给第二设备,并将KDF(K′,X||Y||rA||rB)设置为会话密钥。

第二设备接收到第一设备发送来的第一设备密文CA后,会根据第一设备密文CA来确定(IA,A,CERTA,X,tA,rA)。具体地,本实施例中,第二设备根据如下表达式确定(IA,A,CERTA,X,tA,rA):

(IA,A,CERTA,X,tA,rA)←DE(KA,CA)(33)

得到(IA,A,CERTA,X,tA,rA)后,第二设备检查时间戳信息tA的有效项(若无效则种子后续运行),根据约定的方式计算d,对所得到的第一设备的公钥证书CERTA、第三参数X″进行验证。具体地,本实施例中,第二设备对公钥证书CERTA的有效性进行验证,并验证(对应这种情况)或X″=AXd∈G′(对应X″=AXd这种情况)是否成立,如果公钥证书CERTAH和X″有效,则进行后续的步骤;否则,第二设备将停止进行后续步骤,从而终止会话运行。

第二设备则将KDF(K′,X||Y||rA||rB)设置为会话密钥。

需要说明的是,在本实施例中,上述参数、函数、算法、用户角色标示以及会话标示符号的表示方法、密钥导出机制以及参数auxA,auxB,auxK等,均可以由协议运行双方(即第一设备和第二设备)基于预设机制协商确定。然而参数|x|和d的长度可以有第一设备单独确定,参数|y|以及e的长度可以由第二设备单独确定。

在现有的确定会话密钥的方法中,协议交互的每个设备均需要运行5个模指数运算。而在本发明所提供的确定会话密钥的方法中,令Ld=Le=|x|=|y|=[|q|/2],协议交互的每个设备仅需运行2.5格模指数运算。这就极大地减少了各个设备的数据计算量,提高了会话密钥的生成效率,节省了设备的硬件资源。另外,由于Ld,Le,|x|,|y|等参数可以动态调整,本发明所提供的会话密钥协商方法在应用上也更为灵活。

应该理解的是,本发明所公开的实施例不限于这里所公开的特定处理步骤,而应当延伸到相关领域的普通技术人员所理解的这些特征的等同替代。还应当理解的是,在此使用的术语仅用于描述特定实施例的目的,而并不意味着限制。

说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。

虽然上述示例用于说明本发明在一个或多个应用中的原理,但对于本领域的技术人员来说,在不背离本发明的原理和思想的情况下,明显可以在形式上、用法及实施的细节上作各种修改而不用付出创造性劳动。因此,本发明由所附的权利要求书来限定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号