2022年,西班牙一位名叫迈克尔(Michael)的男子被一个难题困扰着。
早在2013年,他以5300美元的总价购买了那会儿还没有大火的比特币,一共购买了43枚。
随后他把这些币存进了电子钱包,为了防盗,他用一个密码软件生成了一串长达20位数的随机密码。
迈克尔担心用同样的软件保存这个密码不够安全,要是被黑客破译了或者电脑丢失了,那么对方能按图索骥找到密码,取出他的比特币。
于是,他自作聪明地把这长串密码另行粘贴在了一个文档中,让谁也看不出来密码的用途。他还给这个文档设置了密码,进行了加密。
经过这一层层的加密,迈克尔自以为自己有了牢不可破的比特币账户密码,只等比特币涨价,自己就能提现了。
没想到,迈克尔最终栽在了自己手里——他存有密码的加密文档无缘无故坏掉了,根本无法打开,更无法把那个长达20位数的密码粘贴出来。
同时,他眼睁睁看着比特币的价值从过去的123美元/枚上涨到超3w美元/枚。
“我有这笔财富,我可以看到它,但我无法使用它,因为我没有密码。”
过去多年间,迈克尔一直寻找各方密码破译专家,看他们是否有人能帮他找回当年软件生成的随机密码。
但无数网络安全专家都告诉迈克尔:20位随机密码?!忘了你的比特币吧,它们永远也找不回来了。
迈克尔听到这些噩耗,一度认为自己有生之年无法拿到这笔巨额财富。
直到2022这一年,他通过网络得知了一位美国的黑客乔(Joe Grand),而后迈克尔向乔求助。
乔是世界有名的硬件黑客,也是一位电气工程师和发明家,黑客历史可以追溯到他10岁。
他被主流认可,还为系统开发人员提供咨询,咨询内容就是他们应该如何防范像他一样的黑客…
乔还有过帮助两位陌生人寻找回失落的加密货币密码的经验。
一次是对方把储存了密码的u盘丢进了一个湖里,潜水员打捞上来后,乔通过一系列物理手段恢复了u盘的功能,让对方可以像从未丢失过这个u盘一样找到里面储存的密码。
另一次则有关于密码的破译,一家人中的一个儿子意外去世,去世前曾交代亲兄弟比特币密码可能和他们奶奶的名字有关,于是乔帮忙围绕这个线索进行了“蛮力搜索”,一个又一个地尝试数百万个排列组合…
2022年,迈克尔通过网络联系了乔,但是乔却没有像之前一样答应。
原因也不复杂:乔是做硬件方面的黑客,对这种涉及软件随机生成的密码可不在行。
同时,帮人找回加密货币密码这事也不是他的专长和兴趣所在,无论对方开出多高的价。
于是,当年乔一口拒绝了迈克的请求。
但去年夏天,当迈克尔在绝望中又找到乔时,乔同意了试一试。
这次并非是乔心软了才答应迈克,而是他的德国伙伴,一位年轻的软件黑客提出他们有一定几率可以找回迈克失落的密码。
这位年轻的黑客名叫布鲁诺(Bruno),德国人,专攻软件方面的漏洞,而且和乔一样,布鲁诺也是从小就对寻找系统和软件中的安全漏洞表现出极大兴趣。
布鲁诺时常也会收到人们向他求助丢失的加密货币密码的困扰,但像迈克这样的情况,他也是第一次见到。
他对乔提出他们可能有机会搏一搏,而两位天才黑客都对这些困难但有渺茫机会的项目感到无比的兴趣。
乔飞到了欧洲和布鲁诺、迈克汇合。
迈克尔当年是通过一个名叫“RoboForm”的软件生成那个随机密码的,这个软件是世界上较早的随机密码生成器,至今仍然沿用。
乔和布鲁诺都对这个软件进行了测试,发现该软件每时每刻都可以生成完全不同的密码。
对于两人来说,要找到乔当年那个随机密码,简直如同大海捞针:
“如果我们必须尝试所有可能的密码组合,那么这相当于全世界水滴数量的 100 万亿倍。
如果我们将一个密码想象成一滴水,那么我们就会发现它可能在河底流动,它可能从天上掉下来,它可能在世界上任何地方的任何海洋中。
如果我们能够以某种方式减少这种情况,那么我们就可以把这个无法克服的问题变成我们可以成功的事情。”
两人了解了RoboForm的工作原理后,就开始顺着时间线寻找可以缩小搜索范围的线索。
他们很快注意到,在软件的版本说明时间线上,2015年版本的更新说明有些蹊跷:
“我们增加了生成密码的随机性。”
这句话让两名天才黑客都起了疑心:增加了随机性??
这是否说明,2015年之前的版本生成的密码是否没那么随机??
乔和布鲁诺作为电脑软硬件天才也一直知道,实际上,计算机要随时不断生成一串“完全随机”的数字是一件“非常非常困难”的事,很多随机数都时常和一些参考参数有关联:
“如果我们能够操纵这种‘随机性’,我们可能能够得到一个可预测的输出,可以用来尝试破解迈克尔的钱包密码。”
但如今已经是2023年了,怎么才能回到迈克尔创建密码的10年前,让软件模仿当年迈克尔一样的动作呢?
这时候,两人的专业就显露无疑:他们对软件进行了逆向工程,不仅把软件的版本变回了2013年的版本,还通过篡改系统数据,让软件相信自己正在执行一个来自2013年的用户命令:
“我们可以欺骗了系统回到 2013 年,它认为我们还在迈克尔生成密码的时间窗口中生成密码。”
搭乘“时光机”回到10前后,两人又使用了一款美国国安局也在使用的软件工具试图摸清楚过去的密码产生的规律:
“这款软件就像俄罗斯套娃。我们的目标是中间那个生成密码的小娃娃。”
通过运算和测试,两人惊喜发现:当年的随机密码生成真的有规律,那个规律就是系统时间!
原来,2013年的该软件会根据用户创建密码的时间来生成一个严格跟时刻挂钩的“伪随机密码”,每一时刻的密码都跟创建时间有着直接关联。
得到密码和迈克当年创建密码的时间有关的重要线索,乔和布鲁诺都很兴奋。
这意味着:他们的大海捞针范围可以大为缩小,只要知道迈克尔创建随机密码的日子和大致时间,他们就能运算出有限数量的密码,并把这些密码拿去逐一尝试了。
但没想到,迈克尔根本记不住十年前自己究竟哪月哪日打开了这个软件生成了比特币的密码…
乔和布鲁诺没有灰心,进一步无比耐心地排查。
他们找出了迈克尔将比特币存入电子钱包的时间:2013年4月。
按照常理,迈克尔应该在这个日子前后几个月内创建了随机密码。于是,乔和布鲁诺把搜索时间设定在了当年的3月份至4月底。
他们通宵地商讨和计算,等待电脑运行结果,但结果让他们失望了:没有一个结果能解锁迈克尔的比特币账户。
两人无奈之下再度联系迈克尔,要求他再仔细回想确切的日子。
但迈克尔也被搞得头昏脑胀,毕竟,10年前的事情谁能记得那么清楚?
不过,布鲁诺这次让迈克尔把他在当年通过这个软件另外创立的几个密码发给了他。乔和布鲁诺希望能从迈克尔通过同一个软件创建的其他密码找出一些线索。
两人发现,在迈克尔的另外两个密码没有含任何特殊字符(¥……&类似的)。
特殊字符是否出现在随机密码中可以由用户自行设定,乔和布鲁诺抱着一线希望,把搜索范围中特殊字符的选项去掉,又延长了搜索时间到2013年的6月1日。
而在一个普通寻常的凌晨,布鲁诺面前的电脑突然跳出一串特定的由数字和字母组成的字符:
一个唯一的结果从电脑屏幕上蹦了出来!
这个结果是软件专家布鲁诺自己都没想到的,居然会有唯一一个结果存在!
(狂喜的布鲁诺)
结果显示,迈克尔在2013年的5月15号下午4点10分40秒点击创建了这个密码…
去年11月,乔和布鲁诺先对迈克尔瞒下了这个惊天喜讯,他们订制了一块写着给迈克尔颁发160万美元的巨大泡沫板,还成功把这个板子通过飞机托运到了巴塞罗那。
然后,当迈克尔还在摄像机前配合讲述自己如何丢掉这笔巨大财富的故事时,乔和布鲁诺突然出现在迈克尔面前,用奖牌告知了他这个喜讯!
三个人都高兴得无以复加。
经过5个月的努力,乔和布鲁诺真的把之前不可能的事情变成了100%!
作为回报,乔和布鲁诺在成功破解密码后从迈克尔的比特币账户中拿到了特定比例的比特币(他们在寻找密码前就和迈克尔达成了协议破译成功后他们才会收取费用)。
而去年11月迈克尔的比特币已经从10年前的5300美元涨至160万美元。
乔和布鲁诺把整个故事拍成了一部短小精湛的纪录片,到今年5月纪录片播出之时,这160万美元已经涨到了300万美元…
去年底,迈克尔售卖了一些币,分给了自己的恩人一些币,自己还留下了30枚币。
他准备等到比特币涨到10万美元/枚的时候出售剩下的币。
最后,迈克尔除了感谢乔和布鲁诺,还感谢了自己当年的“聪明反被聪明误”:
“要是没丢失密码,可能就等不了10年,这之前可能早就卖了。”
怎么说呢,要不是两位黑客天才用心的帮忙,加上碰上软件刚好在过往版本有着巨大系统漏洞,迈克尔的密码早都丢到太平洋去了。
希望他能长个记性吧…