一种基于公钥证书的数字签名方法

文档序号:5086951阅读:720来源:国知局
专利名称:一种基于公钥证书的数字签名方法
技术领域
本发明涉及保密或安全通信的数字签名方法,具体地说是一种基于公钥证书的数字签名方法。
背景技术
信息系统在运行过程中,往往受到许多威胁和攻击。信息传递过程中的保密和安全问题正受到越来越多的国家所关注。网络和信息安全对经济发展、国家安全和社会稳定起着重要的作用。在一个系统内许多用户之间发送的信息如开出的电子支票和汇票等,怎样确保用户开出的信息或开出的支票不被人破译、修改和伪造,是确保信息安全的核心问题。为此,国内外学者进行了大量有意义的研究工作,产生了许多数字签名方法。CN1177872A公开了一种用于实现具有消息附录的数字签名方法,采用一散列函数以减少签名长度,保密程度不够理想。CN1197248A公开了一种数字签名方法,该方法中需要采用签名黑匣子硬件,实施起来比较困难。EP0807908A2公开了一种将椭圆曲线应用于签名体制上的方法,但该方法中选用的模数极小,因而只限用于智能卡。

发明内容
本发明的目的是提供一种基于用户公钥证书的数字签名方法,它是从离散对数问题出发,辅以抗碰撞杂凑函数和公钥证书进行签名和验证签名的数字签名方法。可以用来防止信息的假冒和内容篡改。
本发明采用的技术方案具体的步骤如下定义了一个系统参数(Zp,G,q,H),其中Zp是一个模素数生成的大素数群,G是Zp的阶数为q的子群(p=2q+1,p,q均为大素数),H是G3→G的抗碰撞杂凑函数。系统参数(Zp,G,q,H)可由一组用户公用。1.在大素数阶群Zq上定义一个元素x作成私钥矢量;由私钥矢量的逆与生成元g(公钥的第一分量)经过模指数运算得到结果y作为公钥矢量的第二个分量,加上c=H(Cert-data)构成公钥矢量的三个分量(其中,Cert-data是用户证书数据,c为用户证书数据的杂凑值)。数字签名具体的私钥和公钥矢量的生成步骤如下(a)在Zq随机选取x,计算x的逆t,在G中选定一个生成元g,计算y=g1modp;
(b)私钥为x,公钥为(g,y,c)。
通过签名者和验证者通过交互实现验证者对签名的验证,假设用户A想向用户B签名一则消息明文m,本发明实现签名和验证的过程如下(a)A在Zq中随机选取r,计算u=H(c,gr),e=H(u,m)和v=x(r-e)mod q,(u,v)就是本方法产生的对m的数字签名;(b)验证者B接受到消息m及其签名的一个三元组(m,u,v)后,计算e=H(u,m),验证u=H(c,geyv)是否成立,如等式成立则接受A的签名;否则拒绝A的签名。如果协议双方A和B都按照上述体制来进行对话,则geyv=gey(r-e)=gr从实现上可以看出,本发明所提出的数字签名方法,在签名过程中只需一次模指数运算,一次模乘运算,一次加法,在线计算量只需一次模乘和一次加法,因此具有很高的效率,所用的计算资源很少,即使是计算资源非常有限的智能卡应用也能使用。本签名可以缩短签名和认证所需的时间,计算量小并且具有很高的安全性,因而本发明提出的数字签名方法具有广阔的应用前景。
本发明与背景技术相比具有的有益效果是它是从离散对数问题出发,辅以抗碰撞杂凑函数和公钥证书进行签名和验证签名的数字签名方法。它具有可证明的安全性,且具有较好的运算速度。可以用于网络通信,电子商务,票据、证件以及信息发送者的身份验证,信息的防伪和防篡改,以及防信息发送方抵赖的功能。由于本方法总的计算量很小,所以也能应用于即使是计算资源非常有限的智能卡上。
具体实施例方式
当本发明用于网络通信时,假定用户A想发送给用户B一个保密的信息,并且要让B确认是A发送的。这时想发送的信息就是明文m,本方法中,用户A和用户B共同用一系统参数(Zp,G,q,H),这里分别给出P为512比特和1024比特的例子512P=0xED100D4D388990F60C7BD3C800D83355904433FF74E3BE0659D5C4E818239E600BD2D0DB7A5F42D2DAD99DF5DCC1014FD5B3F863D6632578230706C0A4CACCB71024P=0xED8E7692CDA48EE01F012E58AA7F06FD6203393B17C392DF6970B4934D4F613A35EB9A64208D26CA148B12FF28D6B18EF427BEFCAC7780AFD95229E759177137261A6D939FB5465F72D16EB3E7ECE01232081F003A3938555D49328E4860FF4F77FD1BBDB3222E0D0D021619EAA5F81F4C98E92C595801B04C3C9E3A0E4C0A53假定签名者的私钥为(x),公钥为(g,y,c),m为想要签名的消息,签名和验证的过程如下(a)签名者随机选取r∈Zq,计算u=H(c,gr),e=H(u,m)和v=x(r-e)mod q,(m,u,v)称为m的数字签名;(b)验证者接受到消息m的一个相关的三元组(m,u,v)后,计算e=H(u,m),验证u=H(c,geyv)是否成立,如等式成立则接受签名;否则拒绝签名。
权利要求
1.一种基于公钥证书的数字签名方法,其特征是基于离散对数困难问题假设,辅以抗碰撞杂凑函数和公钥证书进行签名和验证签名的数字签名方法。
2.根据权利要求1所述的一种基于公钥证书的数字签名方法,其特征是定义了一个系统参数(Zp,G,q,H),其中Zp是一个模素数生成的大素数群,G是Zp的阶数为q的子群(p=2q+1,p,q均为大素数),H是G3→G的抗碰撞杂凑函数。系统参数(Zp,G,q,H)可由一组用户公用。
3.根据权利要求2所述的一种基于公钥证书的数字签名方法,其特征是大素数阶群Zq上定义一个元素x作成私钥矢量;由私钥矢量的逆与生成元g(公钥的第一分量)经过模指数运算得到结果y作为公钥矢量的第二个分量,加上c=H(Cert-data)构成公钥矢量的三个分量(其中,Cert-data是用户证书数据,c为用户证书数据的杂凑值)。数字签名具体的私钥和公钥矢量的生成步骤如下(a)在Zq随机选取x,计算x的逆t,在G中选定一个生成元g,计算y=g1modp;(b)私钥为x,公钥为(g,y,c)。
4.根据权利要求2所述的一种基于公钥证书的数字签名方法,其特征是通过签名者和验证者通过交互实现验证者对签名的验证,假设用户A想向用户B签名一则消息明文m,本发明实现签名和验证的过程如下(a)A在Zq中随机选取r,计算u=H(c,gr),e=H(u,m)和v=x(r-e)mod q,(u,v)就是本方法产生的对m的数字签名;(b)验证者B接受到消息m及其签名的一个三元组(m,u,v)后,计算e=H(u,m),验证u=H(c,geyv)是否成立,如等式成立则接受A的签名;否则拒绝A的签名。如果协议双方A和B都按照上述体制来进行对话,则geyv=geg(r-e)=gr
全文摘要
本发明涉及一种基于公钥证书的数字签名方法。它是从离散对数问题出发,辅以抗碰撞杂凑函数和公钥证书进行签名和验证签名的数字签名方法。它具有可证明的安全性,且具有较好的运算速度。可以用于网络通信,电子商务,票据、证件以及信息发送者的身份验证,信息的防伪和防篡改,以及防信息发送方抵赖的功能。由于本方法总的计算量很小,所以也能应用于即使是计算资源非常有限的智能卡上。
文档编号G06K9/00GK1444165SQ03116618
公开日2003年9月24日 申请日期2003年4月23日 优先权日2003年4月23日
发明者朱华飞 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1