以太坊黑暗森林中的怪物ECDSA和数字签
上周,以太坊黑暗森林中的一个怪物向我展示了自己。 在这之前的 16 小时,我在TUX听说它的存在后放下了加密的诱饵。 我预料到了,但刷新 Etherscan 并看到我所有的 Ether 都消失了仍然令人惊讶。
这个怪物正在观察以太坊在创建交易过程中的一个隐秘错误:在签署交易时重复使用一个数字。 我去寻找这个怪物,下饵,在野外看到它,发现了无法解释的踪迹。 要了解此机器人的工作原理,我们需要先查看 ECDSA 和数字签名。
ECDSA
支撑两种最大的加密货币——比特币和以太坊——是椭圆曲线数字签名算法,或 ECDSA。顾名思义,ECDSA 是一种生成数字签名的方案。这些签名是我们证明账户和资产所有权的方式。每个签名证明两件事:
您拥有一些称为私钥的秘密。每个私钥都与一个称为公钥的公知密钥相关联。您的加密“地址”是一个公钥。您使用私钥对特定消息进行签名。在我们的例子中,消息是交易。
ECDSA 之所以有效,是因为您可以轻松地使用私钥生成公钥,但不能使用公钥来导出私钥。但是,您可以在某些有限条件下使用签名来撤销私钥。这有点技术性,但请耐心听我解释。
为了生成签名,ECDSA 需要一个私钥 d、一个随机数 k 和消息的哈希值 h。它将这些与与私钥 d 相关联的公钥 Q 以及由 ECDSA 算法标准化的两个数字 G 和 n 组合在一起。这些一起用于使用以下算法计算数字签名:
r = k * G \mod n
s = \frac{h + d * r}{k} \mod n
r 和 s 一起形成数字签名。
nonce 的作用是什么?
ECDSA 签名中使用的随机数 k 至关重要。它永远不应该被透露,并且应该只使用一次。这就是为什么这个随机数也被称为 nonce,从现在开始我将在提到 k 时使用 nonce。如果攻击者知道使用了什么随机数来生成特定签名,那么他们就可以恢复用于签署该消息的私钥。通过一些代数,可以推导出以下公式:
d=(s*k-h)*r^{-1} \mod n
类似地,如果一个 nonce 在两个不同的签名中被重用,那么用于签署这些签名的私钥可以被恢复。同样,通过一些代数,我们可以从以下等式中推导出使用的随机数:
k=(h_1-h_2)*(s_1-s_2)^{-1}\mod n
有了随机数,我们就可以像上面一样恢复私钥。
那么我们如何判断一个 nonce 是否被重用了呢?
回想一下ECDSA算法中生成r的公式r = k * G mod n。鉴于 G 和 n 只是保持固定的数字,从签名到签名变化的唯一变量是随机数 k。因此,如果 k 在两条消息中重复使用,那么它们的签名将具有相同的 r,这就是为什么 k 永远不会被重复使用的原因!
考虑到这一点,我们现在知道当 ECDSA 的nonce 被重用于签署以太坊交易时要寻找什么:来自同一账户的两笔交易具有相同的 r 但不同的 s 值。我从 tux 那里听说有机器人在监视可能的此类错误,并且在周末的Hackathon中,我开始亲眼目睹。
一个快速的保证:普通最终用户不应该太担心这些攻击媒介。您无法重用随机数或将该随机数公开给公众。这是加密领域代码库的开发人员应该担心的事情,而不是您。
创建密码诱饵
我的计划很简单:为了引诱这个黑暗森林怪物,我会用相同的 r 发送两笔交易,并在该账户中留下一些 ETH 作为诱饵。如果有人在看,那么他们可以盗走我的私钥并拿走 ETH。
为了创建重复使用nonce的诱饵,我需要强制我的交易使用相同的数字签名两次。幸运的是,这并不容易做到。你不能用 MetaMask 做到这一点。通过深入研究 ethers.js(一个流行的 web3 库)的导入,我发现了它里面看起来像用于椭圆曲线加密的库。
(不要在家里尝试这个!)
我将随机数设置为 1!然后我制作了一个新的私钥并加载了 0.04 ETH 并编写了一个简单的脚本将 ETH 转移给我自己。
我快速连续运行了两次,发送了两个立即登陆链的交易。由于我的 nonce 设置为 1,这两个交易应该具有相同的 r,但不同的 s 值。一个快速的脚本证实了这一点:
既然这些交易已经包含在链上,这个账户背后的私钥现在已经泄露给任何正在观看的人。我的诱饵已经下好了。
一瞥深渊
一旦包含第二笔交易,我就立即刷新了被盗账户的 Etherscan 页面。什么也没发生;钱还在那里。在接下来的几个小时里,我再次刷新页面,越来越困惑,想知道随着时间的推移我是否犯了错误。仍然什么也没发生,我去睡觉了。
第二天早上我刷新页面并发现我的余额已经空了! 16 小时后,对一个未知账户的单笔交易盗走了我留在账户中的 0.04 ETH。
怪物抬起了头;它正在监视以太坊上有相同 的r 的交易,盗走他们的私钥,并拿走他们的钱。我很困惑,我的钱花了这么长时间才被拿走。毕竟,绝对可以通过这种方式以编程方式来盗走这些钱。为什么有人看到后不立即盗走这笔钱呢?一个答案可能是他们在等着看我是否将更多的钱转移到我的帐户中。不管怎样,我对我的实验成功微笑了,心里想,我可能永远不会认为我的私钥再次泄露是一件很酷的事情。
乍一看,这个机器人似乎也拿走了其他人的钱。
该帐户有稳定的 ETH 流从许多不同的帐户发送给它。它只发送了一次 ETH,那就是支付 3 次 ERC20 转账的 gas 费。这个账户里总共有大约 3,700 美元。
为了寻找 ECDSA nonce 重用攻击的其他实例,我编写了一个脚本来快速检查帐户的交易是否多次包含 r 值。我输入了向攻击者发送 ETH 的第二个地址,发现该帐户在 1 个以上的交易中重复使用了相同的 r。
这加强了我的信念,即该机器人正在监视以太坊以上 ECDSA nonce 重用的账户。有趣的是,这个用户有两个单独的实例,在两个不同的交易中重用了一个nonce。再一次,当他们的受害者犯了一个错误时,这个黑暗森林的生物的移动速度惊人地缓慢。受害者的钱花了几个小时才被拿走。
在此之后,我查看了接下来发送攻击者 ETH 的两个地址。令我惊讶的是,我发现这些账户向攻击者发送了他们所有的 ETH,但从未重用过 ECDSA nonce!经过调查,我发现有 20 个不同的帐户向攻击者的地址发送了一笔交易,但只有 9 个是以前重复使用 nonce 的帐户。
其他11个呢?攻击者是如何得到他们的钱的?我不确定。一个答案可能是该生物正在使用其他策略来盗走私钥,例如检查使用常用单词、短语或数字作为其私钥的帐户。还有更复杂的方法可以利用不良的随机数生成。但是,这仍然是猜测,我调查的各种方向似乎都没有给出任何明确的答案。
黑暗森林的生物可能已经现身。但它是什么或它接下来会袭击哪里仍然是个谜。
你可能感兴趣的文章
-
【推荐】DeFi 项目
-
【推荐】DeFi 项目
去中心化金融(DeFi)是由构建在区块链网络上的去中心化应用程序(dApp)组成的金融生态系统,其中以以太坊最为流行。很难确切地指出DeFi诞生的确切时间,因为...
2024-11-14
煎饼拭子在 24 小时交易中日食以太坊网络
-
煎饼拭子在 24 小时交易中日食以太坊网络
比南斯智能链的交易正在爆炸式增长,煎饼斯沃普遥遥领先。煎饼交换,一个糖浆兔为主题的分散交换,称为比南斯智能链的家,已经超过了整个以太坊网络的交易量在24小时内。...
2024-11-14
以太坊黑暗森林中的怪物ECDSA和数字签
-
以太坊黑暗森林中的怪物ECDSA和数字签
上周,以太坊黑暗森林中的一个怪物向我展示了自己。 在这之前的 16 小时,我在TUX听说它的存在后放下了加密的诱饵。 我预料到了,但刷新 Etherscan 并...
2024-11-13
密码学在Web3钱包中的应用私钥是什么b
-
密码学在Web3钱包中的应用私钥是什么b
在非对称加密演算法中,私钥是一串随机生成的数字,通常以十六进制数表示(也就是由0、1、2、3、4、5、6、7、8、9、a、b、c、d、e和f组成)。私钥生成后,...
2024-11-06
EIP-3074,能否让以太坊再次变得简单?
-
EIP-3074,能否让以太坊再次变得简单?
以太坊核心开发者已经达成一致,计划将EIP-3074纳入即将到来的硬分叉升级Prague/Electra(预计在2024年第四季度/2025年初)。EIP-30...
2024-11-02
比特幣私鑰使用與安全指南
-
比特幣私鑰使用與安全指南
生成和保存私钥、使用私钥进行交易、保护私钥的安全以及备份和恢复私钥都是比特币安全的关键步骤
2024-10-31
基于区块链的数字资产交易中、美都选择从熟悉的地方开始
-
基于区块链的数字资产交易中、美都选择从熟悉的地方开始
6月11日,知名公募基金先锋基金宣布使用区块链技术发行了一笔1.46亿美元的ABS,参与机构还有纽约梅隆银行(BNY Mellon)、花旗集团(Citi)、道富...
2024-09-20
澳本聪:你们对比特币有误解
-
澳本聪:你们对比特币有误解
2月20日-21日,CoinGeek大会在伦敦老比林斯盖特举行。这是第五届CoinGeek大会。根据官方数据,此次大会汇聚了包括澳本聪Craig S. Wrig...
2024-09-03
EIP-3074,能否让以太坊再次变得简单
-
EIP-3074,能否让以太坊再次变得简单
本文要点:以太坊核心开发者已经达成一致,计划将EIP-3074纳入即将到来的硬分叉升级Prague/Electra(预计在2024年第四季度/2025年初)。E...
2024-08-23
比特币交易平台推荐,谈谈交易中出现的名词有哪些?
-
比特币交易平台推荐,谈谈交易中出现的名词有哪些?
但是平台的页面布局不适合中国投资者的使用习惯二、比特币交易名词介绍1、场内交易通过交易平台撮合交易,比特币的买卖价格公开,平台制定统一价格,实时显示当前的报价,...
2024-08-22