数字签名是一种用于验证数字信息真实性、完整性和不可否认性的加密技术,类似于手写签名在纸质文件上的作用,但具有更高的安全性。以下是其核心要点:
1. 核心功能
身份认证:确认签名者的身份(防止冒充)。
完整性校验:确保内容未被篡改(哪怕改动一个字符也会失效)。
不可否认:签名者无法事后否认自己的签名(法律效力)。
2. 工作原理
基于非对称加密(如RSA、ECC算法):
生成密钥对:
私钥(Private Key):仅签名者持有,用于生成签名。
公钥(Public Key):公开分发,用于验证签名。
签名过程:
对文件内容计算哈希值(如SHA-256)。
用私钥加密哈希值,生成数字签名。
验证过程:
接收方用公钥解密签名,得到原始哈希值。
重新计算文件哈希值,比对两者是否一致。
3. 实际应用场景
软件分发:验证下载的安装包未被篡改(如Windows更新)。
电子合同:确保合同签署双方身份合法(如DocuSign)。
区块链:比特币交易需私钥签名才能生效。
SSL/TLS证书:网站通过数字签名证明其真实性(浏览器显示🔒)。
4. 与加密的区别
加密:保护数据内容不被看到(如用公钥加密,私钥解密)。
签名:验证数据来源和完整性(私钥签名,公钥验证)。
5. 安全性依赖
私钥保密性:若私钥泄露,攻击者可伪造签名。
哈希算法强度:弱哈希(如MD5)可能被碰撞攻击破解。
示例流程
Alice签署文件:
计算文件哈希 → 用私钥加密哈希 → 附加签名发送给Bob。
Bob验证:
用Alice的公钥解密签名 → 得到哈希值H1。
计算文件哈希值H2 → 若H1=H2且公钥确属Alice,则验证通过。
数字签名是网络安全、电子商务和数字身份体系的基石,结合了密码学技术以确保信任机制。