基于椭圆曲线的组密钥产生方法转让专利

申请号 : CN200910243566.6

文献号 : CN102111266B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭宝安张飚于志强丁瑶唐凌叶松王杰斌吴渊鲁昱

申请人 : 航天信息股份有限公司

摘要 :

一种基于椭圆曲线的组密钥产生方法,包括步骤:步骤a,任意选定小组内的一个或者多个成员作为组织者,小组内其他成员作为通用成员;步骤b,小组内各个成员分别其他成员广播自身的公钥信息Pn;步骤c,各个通用成员根据接收到的公钥信息生成第一子密钥,并广播发送到小组内的其他成员;步骤d,所述组织者产生随机整数r,计算一叠加项,向小组内各个通用成员分别发送包含所述叠加项信息的第二子密钥;步骤e,任一通用成员Am根据接收到的其他的通用成员广播的第一子密钥,以及所述组织者对任一通用成员Am发送的第二子密钥,生成组密钥K;步骤f,所述组织者根据小组内各个通用成员产生的第一子密钥,以及组织者本身产生的所述叠加项,生成组密钥K。

权利要求 :

1.一种基于椭圆曲线的组密钥产生方法,应用于由n个成员构成的小组,小组成员分别用A1,A2,…,An来表示;小组内各个成员对应的私钥分别为a1,a2,…,an,对应的公钥分别为P1,P2,…,Pn;其中,P1=a1*p,P2=a2*p,…,Pn=an*p,p为公开基点;其特征在于,所述方法包括步骤:步骤a,任意选定小组内的一个或者多个成员作为组织者,小组内其他成员作为通用成员;

步骤b,小组内各个成员A1,A2,…,An分别向小组内的其他成员广播自身的公钥信息P1,P2,…,Pn;

步骤c,各个通用成员根据接收到的其他成员广播的公钥信息生成第一子密钥,并广播发送到小组内的其他成员;

步骤d,所述组织者产生随机整数r,计算一叠加项,向小组内各个通用成员分别发送包含所述叠加项信息的第二子密钥;

步骤e,任一通用成员Am根据自身的私钥、所述组织者的公钥、所述任一通用成员Am产生的所述第一子密钥Km、所述任一通用成员Am接收到的其他的通用成员广播的第一子密钥,以及所述组织者对任一通用成员Am发送的第二子密钥,生成组密钥K;

步骤f,所述组织者根据自身的私钥,小组内其他成员的公钥,小组内各个通用成员产生的第一子密钥,以及组织者本身产生的所述叠加项,生成组密钥K。

2.如权利要求1所述的基于椭圆曲线的组密钥产生方法,其特征在于,所述步骤a为任意选定小组内的一个成员As作为第一组织者,s∈{1,2,…,n},小组内的其他成员A1,A2,…As-1,As+1,…,An作为通用成员。

3.如权利要求2所述的基于椭圆曲线的组密钥产生方法,其特征在于,所述步骤d为小组内的第一组织者As产生随机整数r,计算第一叠加项Sr=r*p,并向小组内任意通用成员Aj分别发送包含第一叠加项信息的第二子密钥Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr,j∈{1,2,…,s-1,s+1,…,n}。

4.如权利要求1所述的基于椭圆曲线的组密钥产生方法,其特征在于,所述步骤a为任意选定小组内的两个成员As和At,其中As作为第一组织者,At作为第二组织者,s,t∈{1,2,…,n},小组内的其他成员A1,A2,…As-1,As+1,…,At-1,At+1,…An作为通用成员。

说明书 :

基于椭圆曲线的组密钥产生方法

技术领域

[0001] 本发明涉及数字密码技术中的组密钥产生方法,特别涉及一种椭圆曲线密码体制上的组密钥产生方法。

背景技术

