Ed25519 是一个基于椭圆曲线的数字签名算法,它高效,安全且应用广泛。TLS 1.3, SSH, Tor, ZCash, WhatsApp 和 Signal 中都使用了它。本文主要讲解以下几点:
1. 介绍一点群论知识,目的是让大家对 Ed25519 和其可延展性问题的原理有一种直觉。若想深入理解,还需参考其他资料;
2. 针对 rust 库 ed25519-dalek 的 1.0.1 版本讲解 ed25519 的实现;
3. 针对该库的延展性问题做出解释。
数学要点回顾
群的定义与性质
群论是抽象代数研究的内容,但抽象代数的一些思想是程序员非常熟悉的。面向对象中的继承就是一个很好的例子,我们都知道子类继承了父类后,就能使用父类中定义的方法。可以将抽象代数理解为对一个抽象的数据结构定义了一些性质,由这些性质推导出来的定理对于所有的子类都成立。
慢雾:苹果发布可导致任意代码执行的严重漏洞提醒,请及时更新:7月11日消息,慢雾首席信息安全官23pds发推称,近日苹果发布严重漏洞提醒,官方称漏洞CVE-2023-37450可以在用户访问恶意网页时导致在你的设备上任意代码执行,据信这个已经存在被利用的情况,任意代码危害严重,请及时更新。[2023/7/11 10:47:05]
沿用刚刚的比喻,来看看群(group)这个数据结构是如何定义的。
由此可以推出许多有意思的定理:
举几个例子:
慢雾:Transit Swap黑客攻击交易被抢跑,套利机器人获利超100万美元:10月1日消息,据慢雾安全团队情报,Transit Swap 黑客转移用户 BSC 链 BUSD 资产时被套利机器人抢跑,区块高度为21816885,获利107万BUSD。套利机器人相关地址列表如下:0xa957...70d2、0x90b5...8ff4、0xcfb0...7ac7、
截止到目前,在各方的共同努力下,黑客已将 70% 左右的被盗资产退还到Transit Swap开发者地址,建议套利机器人所属人同样通过service/img/202364120436/2.jpg">
慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。
1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;
2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;
3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;
4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;
5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;
6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;
7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;
8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;
9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;
10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;
11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]
慢雾:Lendf.Me攻击者刚归还了126,014枚PAX:慢雾安全团队从链上数据监测到,Lendf.Me攻击者(0xa9bf70a420d364e923c74448d9d817d3f2a77822)刚向Lendf.Me平台admin账户(0xa6a6783828ab3e4a9db54302bc01c4ca73f17efb)转账126,014枚PAX,并附言\"Better future\"。随后Lendf.Me平台admin账户通过memo回复攻击者并带上联系邮箱。此外,Lendf.Me攻击者钱包地址收到一些受害用户通过memo求助。[2020/4/20]
拉格朗日定理
现在介绍一个非常有意思的定理,这个定理的推导在文末引用的视频中。
“群的阶能被子群的阶整除。”
为什么说这个定理有意思呢,不仅仅因为它的证明过程串起了刚刚介绍的许多知识,还因为下面的结论:
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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。