基于身份的认证群组密钥管理方法

文档序号:7928375阅读:264来源:国知局
专利名称:基于身份的认证群组密钥管理方法
技术领域
本发明涉及网络安全技术领域,具体地说,是一种基于身份的认证群组密钥共享和管理方法,可用于在协同和分布式网络应用中进行安全可靠的群通信,如组播、音频视频会议、网络协同游戏。

背景技术
业内周知,在许多协同和分布式网络应用中,如组播、音频视频会议、网络协同游戏,安全可靠的群通信是一个关键问题。群组会话密钥共享和管理能够很好解决这一问题。一个安全群组通信系统提供的基本安全服务包括数据保密性、完整性、成员认证和存取控制。实现对信息的限制访问通常采用的方法是对群组的消息进行加密。如果所有的群组成员都共享一个共同的密钥,就可以很方便的实现这些安全服务,这个共享的密钥被称为群组密钥。研究群组密钥的生成、分发和更新维护的机制是群组密钥管理机制需要解决的主要问题。
实现认证性,基于身份的认证机制相对基于公钥基础设施PKI的系统能够大大简化密钥分发过程。国内外学者在这方面提出了许多方法,主要的问题集中在以下几方面(1)在密钥生成中心KGC和组成员之间需要事先存在一个安全信道,在实际中这是一个非常苛刻的要求; (2)存在隐性的密钥托管,这一点有时是不希望有的;(3)密钥协商过程一般需要O(n 1gn)或O(n)轮通信,网络通信负担较大;(4)计算有效性较差,一般需要O(n 1gn)或O(n)次配对运算。


发明内容
本发明目的在于避免以上提及的技术不足,提出一种高效、实用的基于身份认证群组密钥共享和管理的方法,以实现低通信开销和低计算开销的、不需要安全信道和无密钥托管的群组密钥共享。
为实现上述目的,本发明的技术过程如下 (1)密钥生成中心KGC和所有组成员运行BDH参数产生器生成阶为第一个素数q的群G1、第二个阶为素数q的群G2和双线性映射eG1×G1→G2; (2)密钥生成中心KGC选择自己的秘密钥和公开参数,并生成自己的公开钥,将公开参数和公开钥公布给所有组成员; (3)每个组成员ui,i=1,...,n,选择自己的秘密钥si以及秘密参数

根据秘密钥和自己的身份标识IDi生成公开钥Qi; (4)密钥生成中心KGC根据自己的秘密钥和每个组成员ui,i=1,...,n,的身份标识IDi生成ui主密钥的一部分Ci,并通过公开信道将该Ci发送给组成员ui; (5)每个组成员ui,i=1,...,n,根据自己的秘密钥si以及秘密参数

生成自己的主密钥其中H1是从0和1组成的比特序列集合映射到第二个群G2的H ash函数; (6)每个组成员ui,i=1,...,n,根据自己的主密钥ki和自己的公开钥Qi的Hash值hi组成对公开钥Qi的验证信息Ti=siPpub+hiki,并将公开钥Qi与该验证信息Ti链接,广播给所有其他组成员,其中Ppub是密钥生成中心KGC的公开钥,这是第一轮广播; (7)每个组成员ui,i=1,...,n,收到其左邻居ui-1和右邻居ui+1的第一轮广播消息后,验证广播消息的真实性,如果是真实的,先计算其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值

