DSA签名算法简介

目录

DSA算法

密钥生成

签名生成

签名验证

正确性验证

DSA安全性说明


DSA算法是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(Digital Signature Standard)。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份,也可用于由第三方去确定签名和所签数据的真实性。

信息交流中,接收方希望收到的信息未被窜改(信息完整性),还希望接收到的信息确由自己认定的发送方所发(信息来源有效性),那么接收方和发送方就可以约定,共同使用DSA加密算法来实现。

DSA算法

常见DSA参数(p、q、签名)长度为:

  • 1024  160       320
  • 2048  224       448
  • 3072  256       512

下面以1024位的DSA为例进行说明:

密钥生成

https://mmbiz.qpic.cn/mmbiz_png/3moQhp5COwbSEWI2Hzu8ujlibd4O9IK4wI8nJ85JGfaORIO5boDicNSqsic7oI2KPSDDWVTCf1vo7awGHBDpG2nCQ/640?wx_fmt=png

 

签名生成

https://mmbiz.qpic.cn/mmbiz_png/3moQhp5COwbSEWI2Hzu8ujlibd4O9IK4wgvSptwPO2ia6vDnapU9gw4Sg0LuP06dYZeic07f2rjRoS4EJNOl7UlgQ/640?wx_fmt=png

对数据x散列后做签名,签名结果为一对整数(r, s)。

签名验证

https://mmbiz.qpic.cn/mmbiz_png/3moQhp5COwbSEWI2Hzu8ujlibd4O9IK4wRGeQVXVJga2b3EWxSUHRMbey3iaZcMfnW0Qb479Foq3sKm4uwdrUkBg/640?wx_fmt=png

 

正确性验证

‘签名生成’时的s为:

两边同乘s与k的逆,得到

由‘签名验证’时的2、3步替换得到:

两边同时做模p的指数运算得到:

有‘密钥生成’时的步5替换得到:

两边分别模q得到:

由‘签名生成’时的步2中r与‘签名验证’时的步4中v替换得到:

 

DSA安全性说明

DSA加密算法的安全性

DSA加密算法主要依赖于整数有限域离散对数难题,素数P必须足够大,且p-1至少包含一个大素数因子以抵抗Pohlig &Hellman算法的攻击。

DSA加密算法的安全性主要依赖于p和d,若选取不当则签名容易伪造,应保证d对于p-1的大素数因子不可约。

重要特点:两个素数公开

DSA是基于整数有限域离散对数难题的,其安全性与RSA相比差不多。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,也能确认它们是否是随机产生的,还是作了手脚。

 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值