什么是DSA(What is DSA)?
是由美国国家标准技术研究所(NIST)开发的数字签名标准。该标准包含了一个确定数字签名算法的规范,这些算法用于保证数字签名的强度和安全性。
DSS使用一种称为DSA(Digital Signature Algorithm)的加密算法来生成数字签名。DSA是一种公钥加密算法,它基于有限域上的离散对数问题。通过DSA算法,可以生成数字签名,证明某个特定的文档或信息确实由指定的发件人发送或创建,同时还能验证其完整性和真实性,从而确保信息的安全性和可靠性。DSS已被广泛应用于数字证书、电子邮件和电子商务等领域,成为数字安全领域的一个重要标准。
过程(Process):
-
密钥生成:首先,使用特定的算法生成公钥和私钥。公钥是公开的,用于验证数字签名的有效性。私钥是私有的,只有签名者知道,并用于生成数字签名。
-
消息摘要:接下来,将要签名的消息通过哈希函数生成一个消息摘要。这个摘要是消息的唯一数字指纹。
-
数字签名:使用私钥和消息摘要生成数字签名。这个数字签名包含了消息的哈希值和签名者的私钥信息。数字签名可以通过公钥进行验证。
-
验证签名:最后,接收者使用签名者的公钥来验证数字签名的有效性。如果数字签名有效,那么接收者可以确认消息的完整性和来源。
这个工作流程保证了消息的完整性和安全性,同时可以确保签名者的身份。
参数(Ingredients):
H: 哈希函数
p:素数,其中素数的范围应大于2048bits, 比如2189, 二进制写为100010001101, 就是12bits。
q: q是 p-1的一个素因子(质因子)
g: g = h^[(p-1)/q] mod p, 1 < h < p-1
x: 随机生成的私钥, 0 < x < p
y: y = g^x mod p, 公钥为(p, q, g,y)
k: 随机选择数, 范围同样是 0 < k < p
实例(Example):
我们有以下数据作为我们签名时的数据:
签名过程(Signning):
r = g^k mod p
s = k^(-1) * (H(m) + x * r ) mod q
形成了数字签名 (r,s) ,同信息一起发送至接收方。
验证过程(Verification):
u = [s^(-1) * H(m)] mod q
v = [s^(-1) * r ] mod q
Prove that: g^u * y^v mod q = r,就可证明数字签名有效,信息确实来自发送方。
因为最后的结果 17 与 r 相等, 所以签名有效
为什么要mod p?
1.它可以用来缩短签名。
2.与加密不同,1000位的明文在加密时必须产生至少1000位的密码。然而,对于签名(与MAC相同),签名应该足够长,以至于不可能产生这样的签名。它不需要与文件的大小相匹配。
3.在mod q后,签名将被减少到q的大小。
为了节省篇幅,计算过程省略掉了,模运算我会另出一章。如有问题,恳请大家指正!
今天的文章数据安全算法学习——DSA算法(DSS)「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/75340.html