Ed25519 是一个基于椭圆曲线的数字签名算法,它高效,安全且应用广泛。TLS 1.3, SSH, Tor, ZCash, WhatsApp 和 Signal 中都使用了它。本文主要讲解以下几点:
1. 介绍一点群论知识,目的是让大家对 Ed25519 和其可延展性问题的原理有一种直觉。若想深入理解,还需参考其他资料;
2. 针对 rust 库 ed25519-dalek 的 1.0.1 版本讲解 ed25519 的实现;
3. 针对该库的延展性问题做出解释。
数学要点回顾
群的定义与性质
群论是抽象代数研究的内容,但抽象代数的一些思想是程序员非常熟悉的。面向对象中的继承就是一个很好的例子,我们都知道子类继承了父类后,就能使用父类中定义的方法。可以将抽象代数理解为对一个抽象的数据结构定义了一些性质,由这些性质推导出来的定理对于所有的子类都成立。
Magic Eden宣布重新上线BRC20交易市场:7月13日消息,Magic Eden发推称,BRC20交易市场已重新上线。后续一个月新上架物品交易费率修改为0.1%,并进行了一些UI和验证方面的改进。[2023/7/13 10:51:42]
沿用刚刚的比喻,来看看群(group)这个数据结构是如何定义的。
由此可以推出许多有意思的定理:
举几个例子:
Bitcoin Ordinals启动平台提出BRC-69标准以降低90%的成本:金色财经报道,Bitcoin Ordinals启动平台Luminex提出了BRC-69标准,旨在简化递归Ordinals集合的创建,降低申购成本,简化链上预披露流程。
Ordinals开发者上个月推出了递归铭文,通过允许铭文一起工作,帮助克服比特币每个区块大小4MB的限制,限制了NFT的大小。以前,代表比特币上的代币和NFT的Ordinals铭文是相互独立的,不知道其他铭文。递归铭文可以使用特殊语法引用其他铭文的内容。
在此基础上,Luminex声称BRC-69可以将铭文成本降低90%以上,随着铭文数量的增长,有助于优化比特币区块空间。Luminex表示,这种减少是通过四个步骤来实现的,即添加特征、部署集合、编译它和铸造资产。[2023/7/4 22:17:18]
BitKeep钱包已上线BRC-20 Ranking:5月15日消息,Web3多链钱包BitKeep现已推出BRC-20 Ranking,实时更新BRC-20代币价格变动、24小时涨跌幅、持有人数和交易量等信息,降低移动端用户参与比特币生态的门槛。目前已收录前100名流行的BRC-20代币数据。
据CoinTelegraph采访报道,BitKeep本月将全面接入比特币生态,帮助用户在移动端和浏览器插件使用BTC Taproot地址格式,并支持BRC-20代币及比特币NFT的充提管理、转账交易等操作;同时,BitKeep一直在持续关注BRC21等新协议,根据市场趋势和用户需求,提供更多样化的支持与服务。[2023/5/15 15:04:01]
拉格朗日定理
现在介绍一个非常有意思的定理,这个定理的推导在文末引用的视频中。
BitKeep将支持Ordinals协议和BRC-20代币:金色财经报道,Bitget 发推称本月将接入比特币生态,NFT 交易市场将推出比特币 NFT 专区,支持 Ordinals 协议 BTC NFT 的展示、铸造、转账、交易;BitKeep 钱包同时将兼容 Taproot 地址格式,为 BRC-20 代币提供资产展示、转账和交易等服务。接入完成后,BitKeep 用户可以在移动端和插件端使用 BTC Taproot 地址格式,并对 BRC-20 代币及比特币 NFT 进行充提管理、转账交易等操作。[2023/5/8 14:50:22]
“群的阶能被子群的阶整除。”
为什么说这个定理有意思呢,不仅仅因为它的证明过程串起了刚刚介绍的许多知识,还因为下面的结论:
Ed25519 的实现
现在我们来讲 Ed25519,它是 EdDSA 算法的其中一种。EdDSA 有 11 个参数(https://datatracker.ietf.org/doc/html/rfc8032#autoid-3),这些参数的具体选择对于算法的安全和性能有很大的影响。Ed25519 的具体选择请参看链接(https://datatracker.ietf.org/doc/html/rfc8032#autoid-9)。
另外,值得一提的是这套算法用到了一个叫 Curve25519(https://datatracker.ietf.org/doc/html/rfc7748#autoid-5)的椭圆曲线。对于椭圆曲线,我们只需知道,它上边有很多很多点,这些点相加能得到新的点,新的点还是在曲线上。这些点和这个加法能形成一个群。注意这里的椭圆曲线加法(https://www.wikiwand.com/en/Elliptic_curve_point_multiplication)是有特殊定义的。
我们约定如下记法:
这是个交互式的算法,但是没关系,有一个技巧叫做 the Fiat – Shamir heuristic(https://link.springer.com/chapter/10.1007%2F3-540-47721-7_12),它可以把任意的交互式算法转化成非交互式的算法。最终我们会用非交互式算法。
数字签名算法都会给我们如下 API:
密码学算法的实现和使用都有非常多要注意的地方。当我们说一个数字签名算法是安全的,一般指的是即使在攻击者能够获得任意消息的签名(Chosen Message Attack)的情况下,攻击者仍然不能伪造签名。Ed25519 满足这个性质,但不代表 Ed25519 是绝对安全的。在原始的论文中也提到,可延展性问题是可以接受的,且原始的算法就有这个问题。
慢雾科技
个人专栏
阅读更多
区块律动BlockBeats
Foresight News
曼昆区块链法律
GWEI Research
吴说区块链
西柚yoga
ETH中文
金色早8点
金色财经 子木
ABCDE
0xAyA
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。