news 2026/5/30 19:30:12

谈谈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/5/30 1:11:49

终于有人把知识图谱+LLM融合讲明白了!

介绍 2025最新出版的《Knowledge Graphs and LLMs in Action》是一本关于人工智能技术融合的权威指南。全书聚焦知识图谱与大语言模型的协同应用,探索如何将知识图谱的结构化推理能力与大语言模型的自然语言理解能力结合,构建更强大、可靠且可解释的AI系…

作者头像 李华
网站建设 2026/5/30 1:11:47

为什么你的Open-AutoGLM在手机上跑不动?深度剖析部署失败的5大根源

第一章:为什么你的Open-AutoGLM在手机上跑不动?许多开发者尝试将开源大语言模型 Open-AutoGLM 部署到移动设备时,常常遇到运行失败、卡顿甚至闪退的问题。这并非代码本身存在缺陷,而是由移动设备的硬件限制与模型运行需求不匹配所…

作者头像 李华
网站建设 2026/5/30 1:11:42

还在手动调参?Open-AutoGLM自动优化方案来了,效率提升90%!

第一章:还在手动调参?Open-AutoGLM自动优化方案来了,效率提升90%!在大模型应用开发中,超参数调优一直是耗时且依赖经验的核心环节。传统手动调参方式不仅效率低下,还容易陷入局部最优解。Open-AutoGLM的出现…

作者头像 李华
网站建设 2026/5/29 2:46:55

揭秘Open-AutoGLM为何必须安装插件:90%用户忽略的关键依赖项

第一章:Open-AutoGLM为何必须依赖插件的底层逻辑Open-AutoGLM 作为一款面向自动化任务生成与执行的大语言模型系统,其核心能力不仅体现在自然语言理解上,更在于对复杂外部环境的动态感知与交互。这种扩展性并非内生于模型本身,而是…

作者头像 李华
网站建设 2026/5/29 1:27:02

Dify企业级实战深度解析 (21)

一、学习目标作为系列课程高级合规场景专项补充篇,本集聚焦企业 “流程合规性 服务质量管控” 核心需求,核心目标是掌握DifyDeepseek AI 质检的全流程开发、多场景质检规则配置、违规预警与闭环整改:解决企业客服会话质检、财务票据审核、合…

作者头像 李华