一种支持协同签名的隐式证书签发方法和系统

文档序号:37069741发布日期:2024-02-20 21:22阅读:19来源:国知局
一种支持协同签名的隐式证书签发方法和系统

本发明属于信息安全,具体涉及证书签发和协同签名方法,特别涉及一种支持协同签名的隐式证书签发方法和系统。


背景技术:

1、隐式证书是一种数字证书,允许在不需要可信第三方的情况下验证身份。隐式证书也称为自证明身份或自证明公钥。隐式证书相对显式证书更快更小,能解决证书在资源受限场景中的计算和带宽较大带来的问题。

2、近些年来随着各种攻击技术的发展,攻击方会以各种方式盗取私钥,私钥一旦丢失,攻击方便有了伪造私钥拥有者的签名的能力。私钥保护问题日益成为信息保护技术的关键。针对上述问题,目前一个有效的解决方案是拆分密钥,协同签名就是采用私钥拆分的思路,将签名所用到的密钥分别存储在两个参与方,通信双方可以分别利用各自的部分私钥联合计算才能得到消息的完整签名。

3、将隐式证书和协同签名技术相结合,能够在利用隐式证书证书尺寸小的优点的同时,将私钥拆分便于对私钥进行保护。但是现有的隐式证书签发过程和协同签名密钥生成过程是不兼容的,无法简单将两者结合应用。


技术实现思路

1、有鉴于此,本发明通过设计新的隐式证书签发方法,创新性的在保留隐式证书原有特性之外,将用户私钥拆分成由服务端和客户端分别保管的两个部分私钥,除了兼顾隐式证书和协同签名技术的优势之外,还提供了通过禁用部分私钥来快速撤销证书的功能。

2、为达到上述目的,本发明的技术方案是这样实现的:

3、一种支持协同签名的隐式证书签发方法,包括以下步骤:

4、签发证书前:服务端拥有私钥dca和公钥qca,客户端和服务端共享sm2算法的椭圆曲线参数e(fq)、g和n,椭圆曲线e为定义在有限域fq上的椭圆曲线,g表示椭圆曲线e上n阶的基点,各参数的具体取值等均根据sm2算法预先设定;

5、签发证书时:客户端生成临时私钥ku并计算临时公钥ru;客户端发送自身信息u和公钥ru给服务端;服务端随机生成第一部分私钥d1,并根据d1、u和ru生成隐式证书certu,进一步结合私钥dca生成私钥重构值r和部分公钥p2,将certu和r发给客户端;客户端根据certu、ku和r生成第二部分私钥d2,进一步结合公钥qca生成用户公钥qu和部分公钥p1。用户完整私钥du不在隐式证书签发过程中出现,而是被拆分成了分别由服务端和客户端保存的d1和d2两个部分私钥。

6、签发证书后:客户端拥有certu、d2、p1和qu;服务端拥有u、certu、d1和p2;客户端和服务端通过协同计算生成消息m的签名,签名过程可以由客户端或服务端任意一方发起;签名验证方根据certu和qca生成公钥qu,然后使用qu验证消息m的数字签名。

7、进一步地,所述客户端生成临时私钥ku并计算临时公钥ru,包括:产生随机数ku∈[1,n-1],计算椭圆曲线点ru=kug。

8、进一步地,所述服务端随机生成第一部分私钥d1,并根据d1、u和ru生成隐式证书certu,进而结合私钥dca生成私钥重构值r和部分公钥p2,包括:产生随机数d1∈[1,n-1];计算椭圆曲线点pu=d1ru;生成证书certu=encode(pu,u,*),其中encode为服务端支持的可逆的编码方法,“*”表示服务端向隐式证书中添加的任意内容;然后通过计算证书摘要值e=hn(certu),其中hn为消息摘要算法;然后计算r=d1-1(1+dca)mod n;最后计算p2=eru+rg。

9、进一步地,所述客户端根据certu、ku和r生成第二部分私钥d2,进而结合公钥qca生成用户公钥qu和部分公钥p1,包括:计算证书摘要值e=hn(certu);计算qu=epu+qca;计算d2=eku+r mod n;计算p1=d2-1(qu+g)。

10、进一步地,所述客户端和服务端通过协同计算生成消息m的签名,由客户端发起签名的流程包括:

11、客户端计算待签名消息m的摘要e,随机生成k1∈[1,n-1],计算椭圆曲线点q=k1p1,将e,q发送给服务端;

12、服务端验证q是否满足椭圆曲线方程,若不满足则终止协同签名流程;服务端随机生成k2∈[1,n-1],计算椭圆曲线点(x1,y1)=k2g+q,并计算r=e+x1 mod n,若r=0或r+k2=n,则重新随机生成k2并进行上述计算,否则计算s2=d1-1(r+k2)mod n,将r,s2发送给客户端;

13、客户端接收到服务端发来的r和s2后,如果k1+s2=n则需要重新发起协同签名流程,否则计算s=d2-1(k1+s2)-r mod n,若s=0则重新发起协同签名流程,否则使用公钥qu验证(r,s)是否为消息m的签名,如果不是则本次签名失败,否则输出(r,s)作为消息m的签名。

14、进一步地,所述客户端和服务端通过协同计算生成消息m的签名,由服务端发起签名的流程包括:

15、服务端产生随机数k1∈[1,n-1],计算椭圆曲线点q=k1p2,将q发送给客户端;

16、客户端验证q是否满足椭圆曲线方程,若不满足则终止协同签名流程,否则计算消息m的摘要e,随机生成k2∈[1,n-1],计算椭圆曲线点(x1,y1)=k2g+q,并计算r=e+x1 modn,若r=0或r+k2=n,重新随机生成k2并进行上述计算,否则计算s2=d2-1(r+k2)mod n,将r,s2和消息m发送给服务端;

17、服务端接收到客户端发来的r,s2和消息m后,如果k1+s2=n则重新发起协同签名流程,否则计算s=d1-1(k1+s2)-r mod n,若s=0则重新发起协同签名流程,否则使用公钥qu验证(r,s)是否为消息m的签名,如果不是则本次签名失败,否则输出(r,s)作为消息m的签名。

18、进一步地,所述服务端通过禁用第一部分私钥d1的方式撤销用户的隐式证书。

19、一种支持协同签名的隐式证书签发系统,其包括服务端和客户端;在签发证书前,服务端拥有私钥dca和公钥qca,客户端和服务端共享sm2算法的椭圆曲线参数e(fq)、g和n,椭圆曲线e为定义在有限域fq上的椭圆曲线,g表示椭圆曲线e上n阶的基点;在签发证书时,客户端生成临时私钥ku并计算临时公钥ru,客户端发送自身信息u和临时公钥ru给服务端;服务端随机生成第一部分私钥d1,并根据d1、u和ru生成隐式证书certu,进而结合私钥dca生成私钥重构值r和部分公钥p2,将certu和r发给客户端;客户端根据certu、ku和r生成第二部分私钥d2,进而结合公钥qca生成用户公钥qu和部分公钥p1;在签发证书后,客户端拥有certu、d2、p1和qu,服务端拥有u、certu、d1和p2;客户端和服务端通过协同计算生成消息m的签名,签名过程由客户端或服务端任意一方发起,签名验证方根据certu和qca生成公钥qu,使用qu验证消息m的签名。

20、可见,本发明所述方案中,颁布隐式证书过程中就可以完成私钥的协同生成。服务端和客户端共同持有用户的私钥,并且任何一方都不掌握完整的用户私钥,需要客户端和服务端协作计算才能完成数字签名。

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