10分钟解密,奖金1400万的比特币游戏

dapdap区块链 2018-10-10 13:33

如果你是电影和游戏发烧友,那么你对《头号玩家》一定不陌生,斯皮尔伯格用一个反乌托邦式的科幻电影结构,塑造了一部全球世纪流行文化编年史。闪灵、高达、哥斯拉...在男主角的过关斩将中一一呈现,虚拟和现实的交织,高智商烧脑的快感,让人欲罢不能。

如果在现实世界也有这样一款烧脑游戏,你玩不玩?

310bitcoinchallege就是一款高智商解谜游戏。制作者号称里面有310个BTC,需要玩家通过解密的方式寻找到线索,从而获取310个BTC。

游戏中共有四个谜题,除了310比特币的终极谜题,还有奖金分别为以下数额比特币的谜题:

1、0.1BTC

2、0.2BTC

3、0.31BTC

参与者需要从中寻找钱包地址的私钥来赢取比特币。

在网站上,制作者放出了钱包地址:39uAUwEFDi5bBbdBm5ViD8sxDBBrz7SUP4。

10月4日,一位叫做"Lustre"的人成功破解了这份画中藏有0.1BTC的秘钥,并转走了其中的币。

10月9日下午,另一位匿名玩家成功破解了第二个挑战,并获得了0.2BTC

第一个秘钥的破解方法在10月8日下午被一众玩家共同猜出,并将方法公布在国外论坛bitcointalk和reddit上。但是截至目前,第二个秘钥是如何被破解的还没有人公布出来。

01 制作者给出解密的线索

制作者Pip曾经提到:“如果没有任何进展,我会给出一些线索”,“别指望在几小时或者几天内解决问题,不过要是有人能够实现,那真的很棒!”

根据Reddit、Bitcointalk以及discord讨论组汇总的信息,我们总结了所有可能用于解决这一问题的理论、线索。

Pip说想要解决谜题,将图片打印出来是必经之路(不仅仅是用软件分析),不过这句话应该只是个玩笑。

这张图既不是藏宝图,上面也没有任何与坐标的有关的东西,但将里面的点和线镜象之后,就会发现绝大多数元素神奇的对应上了。

价值1400万的310个比特币,就在其中。

所以解密的绝大部分工程还是要在电脑上完成,尤其是解密者需要检查哈希和助记词,看起来似乎只有技术大咖才能找到隐藏其中的比特币。

02 线索一 隐藏的原始数据

有人说:“我相信Pip在图片中藏了四条Payload。”

提起payload,大家可能比较陌生,翻译过来是有效载荷。

通常在传输数据时,为了使数据传输更可靠,要把原始数据分批传输,并且在每一批数据的头和尾都加上一定的辅助信息。

比如数据量的大小、校验位等,这样就相当于给已经分批的原始数据加一些外套。这些外套起标示作用,使得原始数据不易丢失。

数据+外套=传输通道的基本传输单元,叫做数据帧或数据包。

其中的原始数据就是payload。

这些原始数据以某种特殊的加密形式被隐藏在了图片里,所以玩家需要解密才手段能看见(比如说利用图片的分层、色彩的RGB来提取图像)。

不过找到这些Payload并不难,难的是解密。

如果用过PS的小伙伴会知道,在正常的图片当中,会有很多通道。

alpha通道是一个单独通道,相当于一个关联表一样的东西,来定义这个像素点的透明度的属性。

当只有它这一张图的时候不会有什么作用,但是当将有透明度的图片和其他的图片进行叠加的时候,透明度就能够产生它的作用了。

如果一张透明的图片,则阿尔法的作用之就是0,在叠加的时候,这块区域上的图片之后有本来的颜色,而不会有它自己的颜色。

alpha的作用位1的时候,就是将图片覆盖在了这块区域上。

例如下图中,整个图像是一块纯蓝色。通道中是一个蝴蝶的灰度图。两者相加以后我们就可以得到蓝色蝴蝶。

所以经过PS处理后,图片的alpha层的310行是一串二进制字符串。

但图片中可能不止有一串这样的二进制字符串。

有的用户表示:“alpha层中的字符串是基于Base64(双层加码的),因此可能会有使用不同的解码来解密”。

有的人认为较小的字符串包含在较大的字符串中。还有有些人推测在图片中格的底线嵌入了一个字符串。

03 线索二 加密字符串

当玩家知道线索在图片的alpha图层中之后,他迅速发现了这串字符串是通过Base64加密的OpenSSL加密字符串。

Base64是一种常用的加密手段,OpenSSL则是一个功能强大的工具包,它集成了众多密码算法及实用工具。

我们即可以利用它提供的命令台工具生成密钥、证书来加密解密文件,也可以在利用其提供的API接口在代码中对传输信息进行加密。

BTCChallenge用解密手段,解出了一串地址,并假设这是已经被转走0.1比特币的地址,继续解密。

同时图片上还有「2018年10月2日」的字样,这是挑战发布的日期,用小写字母写在图像上,用于解码第一个地址。

Pip在网站上写道:“将你到目前为止获得的SHA256哈希写在一行。”(这或许可以用来验证你的哈希是否正确)

这里提到的哈希,熟悉区块链的人应该都会经常听到。

但在计算机世界,哈希有着更广泛的意义。

