基于无证书的单向多跳代理重签名方法与流程

文档序号:17374692发布日期:2019-04-12 23:10阅读:400来源:国知局

本发明涉及移动互联网及密码学领域,具体讲是涉及一种基于无证书的单向多跳代理重签名方法。



背景技术:

在基于pki的公钥密码体制中,用户的身份和公钥通过由可信证书颁发机构颁发的证书进行绑定,这也导致证书的管理不可避免地产生巨大的额外开销。作为基于pki的公钥密码体制的替代方法,基于身份的公钥密码体制在1984年被shamir提出。在该体制中,用户的公钥可以容易地从其自身的身份或电子邮件地址等一些能唯一标识用户身份的信息中导出,而用户的私钥是由pkg生成。因此,基于身份的公钥密码体制虽然优雅地消除了证书的必要性,但是由于pkg知道用户的私钥并可以轻松地进行伪造攻击,该体制也存在密钥托管问题。为了进一步解决密钥托管问题,al-riyami等人在2003年提出了基于无证书的公钥密码体制这一概念。在基于无证书的密码体制中,用户的私钥包括由用户本身选择的秘密值和由kgc生成的部分私钥,这样的构造成功地解决了密钥托管问题。

1998年,blaze等人首次提出代理重签名的概念。在代理重签名中,一个半可信代理服务器通过转换密钥把受托者alice在消息m上的签名转换为委托者bob在同一消息下的签名,并且代理服务器自身不能生成受托者和委托者任意一方的签名。但是由于blaze等人没有提出代理重签名的形式化定义,使得人们没有很好地认识到其优点。直到2005年,ateniese和hohenberger在指出bbs方法缺陷的同时,形式化定义了代理重签名以及它的安全性模型。代理重签名算法才重新回到人们的视野中,具有单/双向、单/多跳等不同属性的代理重签名相继被提出。单向性是指代理服务器只被允许将受托者在消息m上的签名转换为委托者在相同消息下的签名,该过程不可逆;双向性是指具有重签名密钥的代理服务器不仅可以将受托者在消息m上的签名转换为委托者在相同消息m上的签名,也能将委托者在消息m上的签名转换为受托者在相同消息m上的签名。单跳性是指只有由签名算法生成的签名才能作为输入在重签名算法中执行;多跳性是指除了由签名算法生成的签名,由重签名算法进行转换后生成的新签名也能再次在重签名算法中执行。然而,目前现有的代理重签名方法都是基于pki或基于身份公钥密码系统下的单向单跳方法,这些密码系统所带来的固有开销和安全方面的缺陷,以及单跳属性无法满足实际环境中对扩展性需求的问题,使得代理重签名的应用受到了极大的限制。



技术实现要素:

为了克服上述代理重签名方法的缺陷,本发明提供了一种基于无证书的单向多跳代理重签名方法。

本发明所采用的技术方法是:通过技巧性地对代理重签名中的转换密钥等结构和算法进行设计,并将无证书公钥密码体制与代理重签名原语结合,使得代理服务器在无证书密码系统下将受托者在消息m上的签名单向转换为在相同消息下委托者的签名,并且生成的新签名能够再次进行重签名操作,成功实现了受托者签名在无证书系统下以单向和多跳的属性转换为委托者签名的转换,有效解决了现有代理重签名方法因密码系统和属性缺陷而存在的在实际应用中不安全、低效和难扩展的问题。

与现有技术相比,本发明的有益效果是技巧性地将无证书公钥密码体制与具有单向多跳属性的代理重签名方法相结合,避免了证书管理所带来的昂贵开销和密钥托管造成的安全缺陷,有效解决了现有代理重签名方法在实际应用中所存在的不安全、低效和难扩展的问题。

本发明中的基于无证书的单向多跳代理重签名方法涉及三个实体:代理服务器、受托者和委托者。

具体实施方式

本发明实施方式包含以下八个算法。

(1)系统初始化setup:

(a)选取两个阶为素数p的循环群g和gt,一个双线性对e:g×g→gt。p是g的生成元;

(b)在模p的最小非负简化剩余系上随机选取一个数msk作为系统主密钥,并且计算mpk=msk·p作为系统主公钥;

(c)随机选取两个hash函数和h2:{0,1}*→g;

(d)发布系统参数params={g;gt;p;e;p;mpk;h1,h2},秘密保存主密钥msk。

(2)部分私钥生成partial-secret-key-generation:

(a)随机在上选取一个数ri,计算ri=ri·p;

(b)计算h1,i=h1(idi,ri)和si=ri+h1,i·mskmodp;

(c)返回用户对应的部分私钥ski=(ri,si)。部分私钥ski的有效性可以通过检查等式si·p=ri+h1,i·mpk是否成立进行验证。

(3)秘密值生成secret-value-generation:

(a)随机在上选取一个数xi作为用户对应的秘密值。

(4)公钥生成public-key-generation:

(a)计算pki=xi·p并设置pki为用户的公钥。

(5)重签名密钥生成rekey:

(a)输入系统参数params,委托者的身份idi和公钥pki,以及受托者的秘密值和部分私钥。

(b)计算

(c)生成重签名密钥

(6)签名生成sign:

(a)随机在上选取l(l≥1)个数(t1,...,tl)。l表示对消息m的签名级数,当用户生成一个对消息m的初始签名时,l=1;原签名每经过一次重签名算法生成新签名时,l=l+1;

(b)计算

其中h2,i=h2(m);

(c)生成签名

(7)重签名resigm:

(a)输入系统参数params,受托者idi对消息m的第l级签名和重签名密钥

(b)首先,通过检查等式verify((σi,l),m,idi,pki)=1是否成立,验证委托者签名的有效性;

(c)如果签名无效,则拒绝。如果签名有效,进行重签名操作:随机在上选取l+1个数(t′1,...,t′l+1),并计算

(d)σ′=(σ′(1),:::,σ′(2(l+2)))是重签名算法生成的签名。

(8)签名验证verify:

(a)输入系统参数params、签名者的公钥pki和签名者对消息m第l级的签名σi;

(b)计算h1,i=h1(idi,ri),h2,i=h2(m),通过检查等式

是否成立,验证签名有效性;

(c)如果签名有效,则输出1;否则,输出0。

注:方法正确性:

(1)等式一:

(2)等式二:

(3)等式三:

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