45000ETH以太坊大盗是怎么做到的?就在上周,美国知名的安全咨询公司Independent Security Evaluators(以下简称ISE)以太坊区块链私钥发布了相关报告。报告指出,一名区块链大盗通过疑似方式通过“猜测”弱私钥成功窃取了多达4.5万枚以太币。尽管以太坊已经建立了700多个弱私钥,尽管它们经常被许多人使用“猜测”这种方式听起来像是幻想,但事实是,总价值超过700万美元的以太币确实消失了。
针对这一事件,ISE高级安全分析师Adrian Bednarek它向许多媒体发表了声明和解释,但这些盗窃事件尚未从根本上得到解决。毕竟,盗贼通过技术手段跨越了加密墙,还是另辟蹊径白法取私?让我们来看看原因。
01、趁“弱”打劫
ISE该团队只是偶然发现了盗贼的存在。当时,他们正在对企业用户进行安全评估。用户计划使用集成密钥生成算法来实现他们的钱包。正是在安全评估的过程中,他们找到了线索并进行了研究。
以太坊、比特币甚至其他任何支持ECDSA(椭圆曲线数字签名算法)在主要区块链中,私钥由256位二进制数字组成。这意味着单纯通过猜测获得随机生成的以太坊私钥的概率为1/2256(这个分母的数字大约等于宇宙中包含的原子的数量),这不亚于在广阔的沙漠中找到两个相同的沙子。
但当Bednarek在观察以太坊区块链时,他发现有些人把他们的以太币存储在更简单、更容易猜测的钥匙上。这可能是由于代码编码错误,密钥只切断了预期长度的一小部分,或者是因为没有经验的用户可以选择自己的私钥,甚至包恶意代码破坏以太坊钱包的随机数字生成器(让钱包的开发者很容易猜到密钥)。
为提高工作的可行性,Bednarek在研究过程中,他的团队将256个私钥空间缩小到8个32个子区域。毕竟,在更大范围内强制统计私钥是不现实的。
最后,他们的团队花了整整一天的时间扫描这8个32位的子区域,发现这些区域共有340亿个弱私钥。
但不可思议的是,他们还在340亿个弱私钥中找到了732个可以猜测的私钥,其中甚至有一些只包含一个数字1的私钥,可以称为安全下限。
(用256位代码写入,0x0000000000000000000000000000000000000000000000000000000000000001)
这无疑是一个危险的信号。我们知道,私钥不同于银行账户,它既是用户ID也是用户的密码。因此,当两个人使用相同的密码建立一个密码时BrainWallet(即钱包需要密码作为生成私钥的一部分),两个人会有同样的钱包。使用上述可以猜测的私钥无异于打开账户财产门户。
事实上,732个可以猜测的私钥涉及49060笔交易,它们曾经有余额,但最终被清空。虽然这些交易包含了一些合法的转账,但它们无疑包含了许多盗窃交易,因为许多钱包的资金被转移到特定的地址。
有12个地址似乎被同一个小偷抢走了,资金转移到了同一个账户,现在有多达4.5万个以太币,我们在文章开头提到的神秘小偷。
02、扫描梳理,然后洗劫一空
Bednarek曾试图将价值1美元的货币放入盗贼所知的弱私钥中,这一美元在短短几秒钟内消失了。更可怕的是,这笔资金的最终下落与之前私钥中被盗资金的下落不同。
然后他们试图把同样数额的钱放进一个小偷以前不知道的弱私钥里,结果在几秒钟内就被清空了,转账的账户和刚才不一样。
而当Bednarek在以太坊区块链查看这些私钥的待处理交易时,他发现许多其他小偷试图窃取资金,但由于差异以几毫秒的速度失败。
因此,我们可以推断,不止一个小偷正在进行这种盗窃,他们已经建立了一些节点或预生成的密钥列。这些节点或密钥列可以自动扫描区块链网络中的弱私钥,并快速筛选出可以猜测的私钥,然后清洗它们。
对此,Bednarek表示,“假如这是手动的,处理这些交易需要很多时间。但事实是,当我们发行资金时,当我们再次进入区块链浏览器时,我们可以看到资金被转移,整个过程只有几秒钟。因此,显然,这些小偷使用区块链节点,它是在某个地方设置的交易网络的一部分。一旦扫描到交易中记录的私钥新手1000元或可以猜测的私钥,它将要求转移资金。”
以太坊大盗已经盗取了4.5万以太币,ISE工作人员还检查了他的以太坊账簿,发现他在过去三年中成功地从数千个地址窃取了以太坊货币。在以太坊价值的高峰期,盗贼出售了它“战利品”总价值甚至达到了几千万美元。
从他钱包地址的相关评论中,我们也可以看到很多负面评论,字里行间都露出了这个家伙的劣迹。其中一条评论据说是由ETH钱包的主要供应商之一MyEtherWallet(MEW)提交。遗憾的是,虽然这些盗窃交易可以追溯,但由于区块链交易的匿名保护,相关技术人员未能跟踪以太坊大盗的真实身份。
03、分析团队的道德困境
安全分析师在安全报告中盗窃以太坊“欺诈手段”总结:“首先,小偷总是盯着弱私钥寻找机会。第二,他还密切关注基于密码的钱包和错误配置RPC(远程调用)并等待攻击他们的机会。因此,用户不应暴露自己Ethereum节点的RPC,但有些人有时会这样做。如果用户无法设置可靠的密码,与用户节点基本相关的默认钱包将被小偷光顾。”
ISE安全分析师还特别提到了他们在这项研究中的道德困境——如果他们发现了一个含有大量资金但尚未被盗的弱私钥,他们该怎么办?
假如把资金原封不动地留在那里,那么他们就知道这些资金背后是一个很容易猜到的私钥,这意味着它将来很可能会被小偷偷走。这无疑是整个团队的心理负担,因为他们知道盗窃的风险,所以他们认为他们有责任保护资产,告诉资产持有人危险。但他们应该告诉谁呢?没有一个简单的方法来帮助他们识别这些弱私钥的持有者是谁。
他们也可以选择暂时将资金暂时转移到自己的账户下,以确保他们不会落入小偷的新手几分钟k在线手中,但没有人能帮助他们证明他们在保护这些资产,而不是做与小偷相同的活动。这种做法涉及到太多的法律和道德风险。
04、安全建议
从报告中可以看出,私钥攻击通常有两个因素:一是负责生成私钥的钱包或软件编码错误,二是密码持有人(用户本身)倾向于使用一些弱密码来获得相同的私钥(甚至不缺乏空间)。
但在本质上,这些因素最终只是导致使用弱私钥和盗窃的证据。它不能帮助技术人新手该如何炒币员找到弱私钥问题的根源,以及代码错误的钱包和恶意钱包。
所以我们不能断言究竟哪个钱包该为这些弱私钥被盗负责,即使我们定位了这样一个产生弱私钥的钱包,也有用户自己的错误输入,钱包仍处于早期版本或开发人员的恶意行为不能直接归咎于钱包本身。
因此,所谓的安全建议只能从用户的主观角度出发:一是尽可能选择更受欢迎、声誉更好的钱包,二是使用更多的冷钱包。从开发人员的角度来看,我们只能提倡他们对钱包私钥复杂性的最低要求。如果我们能做到这一点,那么即使从最悲观的角度来看,我们至少也不那么容易偷那些小偷。