数据安全算法学习——DSA算法(DSS)

数据安全算法学习——DSA算法(DSS)

什么是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的大小。

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

🎯 相关推荐

䵷的解释
365bet提款问题

䵷的解释

📅 08-14 👀 1289
明日之后佣兵古堡怎么玩 玩法规则介绍
365bet提款问题

明日之后佣兵古堡怎么玩 玩法规则介绍

📅 07-29 👀 9884
台电X80 Pro(双系统版)评测导购
best365官网下载

台电X80 Pro(双系统版)评测导购

📅 07-12 👀 8348