数字签名(Digital Signature)是一种相当于现实世界中的盖章、签字的功能在计算机世界中实现的技术,使用数字签名可以识别篡改伪装防止否认

公钥密码与数字签名

在公钥密码中,发送者拥有接收者的公钥,发送者使用公钥对消息进行加密,接收者使用与之对应的私钥进行解密。公钥私钥一一对应。任何人都可以使用公钥对消息进行加密,发送给接收者。

9-RSA-Encrypt

在数字签名中,与公钥密码正好相反。发送者通过私钥对消息进行加密,接收者通过公钥对加密后的消息进行解密。任何人都可以通过公钥对加密后的密文进行解密

9-Digital-Encrypt

用私钥加密的过程相当于是生成签名,用公钥解密的过程相当于是验证签名

数字签名的方法

对数字签名的方式有两种:

  • 直接对消息进行签名
  • 对消息的散列值进行签名

不推荐直接对消息进行签名的方式,因为在使用公钥密码计算签名时,速度会很慢。

数字签名的用途

  • 安全信息公告:防篡改
  • 软件下载:防篡改
  • 公钥证书:
  • SSL/TLS

针对数字签名的攻击

中间人攻击,假设发送者Alice接收者Bob发送的公钥被攻击者Eve截获,攻击者Eve将自己的公钥发送给接收者Bob。这样攻击者Eve就能对发送者Alice伪装成接收者,对接收者Bob伪装成发送者。