再根据这两个中间值计算群组会话密钥中所包含的该组成员的信息Xi,并广播该Xi,这是第二轮广播; (8)每个组成员ui,i=1,...,n,根据计算的Xi以及收到的所有其他组成员广播的消息Xj,j=1,...,n,j≠i,计算此次会话的群组会话密钥K; (9)若任意成员离开,该成员的左邻居和右邻居分别删除它们和离开成员共享的秘密中间值,并通过两方密钥协商协议重新共享新的秘密中间值,组成员uj,j=1,...,n-1,计算群组会话密钥中所包含的该组成员的信息Xj,并广播该Xj,再执行步骤(8); (10)若有新成员un+1加入,该新成员un+1通过两方密钥协商协议,分别与第n个成员un和第1个成员u1共享秘密中间值,组成员uj,j=1,...,n+1,各自计算群组会话密钥中所包含的该组成员的信息Xj,并在广播该Xj后执行步骤(8)。
本发明具有如下优点 (1)本发明由于组成员的秘密钥由KGC和成员共同产生,各拥有秘密钥的一部分信息,从而避免了密钥托管,秘密钥只有组成员自己拥有。
(2)本发明由于密钥生成中心KGC发送给组成员的密钥不需要保密,可以通过公开信道发送,因此KGC和组成员之间不需要事先存在安全信道,解决了应用过程中一个非常棘手的问题; (3)本发明由于将组成员的身份信息嵌入密钥中,使密钥既用来加密也用于身份认证,杜绝了任何未经KGC批准的非法者加入群组会话。
(4)相比已有方法,本发明在计算量和通信量上都大有改善,其密钥分发过程中只有两轮广播,而之前的群组密钥分发方案广播轮数要么和用户数成正比,要么和用户数的对数成正比;在计算上以本发明以二元加法为主,每个用户分别只需计算5个配对运算,而之前方案一般都需要大量配对运算,O(n 1g n)或O(n)。
已经过理论推导证明,本发明方法在DBDH假设和CDH假设下是前向安全的。



图1是本发明的基于身份的认证群组密钥共享步骤示意图; 图2是本发明的任意组成员离开群组后新的群组密钥重新共享步骤示意图; 图3是本发明的新组成员加入后新的群组密钥重新共享步骤示意图。

具体实施例方式 一、本发明所应用的数学理论及技术术语说明 1、Hash函数 Hash函数就是把任意长的输入消息变化成固定长的输出消息的一种函数,这个输出称为该消息的Hash值。一个安全的Hash函数应该至少满足以下几个条件;①输入长度是任意的;②输出长度是固定的,一般至少取128bits长,以便抵抗生日攻击;③对每一个给定的输入,可很容易地计算其输出,即Hash值;④给定Hash函数的描述,找到两个不同的输入消息Hash到同一个值是计算上不可行的,或给定Hash函数的描述和一个随机选择的消息,找到另一个与该消息不同的消息,使得它们Hash到同一个值是计算上不可行的。Hash函数主要用于完整性校验和提高数字签名的有效性。
本发明中共有三个Hash函数,其中H1{0,1}*→G1,是从0和1组成的比特序列集合映射到群G1;H2{0,1}*→Zq,是从0和1组成的比特序列集合映射到加法循环群Zq;HG2→{0,1}m,从群G2映射到由0和1组成的长为m的比特序列集合,m为正整数。
2、可容许双线性映射 如果映射eG1×G1→G2满足下面的条件就称其为可容许双线性映射 (1)双线性。对于任意P,Q,R∈G1和α,β∈Zq有 e(αP+βQ,R)=e(P,R)αe(Q,R)β e(R,αP+βQ)=e(R,P)αe(R,Q)β’ 特别地 e(αP,βQ)=e(P,Q)αβ, 其中G1是阶为q的加法群,G2是阶为q的乘法群,在G1、G2中求解离散对数是困难的。
(2)非退化性e为非平凡映射,即e不会把G1×G1中的所有元都映射到G2的单位元上。
(3)可计算性对任意的P,Q∈G1,存在有效算法计算e(P,Q)。
双线性映射可以通过超奇异椭圆曲线上的Weil配对或Tate配对来构造。
3、有关技术术语 (1)KGC,密钥生成中心。在基于身份的密码体制中,用户的秘密钥要由KGC生成并通过安全信道发送给用户,这会引入两个安全缺陷①隐性的密钥托管,②KGC和用户之间需要安全信道。本发明避免了基于身份的密码体制这一缺点。
(2)配对运算,即双线性映射eG1×G1→G2,将加法群G1中的两个元即椭圆曲线上的两个点映射到乘法群G2中。
(3)CDH产生器 CDH产生器是一个概率多项式时间算法,运行在多项式时间内,输出阶为q的加法群G。
(4)BDH产生器 BDH产生器是一个概率多项式时间算法,运行在多项式时间内,输出两个阶为q的加法群G1和G2,以及一个可容许双线性映射eG1×G1→G2。
(5)DBDH问题,即对于群G1中的随机元素Y和Zq*中的随机元素a,b,c,d,区分五元组(Y,aY,bY,cY,e(Y,Y)abc)和(Y,aY,bY,cY,e(Y,Y)d)是困难的。
二、本发明的具体实现 参照图1,本发明分为认证群组密钥共享、成员离开后群组密钥的重新共享和新成员加入后群组密钥的重新共享三部分,具体步骤如下 (一)本发明的认证群组密钥共享步骤 步骤一,密钥生成中心KGC和所有组成员运行BDH参数产生器生成第一个阶为素数q的群G1、第二个阶为素数q的群G2和双线性映射eG1×G1→G2; 步骤二,KGC选择秘密钥和公开参数,生成自己的公开钥,并将公开参数和公开钥公布给所有组成员。
(2.1)密钥生成中心KGC选择自己的随机秘密钥s∈Zq*,P∈G1是群G1的生成元,Zq*是模q的乘法循环群; (2.2)KGC根据其自己的秘密钥计算公开钥Ppub=sP,公开参数为{e,G1,G2,q,P,Ppub,H,H1,H2},其中Hash函数H1:{0,1}*→G1,Hash函数H2:{0,1}*→Zq,Hash函数H:G2→{0,1}m,m为正整数。
步骤三,每个组成员ui,i=1,...,n,选择自己的秘密钥si以及秘密参数

