数字签名技术

简介: 通过阅读本篇文章,你可以了解到如下知识:1. 数字签名是什么2. 数字签名的作用3. 签名 和 验签的流程4. RSA、RSA2 签名算法

介绍数字签名

数字签名是一种用于确认数据的完整性、确认发送者身份的技术。

签名主要包含两个过程:做摘要、进行非对称加密。

  • 做摘要:签名者使用消息摘要算法对消息做摘要;
  • 进行非对称加密,得到签名值:签名者使用私钥 privateKey 对摘要进行非对称加密,得到消息的签名值;
  • 发送者将 “原始消息” 和 “消息的签名值” 一同发给接收者。

验签主要包含两个过程:对签名值进行解密、自己做摘要,并比较摘要。

  • 对签名值进行解密,得到摘要值:验签者使用签名者的公钥 publicKey 对签名值进行解密,得到摘要值。
  • 自己做摘要,并比较摘要值:验签者使用消息摘要算法对签名的数据做摘要,然后将 “计算出的摘要值” 和 “解密得到的摘要值” 作比较:如果二者相同,则说明验签成功;否则说明验签失败。
思考:为什么不直接对消息进行签名,而是对消息的摘要值进行签名呢?

“基于消息生成签名” 和 “基于消息的摘要值生成签名” 都可以。考虑到加解密的运算速度是相对缓慢的,数字
签名算法建议对消息摘要值进行签名,因为摘要值的长度是固定的,并且一般消息的摘要值的长度要比消息的长度短,加解密的运算速度会比较快。

介绍签名算法

一个签名算法包括两个部分:消息摘要算法、非对称加密算法。

常见的签名算法有:RSA、RSA2。


RSA 签名算法的全称是 SHA1WithRSA:它使用的消息摘要算法是 SHA1,它使用的非对称加密算法是 RSA。RSA 签名算法对 RSA 密钥的长度不限制。推荐使用 2048 位以上(256 字节)

RSA2 签名算法的全称是 SHA256WithRSA:它使用的消息摘要算法是 SHA256,它使用的非对称加密算法是 RSA。RSA2 签名算法强制要求 RSA 密钥的长度至少为 2048 位。

数字签名的作用

数字签名技术的本质不是为了加密。

技术是为了解决问题而生的,进行数字签名的目的是:

  • 防止他人篡改信息:由于只有私钥持有者才能 “签署” 消息(不考虑私钥泄露的问题),因此其他人无法篡改信息。如果信息被篡改,那么消息接收者通过验签结果将会得知信息被篡改了。确保信息自签名后 到 收到为止,信息未被修改过。
  • 防止他人伪造信息:由于只有私钥持有者才能 “签署” 消息(不考虑私钥泄露的问题),因此其他人无法伪造信息。如果信息被伪造,那么消息接收者通过验签结果将会得知信息是被伪造的。
  • 防止签名者抵赖:由于只有私钥持有者才能 “签署” 消息(不考虑私钥泄露的问题),因此私钥拥有者不能抵赖说这条签署消息不是他发送的。
数字签名进行的是非对称加密。

如果数字签名进行的是对称加密的话,那么数字签名将不能防止签名者抵赖。原因就在于消息发送者 和 消息接收者拥有同样的密钥(公钥),所以消息发送方可以抵赖,否认消息是他发送的。

参考资料

数字签名是什么? - 阮一峰的网络日志 (ruanyifeng.com)

《深入浅出 HTTPS 从原理到实战》

相关文章
|
1天前
|
算法 安全 数据安全/隐私保护
公钥密码学:解密加密的魔法世界
【4月更文挑战第20天】
19 2
公钥密码学:解密加密的魔法世界
|
算法 安全 数据安全/隐私保护
【密码学】 一篇文章讲透数字签名
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。数字签名可以识别消息是否被篡改, 并验证消息的可靠性, 也可以防止否认。
420 0
【密码学】 一篇文章讲透数字签名
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂基于Elgamal的数字签名
本文来先填一下之前挖的坑,简单介绍一个实际的数字签名的方案,给自己挖的坑总是要自己来填的。
【密码学】一文读懂基于Elgamal的数字签名
|
算法
【密码学】一文读懂数字签名
本文来简单的聊一聊数字签名,先来看下面一个例子。
【密码学】一文读懂数字签名
|
算法 安全 数据安全/隐私保护
密码学 - 适用于互联网的公开密钥加密技术
密码学 - 适用于互联网的公开密钥加密技术
222 0
密码学 - 适用于互联网的公开密钥加密技术
|
缓存 算法 BI
密码学系列之:Argon2加密算法详解
密码学系列之:Argon2加密算法详解
密码学系列之:Argon2加密算法详解
|
算法 数据安全/隐私保护
|
算法 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 数字签名 ( 数字签名简介 | 数字签名实现 | 数字签名功能 | 保密数字签名 )
【计算机网络】网络安全 : 数字签名 ( 数字签名简介 | 数字签名实现 | 数字签名功能 | 保密数字签名 )
343 0
|
算法 网络安全 数据安全/隐私保护
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
【计算机网络】网络安全 : 公钥密码体质 ( 公钥 - 加密密钥 | 私钥 - 解密密钥 | 与对称密钥体质对比 | 特点 | 数字签名引入 )
235 0
|
数据安全/隐私保护
密码学之恺撒加密(01)
密码学之恺撒加密
382 0
密码学之恺撒加密(01)