news 2026/4/3 0:07:25

谈谈Ed25519

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
谈谈Ed25519

虽然比特币和以太坊使用 secp256k1 曲线和 ECDSA 签名,但还有一种更好的签名方法。这就是 EdDSA,当它使用 25519 曲线时,其签名被称为 Ed25519。

使用 Ed25519,私钥由一个32 字节的种子值生成。该种子值可以是随机值,也可以由口令生成,然后使用 PBKDF2、scrypt、crypt 或 Argon 2 转换为 32 字节的私钥。

这张图描绘了一个典型的数字签名过程,涉及发送者Alice和接收者Bob,使用公钥加密体系(具体是基于椭圆曲线的数字签名算法)。图中展示了Alice使用私钥(sk)对消息(Message)进行签名,并生成签名(R, s),然后Bob使用Alice的公钥(pk)验证签名的有效性。整个过程强调了哈希函数(HASH)和椭圆曲线点乘运算的核心作用。下面我逐步分析图中的关键元素和流程:

1.Alice的密钥生成和签名过程(左侧)
  • 密钥对:Alice拥有一个密钥对,包括私钥(sk)和公钥(pk)。公钥是通过私钥乘以基点G计算得到的,即 pk = sk · G(其中·表示椭圆曲线上的标量乘法,G是曲线上的基点)。
  • 消息处理
    • 首先,对消息m进行哈希处理,但不是直接哈希m,而是结合私钥的哈希:h = HASH(H(sk) || m),其中H(sk)可能是对sk的额外哈希(在EdDSA中,H通常是SHA-512的下半部分),||表示字符串连接。这一步生成一个确定性nonce(随机数)h。
  • 生成R
    • 计算 r = HASH(H(R || pk || m))?图中标注略有混淆,但实际是先计算r(nonce),然后R = r · G。图标签显示:
      • h = HASH(H(sk) || m)
      • R = r · G
      • r = HASH(H(R || pk || m)) sk?这似乎是笔误或简化,实际在EdDSA中,r是基于HASH(H(sk) || m)确定的,然后S = r + HASH(R || pk || m) * sk(模曲线阶)。
    • 签名生成:最终签名是(R, s),其中 s = r + (HASH(R || pk || m)) · sk。这确保了签名是确定性的(避免随机nonce带来的安全隐患)。
  • 签名步骤总结
    • 哈希消息生成nonce r。
    • 计算承诺点R = r · G。
    • 计算挑战哈希 HASH(R || pk || m)。
    • 使用私钥sk计算s。
    • 输出签名(R, s)并随消息发送给Bob。
2.Bob的验证过程(右侧)
  • Bob收到消息m和签名(R, s)。
  • 哈希计算:同样计算挑战 S = HASH(R || pk || m)(图中S表示挑战值,相当于e)。
  • 验证计算
    • 计算 V1 = s · G(左侧点)。
    • 计算 V2 = R + pk · S(右侧点,使用公钥pk)。
    • 检查 V1 == V2。如果相等,则签名有效;否则无效。
  • 这基于椭圆曲线的性质:因为pk = sk · G,所以 s · G = r · G + (HASH(...) · sk) · G = R + HASH(...) · pk。只有持有正确私钥的签名才能满足这个等式。
3.整体特点
  • 安全性:过程使用哈希来生成确定性nonce,避免了ECDSA中常见的nonce重用漏洞。同时,哈希包括R、pk和m,确保签名不可伪造或移植到其他消息。
  • 效率:基于椭圆曲线,计算快速,适合现代应用。
  • 潜在算法:图中公式和流程高度匹配EdDSA(Edwards-curve Digital Signature Algorithm),特别是其变体Ed25519。标签中的HASH很可能指SHA-512,曲线运算在Twisted Edwards曲线上进行。

这个图本质上是EdDSA签名的简化示意图,强调了签名和验证的非对称性,以及如何防止中间人攻击或消息篡改。

谈谈Ed25519

Ed25519是EdDSA算法的一个具体实现,由Daniel J. Bernstein等人在2011年提出,已成为现代加密学中的标准数字签名方案(如在SSH、TLS、Tor和区块链中广泛使用)。它基于Twisted Edwards曲线(edwards25519),定义在有限域GF(2^255 - 19)上,使用SHA-512作为哈希函数。以下是其关键特点、优势和应用:

