专利名称:一种生成组密钥的方法、系统和设备的制作方法
技术领域:
本发明涉及网络通信领域,特别涉及一种生成组密钥的方法、系统和设备。
背景技术:
利用多方共享组密钥来解决组通信安全的关键是组密钥的生成和分发,这种生成和分发必须是排外的,即非组成员无法获得组密钥。目前已有的组密钥管理技术可以分为两大类集中管理式和分布协商式。与集中管理式相比,分布协商式组密钥管理技术适合使用在不能或无法建立中心控制节点的场合,比如军用Ad hoc网络、P2P网络、保密视频会议等。现有的组密钥协商方案都是基于有限域上离散对数难解问题的,以Burmester-Desmedt方案(BD方案)为例进行说明,该方案中用n表示组内的成员数,U表示组成员,SK表示组密钥。参见图1,为现有技术中Burmester-Desmedt组密钥协商方法的流程图,该Burmester-Desmedt组密钥协商方法具体如下 步骤101选择系统参数。设p,q为大素数,Zp是整数模p构成的集合,g是Zp中的一个元素,且g的阶为q,q即gq≡1modp的最小正整数。
步骤102组内成员集合{U1,U2,…,Un}组成一个逻辑环,参见图2,为n个成员U1,U2,…,Un组成环的示意图。
步骤103每个成员Ui随机从Zp中选择一个数ri,计算并向所有组成员广播zi; 步骤104每个成员Ui计算并向所有组成员广播Xi; 步骤105计算组密钥,每个成员Ui计算组密钥 通过上述步骤,每个成员计算的都是同一个结果,即组密钥 该Burmester-Desmedt组密钥协商方法的缺点是计算量较大,造成处理速度慢;占用的存储空间比较大;另外对带宽的要求高。
发明内容
为了解决现有技术中组密钥协商方法计算量较大、占用存储空间较大,且对带宽要求较高的问题,本发明实施例提供了一种生成组密钥的方法、系统和设备。
一种生成组密钥的方法,所述方法包括 组内成员组成一个逻辑环,所述环内成员用Ui表示,其中,i=1,2,……,n,所述n为组内成员总数; 选择基于椭圆曲线的系统参数,所述系统参数包括素数q,整数模q所得到的最小非负余数的集合Zp,基于椭圆曲线的公开基点P; 根据椭圆曲线上的Diffie-Hellman密钥协商协议和所述系统参数,成员Ui与成员Ui-1生成两两共享密钥Ki-1,i,与成员Ui+1生成两两共享密钥Ki,i+1;且,当i=n时,所述i+1=1; 所述成员Ui根据所述两两共享密钥Ki-1,i和所述两两共享密钥Ki,i+1生成中间值,并在组内广播携带所述中间值的组密钥协商报文; 所述成员Ui收到所有其他成员广播的所述组密钥协商报文后,提取所述中间值,根据所述中间值计算其他成员与所述其他成员的下一个成员的两两共享密钥; 验证所述两两共享密钥Ki,i+1是否等于两两共享密钥Ki+1,i,验证通过,所述成员Ui根据所有两两共享密钥生成组密钥SK=K1,2+K2,3+…+Kn,1。
本发明实施例还提供了一种生成组密钥的系统,所述系统包括 逻辑环组成模块,用于将组内成员组成一个逻辑环,所述环内成员用Ui表示,其中,i=1,2,……,n,所述n为组内成员总数; 系统参数选择模块,用于选择基于椭圆曲线的系统参数; 报文收发模块,用于发送和接收组密钥协商报文,所述组密钥协商报文携带所述逻辑环组成模块中的成员生成的D-H公钥值和中间值; 组密钥生成模块,用于根据所述系统参数选择模块选择的系统参数和从所述报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
本发明实施例还提供了一种生成组密钥的设备,所述设备包括 逻辑环组成模块,用于与组内设备组成一个逻辑环,本设备用Ui表示,其中,i=1,2,……,n,所述n为组内设备总数; 系统参数选择模块,用于所述逻辑环组成模块完成逻辑环组成后,选择基于椭圆曲线的系统参数; D-H公钥值计算模块,用于根据所述系统参数选择模块选择的系统参数,计算D-H公钥值,并通过报文收发模块发送给设备Ui-1和设备Ui+1; 共享密钥生成模块,用于根据Diffie-Hellman密钥协商协议、从报文收发模块接收的设备Ui-1和设备Ui+1的D-H公钥值,分别生成两两共享密钥Ki-1,i和两共享密钥Ki,i+1; 中间值生成模块,用于根据所述共享密钥生成模块所生成的两两共享密钥Ki-1,i和Ki,i+1生成中间值; 报文收发模块,用于发送和接收组密钥协商报文,所述组密钥协商报文携带所述D-H公钥值计算模块计算的D-H公钥值或所述中间值生成模块生成的中间值; 组密钥生成模块,用于根据所述系统参数选择模块选择的系统参数和从所述报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
本发明实施例提供的方案与同类方案相比,在达到相同的安全性时,具有计算速度快、存储空间占用小和网络带宽要求低的特点。
图1是现有技术中提供的Burmester-Desmedt组密钥协商方法的流程图; 图2是现有技术中提供的n个成员U1,U2,…,Un组成环的示意图; 图3是本发明实施例1提供的生成组密钥的方法的流程图; 图4是本发明实施例1提供的3个成员组成一个逻辑环的示意图; 图5是本发明实施例1提供的4个成员组成一个逻辑环的示意图; 图6是本发明实施例2提供的新成员加入组时生成组密钥的方法的流程图; 图7是本发明实施例4提供的可认证的生成组密钥的方法的流程图; 图8是本发明实施例5提供的生成组密钥的系统示意图; 图9是本发明实施例6提供的生成组密钥的设备示意图。
具体实施例方式 下面结合附图和具体实施例对本发明作进一步说明,但本发明不局限于以下实施例。
实施例1 本发明实施例提供了一种生成组密钥的方法,该方法基于椭圆曲线密码系统,这里简单地介绍一下椭圆曲线密码学ECC(Elliptic Curves Cryptography,椭圆曲线密码学),它是在1985年由Neal Koblitz和Victor Miller独立提出来的。这种密码体制具有安全性能高、计算量小、密钥长度短、处理速度快、存储空间占用小和带宽要求低等特点,因而在安全领域具有广泛的应用前景。近年来,椭圆曲线密码系统已被诸如ANSI(American NationalStandard Institute,美国国家标准学会)、IEEE(Institute of Electrical and ElectronicsEngineers,美国电气及电子工程师学会)、ISO(International StandardizationOrganization,国际标准化组织)和NIST(National Institute of Standards and Technology,美国国家标准和技术学会)等标准化组织纳入为标准。
本实施例用n表示组内的成员数,U表示组成员,SK表示组密钥。参见图3,为本发明实施例生成组密钥的方法的流程图,该方法具体步骤如下 步骤301一组成员U1,...,Un组成一个逻辑环,例如系统初始化时为所有参与者分配一个连续的序列号,这组成员通过这些连续的序列号组成一个逻辑环,参见图2,为组成员组成的逻辑环示意图。
步骤302选择系统参数,进行系统初始化。具体过程如下 设GF(p)是一个阶为素数p的有限域,在该域上定义一椭圆曲线ECy2=x3+αx+β(a,β∈GF(p),4a3+27β2(modp)≠0;p为190位以上的大素数)。则ECp(a,β)={(x,y)|y2=x3+ax+β(mod p)}∪O(O为单位元)组成一个Abel群。
对给定的ECC系统,取点P∈ECp(α,β)为一公开基点,P的阶为大素数q(一般取q≥120bits)。定义G={O,P,2P,...,(q-1)P}。由此可知G是有限的循环Abel群,q为循环周期。
另外,选择hash函数HG→Zq,Zq是整数模q所得到的最小非负余数的集合{0,1,...,q-1}。
步骤303每一个成员Ui分别与上家”Ui-1和“下家”Ui+1生成两两共享密钥。
其中,两方DH密钥的生成过程基于现有技术中的Diffie-Hellman密钥协商协议,现将两方DH协商过程介绍如下 成员A和成员B为DH协议的两方,首先,A从Zq中随机选择一个数a,将aP发送给B,B从Zq中随机选择一个数b,将bP发送给A; 然后,A计算a(bP),B计算b(aP),即A和B共享密钥abP。abP称为A与B共享的DH密钥。
本实施例中每一个成员Ui从Zq中随机选择一个数ri,然后计算D-H公钥值Xi=riP,将携带Xi的组密钥协商报文发送给他的“上家”Ui-1和“下家”Ui+1, 每一个成员Ui接收到“上家”和“下家”发来的组密钥协商报文后,提取Xi-1和Xi+1,计算Ki-1,i=riXi-1=(xi-1,i,yi-1,i),Ki,i+1=riXi+1=(xi,i+1,yi,i+1)。
步骤304每一个成员Ui用与“上家”共享的DH密钥的对应分量乘以与“下家”共享的DH密钥的对应分量,再作模p运算生成中间值,然后广播携带中间值的组密钥协商报文。
该步骤具体实现为Ui向其他成员广播Yi=(z1,i,z2,i),其中z1,i=xi-1,ixi,i+1 mod p,z2,i=yi-1,iyi,i+1 mod p。
步骤305每一个成员Ui收到所有其他成员广播的组密钥协商报文,提取中间值,根据中间值,计算出其他每一个成员与其“下家”的两两共享密钥,然后根据所有的两两共享密钥生成组密钥,组密钥即为每一个成员与下家共享的两方DH密钥的椭圆曲线点之和。
该步骤具体实现为每一个成员Ui接收到所有其他成员发来的Y后,计算Ki+l,i+l+1=(xi+l,i+l+1,yi+l,i+l+1),其中这里l遍取1,2,...,n-1。先验证等式是否成立,通过验证该等式查看接收到的传输包是否有错误或是否为非组内成员发送的,如果成立,则计算组密钥SK,SK=K1,2+K2,3+…+Kn,1,否则Ui宣告协商失败。
通过上述组密钥协商过程,所有成员都得到同一个组密钥结果SK=(r1r2+r2r3+...+rnr1)P。
下面分别以组内有3个成员和4个成员为例说明组密钥的协商过程。
参见图4,为3个成员组成一个逻辑环的示意图。3个成员协商组密钥的过程 (1)U1随机选择r1∈Zq,接着U1→U3,U2X1=r1P,U2随机选择r2∈Zq,接着U2→U1,U3X2=r2P,U3随机选择r3∈Zq,接着U3→U2,U1X3=r3P。
(2)U1收到X3、X2后,计算K31=r1X3=(x31,y31),K12=r1X2=(x12,y12),以及z11=x31x12modp,z21=y31y12modp,广播Y1=(z11,z21); U2收到X1、X3后,计算K12=r2X1=(x12,y12),K23=r2X3=(x23,y23),以及z12=x12x23modp,z22=y12y23modp,广播Y2=(z12,z22); U3收到X2、X1后,计算K23=r3X2=(x23,y23),K31=r3X1=(x31,y31),以及z13=x23x31modp,z23=y23y31modp,广播Y3=(z13,z23)。
(3)U1收到Y2、Y3后,计算U1验证若成立,则计算密钥SK=K12+K23+K31,否则协商失败,停止协商。
U2收到Y3、Y1后,计算U2验证若成立,则计算密钥SK=K12+K23+K31;否则协商失败,停止协商。
U3收到Y1、Y2后,计算,U3验证若成立,则计算密钥SK=K12+K23+K31;否则协商失败,停止协商。
三个成员得到同一个组密钥SK=(r1r2+r2r3+r3r1)P。
参见图5,为4个成员组成一个逻辑环的示意图。4个成员协商组密钥的过程 (1)U1随机选择r1∈Zq,接着U1→U4,U2X1=r1P,U2随机选择r2∈Zq,接着U2→U1,U3X2=r2P,U3随机选择r3∈Zq,接着U3→U2,U4X3=r3P,U4随机选择r4∈Zq,接着U4→U3,U1X4=r4P。
(2)U1收到X4、X2后,计算K41=r1X4=(x41,y41),K12=r1X2=(x12,y12),以及z11=x41 x12modp,z21=y41y12modp,广播Y1=(z11,z21); U2收到X1、X3后,计算K12=r2X1=(x12,y12),K23=r2X3=(x23,y23),以及z12=x12x23modp,z22=y12y23modp,广播Y2=(z12,z22); U3收到X2、X4后,计算K23=r3X2=(x23,y23),K34=r3X4=(x34,y34),以及z13=x23x34modp,z23=y23y34modp,广播Y3=(z13,z23); U4收到X3、X1后,计算K34=r4X3=(x34,y34),K41=r4X1=(x41,y41),以及z14=x34x41modp,z24=y34y41modp,广播Y4=(z14,z24)。
(3)U1收到Y2、Y3、Y4后,计算U1验证若成立,则计算密钥SK=K12+K23+K34+K41;否则协商失败,停止协商; U2收到Y1、Y3、Y4后,计算U2验证若成立,则计算密钥SK=K12+K23+K34+K41;否则协商失败,停止协商; U3收到Y4、Y1、Y2后,计算U3验证若成立,则计算密钥SK=K12+K23+K34+K41;否则协商失败,停止协商; U4收到Y1、Y2、Y3后,计算U4验证若成立,则计算密钥SK=K12+K23+K34+K41;否则协商失败,停止协商。
四个成员得到同一个组密钥SK=K12+K23+K34+K41=(r1r2+r2r3+r3r4+r4r1)P。
实施例2 本实施例提供了新成员加入组中时,组密钥的协商方法。本实施例以实施例1为基础,假设成员组∑={U1,...,Un}已经执行了实施例1提供的基本协商,并获得了共享的组密钥种子r=H(SK)=r1r2+r2r3+...riri+1+...+rn-1rn+rnr1,此时成员∑′={Un+1,...,Un+m}需要加入到该组中与∑中的成员共享新的密钥。需要U1和Un与新加入的成员∑′进行交互,所有组成员(包括∑内的其他组成员)均可计算得到新的组密钥。
其中,m+2个成员Vi组成一个逻辑环,V1=U1,V2=Un,Vi=Un+i-2(3≤i≤m+2),参见图6,为新成员加入组时生成组密钥的方法的流程图。新成员加入组时生成组密钥的具体步骤如下 步骤601Vi(i=3,4,…,m+2)从Zq中随机选择一个数r′i,V1从Zq中随机选择一个数r1,计算r′1=r1·r,V2从Zq中随机选择一个数r2,计算r′2=r2·r。
步骤602Vi(i=1,2,…,m+2)计算D-H公钥值X′i=r′i·P,并将X′1发送给他的“上家”Vi-1和“下家”Vi+1,同时V1将r1′或成员V2将r2′发送给成员U2,...,Un-1。
步骤603Vi收到X′i-1和X′i+1后,计算与“上家”Vi-1的DH密钥K′i-1,i和与“下家”Vi+1的DH密钥K′i,i+1,将K′i-1,i的第一分量与K′i,i+1的第一分量相乘并对p求模,其值记为z′1,i,将K′i-1,i的第二分量与K′i,i+1的第二分量相乘并对p求模,其值记为z′2,i,然后广播(z′1,i,z′2,i)。具体算法如下 Vi收到X′i-1和X′i+1后,计算K′i-1,i=r′iX′i-1=(x′i-1,y′i-1,i),K′i,i+1=(x′i,i+1,y′i,i+1)=r′iX′i+1,接着Vi广播Y′i=(x′i-1,ix′i,i+1modp,y′i-1,iy′i,i+1modp)=(z′1,i,z′2,i)(i遍取1,2,...,m+2)。广播使U2,...,Un-1也得到Y′i。
步骤604Vi收到V′j(j遍取1,2,...,m+2,且j≠i)后,依次计算出K′1,2,K′2,3,…,K′m+2,1,而K′1,2,K′2,3,…,K′m+2,1之和即为组密钥SK′i。同时成员U2,Un-1收到Y′j后可以跟V1或V2一样计算K′1,2,K′2,3,…,K′m+2,1,从而计算出组密钥SK′i。具体算法如下 Vi收到Y′j(j遍取1,2,...,m+2,且j≠I)后,计算同时成员U2,...,Un-1收到Y′j后可以跟V1一样计算(其中,l遍取1,2,...,m+1)。
Vi先验证等式是否成立,成员U2,...,Un-1可以验证是否成立,如果都成立,则计算组密钥SK′=K′1,2+K′2,3+…+K′m+2,1。
通过上述步骤,所有成员得到同一个组密钥SK′=(r′1r′2+r′2r′3+…+r′m+2r′1)P。
现举例如下假设成员组∑={U1,...,U5}已经执行了基本协商,并获得了共享的密钥种子r=H(SK),此时成员∑′={U6}需要加入到组中与∑中成员共享新的密钥。使用本实施例提供的方法,需要U1和U5与新加入的成员U6进行交互,使所有组成员均可计算得到新的组密钥。这里3个成员{Vi}组成一个逻辑环,其中V1=U1,V2=U5,V3=U6。V1,V2和V3组成逻辑环后,执行以下具体步骤 (1)V3从Zq中随机选择一个数r′3,V1从Zq中随机选择一个数r1,计算r′1=r1·r,V2从Zq中随机选择一个数r2,计算r′2=r2·r; 然后V1计算X′1=r′1·P并将X′1发送给他的“上家”V3和“下家”V2,V2计算X′2=r′2·P,并将X′2发送给他的“上家”V1和“下家”V3,V3计算X′3=r′3·P,并将X′3发送给他的“上家”V2和“下家”V1; 同时V1和V2分别将r1和X′2发送给U2,...,U4。
(2)V1收到X′3、X′2后,计算K′31=r′1X′3=(x′31,y′31),K′12=r′1X′2=(x′12,y′12),以及z′11=x′31x′12modp,z′21=y′31y′12modp,广播Y′1=(z′11,z′21); V2收到X′1、X′3后,计算K′12=r′2X′1=(x′12,y′12),K′23=r′2X′3=(x′23,y′23),以及z′12=x′12x′23modp,z′22=y′12y′23modp,广播Y′2=(z′12,z′22); V3收到X′2、X′1后,计算K′23=r′3X′2=(x′23,y′23),K′31=r′3X′1=(x′31,y′31),以及z′13=x′23x′31modp,z′23=y′23y′31modp,广播Y′3=(z′13,z′23)。
(3)V1收到Y′2、Y′3后,计算V1验证若成立,则计算密钥SK′=K′12+K′23+K′31;否则协商失败,停止协商; V2收到Y′3、Y′1后,计算V2验证若成立,则计算密钥SK′=K′12+K′23+K′31;否则协商失败,停止协商; V3收到Y′1、Y′2后,计算U3验证若成立,则计算密钥SK′=K′12+K′23+K′31;否则协商失败,停止协商; U2收到r1,X′2、Y′2、Y′3后,计算K′12=rr1X′2,由此计算出组密钥SK′=K′12+K′23+K′31; U3收到r1,X′2、Y′2、Y′3后,计算K′12=rr1X′2,由此计算出组密钥SK′=K′12+K′23+K′31。
U4收到r1、X′2、Y′2和Y′3后,计算K′12=rr1X′2, 由此计算出组密钥SK′=K′12+K′23+K′31。
通过上述方法,所有成员得到同一个组密钥SK′=(r′1r′2+r′2r′3+r′3r′1)P。
实施例3 本实施例提供了其他成员退出组时,组密钥的协商方法。本实施例以实施例1为基础,假定成员∑={U1,...,Un}已经执行了实施例1提供的基本协商,此时有k个成员需要离开该组,余下的组成员余下的组成员为了避免离开该组的成员获得本组的组密钥,需要部分相邻的两个成员重新随机选择一个数。具有执行以下步骤 首先,余下的组成员中的成员Ui(i为奇数)从Zq中随机选择一个数ri′,重新计算Xi=r′iP,中成员Ui(i为偶数)取r′i=ri。
然后,余下的组成员重新运行实施例1中提供的组密钥协商方法,计算出新的共享组密钥。
实施例4 本实施例在以上实施例的基础上,可以添加签名认证机制,实现可认证的组密钥协商,本实施例以实施例1为基础进行说明,每个成员生成中间值或D-H公钥值后,再对中间值或D-H公钥值进行签名,并将签名结果附带在组密钥协商报文中一起发送;其他成员收到组密钥协商报文后,用签名验证密钥协商报文是否正确。
参见图7,为可认证的生成组密钥的方法的流程图。该方法包括以下步骤 步骤701每一个成员Ui从Zq中随机选择一个数ri,然后计算D-H公钥值Xi=riP和签名Sig(Xi),将其一起发送给“上家”Ui-1和“下家”Ui+1。
步骤702每一个成员Ui接收到“上家”发来的Xi-1和“下家”发来的Xi+1后,先验证签名Sig(Xi-1)和Sig(Xi+1)是否正确,验证通过,则执行步骤703,否则,执行步骤708。
步骤703计算Ki-1,i=riXi-1=(xi-1,i,yi-1,i),Ki,i+1=riXi+1=(xi,i+1,yi,i+1),然后Ui向其他成员广播Yi=(z1,i,z2,i)和Sig(Yi),其中z1,i=xi-1,ixi,i+1modp,z2,i=yi-1,iyi+1modp。
步骤704每一个成员Ui接收到所有其他成员发来的Y和Sig(Y)后,用签名Sig(Y)验证Y是否正确,验证通过后,执行步骤705,否则,执行步骤708。
步骤705验证通过,成员Ui计算Ki+l,i+l+1=(xi+l,i+l+1,yi+l,i+l+1),其中这里l遍取1,2,...,n-1。
步骤706成员Ui验证等式是否成立,如果成立,则执行步骤707,否则执行步骤708。
步骤707成员Ui计算组密钥SK=K1,2+K2,3+…+Kn,1。
步骤708成员Ui宣告协商失败。
最终,所有成员都得到同一个组密钥结果SK=(r1r2+r2r3+...+rnr1)P。
上述的签名方案取决于具体的应用环境所采用的签名认证机制,包括但不限于IBE(Identity-based Encryption,基于身份的加密法、RSA签名、DSA(Digital Signature Algorithm,数字签名算法)、ECDSA(Elliptic Curve Digital SignatureAlgorithm,椭圆曲线数字签名算法)、HMAC(Hash Message Authentication Codes,哈希信息验证码)认证机制等。
当参与协商的组成员的规模很大时,可将组成员分成n个子组,分别记为group1,group2,…,groupn,各个子组中的成员数目分别为m1,m2,…,mn,协商如下 groupi(i=1,2,…,n)中mi个成员构成一个逻辑环,执行实施例1提供的基本协商,得到组密钥SKi=(ri,si); group1,group2,…,groupn构成一个逻辑环,groupi(i=1,2,…,n)计算Xi=riP,执行实施例1提供的基本协商,协商出组密钥SK=K1,2+K2,3+…+Kn,1。
最终,所有成员得到同一个组密钥SK=(r1r2+r2r3+...+rnr1)P。
实施例5 参见图8,为生成组密钥的系统示意图。本实施例还提供了一种生成组密钥的系统,包括 逻辑环组成模块,用于将组内成员组成一个逻辑环,环内成员用Ui表示,其中,i=1,2,……,n,所述n为组内成员总数; 系统参数选择模块,用于选择基于椭圆曲线的系统参数; 报文收发模块,用于发送和接收组密钥协商报文,该组密钥协商报文携带逻辑环组成模块中的成员的D-H公钥值和中间值; 组密钥生成模块,用于根据系统参数选择模块选择的系统参数和从报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
其中,组密钥生成模块具体包括 共享密钥生成单元,用于根据Diffie-Hellman密钥协商协议和系统参数选择模块选择的系统参数,生成成员Ui与成员Ui-1的两两共享密钥Ki-1,i,生成成员Ui与成员Ui+1的两两共享密钥Ki,i+1;且,当i=n时,所述i+1=1; 中间值生成单元,用于根据共享密钥生成单元所生成的两两共享密钥Ki-1,i和Ki,i+1生成中间值; 共享密钥验证单元,用于验证两两共享密钥Ki,i+1是否等于两两共享密钥Ki+1,i,验证通过,通知组密钥生成单元生成组密钥;否则,通知组密钥生成单元停止生成组密钥; 组密钥生成单元,用于收到共享密钥验证单元发送的生成组密钥的通知后,根据中间值计算相邻成员间的两两共享密钥,并根据所有两两共享密钥生成组密钥; 当有其它成员加入或退出时,系统还包括 组密钥种子生成模块,用于对生成的组密钥进行运算,生成组密钥种子; 组密钥更新模块,用于当有新成员加入所述组时,根据逻辑环组成模块将新成员与原来的成员U1和Un组成一个新逻辑环,使用组密钥种子生成模块所生成的组密钥种子,通过组密钥生成模块生成新的组密钥。或者,当有成员退出所述组时,将余下的成员组成一个新逻辑环,成员用Wi表示,i为小于n的正整数,根据i的值将成员分为奇数成员和偶数成员;使奇数成员选择与原随机数不同的随机数,使偶数成员选择与原随机数相同的随机数,通过组密钥生成模块生成新的组密钥。
为了进一步完善系统,系统还包括 签名生成模块,用于对D-H公钥值和中间值进行签名,并在组密钥协商报文中携带签名; 签名验证模块,用于接收到密钥协商报文后,用收到的签名验证组密钥协商报文是否正确。
实施例6 参见图9,本实施例提供了一种生成组密钥的设备,包括 逻辑环组成模块,用于与组内设备组成一个逻辑环,本设备用Ui表示,其中,i=1,2,……,n,n为组内设备总数; 系统参数选择模块,用于逻辑环组成模块完成逻辑环组成后,选择基于椭圆曲线的系统参数; D-H公钥值计算模块,用于根据系统参数选择模块选择的系统参数,计算D-H公钥值,并通过报文收发模块发送给设备Ui-1和设备Ui+1; 共享密钥生成模块,用于根据Diffie-Hellman密钥协商协议、从报文收发模块接收的设备Ui-1和设备Ui+1的D-H公钥值,分别生成两两共享密钥Ki-1,i和两共享密钥Ki,i+1; 中间值生成模块,用于根据共享密钥生成模块所生成的两两共享密钥Ki-1,i和Ki,i+1生成中间值; 报文收发模块,用于发送和接收组密钥协商报文,其中,组密钥协商报文携带D-H公钥值计算模块计算的D-H公钥值或中间值生成模块生成的中间值; 组密钥生成模块,用于根据系统参数选择模块选择的系统参数和从报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
当有新设备加入该组或者有设备退出该组时,该设备还包括 组密钥更新模块,用于当组内设备个数发生变化时,根据上述系统参数选择模块、D-H公钥值计算模块、共享密钥生成模块、中间值生成模块和报文收发模块中的信息生成新的组密钥。
为了保证设备所收发信息的有效性和安全性,该设备还包括 签名生成模块,用于对D-H公钥值计算模块计算的D-H公钥值或中间值生成模块生成的中间值进行签名,并在组密钥协商报文中携带签名; 签名验证模块,用于接收到密钥协商报文后,用签名验证所述组密钥协商报文是否正确。
以上实施例具有 1)安全性能更高椭圆曲线离散对数问题的计算复杂度目前是完全指数级的,而RSA(RSA公钥密码体制)是亚指数级的。
2)计算量小和处理速度快在相同的计算资源条件下,椭圆曲线体制比RSA和DSA(数字签名标准)有更快的处理速度。
3)存储空间占用小椭圆曲线体制的密钥长度和系统参数与RSA及DSA相比要小得多。160比特ECC与1024比特RSA、DSA具有相同的安全强度,210比特ECC则与2048比特RSA、DSA具有相同的安全强度,这意味着它所占的存储空间要小得多。
4)带宽要求低对于给定的安全级别,ECC比RSA和DSA有更小的参数。对于更高的安全级别,参数大小的差异更加明显。更小的参数带来的好处是,计算速度更快,密钥更短和密钥证书更小,因而签名长度和密文长度更短。
综上,椭圆曲线密码可以用较小的开销(如带宽,计算量,存储空间,功耗等)和时延实现较高的安全性,特别适用于计算能力和带宽受限的情况,如Ad Hoc网络环境下的安全通信等。与同类方案相比,在达到相同的安全性时,具有计算速度快、存储空间占用小和网络带宽要求低的特点。
以上实施例提供的技术方案,可以通过软件实现,软件可以存储在计算机可读取的物理介质中,如光盘,软盘或硬盘等。
以上所述的实施例,只是本发明的较优选的具体实施方式
,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
权利要求
1.一种生成组密钥的方法,其特征在于,所述方法包括
组内成员组成一个逻辑环,所述环内成员用Ui表示,其中,i=1,2,……,n,所述n为组内成员总数;
选择基于椭圆曲线的系统参数,所述系统参数包括素数q,整数模q所得到的最小非负余数的集合Zq,基于椭圆曲线的公开基点P;
根据椭圆曲线上的Diffie-Hellman密钥协商算法和所述系统参数,成员Ui与成员Ui-1生成两两共享密钥Ki-1,i,与成员Ui+1生成两两共享密钥Ki,i+1;且,当i=n时,所述i+1=1;
所述成员Ui根据所述两两共享密钥Ki-1,i和所述两两共享密钥Ki,i+1生成中间值,并在组内广播携带所述中间值的组密钥协商报文;
所述成员Ui收到所有其他成员广播的所述组密钥协商报文后,提取所述中间值,根据所述中间值计算其他成员与所述其他成员的下一个成员的两两共享密钥;
验证所述两两共享密钥Ki,i+1是否等于两两共享密钥Ki+1,i,验证通过,所述成员Ui根据所有两两共享密钥生成组密钥SK=K1,2+K2,3+…+Kn,1。
2.如权利要求1所述的生成组密钥的方法,其特征在于,所述成员Ui与成员Ui-1生成两两共享密钥Ki-1,i,与成员Ui+1生成两两共享密钥Ki,i+1的步骤具体包括
所述成员Ui从所述Zq中选择随机数ri,计算D-H公钥值Xi=riP,发送携带所述D-H公钥值Xi的组密钥协商报文给成员Ui-1和成员Ui+1;
所述成员Ui接收到成员Ui-1发送的组密钥协商报文后,提取Xi-1,计算Ki-1,i=riXi-1=(xi-1,i,yi-1,i);
所述成员Ui接收到成员Ui+1发送的组密钥协商报文后,提取Xi+1,计算Ki,i+1=riXi+1=(xi,i+1,yi,i+1)。
3.如权利要求1所述的生成组密钥的方法,其特征在于,所述成员Ui根据所述两两共享密钥Ki-1,i和所述两两共享密钥Ki,i+1生成中间值的步骤具体包括
所述成员Ui用所述两两共享密钥Ki-1,i的对应分量乘以所述两两共享密钥Ki,i+1的对应分量,然后对乘积进行取模,将取模后的坐标点作为中间值。
4.如权利要求3所述的生成组密钥的方法,其特征在于,所述根据所述中间值计算其他成员与所述其他成员的下一个成员的两两共享密钥的步骤具体包括
计算Ki+l,i+l+1=(xi+l,i+l+1,yi+l,i+l+1),所述l遍取1,2,...,n-1,所述所述modp,所述z1,i+l,z2,i+l为所述中间值的两个分量。
5.如权利要求1至4中任一权利要求所述的生成组密钥的方法,其特征在于,所述成员Ui根据所有两两共享密钥生成组密钥SK=K1,2+K2,3+…+Kn,1的步骤具体包括
所述成员Ui将每一个两两共享密钥进行椭圆曲线点求和得到组密钥SK=K1,2+K2,3+…+Kn,1。
6.如权利要求2所述的生成组密钥的方法,其特征在于,所述成员Ui对生成的组密钥进行哈希运算,生成组密钥种子r=r1r2+r2r3+...riri+1+...+rn-1rn+rn r1,当有m个新成员加入所述组时,所述m为正整数,所述方法还包括
将所述m个新成员与所述成员U1、所述成员Un组成一个新逻辑环,所述新逻辑环内成员用Vi表示,所述i=1,2,……,m+2,其中,V1表示所述成员U1,V2表示所述成员Un;
所述成员V1根据所述r1和所述r计算r1′=r1·r;
所述成员V2根据所述r2和所述r计算r2′=r2·r;
除所述成员V1,V2之外的成员Vi选择随机数ri′,
每个成员Vi根据组密钥协商协议和所述ri′,与相邻的成员生成两两共享密钥,根据所述两两共享密钥生成新的中间值,并广播携带所述中间值的组密钥协商报文;
每个成员Vi收到所述新逻辑环内所有其它成员的组密钥协商报文后,提取中间值,生成新的组密钥;
同时,所述成员V1将所述r1′或所述成员V2将所述r2′发送给所述成员Ui,所述Ui中的i=2,3,……,n-1;若所述成员Ui收到的为r1′,则按所述成员V1生成新组密钥的方法生成新的组密钥;若所述成员Ui收到的为r2′,则按所述成员V2生成新组密钥的方法生成新的组密钥。
7.如权利要求1所述的生成组密钥的方法,其特征在于,当有m个成员退出所述组时,所述方法还包括
余下的n-m个成员组成一个新逻辑环,所述环内成员用Wi表示,i=1,2,……,n-m,所述成员Wi重新选择随机数,根据Diffie-Hellman密钥协商协议和所述系统参数,与相邻的成员生成新的两两共享密钥,根据所述新的两两共享密钥生成新的组密钥。
8.如权利要求7所述的生成组密钥的方法,其特征在于,所述成员Wi根据i的值分为奇数成员和偶数成员,相应地,所述成员Wi重新选择随机数的步骤具体为
所述奇数成员重新选择的随机数与原随机数不同,所述偶数成员重新选择的随机数为原随机数。
9.如权利要求1所述的生成组密钥的方法,其特征在于,所述方法还包括
所述成员Ui生成中间值后,对所述中间值进行签名,并在所述组密钥协商报文中携带所述签名,接收到所述组密钥协商报文的成员用所述签名验证所述组密钥协商报文是否正确。
10.如权利要求2所述的生成组密钥的方法,其特征在于,所述方法还包括
所述成员Ui计算D-H公钥值Xi=riP后,对所述D-H公钥值进行签名,并在所述组密钥协商报文中携带所述签名,接收到所述组密钥协商报文的成员用所述签名验证所述组密钥协商报文是否正确。
11.一种生成组密钥的系统,其特征在于,所述系统包括
逻辑环组成模块,用于将组内成员组成一个逻辑环,所述环内成员用Ui表示,其中,i=1,2,……,n,所述n为组内成员总数;
系统参数选择模块,用于选择基于椭圆曲线的系统参数;
报文收发模块,用于发送和接收组密钥协商报文,所述组密钥协商报文携带所述逻辑环组成模块中的成员生成的D-H公钥值和中间值;
组密钥生成模块,用于根据所述系统参数选择模块选择的系统参数和从所述报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
12.如权利要求11所述的生成组密钥的系统,其特征在于,所述组密钥生成模块具体包括
共享密钥生成单元,用于根据Diffie-Hellman密钥协商协议和所述系统参数选择模块选择的系统参数,生成成员Ui与成员Ui-1的两两共享密钥Ki-1,i,生成成员Ui与成员Ui+1的两两共享密钥Ki,i+1;且,当i=n时,所述i+1=1;
中间值生成单元,用于根据所述共享密钥生成单元所生成的两两共享密钥Ki-1,i和Ki,i+1生成中间值;
共享密钥验证单元,用于验证所述两两共享密钥Ki,i+1是否等于两两共享密钥Ki+1,i,验证通过,通知组密钥生成单元生成组密钥;否则,通知组密钥生成单元停止生成组密钥;
组密钥生成单元,用于收到所述共享密钥验证单元发送的生成组密钥的通知后,根据所述中间值计算相邻成员间的两两共享密钥,并根据所有两两共享密钥生成组密钥。
13.如权利要求11所述的生成组密钥的系统,其特征在于,所述系统还包括
组密钥种子生成模块,用于对生成的组密钥进行运算,生成组密钥种子;
组密钥更新模块,用于当有新成员加入所述组时,根据所述逻辑环组成模块将新成员与所述成员U1和所述Un组成一个新逻辑环,使用所述组密钥种子生成模块所生成的组密钥种子,通过所述组密钥生成模块生成新的组密钥。
14.如权利要求13所述的生成组密钥的系统,其特征在于,所述组密钥更新模块还用于
当有成员退出所述组时,将余下的成员组成一个新逻辑环,成员用Wi表示,i为小于n的正整数,根据i的值将成员分为奇数成员和偶数成员;使所述奇数成员选择与原随机数不同的随机数,使所述偶数成员选择与原随机数相同的随机数,通过所述组密钥生成模块生成新的组密钥。
15.如权利要求11所述的生成组密钥的方法,其特征在于,所述系统还包括
签名生成模块,用于对D-H公钥值和中间值进行签名,并在所述组密钥协商报文中携带所述签名;
签名验证模块,用于接收到所述密钥协商报文后,用所述签名验证所述组密钥协商报文是否正确。
16.一种生成组密钥的设备,其特征在于,所述设备包括
逻辑环组成模块,用于与组内设备组成一个逻辑环,本设备用Ui表示,其中,i=1,2,……,n,所述n为组内设备总数;
系统参数选择模块,用于所述逻辑环组成模块完成逻辑环组成后,选择基于椭圆曲线的系统参数;
D-H公钥值计算模块,用于根据所述系统参数选择模块选择的系统参数,计算D-H公钥值,并通过报文收发模块发送给设备Ui-1和设备Ui+1;
共享密钥生成模块,用于根据Diffie-Hellman密钥协商协议、从报文收发模块接收的设备Ui-1和设备Ui+1的D-H公钥值,分别生成两两共享密钥Ki-1,i和两共享密钥Ki,i+1;
中间值生成模块,用于根据所述共享密钥生成模块所生成的两两共享密钥Ki-1,i和Ki,i+1生成中间值;
报文收发模块,用于发送和接收组密钥协商报文,所述组密钥协商报文携带所述D-H公钥值计算模块计算的D-H公钥值或所述中间值生成模块生成的中间值;
组密钥生成模块,用于根据所述系统参数选择模块选择的系统参数和从所述报文收发模块接收的组密钥协商报文中的D-H公钥值和中间值,生成组密钥。
17.如权利要求16所述的生成组密钥的设备,其特征在于,所述设备还包括
组密钥更新模块,用于当组内设备个数发生变化时,根据所述系统参数选择模块、D-H公钥值计算模块、共享密钥生成模块、中间值生成模块和报文收发模块中的信息生成新的组密钥。
18.如权利要求16所述的生成组密钥的设备,其特征在于,所述设备还包括
签名生成模块,用于对所述D-H公钥值计算模块计算的D-H公钥值或中间值生成模块生成的中间值进行签名,并在所述组密钥协商报文中携带所述签名;
签名验证模块,用于接收到所述密钥协商报文后,用所述签名验证所述组密钥协商报文是否正确。
全文摘要
为了解决现有技术中组密钥协商方法计算量较大、占用存储空间较大,且对带宽要求较高的问题,本发明提供了一种生成组密钥的方法、系统和设备,属于网络通信领域。所述方法包括组内成员组成一个逻辑环,选择系统参数,每个成员与相邻成员生成两两共享密钥和中间值,并广播中间值,根据收到的所有中间值计算其它成员间的两两共享密钥,并生成组密钥。所述系统包括逻辑环组成模块、系统参数选择模块、报文收发模块和组密钥生成模块。所述设备包括逻辑环组成模块、系统参数选择模块、D-H公钥值计算模块、共享密钥生成模块、中间值生成模块、报文收发模块和组密钥生成模块。本发明提供的技术解决了现有技术存在的问题,易于使用。
文档编号H04L9/08GK101291214SQ200710098508
公开日2008年10月22日 申请日期2007年4月19日 优先权日2007年4月19日
发明者许春香, 欢 钟, 亚 刘 申请人:华为技术有限公司, 电子科技大学