简介
· 比特币开发者约翰·坎特雷尔(John Cantrell)透露透露自己是破解阿里斯泰尔·米尔恩(Alistair Milne)比特币地址的黑客——这是他挑战的一部分。
· 为了获得这个奖项,Cantrell创造了一整套基于云的GPU。
· 他必须检查超过一万亿的单词组合才能打开钱包,他几乎放弃了尝试。
闪电网络通讯协议巨头约翰•坎特雷尔(John Cantrell)昨日破解了一个比特币地址,将价值9300美元的比特币收走了。但这不是偷窃,这是他赢的游戏的一部分。现在他已经透露了他是如何做到的。
正如Decrypt昨日报道的那样,Altana数字货币基金的首席信息官阿利斯泰尔•米尔恩(Alistair Milne)在Twitter上策划了一场挑战,赢家将获得一枚完整的比特币。从今年5月开始,他定期发布暗示,暗示一个包含比特币钱包地址的12个单词的种子短语。捡到所有线索的人可以使用这句话来解锁比特币钱包,并把比特币拿走。
不过,Milne打算把最后的三四个字一次性贴出来。这是为了防止有人强行打开地址(通过不断猜测单词,直到一个组合奏效)。但是他的计划失败了。还有8个单词,Cantrell就能猜出剩下的单词,找到正确的组合,然后打开钱包。
破解比特币地址
在第八个字出版之前,Cantrell就开始准备了。他在Medium帖子中写道,这八个单词,大约有1.1万亿种可能的助记符需要检查。
助记符是一个12或24个单词的比特币私钥种子短语,它允许用户完全访问比特币私钥上的资金。这样的短语只能包含2048个单词,但这并不能让黑客入侵比特币钱包变得更容易。
为了测试一个短语,Cantrell需要将助记符生成种子,在种子中生成主私钥,从主私钥生成地址。在编写了一个特殊的程序并运行了几个基准测试之后,他发现他当时拥有的硬件无法胜任这项任务。 Cantrell的笔记本电脑每秒只能检查1250个助记符,总计每天1.08亿个助记符。“这意味着我的CPU将花费大约25年的时间来生成和检查在只知道8个单词的情况下强行记忆所需的一万亿次可能性,”他说。
为了解决这个问题,Cantrell求助于云计算。他在GPU市场和微软的云计算服务Azure上租了几十张显卡,然后编写软件,将工作分批分发到每张显卡上。
通过这个系统的一半测试,第八字出版了,游戏开始了。他启动了机器。
“在高峰期,我每小时测试400亿个助记符。这意味着测试这一万亿助记符需要大约25个小时。我知道它平均只需要其中50%的时间,”Cantrell说。
但他非常不幸。在测试了85%的组合后,他运气不佳。他意识到可能存在一个根本的缺陷。他的计划取决于字句的顺序是否正确——这并不能保证。如果不是这样,本来应该有8!(阶乘)或更多的可能性,最后结果使得它不可能破解。
经过一天的密集计算,Cantrell 基本上放弃了它能工作的希望,而且几乎想把它关掉了。
“当想起我已经走了这么远的时候,我意识到无法让自己停下来了,所以我就让它继续。让我吃惊的是,那天晚上稍晚的时候,经过近30个小时和1万亿次检查(1,000,710,602,752),它找到了一个解决方案!” Cantrell说。
然后,他支付了0.01比特币(合94美元)的高额费用,把钱转到自己的钱包里——以防其他人猜到(他希望比特币矿工们优先考虑他的交易)。
Milne 证实比特币被人拿走了。他在推特上写道:“我知道我是在和时间较劲,但大多数人认为需要几个星期才能强行播种。”
现在,Cantell计划传播他自己的经验竞赛——当然,只是用软件是赢不了的。