un.Block

Posted on Oct 09, 2021Read on Mirror.xyz

AnySwap 攻击事件

不同于常见的闪电贷攻击事件,AnySwap 这次的安全事件颇为新颖

AnySwap 这次的漏洞在于意外的两笔交易使用了相同的 R 值签名。攻击者从中成功还原出了管理员账户的密钥。

交易签名

在以太坊交易中,我们将交易中特定数据子集的哈希值用用户的私钥进行签名。其他人可以通过用户的公钥对签名进行认证。以太坊上的签名由 R,S,V 三个值组成。R 和 S 是 ECDSA 签名的输出。V 是 Recover Id,为 1 或者 ,用来辅助校验签名。

https://learnblockchain.cn/books/geth/part3/sign-and-valid.html

漏洞

由于 AnySwap 客户端升级,一个随机数 K 被使用了两次,这导致两笔不同的交易具有相同的 R。由于签名的信息不同,可以推导出随机数 K。再加上已经知道的公钥,我们就可以得出私钥。

假设第一笔交易的签名为 r1,s1。第一笔交易签名的信息是z1。第二笔交易的签名是r2,s2。第一笔交易签名的信息是z2。由于在这个例子中,r1 = r2,我们用 r 来表示它们。通过这个公式我们可以推导出私钥。

相关阅读: