数字签名

2025年3月17日 | 阅读 3 分钟

数字签名是一种用于验证消息真实性和完整性的技术。我们知道安全有四个方面:隐私、认证、完整性和不可否认性。我们已经讨论了安全的第一个方面,而其他三个方面可以通过使用数字签名来实现。

数字签名的基本思想是签署一份文件。当我们以电子方式发送文件时,我们也可以对其进行签名。我们可以通过两种方式签署文件:签署整个文件和签署摘要。

签署整个文件

  • 在数字签名中,公钥加密技术用于签署文件。然而,公钥和私钥的作用在这里是不同的。发送方使用私钥加密消息,而接收方使用发送方的公钥解密消息。
  • 在数字签名中,私钥用于加密,而公钥用于解密。
  • 数字签名无法通过秘密密钥加密来实现。
Digital Signature

数字签名用于实现以下三个方面

  • 完整性:数字签名维护消息的完整性,因为如果任何恶意攻击拦截消息并部分或完全更改它,那么解密后的消息将是不可行的。
  • 认证:我们可以使用以下推理来展示消息是如何被认证的。如果一个入侵者(用户X)发送一条消息,假装它是来自其他人(用户A),用户X会使用自己的私钥来加密消息。消息通过使用用户A的公钥解密。因此,这使得消息无法阅读。使用X的私钥加密和使用A的公钥解密会导致乱码。
  • 不可否认性:数字签名还提供不可否认性。如果发送方否认发送消息,则将其私钥(对应于其公钥)在明文上进行测试。如果解密后的消息与原始消息相同,那么我们就知道发送方已发送该消息。

注意:数字签名不提供隐私。如果需要隐私,则应用另一层加密/解密。

签署摘要

  • 如果消息很短,公钥加密是高效的。如果消息很长,公钥加密的使用效率不高。解决这个问题的方法是让发送方签署文档的摘要而不是整个文档。
  • 发送方创建文档的微缩版本(摘要),然后对其进行签名,接收方检查微缩版本的签名。
  • 哈希函数用于创建消息的摘要。哈希函数从可变长度的消息创建固定大小的摘要。
  • 最常用的两个哈希函数是:MD5(消息摘要5)和SHA-1(安全哈希算法1)。前者生成120位摘要,而后者生成160位摘要。
  • 哈希函数必须具有两个属性才能确保成功
    • 首先,摘要必须是单向的,即摘要只能从消息创建,反之则不行。
    • 其次,哈希是单射函数,即两条消息不应创建相同的摘要。

以下是为确保安全所采取的步骤

  • 通过使用哈希函数创建消息的微缩版本(摘要)。
  • 使用发送方的私钥加密摘要。
  • 摘要加密后,加密的摘要将附加到原始消息并发送给接收方。
  • 接收方收到原始消息和加密摘要并将其分离。接收方对原始消息实施哈希函数以创建第二个摘要,它还使用发送方的公钥解密收到的摘要。如果两个摘要相同,则保留了安全的所有方面。

在发送方

Digital Signature

在接收方

Digital Signature
下一主题PGP