6-5 数字签名
数字签名
现实生活中,我们经常签名,并且按手印,主要通过独一无二的笔迹和手印来防止抵赖。在计算机世界通过数字签名来实现同样的功能。签名方用自己的私钥进行签名,对方收到后,用签名方的公钥进行验证。
数字签名是用于确认发送者身份和消息完整性的一个加密消息摘要,一般是将一个信息先进行哈希得到一个定长哈希值,再将该哈希值通过RSA私钥加密即签名,得到的签名消息实际上是一个加密信息摘要
数字签名具有如下特点:
- 数字签名是可信的。
- 数字签名不可伪造。
- 数字签名不能重新使用。
- 签名文件是不能改变的。
- 数字签名不能抵赖。
- 接收者能够核实发送者身份。
数字签名过程
常用的签名算法是RSA,采用发送者私钥签名,接收方收到数据后,采用发送者的公钥进行验证。可以直接对明文进行签名,由于明文文件可能很大,这种签名方案效率低。所以也可以先由明文生成Hash(比如MD5生成128位),再对Hash值进行签名,效率更高。

签名验证过程
收到已签名的电子合同,首先将电子合同和签名分离,将电子合同通过哈希函数计算得到一个消息摘要;将签名通过发送者的公钥进行解密,同样得到一个消息摘要(这是发送方签名时签名的对象),二者对比即可实现签名验证

例题
例题1

解析:数签名使用发送方的私钥,接收方收到消息后用发送方的公钥进行验证。
例题2

解析:数字签名使用用户的私钥进行签名
例题3

解析:“对摘要进行加密的算法”就是指签名算法即非对称密码算法
例题4

解析:
- 消息摘要能够验证消息的完整性
- 对摘要用私钥进行加密,就是数字签名的过程,目的是抗抵赖性
- 如果是对消息内容进行加密,才是防止窃听
例题5

解析:可以类比手写的签名,一事一签,不能重用也不能更改。