一种可撤销的身份公钥加密方法与流程

文档序号:17896010发布日期:2019-06-13 15:59阅读:716来源:国知局
一种可撤销的身份公钥加密方法与流程

本发明属于信息安全技术领域,具体涉及签名技术和身份公钥加密技术,尤其涉及一种可撤销的身份公钥加密方法。



背景技术:

公钥密码是解决日益突出的信息安全问题的重要技术。在公钥密码系统里,首先需要解决的是公钥的真实性和有效性问题。传统的公钥系统通过给用户颁发公钥证书来实现认证,但与此同时,公钥证书的管理需要巨大的开销。身份公钥密码系统(identitybasedpublickeycryptography,idpkc)则较好地解决了传统公钥密码系统中复杂的证书管理问题。idpkc由著名密码学家adshamir于1984年提出,在该系统中,用户的身份(比如手机号、ip地址和email地址)就是用户的公钥。2001年,boneh与franklin利用双线性映射weil对首次设计出一个实用的身份公钥加密方案,使身份公钥密码迈进了实际应用的门槛。

2008年,身份公钥密码算法(也称标识密码算法)正式获得国家密码管理局颁发的商密算法型号sm9(gm/t0044-2016),为我国身份公钥密码技术的应用奠定了坚实的基础。sm9算法不需要申请数字证书,使用方便,易于部署,可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等,适用于保护互联网各种新兴应用的安全,如基于云计算的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等。

每种公钥系统都必须解决一个重要问题——用户撤销问题,当用户的使用权限到期,用户的私钥泄露,或用户操作违规,这时系统需要撤销这类用户。在传统公钥系统中,撤销方法有撤销列表crls、在线证书状态协议ocsp等,都是比较成熟的技术,但这些技术并不适用于身份公钥系统。根据身份公钥系统的结构特点,目前的用户撤销技术主要是系统周期性地更新用户私钥,但是每次更新的密钥都必须通过秘密信道传输给用户,而秘密信道的建立需要系统和用户很多额外的计算资源和通信开销。因此,如何提高身份公钥系统下的用户撤销机制的运行效率是一个需要解决的重要问题。目前,boldyreva等人设计了一个具有可扩展性的可撤销的身份公钥加密(ribe)方案,libert和vergnaud对该方案作了改进,提高了安全性,seo等人在pkc2013上提出了应对解密密钥泄露威胁的ribe方案。但是,现有身份公钥系统的用户撤销技术在效率和实用性方面仍然有待进一步提高。



技术实现要素:

发明目的:本发明提供一种可撤销的身份公钥加密方法,该方法是基于国密标准sm9设计的,安全、高效、实用。本方法在进行数据保密传输时,能撤销用户,使得不符合要求的用户无法获得正确的明文消息,保障了系统的安全性。

为实现上述目的,本发明公开的技术方案是:私钥生成中心pkg利用用户的身份和时间参数生成用户的私钥和时间密钥,并通过定时更新时间密钥的方法来撤销不符合要求的用户。具体步骤如下:

(1)系统主密钥生成:身份公钥系统从计算机编程语言库jpbc库或者pbc库中选取一套参数,所述参数包括三个阶为大素数q的循环群选取双线性映射的生成元p1,的生成元p2,选取两个不同的哈希函数h0和h1,选取系统主私钥ke,根据ke计算系统主公钥ppub=[ke]p1,将参数公开,系统主私钥ke保密,并且选取一个密钥导出函数kdf和消息认证码函数mac。

(2)用户私钥生成:身份公钥系统将用户的身份id作为用户的公钥,并根据id和系统主私钥ke,生成用户的私钥skid;

(3)时间密钥生成:根据时间参数t、用户的身份id和系统主私钥ke,生成用户的时间密钥tkid,t;

(4)加密传输:消息发送者利用消息接收者的身份id、时间参数t和系统公共参数params计算出一个临时会话密钥k,再利用该临时会话密钥k加密消息m,得到密文c,将密文c发送给接收者。

(5)解密步骤:接收者利用双线性映射、自己的私钥skid和时间密钥tkid,t计算出临时会话密钥k,再用该会话密钥k解密出明文消息m。

进一步的,步骤(1)所选取的两个不同的哈希函数其中,表示有限域zq去掉零元素后的乘法群。

步骤(2)所述的用户私钥skid生成,包括以下步骤:

(2.1)身份公钥系统的私钥生成中心pkg计算用户身份id的哈希函数值h0(id);

(2.2)pkg计算用户的私钥,其计算公式为:

skid=[(h0(id)+ke)-1ke]p2,

其中,[]表示点乘运算。

步骤(3)所述的用户的时间密钥tkid,t生成,包括以下步骤:

(3.1)计算用户身份id和时间参数t的哈希函数值h1(id||t);

(3.2)再计算时间密钥,计算公式如下:

tkid,t=[(h1(id||t)+ke)-1ke]p2

其中,[]表示点乘运算,||表示比特顺序级联。

步骤(4)所述加密消息m包括如下步骤:

(4.1)发送者利用hash函数h0和h1分别计算qid=[h0(id)]p1+ppub和qid,t=[h1(id||t)]p1+ppub;

(4.2)从中随机选择两个数r0和r1,计算出部分密文c0=[r0]qid和c1=[r1]qid,t;

(4.3)利用双线性运算计算

