密码学系列 - 介绍几种不同的签名方案

Schnorr, ECDSA, EdDSA 签名方案的区别

Schnorr、ECDSA 和 EdDSA 是三种广泛使用的数字签名方案,它们各自有不同的结构、优势和应用场景。以下是它们的主要区别和特点。

1. Schnorr 签名方案

基本原理:

  • Schnorr 签名基于离散对数问题的困难性。
  • 它是一种简单而高效的签名方案。

签名过程:

  1. 密钥生成 : 生成私钥 xxx 和公钥 P=xGP = xGP=xG。
  2. 签名生成 :
    • 选择随机数 kkk。
    • 计算 R=kGR = kGR=kG。
    • 计算哈希 e=H(m∣∣R)e = H(m || R)e=H(m∣∣R),其中 mmm 是消息。
    • 计算签名 s=k+exmod  ns = k + ex \mod ns=k+exmodn。
  3. 签名对 : (R,s)(R, s)(R,s)。

验证过程:

  • 验证者计算 e=H(m∣∣R)e = H(m || R)e=H(m∣∣R)。
  • 计算 sG=R+ePsG = R + ePsG=R+eP。
  • 签名有效当且仅当上述等式成立。

特点:

  • 签名简单且高效。
  • Schnorr 签名是单一的,因此不存在 ECDSA 的"同一消息同一随机数攻击"问题。

2. ECDSA (Elliptic Curve Digital Signature Algorithm)

基本原理:

  • ECDSA 是椭圆曲线上的数字签名算法,基于 DSA(Digital Signature Algorithm)并应用了椭圆曲线密码学(ECC)。

签名过程:

  1. 密钥生成 : 生成私钥 ddd 和公钥 Q=dGQ = dGQ=dG。
  2. 签名生成 :
    • 选择随机数 kkk。
    • 计算 R=kGR = kGR=kG,取 RRR 的 xxx 坐标 rrr
    • 计算 s=k−1(H(m)+rd)mod  ns = k^{-1}(H(m) + rd) \mod ns=k−1(H(m)+rd)modn
  3. 签名对 : (r,s)(r, s)(r,s)

验证过程:

  • 验证者计算 u1=s−1H(m)mod  nu_1 = s^{-1}H(m) \mod nu1=s−1H(m)modn 和 u2=s−1rmod  nu_2 = s^{-1}r \mod nu2=s−1rmodn
  • 计算 R′=u1G+u2QR' = u_1G + u_2QR′=u1G+u2Q,取 R′R'R′ 的 xxx 坐标 r′r'r′
  • 签名有效当且仅当 r′=rr' = rr′=r

特点:

  • 签名和验证较为复杂,但应用广泛,特别是在比特币和其他区块链系统中。
  • 对随机数 kkk 要求高,必须每次使用不同的随机数,否则会导致私钥泄露。

3. EdDSA (Edwards-curve Digital Signature Algorithm)

基本原理:

  • EdDSA 基于 Schnorr 签名算法,并应用于 Edwards 曲线(如 Curve25519)。
  • 它使用固定的随机数生成过程,消除了对随机数生成器质量的依赖。

签名过程:

  1. 密钥生成 : 生成私钥 sksksk,计算公钥 AAA。
  2. 签名生成 :
    • 计算哈希 r=H(prefix∣∣m)r = H(prefix || m)r=H(prefix∣∣m),其中 prefixprefixprefix 是密钥的一部分。(固定随机数)
    • 计算 R=rGR = rGR=rG。
    • 计算哈希 h=H(R∣∣A∣∣m)h = H(R || A || m)h=H(R∣∣A∣∣m)。
    • 计算 S=r+h⋅skS = r + h \cdot skS=r+h⋅sk。
  3. 签名对 : (R,S)(R, S)(R,S)。

验证过程:

  • 验证者计算哈希 h=H(R∣∣A∣∣m)h = H(R || A || m)h=H(R∣∣A∣∣m)。
  • 计算 S⋅G=R+h⋅AS \cdot G = R + h \cdot AS⋅G=R+h⋅A。
  • 签名有效当且仅当上述等式成立。

特点:

  • EdDSA 更加高效,特别是在软件实现中。
  • 安全性更高,因为它使用固定随机数生成过程,避免了 ECDSA 的随机数重用问题。
  • 采用 Montgomery 曲线或 Edwards 曲线,如 Curve25519 和 Ed25519。

4. 比较总结

特性 Schnorr ECDSA EdDSA
数字签名算法 SR25519 ECDSA Ed25519
算法复杂性 简单 较复杂 适中
安全性 依赖随机数质量 高,避免随机数问题
计算效率 适中
常用曲线 多种,包括 Edwards 多种,包括 secp256k1 Edwards 曲线(如 Ed25519)
应用场景 多种 区块链、数字签名 高性能应用,SSH、TLS

结论

Schnorr 签名方案以其简单性和高效性著称,但在使用广泛度上略逊于 ECDSA。ECDSA 在区块链和其他领域中应用广泛,但对随机数生成有较高要求。EdDSA 则通过固定的随机数生成过程提供更高的安全性和效率,适用于对性能和安全性要求更高的应用场景。

相关推荐
想你依然心痛1 天前
量子计算对嵌入式密码学的挑战与后量子算法准备
算法·密码学·量子计算
AI科技星3 天前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学
被克制了4 天前
安全协议设计与分析(2)
网络安全·密码学·安全协议
风行南方4 天前
密码学之分组密码
网络·密码学
北域码匠6 天前
RIPEMD-128哈希算法深度解析
c#·密码学·哈希算法·加密算法·消息摘要·ripemd-128·原生实现
如君愿24 天前
考研复习 Day 52 | 密码学--第九章 密钥管理(下)
密码学·课后习题
下午写HelloWorld1 个月前
可信执行环境(Trusted Execution Environment, TEE)技术解析与应用2026
密码学·数据安全·可信计算技术·tee·隐私保护·可信执行环境
终端域名1 个月前
密码学哈希函数:区块链 “不可篡改” 的核心数字指纹技术
区块链·密码学·哈希算法
国际学术会议-杨老师1 个月前
2026年量子算法、密码学与数据分析国际会议(QACDA 2026)
数据分析·密码学·量子计算
如君愿1 个月前
考研复习 Day 51 | 密码学--第九章 密钥管理(上)
密码学