根据秘密钥和自己的身份标识IDi生成公开钥Qi。
(3.1)每个组成员ui选择si∈Zq*作为自己的秘密钥,选择随机秘密数 (3.2)每个组成员ui计算身份信息Pi=H1(sessionID,IDi),则ui的公开钥为Qi=siPi,其中sessionID是此次会话的会话标识,IDi是组成员ui的身份标识,令Wi是公开参数。
步骤四,密钥生成中心KGC根据自己的秘密钥和每个组成员ui,i=1,...,n的身份标识IDi生成ui主密钥的一部分Ci,并通过公开信道将该Ci发送给该组成员ui。
(4.1)KGC计算群每个组成员ui,i=1,...,n的身份标识IDi的Hash值Pi=H1(sessionID,IDi); (4.2)KGC计算Ci=sPi,i=1,...,n,通过公开信道发送Ci给组成员ui。
步骤五,每个组成员ui,i=1,...,n,根据自己的秘密钥si以及秘密参数

生成自己的主密钥。
(5.1)每个组成员ui,i=1,...,n,计算密钥中自己的那一部分

其中是ui的身份标识IDi的Hash值; (5.2)每个组成员ui,i=1,...,n,计算自己的主密钥设 步骤六,每个组成员ui,i=1,...,n,根据自己的主密钥ki和自己公开钥Qi的Hash值hi组成对公开钥Qi的验证信息Ti,并将公开钥Qi与该验证信息Ti链接,广播给所有其他组成员,这是第一轮广播。
(6.1)每个组成员ui计算自己公开钥Qi的Hash值hi=H2(Qi); (6.2)每个组成员ui在计算完自己公开钥Qi的Hash值后,再计算公开钥Qi的验证信息Ti=siPpub+hiki=siPpub+hisPi+sihiRi,其中Ppub是密钥生成中心KGC的公开钥,si是ui的秘密钥,ki是ui的主密钥,H2是从0和1组成的比特序列集合映射到群Zq上的Hash函数。
(6.3)广播<Qi,Ti>给所有其他组成员。
步骤七,每个组成员ui,i=1,...,n,收到其左邻居ui-1和右邻居ui+1的第一轮广播消息后,验证广播消息的真实性,如果是真实的,先计算其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值

再根据这两个中间值计算群组会话密钥中所包含的该组成员的信息Xi,并广播该Xi,这是第二轮广播; (7.1)每个组成员ui,i=1,...,n,收到其左邻居的广播消息<Qi-1,Ti-1>、第一右邻居的广播消息<Qi+1,Ti+1>和第二右邻居的广播消息<Qi+2,Ti+2>之后,通过下列等式是否成立验证收到的广播消息是否真实式中,e为可容许双线性映射,l∈{-1,1,2}是求和变量,P是群G1的生成元,Ppub是密钥生成中心KGC的公开钥,

