一种基于无证书公钥密码体制的组密钥协商方法

文档序号:37779648发布日期:2024-04-30 16:50阅读:13来源:国知局
一种基于无证书公钥密码体制的组密钥协商方法

本发明涉及一种组密钥协商机制,特别是一种基于无证书公钥密码体制的组密钥协商方法。


背景技术:

1、1984年,shamir提出了基于身份的密码体制的思想,以用户的身份标识,如电子邮箱地址、电话号码等,作为用户的公钥,从而可以简化传统pki密钥管理。伴随着双线性映射的出现,出现了第一个实用的基于身份的加密方案。在基于身份的密码体制中,用户不用自己选择私钥,需要一个可信密钥生成服务器(private key generator,pkg),负责为每一用户生成与身份标识对应的私钥。密钥生成服务器生成私钥时,需要一个种子私钥。当用户收到用自己身份标识加密的消息后,通过向可信密钥生成服务器认证自己的身份,获得解密的私钥,从而可以解密得到明文。其中机密算法具有以下两个性质:pkg由身份计算私钥是容易的;用户由公钥和私钥对求种子主私钥是困难的。由于pkg知道所有用户的私钥,不诚实的pkg可以窃听任何用户的通信并伪造他们的签名,因此基于身份的密码体制存在私钥托管问题。

2、无证书公钥密码体制是由al-riyami和paterson于2003年提出的,其目的是克服基于身份的密码系统ibc(id-based cryptography)中所固有的私钥托管问题。在无证书密码系统中,用户的私钥由两个部分组成,其一是用户自己随机选取的、仅为用户自身所知的秘密值;第二部分则是由可信第三方密钥生成中心kgc(key generation center)基于用户的身份、系统参数计算得到后安全地传送给用户。这样,密钥生成中心kgc未能得知任何用户的完整私钥,也就不能利用私钥进行通信窃取,因此,无证书密码系统得以出色应对ibc系统中隐含的私钥托管问题。就像ibc系统一样,无证书密码系统也不需要公钥证书,并且由于其能够解决ibc系统中的私钥托管问题,在应用性能和应用广度方面颇为优秀。

3、另一方面,随着信息传输的多元化,传统的一对一加密己不能满足现代通信的需求,一些通信应用需要一对多的加密,例如作战时的指令发布系统、无人机环境下的组密钥协商等。通过多接收者加密方法可以实现将一条消息安全地发送给一组接收者。与传统的签名加密方法相比,签密机制具有以下优点:1)通信开销较低;2)计算成本较低;3)可以实现更高的安全性;4)同时提供认证和不可否认性以及机密性。因此,采用多接收方的签密方案来实现组密钥协商是切实可行的。

4、李文晗等人提出了一种无证书体制中支持双向认证的密钥协商方法,金春花等人提出了一种基于无证书的用户认证和密钥协商方法,李壬永等人提出了一种用于物联网环境下的基于无证书的密钥协商系统及方法,但这三者都不是组密钥协商机制;孙发军提出了一种高效的无双线性对运算的无证书认证密钥协商方法及系统,但是其需要大量的交互,耗时极高;郑军等人提出了一种基于移动ad hoc网络的无证书密钥协商方法,该方法是一种组密钥协商机制,但是使用了计算量极大的双线性对运算。


技术实现思路

1、针对现有技术中存在的问题,本发明的目的在于提供一种基于无证书公钥密码体制的组密钥协商方法。

2、本发明旨在提供一种安全高效的组密钥协商方案,使得群组在需要时可以安全高效灵活地以较小的通信量与计算量,来协商出一个相同的会话密钥,同时保证会话密钥来源的可认证。

3、首先,本方案采用的是基于无证书的公钥密码体制。在该公钥密码体制下,群组内节点的公私钥分为两部分,一部分为节点自己生成,另一部分为kgc基于节点的标识生成;这样,节点可以将自己的标识作为公钥使用,避免了传统公钥密码体制中繁冗的证书机制,保留了标识密码体制的优点,又避免了标识密码体制中存在的密钥托管问题。

4、其次,本方案采用多接收方的签密方案来实现组密钥协商,使得群组中的节点收到相同的签密密文后,可以对密文进行认证,并可以在认证通过后对签密密文进行解密,得到相同的会话密钥。

5、最后,本方案使用拉格朗日插值公式来实现多接收方的签密方案,一方面,随着协商组密钥的群组变大时,签密方案通信量的变化是线性的,且增加单个节点时增加的通信量较小;另一方面,各节点对签密密文进行解签密时,需要的计算量很小,极大地降低了各节点的计算开销。

