1、基本概念

在数字签名技术中,有以下2种行为:
生成签名:由消息的发送者完成,通过“签名钥匙”生成
验证签名:由消息的接收者完成,通过“验证密钥”验证
思考:如何能保证这个签名是消息发送者自己签的?
答案:用消息发送者的私钥进行签名。
image.png

在公钥密码中,任何人都可以使用公钥进行加密 在数字签名中,任何人都可以使用公钥验证加密 公钥密码和数字签名是相反的

2、数字签名的过程

发送者用自己的私钥对消息的散列值进行加密得到签名,将签名和消息发送给接收者,接收者利用发送者的公钥进行解密得到签名,和消息的散列值进行比对,验证签名。
image.png
按照时间顺序下图所示:
image.png

3、数字签名和公钥密码

数字签名,其实就是将公钥密码反过来使用

私钥 公钥
公钥密码 接收者解密时使用 发送者加密时使用
数字签名 签名者(发送者)生成签名时使用 验证者(接收者)验证签名时使用
谁持有密钥? 个人持有 只要需要,任何人都可以持有

4、数字签名的作用

1、如果有人篡改了文件内容或者签名内容,会是什么结果?
结果是:签名验证失败,证明内容会篡改
2、数字签名不能保证机密性?
数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改。
总结来说数字签名的作用有:
1、确认消息的完整性
2、是被消息是否被篡改
3、防止消息发送人否认

5、数字签名无法解决的问题

要正确使用签名,前提是用于验证签名的公钥必须属于真正的发送者。由于无法验证,就可能遇到中间人攻击:
image.png
如果遭遇了中间人攻击,那么公钥将是伪造的,数字签名将失效。所以验证签名之前,首先得验证公钥的合法性。
通常使用证书来验证公钥的合法性。