【51CTO.com快译】去年夏天,艾德里安·贝德纳雷克(ADRIAN Bednarek)思考怎么防止黑客窃取以太坊加密货币。他是一名安全顾问,当时正在给一个从事挖掘加密货币行业的客户工作。Bednarek被以太坊吸引,尤其是它难以想象的复杂性,以及移动端可能潜在的安全漏洞。他从考虑最简单的问题开始:如果以太坊所有者用私钥存储他们的数字货币——私钥是一串不可预测的78位数字串,用于保护存放在某个地址的货币——私钥是1结果如何呢?
令Bednarek惊讶的是,根据区块链以太坊所有的交易记录,即使极其简单的密钥也存有货币,而且钱已从所在的以太坊钱包里拿出来了——早在Bednarek之前,谁能猜到私钥是1呢。毕竟,就像比特币和其他加密货币一样,如果有人知道Ethereum私钥,他们可以使用密钥解锁相关的公共地址。然后,私钥允许向那个地址转账,就像他们是合法的所有者一样。
最初的发现激起了贝纳莱克的好奇心,所以他又试了几个连续的键:2、3、4等等几十个键,所有的键都被清空了。然后,他和安全咨询公司的同事编写了一些代码,启动了一些云服务器,并尝试了数十亿次。
在这个过程中(正如发表的一篇论文所详细描述的),他们不仅发现,在过去几年里,数百个用户只用了很容易猜测的私钥存储了他们的数字货币,而且还发现了他们所谓的“区块链强盗”。 一个以太账户一下就吸走了4.5万以太的财富——价值超过5000万美元——使用的是同样的猜键技巧。
“他做着和我们一样的事情,但他超越了我们,”Bednarek说,” 不管这些人是谁,他们都花了大量的计算时间来寻找新的钱包,观察每笔交易,看看他们是否有钥匙。”
犹如“海滩淘金”
为了解释区块链强盗是如何工作的,首先了解一下猜测随机生成的Ethereum私钥的概率是1 / 115 quattuorvigintillion(或者用分数表示: 1/2256),这个分母大约是宇宙中原子的数目。Bednarek把以太坊钥匙的任务比作是在海滩上随机选择一粒沙子的概率,在“十亿粒”海滩中找到相同的沙子!
但是当Bednarek观察以太区块链时,看到一些人将Ethereum储存在更简单、更容易猜测的钥匙上。他认为,这很可能是Ethereum钱包的错误结果,由于编码错误,钱包剪掉了钥匙长度的一小部分,或者让没有经验的用户自己选择钥匙,甚至包括恶意代码,破坏了随机化过程,让“小偷”很容易猜到密钥。
Bednarek和他的ISE同事最终扫描了340亿个区块链地址来寻找这些弱键密码。他们称这个过程为“以太淘金”,就像“海滩淘金”一样,在以太的巨大熵中寻找更多可能。他们最终找到了732把可能的钥匙,这些钥匙曾一度被使用但后来被清空了。不过据Bednarek猜测,自以太坊在2015年推出以来,被窃取的弱密钥总数中,732只是一小部分。
与此同时,在这些空无一人的地址中,Bednarek很好奇地发现,似乎有12个地址被同一名“强盗”洗劫一空。他们被转移到一个帐户——目前拥有45000以太币。以今天的汇率计算,这相当于770万美元。
Ether Comb, Ether Go以太狗
Bednarek尝试把一美元的以太币放入“小偷”之前清空的一个弱键地址中。几秒钟之内,就转移到了其他账户上。然后,Bednarek尝试将一美元放入一个新的、以前从未使用过的弱键地址中,它也在几秒钟内被清空了,这次被转移到一个只有几千美元的以太账户里。但是Bednarek可以从Ethereum区块链的待处理事务中看出,有个以太“强盗”也曾试图抓住它,却在几毫秒内被他人打败了。“强盗”似乎有一大堆预先生成的钥匙,并以非人的速度自动扫描着它们。
事实上,当研究人员查看“区块链强盗”以太账户的历史时,他们发现,在过去的三年里,这个账户从数千个地址中提取以太币,却从未有任何资金流出的动作。在以太坊2018年1月的汇率高峰时期,这个强盗的账户持有38,000以太币,当时价值5400多万美元。在那之后的一年里,以太坊的价值直线下降,使其价值下降了85%。
“你不为他感到难过吗?”Bednarek笑着问。“你遇到个小偷,他积累了这么多财富,然后在市场崩盘时把它们全都赔光了。”
尽管跟踪了这些记录,但Bednarek并不知道谁是区块链强盗。
弱键
Bednarek也不能识别出产生弱键的错误或恶意钱包。相反,他只能看到弱键创建的原因和由此导致的盗窃后果。他说:“我们可以看到有人被抢劫,但我们不能确定谁是罪魁祸首。” 特别是对区块链强盗来说,目前还不清楚简单的弱键是否是盗窃的主要方式。强盗本可以使用其他技巧,比如猜测“脑钱包”的密码短语,这些密码是用可记忆的单词保护的,这些单词比完全随机的密钥更容易被侵入。
一个安全研究团队在2017年发现了2846个比特币被盗的证据,这些比特币都是用脑钱包被盗的,按当前汇率计算价值超过1700万美元。2015年末,一宗以太脑钱包盗窃案就带走了4万个以太币,几乎和区块链强盗一样多。
ISE还没有在比特币区块链上做实验,但Bednarek已经对100多个弱比特币密钥进行了抽查,发现相应钱包里的东西也都被偷了,不过没有一个钱包被以太坊强盗之类的大鱼偷走——与以太坊相比,比特币窃贼之间的竞争可能更激烈、更分散。
Bednarek认为ISE的经验教训是,对于开发者来说,要仔细审计他们的代码,以发现任何可能截断密钥并使其容易受到威胁bug。用户应该注意选择密钥。你不能打电话给服务台,让他们撤销交易。当钱包消失时,它就永远消失了。人们应该使用可信钱包,并从可信来源下载。抛开汇率的波动不谈,区块链大盗不需要更多的捐款了。
原文标题:A 'BLOCKCHAIN BANDIT' IS GUESSING PRIVATE KEYS AND SCORING MILLIONS,作者:ELENA LACEY
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】