和Wi是ui的公开参数,Qi+l,是组成员ui+l,的公开钥,Ti+l,是对公开钥Qi+l,的验证信息,hi+l是公开钥Qi+l的Hash值,Pi+l,是会话标识和组成员ui+l身份标识的Hash值,该Hash值表示ui+l的身份信息。
(7.2)如果上述等式成立,则所收到的左右邻居的广播消息是真实的,每个组成员ui,i=1,...,n,先利用自己的秘密钥si和其左邻居的公开钥Qi-1以及其右邻居的公开钥Qi+1计算其与左邻居共享的秘密中间值Li, Li=e(siQi-1,Qi+1), 再利用自己的秘密钥si和其第一右邻居的公开钥Qi+1以及其第二右邻居的公开钥Qi+2计算它与右邻居共享的秘密中间值
显然,其中Li+1是组成员ui+1和他的左邻居,即ui,共享的秘密中间值; (7.3)每个组成员ui,i=1,...,n,根据上述计算的其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值

计算群组会话密钥中所包含的该组成员的信息Xi, 其中

是模2加,sessionID是此次会话的会话标识,H:G2→{0,1}m,是从群G2映射到由0和1组成的长为m的比特序列集合上的Hash函数。
步骤八,每个组成员ui,i=1,...,n,根据计算的Xi以及收到的所有其他组成员广播的消息Xj,j=1,...,n,j≠i,计算此次会话的群组会话密钥K。
(8.1)每个组成员ui,i=1,...,n,收到所有其他成员第二轮的广播消息后,根据计算的Xi、收到的所有其他组成员广播的消息Xj,j=1,...,n,j≠i,以及其与右邻居共享的秘密中间值Li′和会话标识sessionID计算群组会话密钥的n个份额Bj,j=1,...,n, 其中当j≥i时 而当j<i时 (8.2)每个组成员ui比较Bi-1是否等于H(Li,sessionID),如果相等则进行下一步,反之则可能存在计算上错误或者收到的其他成员第二轮广播Xj,j=1,...,n,j≠i,消息被篡改或被伪造,因此先检查上述计算是否存在的错误,而如果计算无误,则收到的广播消息被篡改或被伪造,应终止进行; (8.3)每个组成员ui,i=1,...,n,计算共享群组会话密钥K=H(B1‖B2‖...‖Bn),其中,“‖表示两个比特串的拼接。
以上步骤一至步骤五为初始化过程,步骤六至步骤八为群组密钥共享过程。
(二)本发明的成员离开后群组密钥的重新共享步骤 本发明支持动态群组,即随时有成员离开和新成员加入。
步骤九,参照图2,组成员uk离开群组,其余群组成员重新共享新群组密钥。
(9.1)其余成员将群组成员个数改变为(n-1); (9.2)组成员uk-1删除它和uk共享的秘密值

组成员uk+1删除它和uk共享的秘密值Lk+1; (9.3)然后uk-1和uk+1通过两方密钥协商协议,如DH协议,共享一个新的秘密值S,令且Lk+1=S; (9.4)k成员之后的所有组成员uj改变它们的索引值为(j-1); (9.5)每个成员自步骤(7.3)开始执行密钥共享协议重新获得新的群组密钥。
(四)本发明的新成员加入后群组密钥的重新共享步骤 步骤十,参照图3,新成员加入一个由n个成员组成的群组中,所有组成员,包括新加入的成员,共享新的群组会话密钥。
(10.1)新成员为un+1,它通过两方密钥协商协议和un共享Ln+1,通过两方密钥协商协议和u1共享
(10.2)u1将L1改为和un+1共享的秘密值
(10.3)最后,每个成员自步骤(7.3)开始执行密钥共享协议重新获得新的群组密钥。
本发明的安全性可通过以下简明理论证明进一步说明 前向安全即用户主密钥的泄露不会对在此之前的群组会话密钥的安全性构成威胁。
本发明的前向安全性基于加法循环群G1中求解DBDH问题的困难性,即对于G1中的随机元素Y和Zq*中的随机元素a,b,c,d,区分五元组(Y,aY,bY,cY,e(Y,Y)abc)和(Y,aY,bY,cY,e(Y,Y)d)是困难的。
本发明前向安全性的证明思路是根据求解DBDH问题的困难性,将本发明归约到DBDH这样一个困难问题上,则本发明具有至少和DBDH相同的安全性。具体归约方法如下。
本发明中,假设组成员ui主密钥ki泄露,攻击者已知即攻击者掌握了