[0002] 随着Internet的迅猛发展,网络安全问题显得越来越重要,相关网络安全协议应运而生,而这些协议又是以高效安全的加密算法为前提的。
[0003] 加密算法分为对称加密算法和非对称加密算法。在网络上进行数据传输时,通常使用对称加密算法加密所要传输的数据,而用非对称加密算法加密密钥。
[0004] 就非对称加密算法来说,目前RSA应用最为普及,但ECC和RSA相比有许多优点,诸如安全性高、密钥量小、灵活性好等等,自1997年以来,ECC的研究和应用工作已受到普遍关注。
[0005] 组密钥的产生算法可以保证小组内各个成员使用组密钥后,安全的共享小组内的秘密信息,不让小组外的成员获取信息,它是通过ECC的密码交换体制来扩展实现的。目前国际标准的基于ECC的密钥交换体制是ECDH(EllipticCurve Diffie-Hellman)密钥共享算法,现将此算法描述如下:
[0006] 假设椭圆曲线密码系统的公开曲线参数为{q,a,b,G,n,h},其中椭圆曲线y2=3
x+ax+b是有限域GF(q)上的曲线E(Fq),G为基点,n是基点阶,h为协因子;设k∈GF(q),P是曲线E(Fq)上的一点,则Q=kP=P+P+...+P(k个P点求普加)称为点积运算,已知
k和点P求点Q比较容易,反之已知点Q和点P求k却是相当困难的。则ECDH算法步骤如
下:
[0007] (1)成员A选择一个整数nA作为A的私钥,然后产生其公钥PA=nA*p,该公钥是有限域Fq中的一个点;
[0008] (2)同样B也可以产生私钥nB,并计算其公钥PB;
[0009] (3)A和B相互交互公钥;
[0010] (4)A产生秘密密钥K=nA*PB,B产生秘密密钥K=nB*PA;
[0011] 在步骤4中A和B产生的K是相同的,因为nA*PB=nA*(nB*p)=nB*(nA*p)=nB*PA,这样A与B完成了密钥协商过程。
[0012] 在密钥协商过程中,成功的关键在于对于Q=k*P,已知k和点P求点Q比较容易,反之已知点Q和点P求k却是相当困难的。因此即使通信过程中链路被监听,攻击者也不会获得协商好的密钥。
[0013] ECDH算法是针对两个成员之间的密钥协商,在组播环境中应用时,由于组成员的数量增加,会造成运算量增大。

发明内容

[0014] 本发明的目的在于,解决现有技术中在组播中应用ECDH算法,造成的运算量增大的技术问题。
[0015] 为达到上述目的,本发明提供一种基于椭圆曲线的组密钥产生方法,应用于由n个成员构成的小组,小组成员分别用A1,A2,...,An来表示;小组内各个成员对应的私钥分别为a1,a2,...,an,对应的公钥分别为P1,P2,...,Pn;其中,P1=a1*p,P2=a2*p,...,Pn=an*p,p为公开基点。
[0016] 所述方法包括步骤:
[0017] 步骤a,任意选定小组内的一个或者多个成员作为组织者,小组内其他成员作为通用成员;
[0018] 步骤b,小组内各个成员A1,A2,...,An分别向小组内的其他成员广播自身的公钥信息P1,P2,...,Pn;
[0019] 步骤c,各个通用成员根据接收到的其他成员广播的公钥信息生成第一子密钥,并广播发送到小组内的其他成员;
[0020] 步骤d,所述组织者产生随机整数r,计算一叠加项,向小组内各个通用成员分别发送包含所述叠加项信息的第二子密钥;
[0021] 步骤e,任一通用成员Am根据自身的私钥、所述组织者的公钥、所述任一通用成员Am产生的所述第一子密钥Km、所述任一通用成员Am接收到的其他的通用成员广播的第一子密钥,以及所述组织者对任一通用成员Am发送的第二子密钥,生成组密钥K;
[0022] 步骤f,所述组织者根据自身的私钥,小组内其他成员的公钥,小组内各个通用成员产生的第一子密钥,以及组织者本身产生的所述叠加项,生成组密钥K。
[0023] 本发明的有益效果在于,将ECDH中由两个成员之间的密钥协商扩展到小组内所有成员的协商,使得不通过可信第三方,仅依赖于小组内各个成员的共同计算产生组密钥。并且小组内各成员并没有预先共享秘密信息。本发明的方法应用于组播通信中时,所有成员的通信次数和小组内成员的数量呈线性关系,对于计算性能而言,通用成员的点乘次数为常数项,第一组织者As点乘次数与小组内成员数量也是线性关系,可见生成组密钥时,消耗的资源很少。