1.核心机制
  • 曲线选择:使用Curve25519的Edwards形式(edwards25519),方程为 -x² + y² = 1 - (121665/121666)x²y²。曲线阶为+ 27742317777372353535851937790883648493(约),提供约128位的安全强度。
  • 签名过程:与图中一致,Ed25519使用确定性签名:
    • 私钥sk:32字节种子。
    • 公钥pk:从sk派生,pk = sk · B(B是基点)。
    • nonce r = SHA512(下半sk || m)(确定性,避免侧信道攻击)。
    • 签名(R, s):R = r · B,s = (r + SHA512(R || pk || m) * sk) mod l(l为曲线阶)。
  • 验证:检查 s · B == R + SHA512(R || pk || m) · pk。
  • 签名大小:64字节(R和s各32字节),紧凑高效。
2.优势
  • 安全性高:抵抗已知攻击,如 timing attacks、side-channel attacks(通过常量时间实现)和invalid curve attacks。避免了ECDSA的k重用问题(Heartbleed漏洞教训)。
  • 性能优秀:签名速度快(在现代CPU上约10-20万次/秒),验证更快。曲线设计避免了分支和查找表,易于安全实现。
  • 简单性:无随机数生成器依赖,减少实现错误。公钥短(32字节),易于分发。
  • 标准化:RFC 8032定义,支持广泛库如libsodium、OpenSSL。
3.与ECDSA的比较
  • Ed25519 vs. ECDSA (如secp256k1 in Bitcoin):Ed25519更安全(无nonce问题)、更快,且曲线参数透明(无NSA后门疑虑)。但ECDSA更成熟,在某些遗留系统中仍主导。
  • 安全性:两者均~128位,但Ed25519的Edwards形式允许更快的点加法。