总可以令其中P是群G1的生成元,β∈Zq*。除此之外攻击者还已知相关公开参数


因为P是群G1的生成元,可以令Qi-1=bP,Qi+1=cP,为了将归约到DBDH问题上,又令Y=P,a=si,则Li=e(siQi-1,Qi+1)=e(P,P)abc。如果攻击者能由{P,siP,Qi-1,Qi+1,siβP}求出Li=e(siQi-1,Qi+1),则该攻击者就能够求解DBDH问题。反过来说,由于DBDH问题是困难的,那么攻击者不可能由求出Li=e(siQi-1,Qi+1),即本发明是前向安全的。
权利要求
1.一种基于身份的认证群组密钥管理方法,包括如下步骤
(1)密钥生成中心KGC和所有组成员运行BDH参数产生器生成阶为第一个素数q的群G1、第二个阶为素数q的群G2和双线性映射eG1×G1→G2;
(2)密钥生成中心KGC选择自己的秘密钥和公开参数,并生成自己的公开钥,将公开参数和公开钥公布给所有组成员;
(3)每个组成员ui,i=1,...,n,选择自己的秘密钥si以及秘密参数
,根据秘密钥和自己的身份标识IDi生成公开钥Qi;
(4)密钥生成中心KGC根据自己的秘密钥和每个组成员ui,i=1,...,n,的身份标识IDi生成ui主密钥的一部分Ci,并通过公开信道将该Ci发送给组成员ui;
(5)每个组成员ui,i=1,...,n,根据自己的秘密钥si以及秘密参数
生成自己的主密钥其中H1是从0和1组成的比特序列集合映射到第二个群G2的H ash函数;
(6)每个组成员ui,i=1,...,n,根据自己的主密钥ki和自己的公开钥Qi的Hash值hi组成对公开钥Qi的验证信息Ti=siPpub+hiki,并将公开钥Qi与该验证信息Ti链接,广播给所有其他组成员,其中Ppub是密钥生成中心KGC的公开钥;
(7)每个组成员ui,i=1,...,n,收到其左邻居ui-1和右邻居ui+1的第一轮广播消息后,验证广播消息的真实性,如果是真实的,先计算其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值
,再根据这两个中间值计算群组会话密钥中所包含的该组成员的信息Xi,并广播该Xi;
(8)每个组成员ui,i=1,...,n,根据计算的Xi以及收到的所有其他组成员广播的消息Xj,j=1,...,n,j≠i,计算此次会话的群组会话密钥K;
(9)若任意成员离开,该成员的左邻居和右邻居分别删除它们和离开成员共享的秘密中间值,并通过两方密钥协商协议重新共享新的秘密中间值,组成员uj,j=1,...,n-1,计算群组会话密钥中所包含的该组成员的信息Xj,并广播该Xj,再执行步骤(8);
(10)若有新成员un+1加入,该新成员un+1通过两方密钥协商协议,分别与第n个成员un和第1个成员u1共享秘密中间值,组成员uj,j=1,...,n+1,各自计算群组会话密钥中所包含的该组成员的信息Xj,并在广播该Xj后执行步骤(8)。
2.根据权利要求1所述的基于身份的认证群组密钥管理方法,其中步骤(3),按如下过程进行
(3a)组成员ui选择秘密钥和随机秘密数其中
是循环群。
(3b)计算身份信息Pi=H1(sessionID,IDi),sessionID是此次会话的会话标识,IDi是组成员ui的身份标识;
(3b)根据所述的随机秘密数和身份标识,分别生成公开钥Qi=siPi和公开参数其中P是第一个群G1的生成元。
3.根据权利要求1所述的基于身份的认证群组密钥管理方法,其中步骤(4)所述的密钥生成中心KGC根据自己的秘密钥和组成员ui的身份标识IDi生成ui主密钥的一部分Ci,是由密钥生成中心KGC根据组成员ui的身份标识IDi(i=1,...,n)先计算ui身份信息Pi=H1(sessionID,IDi);再将该组成员ui身份信息Pi与密钥生成中心KGC的秘密钥s进行标量乘法运算,得到组成员ui主密钥的一部分Ci=sPi。
4.根据权利要求1所述的基于身份的认证群组密钥管理方法,其中步骤(7)所述的每个组成员ui验证广播消息的真实性,是在收到其左邻居广播消息<Qi-1,Ti-1>,第一右邻居广播消息<Qi+1,Ti+1>和第二右邻居的广播消息<Qi+2,Ti+2>之后,通过验证如下等式是否成立而确定,即式中e为可容许双线性映射,l是求和变量,P是群G1的生成元,Ppub是密钥生成中心KGC的公开钥,
和Wi是公开参数,Qi+l是组成员ui+l的公开钥,Ti+l是对公开钥Qi+l的验证信息,hi+l是公开钥Qi+l的Hash值,Pi+l是会话标识和组成员ui+l身份标识的Hash值,该Hash值表示ui+l的身份信息。
5.根据权利要求1所述的基于身份的认证群组密钥管理方法,其中骤(7)所述的先计算其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值
再根据这两个中间值计算群组会话密钥中所包含的该组成员的信息Xi,按如下公式进行
(7a)每个组成员ui,i=1,...,n,利用自己的秘密钥si和其左邻居的公开钥Qi-1以及其右邻居的公开钥Qi+1计算其与左邻居共享的秘密中间值Li,
Li=e(siQi-1,Qi+1);
(7b)组成员ui,i=1,...,n,利用自己的秘密钥si和其第一右邻居的公开钥Qi+1以及其第二右邻居的公开钥Qi+2计算它与右邻居共享的秘密中间值
(7c)组成员ui,i=1,...,n,根据上述计算的其与左邻居共享的秘密中间值Li以及与右邻居共享的秘密中间值
,计算群组会话密钥中所包含的该组成员的信息Xi,
其中
是模2加,HG2→{0,1}m,是从群G2映射到由0和1组成的长为m的比特序列集合上的Hash函数。
6.根据权利要求1所述的基于身份的认证群组密钥管理方法,其中步骤(8),按如下步骤进行
(8a)每个组成员ui,i=1,...,n,收到所有其他成员第二轮的广播消息后,根据计算的Xi、收到的所有其他组成员广播的消息Xj,j=1,...,n,j≠i,以及其与右邻居共享的秘密中间值
和会话标识sessionID计算群组会话密钥的n个份额Bj,j=1,...,n,
其中当j≥i时
.....
而当j<i时
.....
(8b)比较Bi-1是否等于H(Li,sessionID),如果相等则进行下一步,反之则可能存在计算上错误或者收到的其他成员第二轮广播消息Xj,j=1,...,n,j≠i,被篡改或被伪造,因此先检查上述计算是否存在的错误,而如果计算无误,则收到的广播消息被篡改或被伪造,应终止进行;
(8c)计算共享群组密钥K=H(B1‖B2‖...‖Bn),其中“‖”表示两个比特串的拼接。
全文摘要
本发明公开了一种基于身份的认证群组密钥管理方法。其步骤是利用椭圆曲线上双线性映射将身份标识嵌入密钥中;密钥生成中心根据自己的秘密钥和组成员ui的身份标识生成ui主密钥的一部分Ci,通过公开信道发送该Ci给ui;每个组成员ui根据该Ci和自己秘密钥生成主密钥;每个组成员根据主密钥和公开钥Hash值计算公开钥验证信息,将公开钥与该验证信息链接在群组内广播;每个组成员验证所收到消息是真实时计算其与左右邻居共享的秘密值,根据该秘密值计算群组会话密钥中所包含的该组成员信息Xi,在群组内广播该Xi;每个组成员根据所有Xj,j=1,…,n,计算群组会话密钥K。本发明具有无密钥托管、无需安全信道的优点,用于协同和分布式网络应用中安全可靠群通信。
文档编号H04L9/32GK101431414SQ20081023265
公开日2009年5月13日 申请日期2008年12月15日 优先权日2008年12月15日
发明者吕锡香, 晖 李, 张卫东 申请人:西安电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1