附图说明

[0024] 图1所示为本发明实施例1的组密钥产生的方法的流程图;
[0025] 图2所示为本发明实施例2的组密钥产生的方法的流程图;
[0026] 图3所示为本发明实施例3的组密钥产生的方法的流程图。

具体实施方式

[0027] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0028] 本发明实施例提供了一种椭圆曲线密码体制(ECC)上的组密钥产生方法,从椭圆曲线离散对数困难问题假设出发,通过巧妙的变形,对ECDH做了扩展,将ECDH中由两个成员之间的密钥协商扩展到小组内所有成员的协商,使得不通过可信第三方,仅依赖于小组内各个成员的共同计算产生组密钥。并且小组内各成员并没有预先共享秘密信息。
[0029] 实施例1
[0030] 假设小组内共有n个成员,分别用A1,A2,...,An来表示;小组内各个成员对应的私钥分别为a1,a2,...,an,对应的公钥分别为P1,P2,...,Pn。其中,P1=a1*p,P2=a2*p,...,Pn=an*p,p为公开基点。
[0031] 参见图1,为本发明实施例1组密钥产生的方法的流程图,具体步骤为:
[0032] 步骤101,任意选定小组内的一个成员As作为第一组织者,s∈{1,2,...,n},小组内的其他成员A1,A2,...As-1,As+1,...,An作为通用成员。
[0033] 步骤102,小组内各个成员A1,A2,...,An分别向小组内的其他成员广播自身的公钥信息P1,P2,...,Pn。
[0034] 步骤103,小组内任意通用成员Am根据接收到的其他成员广播的公钥信息生成第一子密钥Km=am*(P1+P2+...+Pm-1+Pm+1+...+Pn),m∈{1,2,...,s-1,s+1,...,n},并广播发送到小组内的其他成员。
[0035] 其中,am为通用成员Am的私钥,P1,P2,...,Pm-1,Pm+1,...,Pn为通用成员Am接收到的其他成员广播的公钥信息。
[0036] 步骤104,小组内的第一组织者As产生随机整数r,计算第一叠加项Sr=r*p,并向小组内通用成员Aj发送第二子密钥Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr,j∈{1,2,...,s-1,s+1,...,n}。其中第二子密钥Ksj为第一组织者As针对小组内的通用成员Aj分别产生的子密钥。
[0037] 其中,as为第一组织者As的私钥,P1,P2,...,Ps-1,Ps+1,...Pj-1,Pj+1,...,Pn为第一组织者As接收到的小组内通用成员广播的公钥信息。
[0038] 步骤105,小组内任意的通用成员Am,m∈{1,2,...,s-1,s+1,...,n}根据自身的私钥am、第一组织者As的公钥Ps、Am产生的第一子密钥Km、Am接收到的全部的第一子密钥,以及第一组织者As对Am发送的第二子密钥Ksm,生成组密钥:
[0039] K=am*Ps+K1+K2+...Ks-1+Ksm+Ks+1+...+Kn
[0040] =((a1+a2+...an)2-(a12+a22+...+an2)+r)*p。
[0041] 步骤106,第一组织者As根据自身的私钥as,小组内通用成员的公钥P1,P2,…,Ps-1,Ps+1,...,Pn,小组内通用成员产生的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kn,以及第一组织者As本身产生的第一叠加项Sr,生成组密钥:
[0042] K=as*(P1+P2+Ps-1+Ps+1+...+Pn)+K1+K2+...Ks-1+Ks+1+...+Kn+Sr
[0043] =((a1+a2+...+an)2-(a12+a22+...an2)+r)*p。
[0044] 步骤107,对于小组内的所有用户,密钥协商结束。
[0045] 下面对实施例1的组密钥产生的方法的安全性进行说明。
[0046] 对于小组外的攻击者,如果其监听到小组内第一组织者和通用成员之间的通信过程,则攻击者获取的信息为所有成员的公钥P1,P2,...,Pn,所有通用成员生成并广播的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kn,第一组织者As生成的第二子密钥Ksj,j∈{1,2,...,s-1,s+1,...,n}。
[0047] 其中,攻击者获取的关于第一子密钥的信息为:
[0048] Km=am*(P1+P2+...+Pm-1+Pm+1+...+Pn)
[0049] =(ama1+ama2+...+amam-1+amam+1+...+aman)*p,
[0050] 其中m∈{1,2,...,s-1,s+1,...,n}。则攻击者获取的关于第一子密钥的信息的方程共有n-1个。
[0051] 攻击者获取的关于第二子密钥的信息为:
[0052] Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr
[0053] =(asa1+asa2+...+asas-1+asas+1+...asaj-1+asaj+1+...+asan+r)*p,
[0054] 其中j∈{1,2,...,s-1,s+1,...,n}。则攻击者获取的关于第二子密钥的信息的方程共有n-1个。
[0055] 因此,攻击者一共可以构造出2(n-1)个方程,但是其未知数apaq,p∈{1,2,...,n},q∈{1,2,...,n},共(n-1)*n/2个(n>=3),所以通过常规方法解方程组是无法解出未知数apaq,并最终计算出组密钥:
[0056]
[0057] (其中i≠j)。
[0058] 再者,如果攻击者将发送的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kn叠加,则结果为:
[0059]
[0060] 其中i≠j。所以如果攻击者能够通过第二子密钥Ksj,j∈{1,2,...,s-1,s+1,...,n}计算出(asa1+asa2+...+asas-1+asas+1+...+asan+r)*p,那么攻击者就可以计算出组密钥。
[0061] 关于第二子密钥Ksj,j∈{1,2,...,s-1,s+1,...,n},一共有n-1个方程,但是未知数包括asaj,j∈{1,2,...,s-1,s+1,...,n}和r,一共有n个未知数,所以无法解出每一个具体的值。因此无法计算(asa1+asa2+..+asas-1+asas+1+...+asan+r)*p。
[0062] 如果将所有的Ksj叠加,得到
[0063] KsjTemp=((n-2)*(asa1+asa2+...+asas-1+asas+1+...+asan)+(n-1)*r)*p,[0064] 因此,从KsjTemp中也无法计算出(asa1+asa2+...+asas-1+asas+1+...+asan+r)*p。
[0065] 实施例1的组密钥产生的方法的安全保障的根本原因在于,对于每个第二子密钥Ksj,
[0066] Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr
[0067] =(asa1+asa2+...+asas-1+asas+1+...asaj-1+asaj+1+...+asan+r)*p
[0068] 其中j∈{1,2,...,s-1,s+1,...,n},缺少一项asaj*p,而asaj*p只有第一组织者As和通用成员Aj才能知道,通用成员Aj产生的第一子密钥Kj中虽然包含了asaj*p这一项,但却无法从整体的第一子密钥Kj中解出具体的值,另外通过引入随机数r,并在第二子密钥Ksj的构成中减少了asaj*p,通过这样的方式破坏了数据的对称性,使得攻击者无法通过叠加的方式计算
[0069] (asa1+asa2+...+asas-1+asas+1+...+asan+r)*p。
[0070] 实施例2
[0071] 假设小组内共有n个成员,分别用A1,A2,...,An来表示;小组内各个成员对应的私钥分别为a1,a2,...,an,对应的公钥分别为P1,P2,...,Pn。其中,P1=a1*p,P2=a2*p,...,Pn=an*p,p为公开基点。
[0072] 与实施例1相比,实施例2中的第一组织者As在构造组密钥的过程中,计算并存储as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值,对于成员数量很大的组而言,将减少第一组织者As的计算次数,提高计算效率。
[0073] 参见图2,为本发明实施例2组密钥产生的方法的流程图,具体步骤为:
[0074] 步骤201,任意选定小组内的一个成员As作为第一组织者,s∈{1,2,...,n},小组内的其他成员A1,A2,...As-1,As+1,...,An作为通用成员。
[0075] 步骤202,小组内各个成员A1,A2,...,An分别向小组内的其他成员广播自身的公钥信息P1,P2,...,Pn。
[0076] 步 骤 203,小 组 内 任 意 通 用 成 员 Am 生 成 第 一 子 密 钥 Km =am*(P1+P2+...+Pm-1+Pm+1+...+Pn),m∈{1,2,...,s-1,s+1,...,n},并广播发送到小组内的其他成员。
[0077] 其中,am为通用成员Am的私钥,P1,P2,...,Pm-1,Pm+1,...,+Pn为通用成员Am接收到的其他成员广播的公钥信息。
[0078] 步骤204,小组内的第一组织者As产生随机整数r,计算第一叠加项Sr=r*p,并向小组内通用成员Aj发送第二子密钥Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr,j∈{1,2,...,s-1,s+1,...,n}。其中第二子密钥Ksj为第一组织者As针对小组内的通用成员Aj分别产生的子密钥。
[0079] 其中,as为第一组织者As的私钥,P1,P2,...,Ps-1,Ps+1,...Pj-1,Pj+1,...,Pn为第一组织者As接收到的小组内通用成员广播的公钥信息。
[0080] 步骤205,小组内任意的通用成员Am,m∈{1,2,...,s-1,s+1,...,n}根据自身的私钥am、第一组织者As的公钥Ps、Am产生的第一子密钥Km、Am接收到的全部的第一子密钥,以及第一组织者As对Am发送的第二子密钥,生成组密钥:
[0081] K=am*Ps+K1+K2+...Ks-1+Ksm+Ks+1+...+Kn
[0082] =((a1+a2+...+an)2-(a12+a22+...an2)+r)*p。
[0083] 步骤206,第一组织者As根据自身的私钥as,小组内通用成员的公钥P1,P2,...,Ps-1,Ps+1,...,Pn,以及第一组织者As本身产生的第一叠加项Sr计算并存储as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值。
[0084] 步骤207,第一组织者As根据as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值,以及小组内通用成员产生的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kn,生成组密钥:
[0085] K=as*(P1+P2+Ps-1+Ps+1+...+Pn)+Sr+K1+K2+...Ks-1+Ks+1+...+Kn
[0086] =((a1+a2+...+an)2-(a12+a22+...+an2)+r)*p。
[0087] 步骤208,对于小组内的所有用户,密钥协商结束。
[0088] 下面对实施例2的组密钥产生的方法的通信和计算次数进行说明。
[0089] 对于任意的通用成员Am,m∈{1,2,...,s-1,s+1,...,n},广播发送了2次数据,分别是公钥Pm和第一子密钥Km,从其他的通用成员处接收了2次数据,分别是其他成员的公钥Pj,j∈{1,2,...,m-1,m+1,...,s-1,s+1...,n}和第一子密钥Kj,j∈{1,2,...,m-1,m+1,...,s-1,s+1...,n}。通用成员Am从第一组织者As处获得的数据是公钥Ps和第二子密钥Ksm。
[0090] 对于第一组织者As,广播发送了公钥Ps,向任意通用成员Aj,j∈{1,2,...,s-1,s+1,...,n}分别发送第二子密钥Ksj,共发送数据n次。从其他的用户处共接收了2次数据,分别是公钥Pj和第一子密钥Kj。
[0091] 从计算的角度来看,对于任意的通用成员Am,m∈{1,2,...,s-1,s+1,...,n},计算公钥Pm=am*p,需要计算一次点乘;计算第一子密钥Km=am*(P1+P2+...+Pm-1+Pm+1+...+Pn),计算了n-2次点加和一次点乘;计算组密钥K=am*Ps+K1+K2+...Ks-1+Ksm+Ks+1+...+Kn时,计算了n次点加和一次点乘。
[0092] 对于第一组织者As,计算公钥Ps=as*p和第一叠加项Sr=r*p,需要计算二次点乘,计算第二子密钥
[0093] Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr
[0094] =as*(P1+P2+...+Ps-1+Ps+1..+Pn)+Sr-as*Pj
[0095] 其中as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值由第一组织者As计算一次并存储,因此对于其他所有通用成员,第一组织者As共计算了2n-2次点加,n+2次点乘。最后生成组密钥
[0096] K=as*(P1+P2+Ps-1+Ps+1+...+Pn)+K1+K2+...Ks-1+Ks+1+...+Kn+Sr,利用前面的结果,再计算n-1次点加即可。
[0097] 可见生成组密钥时,通信性能如下:
[0098] 对于通用成员,广播发送2次,接收其他用户数据共2(n-1)次。
[0099] 对于第一组织者As,广播发送1次,向其他通用成员发送数据(n-1)次,接收其他通用成员数据共2(n-1)次。
[0100] 计算性能如下:
[0101] 对于通用成员,生成组密钥计算2n-2次点加,3次点乘。
[0102] 对于第一组织者As,生成组密钥计算3n-3次点加,n+2次点乘。
[0103] 对于组播通信而言,所有成员的通信次数和小组内成员的数量呈线性关系,对于计算性能而言,通用成员的点乘次数为常数项,第一组织者As点乘次数与小组内成员数量也是线性关系,可见生成组密钥时,消耗的资源很少。
[0104] 实施例3
[0105] 假设小组内共有n个成员,分别用A1,A2,...,An来表示;小组内各个成员对应的私钥分别为a1,a2,...,an,对应的公钥分别为P1,P2,...,Pn。其中,P1=a1*p,P2=a2*p,...,Pn=an*p,p为公开基点。
[0106] 与实施例1和实施例2不同的是,实施例3中选择两个成员分别作为第一组织者As和第二组织者At,小组内的其他成员为通用成员。
[0107] 参见图3,为本发明实施例3组密钥产生的方法的流程图,具体步骤为:
[0108] 步骤301,任意选定小组内的两个成员As和At,其中As作为第一组织者,At作为第二组织者,s,t∈{1,2,...,n},小组内的其他成员A1,A2,...As-1,As+1,...,At-1,At+1,...An作为通用成员。
[0109] 步骤302,小组内各个成员A1,A2,...,An分别向小组内的其他成员广播自身的公钥信息P1,P2,...,Pn。
[0110] 步 骤 303,小 组 内 任 意 通 用 成 员 Am 生 成 第 一 子 密 钥 Km =am*(P1+P2+...+Pm-1+Pm+1+...+Pn),m∈{1,2,...,s-1,s+1,...,t-1,t+1,...n},并广播发送到小组内的其他成员。
[0111] 其中,am为通用成员Am的私钥,P1,P2,...,Pm-1,Pm+1,...,Pn为通用成员Am接收到的小组内其他成员广播的公钥信息。
[0112] 步骤304,小组内的第一组织者As产生随机整数r,计算第一叠加项Sr=r*p,并向小组内通用成员Aj发送第二子密钥Ksj=as*(P1+P2+...+Ps-1+Ps+1+...Pj-1+Pj+1+...+Pn)+Sr,j∈{1,2,...,s-1,s+1,...,n}。其中第二子密钥Ksj为第一组织者As针对小组内的通用成员Aj分别产生的子密钥。
[0113] 其中,as为第一组织者As的私钥,P1,P2,...,Ps-1,Ps+1,...Pj-1,Pj+1,...,Pn为第一组织者As接收到的小组内通用成员广播的公钥信息。
[0114] 小组内的第二组织者At产生随机整数r1,计算第二叠加项 并向小组内通用成员Aj发送第三子密钥
j∈{1,2,...,t-1,t+1,...,n}。其中第三子密钥Ktj为第二组织者At针对小组内的通用成员Aj分别产生的子密钥。
[0115] 其中,at为第二组织者At的私钥,P1,P2,...,Pt-1,Pt+1,...Pj-1,Pj+1,...,Pn为第二组织者At接收到的小组内通用成员广播的公钥信息。
[0116] 步骤305,小组内任意的通用成员Am,m∈{1,2,...,s-1,s+1,...,t-1,...,t+1,...,n}根据自身的私钥am、第一组织者As的公钥Ps、第二组织者At的公钥Pt、Am产生的第一子密钥Km、Am接收到的全部的第一子密钥,以及第一组织者As对Am发送的第二子密钥Ksm,第二组织者At对Am发送的第三子密钥Ktm,生成组密钥:
[0117] K=am*Ps+am*Pt+K1+K2+...Ks-1+Ksm+Ks+1+...+Kt-1+Ktm+Kt+1+...+Kn2 2 2 2
[0118] =((a1+a2+...+an)-(a1+a2+...+an)+r+r1)*p。
[0119] 步骤306,第一组织者As根据自身的私钥as,小组内其他成员的公钥P1,P2,...,Ps-1,Ps+1,...,Pn,以及第一组织者As本身产生的第一叠加项Sr计算并存储as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值。
[0120] 第二组织者At根据自身的私钥at,小组内其他成员的公钥P1,P2,...,Pt-1,Pt+1,...,Pn,以及第二组织者At本身产生的第二叠加项 计算并存储
的数值。
[0121] 步骤307,第一组织者As根据as*(P1+P2+...+Ps-1+Ps+1+...+Pn)+Sr的数值,第二组织者At的公钥Pt,第二组织者At针对第一组织者As产生的第三子密钥Kts,以及小组内通用成员产生的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kt-1,Kt+1...,Kn,生成组密钥:
[0122] K=as*(P1+P2+Ps-1+Ps+1+...+Pn)+Sr
[0123] +K1+K2+...Ks-1+Ks+1+...Kt-1+Kt+1+...+Kn+Kts+as*Pt,2 2 2 2
[0124] =((a1+a2+...+an)-(a1+a2+...+an)+r+r1)*p
[0125] 其中Kts为第二组织者At针对第一组织者As产生的第三子密钥,
[0126]
[0127] 第二组织者At根据 的数值,第一组织者As的公钥Ps,第一组织者As针对第二组织者At产生的第二子密钥Kst,以及小组内通用成员产生的第一子密钥K1,K2,...,Ks-1,Ks+1,...,Kt-1,Kt+1...,Kn,生成组密钥:
[0128]
[0129]
[0130]
[0131] 其中Kst,为第一组织者As针对第二组织者At产生的第二子密钥,
[0132] Kst,=as*(P1+P2+...+Ps-1+Ps+1+...Pt-1+Pt+1+...+Pn)+Sr。
[0133] 步骤308,对于小组内的所有用户,密钥协商结束。
[0134] 实施例3中的两个组织者可以扩展为多个组织者,并相应地引入多个叠加项使组织者和通用成员之间协商生成组密钥。
[0135] 本发明的方法是在ECDH基础上的扩展,既适用于大素数域的椭圆曲线密码体制,也适用于二元域的椭圆曲线密码体制(包括多项式基的二元域椭圆曲线密码体制和正规基的二元域椭圆曲线密码体制)。在无线自组网和视频会议等领域有很大应用价值。
[0136] 以上对本发明的描述是说明性的,而非限制性的,本专业技术人员理解,在权利要求限定的精神与范围之内可对其进行许多修改、变化或等效,但是它们都将落入本发明的保护范围内。