哈希是通过对文件内容进行加密运算得到的一组二进制值,主要用途是用于文件校验或签名。

不同的文件(哪怕细微的差异)得到的哈希值均不相同,因此哈希值可做为文件唯一性判别。

对于普通上网者而言,可以通过对下载后的文件进行哈希值较验,以判断该文件是否在发布后被人修改过,保证下载的正确性。

Pip表示:“如果不知道如何获取那0.1比特币(无法提供正确的哈希),不要去进行无意义的尝试。”

他还说也许0.1BTC的钱包背后的东西更多,但也未必。但是我们知道的是,0.2BTC的谜题中,用到了第一个谜题的答案

图像上的曲线和圆圈可能暗指前BTC图像拼图,解密可能要用到摩斯密码、二进制字串符。

04 线索三 右下角的表格

在原图中,最容易被注意到的便是下方6*3的表格。

这些数字网格是十六进制的代码,制作者使用了移位密码(shift key)。

移位密码是最简单的一类代替密码,具体算法就是将字母表的字母右移k个位置(k<26),并对字母表长度作模运算。

经过一番研究后,发现移位密码是我们前文提到过的日期,同样在图中出现的Oct 2 2018(即代码20181002)。

我们得到了一个新的6*3的网格。

第一排的310并没有任何实际意义,算是Pip对挑战者的小小肯定。

第二和第三排的12组数字依然是十六进制的,我们将其转变为十进制,便得到了12个数字。

这12与钱包之间的联系又有什么联系?

经过一阵思考,玩家们想到了助记词。

一般来说,钱包有12位助记词,每一个助记词都有相应对应的数字,系统随即生成。

数字编号从1号开始,单词从abandon开始,很容易让人想起背四级单词的噩梦。

我们在助记词的表单中,寻找数字所对应的助记词,便得到了下列对应关系。

通过导入上述私钥 「cry buyer grain save vault sign lyrics rhythm music fury horror mansion」,我们获得了一个钱包地址

经过查询,的确在10月4日有过转出0.1比特币的交易,数据一致。

至于为什么十六机制用了移位密码,为什么又是转换为十进制而不是二进制,到现在为止,还没有人能搞清楚其中的缘由。

特别说明:解密过程翻译自bitcointalk:

https://bitcointalk.org/index.php?topic=5042285.40

如有雷同,纯属巧合

05 神秘的制作者

制作者在游戏页面说,他靠早期挖矿和买比特币赚了很多钱,而这次拿来做游戏奖励的310个比特币大部分是免费空投得来的。

做这个游戏的原因,是因为他觉得比特币改变了他的生活。无论谁破解代码,都可以用比特币做自己想做的事情。

有意思的是,制作者并没有表露自己真正的身份,他说大家可以叫他“Pip”。

发起人自称“Pip”,或许这个名称也有玄机。

《卫报》曾经报道过一篇文章,是一个解谜故事。

一个人和他的朋友Pip以及Blossom被恶魔抓起来。他们每个人手中都有一堆苹果,最少1个,最多9个,并且数量两两不同,每个人有机会向恶魔问一个问题,但问完之后他们要说出一共有多少个苹果。

Pip的问题是“总数是偶数吗?”答案是否定的;Blossom的问题是“总数是素数吗?”答案也是否定的。“我”知道自己有5个苹果,这时候“我”该问什么问题呢?只有一种选择“总数是不是15个?”。

解密的过程很长也很有意思,有兴趣的朋友可以去网上搜出来了解一下。

Pip在网站中说,他匿名的原因是因为他不想整个宇宙都知道自己的比特币财富,而且也不打算透露自己到底有多少BTC,他根本不在意自己是不是有更多钱。

也就是说,钱对他来说,是真正的身外之物。

我突然想起了王思聪的那句话:“我不在意别人有没有钱,反正都没有我有钱。”

06 极客们的狂欢

在游戏解密过程中,我们提到了一系列专业术语,二进制、十进制、十六进制、哈希、payload、alpha图层...这些令普通人费解的词语,明明白白的告诉着大家:

这是一个极客的游戏。

制作者以极其复杂的加密方式,来玩了一场1400万元的游戏。

在游戏当中,有不少有意思的事情:

玩家必须要完成前三个挑战才能进入最后一个挑战,每个挑战结束后还有相应得奖奖金,这让人想起《头号玩家》,不知是否是对斯皮尔伯格的一次致敬。

这张图片的原图来自一个名叫Peter Heeling的荷兰摄影师,在2016年10月25日拍下的免费图片。

原图是一片绿油油的森林,经过模糊等后期处理之后,变为了隐藏310比特币的「宝藏线索图」。

游戏的玩家,也异常的有趣:

有人甚至想到雇佣同伴,来获得大奖。

如果你想解决一个价值200万美元的谜题,那你起码要有300万美元的气魄。

雇15个人,每人每月支付2000美元。

如果我们成功解密,那么就平分200万美元;

即使失败了,我们也能一起度过一段有趣的时光。

就在我们文章写完不久,有人已经找出了第二关线索,成功拿走了0.2BTC。

这一次,据说玩家用了更加复杂的解密方式解开谜题,具体的解密方式,我们dapdap将持续关注,在后续的文章中会第一时间进行解析。