数字签名原理与使用场景
一、原理
数字签名是基于公钥密码学(非对称加密),核心是私钥签名、公钥验签。
流程
步骤 | 说明 |
|---|---|
1️⃣ 哈希 | 对原文使用 Hash 算法(如 SHA-256)生成消息摘要 |
2️⃣ 签名 | 用发送者的私钥对摘要加密,生成数字签名 |
3️⃣ 发送 | 将原文 + 数字签名一起发给接收者 |
4️⃣ 验签 | 接收者用发送者的公钥解密签名,得到摘要;同时对原文计算哈希 |
5️⃣ 比对 | 两者一致 → 签名有效;不一致 → 被篡改或来源无效 |
关键点
私钥只有签名者持有,不可泄露 → 保证了不可伪造性
公钥公开,任何人都能验证 → 保证了可验证性
摘要一致说明原文未被篡改 → 保证了完整性
二、常见算法
RSA — 最经典,如 "RSA-2048"
ECDSA — 椭圆曲线签名,更高效,如 "ECDSA P-256"
DSA — 美国政府标准数字签名算法
SM2 — 中国国密算法,基于椭圆曲线
三、使用场景
📌 典型场景
场景 | 说明 |
|---|---|
代码/软件签名 | 微软、苹果要求驱动、软件包数字签名,防止恶意篡改 |
文档签名 | PDF、Word 文档数字签名,具有法律效力(电子合同) |
SSL/TLS 证书 | HTTPS 证书用数字签名验证服务器身份 |
区块链/加密货币 | 交易授权,钱包地址用私钥签名证明所有权 |
邮件签名 (S/MIME) | 验证邮件发送者身份、保证内容不被篡改 |
政务/金融 | 电子证照、政务审批、金融交易防抵赖 |
📌 简单类比
把数字签名想象成**"支票上的手写签名"**:
私钥 = 你的笔,只有你能签
公钥 = 你的笔迹样本,银行用来核对
哈希 = 支票上的防伪底纹
签名内容 = 支票上的金额(金额改了就无效)
四、与加密的区别
-- | 数字签名 | 数据加密 |
|---|---|---|
目的 | 证明"是谁发的" + "内容没改" | 保证内容保密 |
用什么密钥 | 私钥签名、公钥验签 | 公钥加密、私钥解密 |
方向 | 单向,非对称 | 可双向 |
