数字签名

数字签名的生成、验证与常见算法说明

#status / growing #type / concept #tech / security / crypto

数字签名

1. 概念

数字签名是手写签名的数字化模拟,用于确认数字信息的来源以及信息的完整性。 它必须满足:

  • 可验证性:接收者可以验证签名者的身份。
  • 不可伪造性:只有私钥持有者才能生成签名。
  • 不可抵赖性:签名者事后不能否认自己的签名。

2. 签名与验证过程

签名过程 (发送方)

  1. 对原始消息 $M$ 进行 Hash 计算,得到摘要 $H(M)$。

  2. 使用发送方的私钥 (SK) 对摘要进行加密,生成的密文即为数字签名 $S$。

    $$

S = Enc_{SK}(H(M))

$$ 3. 将消息 $M$ 和签名 $S$ 一起发送给接收方。

验证过程 (接收方)

  1. 接收方收到消息 $M$ 和签名 $S$。
  2. 使用发送方的公钥 (PK) 对签名 $S$ 进行解密,得到摘要 $h’$。

$$

h’ = Dec_{PK}(S)

$$

  1. 对收到的消息 $M$ 使用相同的 Hash 算法计算摘要 $h$。
  2. 对比:如果 $h = h’$,则证明消息未被篡改,且确实由私钥持有者发送。

3. 常见签名算法

  • RSA 签名:基于 RSA 算法的签名方案。
  • DSS (Digital Signature Standard):美国国家标准,包含 DSA 算法。
  • ECDSA:基于椭圆曲线的签名算法(比特币/以太坊中使用)。

相关链接

  • rsa
  • [[Hash]]
  • [[公钥基础设施PKI]]
创建于 2026/1/6 更新于 2026/5/27