1. 冷钱包里的幽灵

沈拓盯着屏幕上那串数字,整整沉默了四十秒。

不是四秒,是四十秒。对于一个每秒能敲出十二行代码的人来说,四十秒的静止意味着系统崩溃级别的冲击。

屏幕上的冷钱包余额,折合人民币,三亿。

他下意识地按下Ctrl+Shift+N,开了无痕模式,然后才意识到这个动作有多么荒谬——他正连着一台物理隔离的虚拟机,这台机器甚至没有接网线。他是用U盘把数据拷进来的,从那个他在暗网角落里扒出来的废弃交易平台数据库里。

事情的起因是一单外包。一个做区块链安全的甲方扔过来几个被遗弃的暗网平台数据包,让他分析一下这些平台是怎么垮的,能不能提炼出一些钓鱼模型。活不重,价格也普通,沈拓接得随意。

那些平台大多是当年那波暗网泡沫的遗骸。2017到2019年间,一批主打“匿名交易”“不可追溯”的暗网商城如雨后蘑菇般冒出来,然后在各国执法机构的铁拳下成片倒掉。平台倒了,服务器的残骸却散落在赛博空间的各个角落里,像沉船里的瓷器碎片,被偶尔路过的人捞起来。

沈拓就是那个捞到夜明珠的人。

一个名为“Oroboros Market”的平台,在2018年底跑路,站长卷走了托管的以太坊,留下一地狼藉。但沈拓在分析它的智能合约日志时发现了一个古怪的分支——平台似乎用过一个完全独立的多签冷钱包,这个钱包从未在公开链上被广播过。

他花了两个通宵追着交易图上的蛛丝马迹,最终在一条已经半死不活的侧链上找到了这个地址。

里面有比特币。大量的比特币。

沈拓的十根手指悬在键盘上方,像是被冻住了。他的呼吸声在凌晨三点的出租屋里显得格外响亮,空调外机嗡嗡作响,混着远处偶尔驶过的垃圾车声。他忽然觉得这个住了三年的房间变得很陌生,墙上的霉斑像一幅看不懂的地图,桌角的泡面桶摞了三个,最上面那个里还飘着一层油花。

三亿。

他的第一反应不是狂喜,而是一阵彻骨的寒意。做了六年网络安全,他太清楚一个道理了:这个世界上没有无缘无故的横财。每一笔看似无人认领的资产,要么是陷阱,要么是鱼饵,要么是某个更大棋局里的一枚弃子。

但三亿这个数字有一种奇异的魔力,它在人类的神经回路里激活的区域,和可卡因高度重合。它不需要逻辑,不需要风险评估,它只需要你在某个瞬间放下所有戒心,说一句“万一呢”。

沈拓的喉结滚了一下。

他打开了一个加密通讯软件,这软件是他自己改过的版本,加了额外的端到端加密层。联系人列表里,有四个头像已经灰了很久。

“黑盾”是他们大学时一起组过的一个黑客社团,名字取得中二,但技术栈是实打实的。五个人当年拿过CTF大学生信息安全竞赛的全国冠军,又一起给某省级网安部门做过渗透测试外包,关系铁得像同一条链上的五个节点。

后来各奔东西,有人进了大厂做安全架构师,有人在体制内做电子取证,有人混灰色地带。沈拓属于最后一种。

五个人里,最让他纠结的是萧锐。

萧锐是他们中技术最好的。不是好一点,是好一个量级。大二的时候萧锐就独立写出了一个能过杀软行为检测的免杀木马框架,毕业论文做的是基于GAN网络的深度伪造音频实时生成——那个选题连导师都直呼激进。毕业后萧锐去了上海一家头部AI公司,负责反深度伪造检测。

做假的人,和抓做假的人,核心技术是同一套。萧锐是那个站中间的。

沈拓犹豫了整整一分钟,最后在键盘上敲下了一行字:“兄弟们,有个大活,需要面谈。杭州老地方,周五。”

发出去不到三十秒,四个灰色的头像几乎同时亮了起来。

周五傍晚,杭州西湖边一家隐蔽的私房茶馆。

