# AnySwap 攻击事件

By [un.Block](https://paragraph.com/@un-block) · 2021-10-09

---

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

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

### **交易签名**

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

![](https://storage.googleapis.com/papyrus_images/379a9ecbb4cce62d607e657fef5cd27d550da6bcf6b664f7ad8c85e7ad90feeb.jpg)

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

### **漏洞**

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

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

![](https://storage.googleapis.com/papyrus_images/622e7b696e0837a91c3dc0b5c3ebb28fe5a1f948d49939d2d6119f1a734ec17a.png)

### **相关阅读：**

*   [_Recovering Bitcoin private keys using weak signatures from the blockchain_](https://link.zhihu.com/?target=https%3A//web.archive.org/web/20160308014317/http%3A//www.nilsschneider.net/2013/01/28/recovering-bitcoin-private-keys.html)
    
*   [_签名与校验_](https://link.zhihu.com/?target=https%3A//learnblockchain.cn/books/geth/part3/sign-and-valid.html)
    
*   [_ECDSA_](https://link.zhihu.com/?target=https%3A//www.bookstack.cn/read/MasterBitcoin2CN/spilt.5.ch06.md)
    
*   [_账户私钥被破解？拆解 Anyswap 跨链桥被⿊细节_](https://link.zhihu.com/?target=https%3A//www.chainnews.com/articles/743930056070.htm)

---

*Originally published on [un.Block](https://paragraph.com/@un-block/anyswap)*
