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

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

相关推荐
其实防守也摸鱼7 小时前
CTF密码学综合教学指南--第三章
开发语言·网络·python·安全·网络安全·密码学
其实防守也摸鱼7 小时前
CTF密码学综合教学指南--第四章
网络·笔记·安全·网络安全·密码学·ctf
其实防守也摸鱼1 天前
CTF密码学综合教学指南--第一章
网络·安全·网络安全·密码学·ctf·法律
其实防守也摸鱼2 天前
CTF密码学综合教学指南--第二章
开发语言·网络·python·安全·网络安全·密码学·ctf
@insist1234 天前
信息安全工程师-密码学专题(下):构建可信网络空间的核心机制
java·大数据·密码学·软考·信息安全工程师·软件水平考试
@insist1237 天前
信息安全工程师-密码学专题(中):对称加密、RSA 与哈希算法
人工智能·密码学·哈希算法·软考·信息安全工程师·软件水平考试
@insist1238 天前
信息安全工程师-密码学专题(上):密码学核心框架与基础体系梳理
算法·密码学·软考·信息安全工程师·软件水平考试
FakeOccupational8 天前
【数学 密码学】量子通信:光的偏振&极化的量子不确定性特性 + 量子密钥分发 BB84算法步骤
算法·密码学
至顶科技8 天前
微软加速量子安全密码学算法集成进程
安全·microsoft·密码学
九流下半10 天前
OpenHarmony签名指南:自动与手动详解
签名·openharmony·系统信息·系统应用签名