沈拓到的时候,阿Ken已经坐在包厢里了。阿Ken本名林建肯,在深圳一家头部量化基金做高频交易系统的安全审计,一年经手的资金流水比某些小银行还多。他穿着一件灰色T恤,袖口磨得起了毛边,完全看不出是个年薪七位数的人。

“你瘦了。”阿Ken抬头看了他一眼。

“你秃了。”沈拓回了一句。

阿Ken笑了一声,没接话。两个人沉默地喝茶,等其他人。

第二个到的是小桑。全名桑霁,团队里唯一的女成员,也是最年轻的。二十五岁,在南京一家电子取证公司做逆向工程。她留着齐耳短发,背着一个贴满贴纸的ThinkPad,进门就把电脑摆在桌上,屏幕半开,随时能敲命令的姿势。

“我订了明天回去的票。”小桑说,“你最好是真的有大事。”

沈拓没说话。

第三个进来的人几乎没发出声音。楚元,五人中年龄最大的,三十二岁。他曾经是国家互联网应急中心的技术骨干,后来因为一些不便明说的原因离开了体制,现在做独立安全顾问。他穿着一件深蓝色的POLO衫,表情永远像一幅静物画。

“人到齐了吗?”楚元环顾了一圈。

“还差萧锐。”

话音刚落,包厢门被推开了。

萧锐走进来的时候,身上带着一股淡淡的电子烟味道,是蓝莓味。他瘦高,戴一副金属细框眼镜,眼神总是恰到好处地温和,笑起来的时候让人觉得如沐春风——这个形容用在他身上一点不夸张。他是那种第一次见面就能让你卸下防备的人。

“堵车,不好意思。”萧锐拉过一把椅子坐下,目光在沈拓脸上停留了一瞬,“你小子有多久没找我们了?这次不会是借钱吧?”

几个人都笑了。气氛松弛下来。

沈拓没有笑。他把一台完全断网的笔记本屏幕转向众人,上面是一个区块浏览器页面,地址栏里是一串哈希,余额栏里的数字安静地亮着。

包厢里所有人的呼吸都停了一拍。

楚元第一个开口:“来源?”

“一个跑路暗网平台的废弃多签钱包。”沈拓说,“平台方跑的时候遗忘了这个地址,智能合约里没有设定资金回收函数。理论上,只要能凑齐多签密钥,这笔钱就是无主之物。”

“理论上。”阿Ken重复了这三个字,语气意味深长。

“多签是几签?”萧锐问。

“五分之三。”沈拓说,“钱包设定的是五方多签,需要至少三方签名才能转移资产。原始的五个私钥持有者——”他停顿了一下,“根据平台日志记录,都已经无法联系。有两个在平台跑路后被FBI抓了,一个病逝,还有两个彻底蒸发。”

“所以这五个私钥,现在在我们面前?”小桑的声音微微发颤。

“不是。”沈拓摇头,“原始私钥已经不存在了。但这个多签合约有一个漏洞——它是基于早期版本的Gnosis多签库写的,那个版本存在一个重放签名验证的缺陷。只要我们能重建任意三个签名授权,就能通过合约验证。”

包厢里再次陷入沉默。

窗外西湖的水面被夜风吹起细微的波纹,远处雷峰塔的轮廓在暮色中变成一道剪影。茶凉了,没有人续水。

“你打算怎么分?”萧锐打破了沉默,声音很轻。

“五个人,均分。”沈拓说,“每人六千万。”

阿Ken的手指在桌面上轻轻敲了两下,这个动作是他在快速计算风险收益比时的下意识反应。小桑盯着屏幕上的数字,嘴唇抿成一条线。楚元闭上了眼睛,像是在权衡什么东西。

萧锐忽然笑了,那种毫无阴霾的笑。

“均分没问题。”他说,“但有一个技术问题——谁掌握哪一片签名?五分之三的阈值意味着,任何三个人联手就能绕过另外两个人。信任这种东西,在六千万面前值多少钱?”

这句话像一颗石子投入深井,过了很久才听到水声。

沈拓看着萧锐的眼睛。那双眼睛仍然温和,干净,像一个没有任何秘密的人。

“你想说什么?”沈拓问。

