跳转到主要内容

数字签名

本文约需 2 分钟阅读

数字签名是指利用公钥密码学,同时实现数据篡改检测和发送者身份验证的技术。发送者用私钥对数据的哈希值进行签名,接收者用公钥进行验证,从而证明数据在传输途中未被篡改,且确实由该发送者创建。截至 2025 年,随着电子合同服务的普及,数字签名的使用正在迅速扩大。

现场使用案例

“由于在软件发布时未附加代码签名,用户的安全软件将分发文件作为可疑程序拦截了。在取得代码签名证书并附加签名后,现在可以无警告地安装了。”

签名与验证的流程

签名生成 (发送者)
计算数据的哈希
用私钥加密 (签名)
发送数据 + 签名
签名验证 (接收者)
用公钥解密签名
重新计算数据的哈希
一致 = 无篡改

数字签名的原理

签名的生成分三个步骤进行。首先计算待发送数据的哈希值 (如 SHA-256),接着用发送者的私钥对该哈希值加密以生成签名,最后将数据和签名一起发送。接收者用发送者的公钥解密签名,并与自己计算出的哈希值比较。一致则判断为无篡改,不一致则判断为有篡改。PKI (公钥基础设施) 承担保证公钥正当性的作用。数字签名入门书 (Amazon)可供系统性学习。

应用场景

在电子合同服务中,会为合同 PDF 附加数字签名以赋予其法律效力。在软件分发中,代码签名保证了开发方的正当性以及程序未被篡改。在电子邮件中,S/MIME 和 DKIM 运用数字签名,有助于检测钓鱼邮件。数字签名对于区块链的交易验证也不可或缺,支撑着加密货币钱包安全的根基。

注意事项

数字签名的安全性完全依赖于私钥的管理。一旦私钥泄露,第三方就能生成冒充签名。请用HSM (硬件安全模块) 保护私钥,并用足够长的随机密码限制对密钥库的访问。密码技术书籍 (Amazon)也可供参考。

相关术语

这篇文章对您有帮助吗?

XHatena