跳转到主要内容

数字签名

本文约需 2 分钟阅读

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

没有签名的分发文件会被如何对待

数字签名的存在感,在软件分发缺少代码签名时体现得最为明显。操作系统和安全软件会根据可执行文件签名的有无及其颁发者来判断分发文件的可信度,无签名的可执行文件因无法确认来源,容易被作为可疑程序警告或拦截。开发方取得代码签名证书并对发布版本附加签名后,用户端就能以机器方式验证发布者的身份以及文件在分发后未被篡改,从而可以无警告地安装。对于分发正规软件而言,代码签名事实上正在成为前提条件。

签名与验证的流程

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

数字签名的原理

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

应用场景

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

注意事项

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

相关术语

这篇文章对您有帮助吗?