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

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 则通过固定的随机数生成过程提供更高的安全性和效率,适用于对性能和安全性要求更高的应用场景。

相关推荐
MQLYES2 天前
02-BTC-密码学原理
区块链·密码学·哈希算法
小李独爱秋4 天前
计算机网络经典问题透视:不重数(Nonce)是否就是随机数?一场深入骨髓的密码学思辨
服务器·网络·计算机网络·安全·web安全·密码学
kp000005 天前
SM系列国密算法全面对比与解析
网络安全·信息安全·密码学·国密·sm加密
Wcowin5 天前
非对称密码
网络·密码学
一个平凡而乐于分享的小比特6 天前
OpenSSL 全面解析:从入门到精通
密码学·openssl·隐私安全
缘友一世7 天前
现代密码学【8】之基于随机预言机模型的公钥密码系统
密码学
咸鱼菲菲7 天前
KhPRF介绍
安全·密码学·同态加密
一个平凡而乐于分享的小比特7 天前
公钥与私钥完全解析:数字世界的钥匙与锁
操作系统·密码学·公钥与私钥·隐私安全
print_Hyon7 天前
【CTF-密码学-RSA】计算私钥和公钥进行加密和解密
密码学·ctf
小李独爱秋8 天前
计算机网络经典问题透视:常规密钥体制与公钥体制最主要的区别是什么?—— 一文带你从“钥匙”看懂现代密码学核心
服务器·网络·tcp/ip·计算机网络·密码学