数据安全算法学习——DSA算法(DSS)「建议收藏」

数据安全算法学习——DSA算法(DSS)「建议收藏」本文主要介绍DSA算法,也可称为DSS算法的计算过程,以及是如何验证的

什么是DSA(What is DSA)?

是由美国国家标准技术研究所(NIST)开发的数字签名标准。该标准包含了一个确定数字签名算法的规范,这些算法用于保证数字签名的强度和安全性。

DSS使用一种称为DSA(Digital Signature Algorithm)的加密算法来生成数字签名。DSA是一种公钥加密算法,它基于有限域上的离散对数问题。通过DSA算法,可以生成数字签名,证明某个特定的文档或信息确实由指定的发件人发送或创建,同时还能验证其完整性和真实性,从而确保信息的安全性和可靠性。DSS已被广泛应用于数字证书、电子邮件和电子商务等领域,成为数字安全领域的一个重要标准。

过程(Process):

  1. 密钥生成:首先,使用特定的算法生成公钥和私钥。公钥是公开的,用于验证数字签名的有效性。私钥是私有的,只有签名者知道,并用于生成数字签名。

  1. 消息摘要:接下来,将要签名的消息通过哈希函数生成一个消息摘要。这个摘要是消息的唯一数字指纹。

  1. 数字签名:使用私钥和消息摘要生成数字签名。这个数字签名包含了消息的哈希值和签名者的私钥信息。数字签名可以通过公钥进行验证。

  1. 验证签名:最后,接收者使用签名者的公钥来验证数字签名的有效性。如果数字签名有效,那么接收者可以确认消息的完整性和来源。

这个工作流程保证了消息的完整性和安全性,同时可以确保签名者的身份。

参数(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):

我们有以下数据作为我们签名时的数据:

数据安全算法学习——DSA算法(DSS)「建议收藏」

签名过程(Signning):

r = g^k mod p

s = k^(-1) * (H(m) + x * r ) mod q

形成了数字签名 (r,s) ,同信息一起发送至接收方。

数据安全算法学习——DSA算法(DSS)「建议收藏」

验证过程(Verification):

u = [s^(-1) * H(m)] mod q

v = [s^(-1) * r ] mod q

Prove that: g^u * y^v mod q = r,就可证明数字签名有效,信息确实来自发送方。

数据安全算法学习——DSA算法(DSS)「建议收藏」

因为最后的结果 17 与 r 相等, 所以签名有效

为什么要mod p?

1.它可以用来缩短签名。

2.与加密不同,1000位的明文在加密时必须产生至少1000位的密码。然而,对于签名(与MAC相同),签名应该足够长,以至于不可能产生这样的签名。它不需要与文件的大小相匹配。

3.在mod q后,签名将被减少到q的大小。

为了节省篇幅,计算过程省略掉了,模运算我会另出一章。如有问题,恳请大家指正!

今天的文章数据安全算法学习——DSA算法(DSS)「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/75340.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注