“我的意思是——”萧锐从包里掏出一个加密U盘,放在桌子正中央,“既然要干,就把信任问题放在明面上解决。我建议我们每个人都持有一片签名分片,但为了确保没有人可以绕过其他人单独行动,我愿意多持一片。也就是五分之二的权重在我手里,但离转账还差一票。这样既防止外部入侵,也防止内部独走。”

“那凭什么是你多持一片?”小桑立刻问道。

“因为我准备写一份承诺书。”萧锐的语气平静得像在陈述一个事实,“一份用我的PGP私钥签名的电子文档,声明我是这个方案的主责人,如果出现任何法律问题,我来承担主要后果。这份文档我会发给在座每一个人存档。如果将来我真的用多出来的那一票做任何不利于大家的事,你们随时可以把这份承诺书交出去。”

楚元睁开了眼睛:“你这是在给自己套绞索。”

“对。”萧锐点头,“一份自首状,自愿交到你们手里。”

窗外忽然下起了雨,雨点打在瓦檐上发出细密的声响。茶馆老板娘上楼来续水,五个人同时收声。等她离开,包厢里的气氛已经完全变了。

沈拓沉默了很久。

他心里的那根警铃一直在响——一切太顺利了,顺利得不真实。但萧锐的提议确实从逻辑上解决了最核心的信任问题:如果萧锐真的愿意写一份相当于“自首状”的承诺书并分发给所有人,那他就等于把自己的命脉交到了四个人手里。

“我同意。”阿Ken率先开口。

“我没意见。”小桑第二个表态。

楚元看了沈拓一眼,慢慢地点了一下头。

沈拓最后说:“好。”

萧锐微笑着拔出那个加密U盘,当场在断网笔记本上起草了一份承诺书。他的打字速度很快,键盘声急促而有节奏,像一个正在按铃的外科医生。

五分钟后,一份用ASCII码写成、附了SHA-256哈希值的电子承诺书生成了。萧锐用自己的PGP密钥完成数字签名,然后把文件拷贝到四个独立的U盘里,分别递给四个人。

“现在,我们每个人都捏着对方的命了。”萧锐说,语气里有种戏谑的轻松。

雨越下越大。五个人在茶馆门口各自叫了网约车,消失在杭州城不同方向的雨幕中。

沈拓坐在后座上,手指紧握着那个U盘,金属外壳被他的体温捂得微微发烫。车窗外城市的霓虹被雨水浸得模糊不清,红色黄色的光晕在玻璃上缓缓流淌。

他的手机震了一下。

是Telegram的一条加密消息,发件人是阿Ken。

消息只有一行字:“你有没有觉得,今天这一切,太过完美了?”

沈拓正要回复,手机又震了。

这一次,是一条来自未知号码的短信。内容是一个暗网链接,以及一句话——一行用简体中文打出的字。

“你手里的承诺书,有没有想过,也可能是一封认罪状?”

沈拓的血一瞬间冻住了。

他的目光从手机屏幕移到车窗玻璃上,在那片模糊的反光里,他看见自己的脸被霓虹灯光切割成明暗两半。那半张暗处的脸,嘴角似乎正微微上扬——但他不记得自己在笑。

回到出租屋,他把U盘插进了那台永不联网的虚拟机。

承诺书的内容完全正常,签名验证通过,哈希值匹配。每一个字都是萧锐在茶馆里敲出来的那些,没有隐藏代码,没有木马载荷。

但当他用Hex编辑器打开文件,查看元数据区域时,他发现了某种不该存在的东西。

文件的创建时间显示为三天前。

三天前,他甚至还没有发现那个冷钱包。

沈拓慢慢合上笔记本,在黑暗中坐了很久。空调外机还在嗡嗡作响,窗外的雨声已经停了。凌晨四点的城市安静得像一座空城。

他忽然想起了大学时萧锐说过的一句话。那是他们第一次组队拿冠军的晚上,几个人喝得烂醉,萧锐靠在宿舍天台栏杆上,看着远处的万家灯火,说了一句当时所有人都没在意的话。

“黑客的最高境界不是攻破系统,”萧锐说,“是攻破人。”

沈拓那时候以为他在装深沉。

现在他忽然不确定了。

本章评论(0)

暂无评论,来抢沙发吧!

我来评论

您的邮箱地址不会被公开。 必填项已用 * 标注