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

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

相关推荐
洒家肉山大魔王2 天前
PKI/CA X.509证书的基础应用与解读
服务器·https·密码学·数字证书
酿情师4 天前
2026软件系统安全赛初赛RSA(赛后复盘)
android·网络·安全·密码学·rsa
Liudef064 天前
后量子密码学(PQC)深度解析:算法原理、标准进展与软件开发行业的影响
算法·密码学·量子计算
YIN_尹7 天前
关于论文《使用 FLUSH+RELOAD 缓存侧信道攻击恢复 OpenSSL ECDSA 的随机数》的理解
缓存·系统安全·密码学
MicroTech202512 天前
基于后量子密码学:微算法科技(NASDAQ: MLGO)区块链预言机加密可更新方案
科技·区块链·密码学
道法自然|~12 天前
BugCTF黄道十二宫
算法·密码学
温中志14 天前
计算机密码学基础
密码学
Jianghong Jian20 天前
Hashcat:强大的密码恢复与安全测试工具
测试工具·安全·密码学
WHD30620 天前
企业数据安全体系建设指南:从风险识别到技术落地的全流程(2026版)
大数据·网络·人工智能·安全·系统架构·密码学·安全架构
Y5neKO20 天前
某国赛CTF密码学题目Writeup:RSA
密码学·ctf·rsa