数字签名是公钥密码的逆用:用私钥"签名"、公钥验证,提供完整性、来源认证与不可否认性。它解决"如何证明消息确实来自某人且未被篡改"的问题,是电子商务、软件分发与区块链交易的基础。
基本原理(RSA 签名)
对消息 m,签名者用私钥 d 计算签名
s≡md(modn)
验证者用公钥 e 检查 se≡m(modn)。d 仅签名者持有,他人无法伪造(见RSA公钥密码)。
哈希后签名
直接对消息签名存在伪造风险(如乘法攻击:s1s2 是对 m1m2 的合法签名),故实际方案先计算哈希 h=H(m) 再对 h 签名。哈希的抗原像性保证无法由签名反推消息。
其他签名方案
- DSA / ECDSA:基于离散对数(见离散对数问题);ECDSA 的椭圆曲线版本见椭圆曲线密码学
- 性质:同一消息可多次签名;签名长度与密钥长度同阶
示例(RSA 签名)
沿用 n=3233,d=2753,e=17。对 m=65 签名:s≡652753≡588(mod3233);验证 58817≡65(mod3233)。
应用
数字签名用于 TLS 证书、代码签名与电子合同;与Shamir秘密共享结合可实现门限签名(多方联合签名)。