您好,欢迎访问山东渔翁信息技术股份有限公司官方网站
渔翁信息

专注密码硬件研发生产定制

咨询热线: 400-6686-188

产品中心

热门产品

联系我们

咨询热线:400-6686-188

市场合作:孙经理:13806311977

售后服务:房经理:0631-5651692

邮箱:support@fisherman-it.com

地址:济南市高新区齐鲁软件园F座

新闻中心 您的位置:首页 > 新闻中心 >

rsa数字签名过程

文章出处:渔翁信息作者:渔翁信息人气:发表时间:2019-03-21 13:40

设RSA算法的私钥为d,公钥为(e,n),则RSA签名算法的思想就是:签名者用自已的私钥d加密文件摘要,其他人用签名者的公钥e就可以验证签名。

RSA算法签名过程是:用户A对消息M进行签名,他先计算M的摘要H(M),再用私钥d签名:

SA=Sig(H(m)=(H(m))d mod n

最后将SA附在M后,作为用户A对消息M的签名。

RSA算法验证签名过程是:如果其他用户要验证用户A对消息M的签名,则他们用A的公钥e计算

M'=SAe mod n

如果M'与M相等,则确定签名是用户A所产生的。可见,RSA签名算法的计算过程就是RSA加密算法的逆过程。

RSA数字签名需要注意以下事项:若用RSA算法达到数字签名,先对消息求消息摘要是必须的,再用私钥签名;或签名的密钥对专用于签名,而用另外一对公钥/私钥对进行加/解密。

这是因为,签名者的公钥e和n是公开的,攻击者如果截获别人发给签名者的密文c(c是别人用签名者的公钥e加密得到的,即c=me mod n),则攻击者可以任选一个与n互素且小于n的数r,计算

x=re mod n

y=xc mod n

将y发给签名者签名,如果他随意就用自己的私钥d给攻击者发来的y签名,即

u=yd mod n

则攻击者获得签名u后,就可以轻松地恢复出c对应的明文m。他首先计算r的乘

法逆元t,即t=r-1 mod n,再把t和u相乘即得到m,这是因为

tu=r-1ymod n

=r-1(xc)d mod n=r-1xdcd mod n

=r-1redcd mod n=r-1rk∂(n)+1cd mod n

=r-1rcd mod n=cd mod n=m

而如果先对消息y求消息摘要H(y)再签名则不存在该问题,或者签名和加密使用不同的密钥对也能避免该问题。


  1. 一键分享到

返回顶部