6、本发明的技术方案为:

7、一种基于无证书公钥密码体制的组密钥协商方法,其步骤包括:

8、1)在公私钥生成阶段,可信第三方密钥生成中心kgc生成主私钥与主公钥;然后群组中的节点生成第一部分公私钥,并向kgc发起第二部分公私钥请求;kgc基于主私钥与主公钥,为发起请求的节点生成第二部分公私钥,并返回给对应节点;节点根据自己生成的第一部分公私钥以及kgc返回的第二部分公私钥得到完整的公私钥;

9、2)在公私钥生成阶段或签密、解签密阶段,将群组中的一节点作为发送者节点,其他节点为接收者节点;

10、3)在签密、解签密阶段,发送者节点接收其他节点发送的签密请求,然后发送者节点根据收到的所有签密请求计算会话密钥的签密密文,并将所述签密密文发送给其他节点;

11、其他节点使用自己的私钥对收到的签密密文进行解签密,得到会话密钥。

12、进一步的,生成节点的完整的公私钥的方法为:

13、11)kgc初始化q,p,e(fp),p和g;其中,p,q是一个大素数,e(fp)是有限域fp上的椭圆曲线,p是椭圆曲线上阶为q的基点,g是p通过加法运算形成的一个阶为q的循环群;

14、12)kgc随机选择一个系统主密钥并设ppub=[msk]p为系统公钥;其中为小于q的正整数集合;kgc选择六个散列函数,即h1():h2():h3():h4():h5():kgc发布共同的系统参数pp={q,p,e(fp),p,g,ppub,h1,h2,h3,h4,h5};

15、13)标识符id的节点随机选择一个正整数作为第一部分私钥,计算puid=[xid]p作为第一部分公钥;

16、14)节点将自己的标识符id与第一部分公钥puid发送给kgc;kgc随机选择正整数并计算rid=[rid]p,zid=rid+msk·h1(id,puid,rid),发送第二部分公私钥did=(rid,zid)给节点;

17、15)节点根据自己生成的第一部分公私钥与kgc发送的第二部分公私钥,生成私钥为prid=xid+zid,公钥为puid=(puid,rid,zid=[zid]p);其中,发送者节点的私钥记为prs,发送者节点的公钥记为pus=(pus,rs,zs),第i个接收者节点的私钥记为pri、公钥记为pui=(pui,ri,zi)。

18、进一步的,所述发送者节点根据群组中各接收者节点的标识与公钥生成所述签密密文;所述签密请求包括接收者节点的标识符以及公钥。

19、进一步的,生成所述签密密文的具体方法为:发送者节点生成随机的组密钥key,根据自己的私钥prs、公钥pus=(pus,rs,zs)以及k个接收者节点的标识符及公钥,计算输出组密钥key的签密密文δs;所述签密密文δs的具体生成方法为:

20、a)生成随机数计算ts=[ts]p,es=h3(pus,ts);

21、b)为k个接收者节点计算ei=[ts](pui+zi),ei=h2(ei),i=1,2,…,k;

22、c)计算σs=ts+hs·prs(hs=h4(ids,pus,zs,ts));

23、d)设mi=key+ei,i=1,2,…,k,设e1,e2,…,ek,ek+1=es;计算

24、

25、e)令cs=(gk,gk-1,…,g0),计算e=h5(ids,pus,cs,ts),r=e+xmod q,

26、s=(1+prs)-1·(ts-r·prs)mod q;生成签密密文δs=(ts,cs,r,s)。

27、进一步的,发送者节点将签密密文δs发送给各接收者节点;接收者节点i收到签密密文δs=(ts,cs,r,s)后,将发送者节点的标识ids与公钥pus、自己的私钥pri作为输入,先对签密密文δs进行签名验证,验证通过后再进行解密,否则拒绝该签密密文δs。

28、进一步的,接收者节点i对签密密文δs进行签名验证、解密的方法为:

29、61)计算e=h5(ids,pus,cs,ts),t=r+smod q;

30、62)计算坐标(x*,y*)=[s]p+[t]pus;

31、63)计算r=e+x*mod q;若r,s∈{1,2,…,q-1}且r=r,则进入步骤64~66)的解密阶段,否则验证失败;

32、64)计算ei=[pri]ts,ei=h2(ei);

33、65)计算

34、66)计算key*=mi-ei,得到会话密钥key*。

35、本发明的优点如下:

36、本发明不仅避免了传统公钥密码体制中繁冗的证书机制,保留了标识密码体制的优点,避免了标识密码体制中存在的密钥托管问题;而且需要的计算量很小,极大地降低了各节点的计算开销。

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