美文网首页
算法和数据结构5.9数字签名

算法和数据结构5.9数字签名

作者: 数字d | 来源:发表于2019-12-26 10:08 被阅读0次

数字签名不紧可以实现消息认证码认证和检测窜改功能,还可以预防事后否认问题的发生。

由于在消息认证码中使用的是共享密钥加密,所以持有密钥的收信人也有可能是消息的发送者,这样是无法预防事后否认行为的。

而数字签名是只有发信人才能生成的,因此使用它就可以确定谁是消息发送者。

流程:

假设A要向B发送消息。

在发送前A给消息加上数字签名。数字签名只能由A生成。

B收到消息后,可以确认数字签名确实是由A生成的。

只要发送的消息上有A的数字签名,就能确定消息的发送者是A.

B可以验证数字签名的正确性,但是无法生成数字签名。

数字签名的生成使用的是公开密钥加密。

公开密钥加密,加密使用的是公开密钥,解密使用的是私有密钥。任何人都可以使用公开密钥对数据进行加密,但是只有持有私有密钥的人才能解密数据。

然而,数字签名却是恰恰相反的。

数字签名的生成步骤:

首先:由A准备好需要发送的消息、私有密钥和公开密钥。

由消息的发送者来准备这两个密钥,这一点与公开密钥加密有所不同。

A将公开密钥发送给B.

A使用私有密钥加密消息。加密后的消息就是数字签名。A将消息和签名都发送给了B。

B使用公开密钥对密文(数字签名)解密。

B对解密后的消息进行确认,看它是否和收到的消息一致。

在流程中:

生成的是“只能由持有私钥密钥的A来加密,但只要有公开密钥,谁都可以进行解密”的密文。这个密文作为密码似乎没有任何意义。

但是换一个角度看就会发现,它可以保证这个密文的制作者只能是持有私有密钥的A。

在数字签名中,是将“只能由A来加密的密文”作为“签名”来使用的。

严格来说,也有使用加密运算以外的方法来生成签名。

但是,用私有密钥生成签名、用公开密钥验证建明这一机制是相同的。

在公开密钥加密中,用公开密钥加密的数据都可以用私有密钥还原。

数字签名利用的是用私有密钥加密的数据,用公开密钥解密还原这一性质。

也就是说,即使密钥使用顺序不一样,运行结果都是一样的。

并不是所有的公开密钥加密都具有这个性质。

不过RSA加密算算法是可以的。

能够用A的公开密钥解密的密文,必定是有A生成的。

因此,我们可以利用这个结论来确定消息的发送者是否为A,消息是否被人篡改。

由于B只有公开密钥,无法生成A的签名,所以也预防了时候否认这一问题。

补充:
在实际的应用场景中,公开密钥加密和解密都比较耗时。为了节约运算时间,实际上不会直接对消息进行加密。

而是先求得消息的哈希值,再对哈希值进行加密,然后将其作为签名来使用。

缺陷:

虽然数字签名可以实现“认证”,“检测篡改”,“预防事后否认”三个功能,但是它也有一个缺陷。

那就是,虽然使用数字签名后,B会相信消息的发送者是A,但是实际上也有可能是X冒充了A.

其根本原因在于使用公开密钥加密无法确定公开密钥的制作者是谁。收到的公开密钥是哪个也没有任何制作者的信息。

因此,公开密钥有可能是由某个冒充A的人生成的。

使用数字证书就能解决这个问题。

相关文章

  • 算法和数据结构5.9数字签名

    数字签名不紧可以实现消息认证码认证和检测窜改功能,还可以预防事后否认问题的发生。 由于在消息认证码中使用的是共享密...

  • 4.2 RSA数字签名技术

    数字签名技术 - RSA数字签名技术 RSA算法不仅是非对称加密算法,也是数字签名算法中的主力军,和MD、SHA系...

  • 6-数字签名

    数字签名 数字签名算法用于验证数据完整性、认证数据来源及抗否认服务。数字签名算法包含签名和验证两项操作,用私钥进行...

  • 区块链开发——数字签名扩展 #C02

    本篇为资料整理 数字签名算法 常见的数字签名算法主要有RSA、DSA、ECDSA三种。 RSA数字签名算法 RSA...

  • 创建数字钱包(一)账号生成

    椭圆曲线数字签名算法生成私钥 Secp256k1通过椭圆曲线数字签名算法生成私钥和公钥,其中SEC(Standar...

  • 数据结构与算法-目录

    数据结构与算法-目录 C语言篇 数据结构和算法-C语言篇1-绪论数据结构和算法-C语言篇2-初识算法数据结构与算法...

  • 3、数字签名(ECDSA)

    比特币中使用的数字签名算法是椭圆曲线数字签名算法(Elliptic Curve Digital Signature...

  • 数字签名

    数字签名=摘要算法(HASH算法)+非对称加密

  • 数据结构与算法

    参考链接:算法 数据结构与算法 iOS数据结构 和 算法 上 算法 1、数据结构: 集合结构: 线性结构: 树形结...

  • 4.3 DSA数字签名技术

    数字签名技术 -- DSA算法 DSA算法是1991年美国国家标准技术协会公布的数字签名标准(DSS)的核心算法。...

网友评论

      本文标题:算法和数据结构5.9数字签名

      本文链接:https://www.haomeiwen.com/subject/idkkoctx.html