(4.4)利用密钥导出函数kdf,计算用于加密的临时会话密钥k=kdf(c0,c1,w,id,klen)=k1||k2,其中,klen表示密钥长度;

(4.5)利用密钥k1加密消息m,计算部分密文符号表示异或;

(4.6)利用密钥k2计算部分密文c3=mac(k2,c2),该部分密文用于密文的完整性验证;

(4.7)输出密文c=(c0,c1,c2,c3),并把它发送给消息接收者。

步骤(5)所述的接收者利用双线性映射、自己的私钥skid和时间密钥tkid,t解密密文,其步骤如下:

(5.1)利用双线性运算e、用户的私钥skid和时间密钥tkid,t,计算w=e(c0,skid)e(c1,tkid,t);

(5.2)根据上一步计算得到的w,计算用于解密密文的临时会话密钥k=kdf(c0,c1,w,id,klen)=k1||k2;

(5.3)验证密文的完整性:计算c′3=mac(k2,c2),验证c′3是否与部分密文c3相等,如果是,则说明密文没有被修改过,可进一步解密出消息否则,输出“密文无效”。

有益效果:本发明通过更新时间密钥的方法,使得系统中不符合要求的用户无法解密出正确的明文,从而实现对用户的撤销操作。更新的时间密钥只需要通过公开信道传输,节省了通信开销,并且本发明所采用的身份公钥加密算法为国家商用密码算法sm9,具有实用性。

附图说明

图1是本发明身份公钥系统示意图;

图2是本发明的加解密过程示意图。

具体实施方式

为了详细的说明本发明公开的技术方案,下面结合说明书附图和具体实施例做进一步的阐述。

本发明所提供的一种可撤销的身份公钥加密系统如图1所示,首先由该加密系统的私钥生成中心pkg生成用户的私钥,然后将用户私钥通过秘密信道发送到各个用户端,用户均采用其身份id作为公钥,唯一标识用户。

对于图1,本发明的有关技术术语说明如下:

(1)pkg为身份公钥系统的“私钥生成中心”,负责生成用户的私钥和更新时间密钥。

(2)id为用户的身份,唯一标识用户,是用户的公钥,可采用比如手机号码或邮件地址。

如图2所示的是一种可撤销的身份公钥加密方法具体的步骤流程图,包括如下步骤:

步骤1、生成系统主密钥:

从java的jpbc库(或c语言的pbc库)中选择三个阶为素数q的循环群(可采用256位的椭圆曲线y2=x3+b)。p1和p2分别是群的生成元,是非对称双线性映射。选取两个不同的哈希函数可以将任意长的比特串映射到中,这里,表示有限域zq去掉零元素后的乘法群。

pkg从中随机选取一个元素ke,并计算ppub=[ke]p1。秘密保存主私钥ke,公开系统参数其中,[]表示点乘运算。

步骤2、私钥生成

以用户身份id为输入,pkg首先计算id的哈希函数值h0(id),再将h0(id)与ke模q相加得到u=h0(id)+ke(modq),再采用扩展欧几里得算法对u求模q逆,即u-1(modq),然后u-1与ke相乘,得到的乘积与p2做点乘运算,用户私钥skid=[u-1k]p2,并通过安全信道将私钥skid传送给用户。

步骤3、时间密钥生成

pkg根据用户身份id、时间参数t和系统主密钥ke,按照公式tkid,t=[(h1(id||t)+ke)-1ke]p2,计算出时间密钥tkid,t,具体计算过程与skid的计算过程类似,不同的是,哈希函数h1的输入除了用户身份id外,还有时间参数t。pkg通过公开信道将tkid,t传送给用户,并根据新的时间参数定期为用户重新计算tkid,t。

时间参数t是更新密钥的时间,可根据具体的应用场景来确定,被访问频繁的系统可以将时间参数t设置的稍短一些,不经常被访问的系统可以将时间参数设置的稍长一些,比如云计算环境下的访问控制系统可将时间参数设置为一个月。

步骤4、加密并传输

(1)消息发送者首先根据消息接收者的身份id和时间参数t分别计算哈希值h0(id)和h1(id||t),并做点乘运算[h0(id)]p1和[h1(id||t)]p1,再计算qid=[h0(id)]p1+ppub和qid,t=[h1(id||t)]p1+ppub;

(2)从中随机选择两个数r0和r1,计算c0=[r0]qid和c1=[r1]qid,t;

(3)计算

(4)通过密钥导出函数kdf,计算临时会话密钥k=kdf(c0,c1,w,idklen)=k1||k2,其中,klen表示密钥长度,符号“||”表示比特顺序级联;

(5)用k1加密消息m,得到部分密文其中,符号表示比特异或;

(6)用k2计算用于完整性验证的部分密文c3=mac(k2,c2),其中,mac是消息认证码函数;

(7)得到完整的密文c=(c0,c1,c2,c3),把密文c发送给接收者。

步骤6、解密

接收者收到密文c=(c0,c1,c2,c3)后,根据自己的私钥skid和时间密钥tkid,t,按如下过程解密出明文消息m:

(1)计算双线性映射e(c0,skid)和e(c1,tkid,t)的乘积,记为w,具体计算公式为w=e(c0,skid)e(c1,tkid,t);

(2)根据w计算临时会话密钥k=kdf(c0,c1,w,id,klen)=k1||k2;

(3)根据k2计算c′3=mac(k2,c2),并验证c′3是否等于c3,如果相等,则按公式计算出消息m,否则输出“密文无效”。

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