4.应用场景
  • 网络安全:SSH密钥、HTTPS证书(Let's Encrypt默认支持)、DNSSEC。
  • 区块链:用于签名交易,如Solana、Stellar、Zcash。
  • 消息系统:Signal协议、WhatsApp端到端加密。
  • 软件分发:Git commit签名、包管理器(如apt、pip)。
  • 截至2025年12月,Ed25519已成为首选方案,尤其在量子抵抗讨论中(虽非后量子,但易升级到如Dilithium)。
5.潜在局限
  • 不支持阈值签名或多签名原生(需扩展如MuSig)。
  • 在极旧硬件上可能不支持,但现代设备无问题。
  • 实现需小心:使用审核过的库,避免自定义代码。

总之,Ed25519代表了数字签名领域的“最佳实践”,结合安全、速度和简洁。

Ed25519的数学原理

Ed25519是一种基于椭圆曲线密码学(Elliptic Curve Cryptography, ECC)的数字签名算法,属于EdDSA(Edwards-curve Digital Signature Algorithm)方案的具体实现。它由Daniel J. Bernstein等人在2011年提出,旨在提供高效、安全且易于实现的签名机制。Ed25519的核心在于使用Twisted Edwards曲线,这种曲线形式允许快速的点运算,同时避免了传统Weierstrass曲线(如ECDSA使用的)中常见的侧信道攻击漏洞。以下从数学基础逐步展开其原理。ed25519.cr.yp.to+更多 2

1. 有限域与椭圆曲线基础

Ed25519建立在有限域Fp\mathbb{F}_pFp​上的椭圆曲线群上,其中p=2255−19p = 2^{255} - 19p=2255−19是一个精心选择的素数("nothing-up-my-sleeve"数,确保无后门)。这个域的大小约为22552^{255}2255,提供约128位的安全强度,即攻击复杂度在21282^{128}2128级别。

椭圆曲线上的点满足群运算,包括点加法(point addition)和标量乘法(scalar multiplication)。Ed25519采用Twisted Edwards曲线形式,其方程为:

其中:

  • (精确值为
  • 曲线参数选择确保高效计算:点加法公式统一(unified addition),允许在不区分点加和点倍的情况下运算,减少分支并提升侧信道抵抗。

这个曲线与Montgomery形式的Curve25519(用于密钥交换)是双有理等价的(birational equivalent),允许在签名和密钥交换间转换。

曲线的群阶(order)为,其中是一个大素数(cofactor h=8)。这意味着曲线群不是素阶群,但Ed25519通过乘以cofactor在验证中处理小子群攻击。

2. 基点与密钥生成
  • 基点(Base Point)B:曲线上的生成元(generator),坐标为,其中。基点的阶为lll,即(无穷远点,群的单位元)。
  • 私钥(Private Key):一个32字节(256位)随机种子k。通过哈希函数SHA-512计算,然后派生标量私钥a:

    这涉及"clamping":清零低3位(确保a是8的倍数,置于主子群中),设置最高位为1(避免小阶),并清零第254位以符合范围。clamping确保a均匀分布且避免弱密钥。
  • 公钥(Public Key),通过标量乘法计算。公钥编码为32字节:y坐标(little-endian)加上x的奇偶位(最低位)。
3. 签名生成

签名过程是确定性的(deterministic),避免随机nonce带来的安全隐患(如ECDSA中的k重用)。给定消息M、私钥a和公钥A:

  1. 计算确定性nonce r:

    其中​是H(k)的后半部分,确保rrr伪随机且依赖于私钥和消息。
  2. 计算承诺点R:

    RRR编码为32字节(类似公钥)。
  3. 计算挑战值e(或H):

  4. 计算签名标量s:

  5. 签名输出:(R,s)编码为64字节(R的32字节 + s的32字节 little-endian)。

这个过程基于Schnorr签名变体,但使用哈希生成r以实现确定性。

4. 签名验证

给定消息M、公钥A、签名(R,s):

  1. 计算挑战值e:

  2. 计算左侧点:

  3. 计算右侧点:

  4. 检查P1=P2​。如果相等,签名有效。

为了处理cofactor,实际验证乘以8(或在群中清小子群分量):

这防止小子群攻击,同时保持效率。

推导验证等式的正确性:假设签名正确,则:

这基于群的分配律和ECDLP(Elliptic Curve Discrete Logarithm Problem)的困难性:从A=a⋅B求a是不可行的。

5. 安全性和证明

Ed25519的安全性基于:

  • ECDLP:在曲线群中求离散对数是困难的(最佳攻击复杂度>)。
  • 哈希函数安全性:SHA-512的碰撞抵抗性和预像抵抗性,确保rrr和eee不可预测。
  • 确定性设计:避免随机数生成器故障(如Sony PS3 ECDSA漏洞)。
  • 侧信道抵抗:常量时间运算、无秘密分支。
  • 可证明安全性:在随机预言机模型(Random Oracle Model)下,EdDSA被证明为EUF-CMA(Existential Unforgeability under Chosen Message Attacks)安全的,假设ECDLP困难。

Ed25519的数学优雅在于其参数选择和曲线形式,确保在提供高安全性的同时,实现速度快(签名~10万次/秒)、密钥小(32字节),广泛用于SSH、TLS和区块链。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 22:17:25

[N_105]基于javaweb,ssm公交查询系统

开发工具:eclipse,jdk1.8 服务器:tomcat8.0 数据库:mysql5.7 技术: springspringMVCmybaitsEasyUI 项目功能介绍: 分用户前台和管理后台 1.前台功能:登录、注册、首页、轮播图、站点信息、…

作者头像 李华
网站建设 2026/4/2 22:19:14

如何从传统产品经理转行成为顶尖的AI产品经理?

系统的回答这个问题之前,先简要的说一下答案:学习实践。产品经理本身便是一个需要不断学习、不断实践的岗位,即使是AI产品经理,也不能脱离产品经理岗位的本质。 另外,要想知道具体如何转行成为顶尖的AI产品经理&#x…

作者头像 李华
网站建设 2026/4/1 7:13:55

启点创新景区灯会旅游票务系统,景区灯会售检票管理系统,智慧景区票务管理系统推荐

启点创新景区灯会旅游票务系统是面向灯会 / 庙会等夜间文旅场景的全链路智慧票务与运营管理解决方案,以全渠道售票、多模态极速核验、多主体实时分账与数据驱动运营为核心,兼顾高峰客流管控与二次消费转化,助力活动从传统节庆向智慧文旅 IP 升…

作者头像 李华
网站建设 2026/4/2 0:41:42

选产品,更是选伙伴:供应商的“隐形实力”不容忽视

在上一期内容中,我们探讨了“如何选对技术伙伴”,本期,我们将继续深入讨论如何判定合作伙伴是否合格。 一个好的产品固然重要,但真正决定项目成败的,往往是产品背后供应商的综合能力。 一个成熟的供应商,…

作者头像 李华
网站建设 2026/3/28 16:33:02

Open-AutoGLM PPT导出失败?这3个隐藏技巧90%的人都不知道

第一章:Open-AutoGLM PPT导出失败的常见现象与背景在使用 Open-AutoGLM 进行自动化文档生成时,PPT 导出功能是核心交互环节之一。然而,许多用户反馈在调用导出接口时频繁遭遇失败,表现为无响应、空白文件生成或直接报错中断。此类…

作者头像 李华
网站建设 2026/3/27 19:40:30

SSL证书踩坑与自动续期:半夜被叫醒的教训

凌晨2点,告警电话响了。 “网站打不开,显示证书过期。” 一看日历,证书有效期90天,刚好今天到期。忘续了。 从那以后,我把所有证书都做了自动续期。整理一下踩过的坑。 常见的坑 坑1:证书过期 这是最常见的…

作者头像 李华