17. 漩涡中心的平静

康拉德的岛在暮色中浮现出来的时候,帕克几乎没能认出它。

一周前他从三岔路口递出数据卡的时候,这座岛在他脑海里只是一个地图上的坐标——一个前数字取证专家隐居的地方,一个渡鸦网络的物理节点。现在他站在哈特借来的渔船船头,看着那座被松林覆盖的小岛从湖雾中一点一点地显形,才发现它比他想象中更小,也更安静。码头上的系缆柱还挂着康拉德留下的缆绳,绳结打得整整齐齐,和他的人一样——每件事都做到最后一刻。

哈特把船靠上码头,发动机熄火之后,岛上只剩下湖水拍打礁石的声音和松枝在风中的摩擦声。没有鸟叫,没有人声,没有任何电子设备的嗡鸣。这种安静让帕克感到一阵不安——不是因为危险,而是因为它太像某种告别。

“他的地下冷库入口在岛心石屋后面。”帕克从船上跳上码头,回头对哈特说,“维斯给我的加密通讯里提过,冷库是冷战时期的防核掩体改建的,混凝土厚度超过一米半。安全局的突击队如果从外面破门,至少要四十八小时。但如果他们用了定向爆破——”他没说完,因为他知道哈特不需要他画完这张图。

两人沿着一条被松针覆盖的石径穿过松林,空气中弥漫着松脂和潮湿泥土的气味,每一步踩下去都会在松针层上留下一个浅浅的凹陷。石径尽头是一栋低矮的石屋,墙壁是用岛上的原石砌成的,石缝里长满了苔藓。石屋的门敞开着,门板上有一道从内侧被撞裂的痕迹,裂缝边缘参差不齐,显然是从里面被某种巨大的力量向外冲击造成的。

安全局的突击队确实来过了。但他们撞开的是一扇已经被康拉德从里面锁死的门。

帕克在石屋后面找到了冷库的入口——一扇厚重的钢制防爆门,嵌入一块巨大的花岗岩基座中。防爆门的表面有三道明显的撞击凹痕,周围散落着被遗弃的破门工具——一把已经断裂的液压扩张器,几个变形的钢楔,还有一卷被踩扁的爆破导火索。安全局的突击队在门上折腾了至少几十个小时,但钢门仍然紧闭。不是因为他们没能破开——而是因为当他们终于破门而入的时候,康拉德已经不在里面了。

“他们没有找到他。”帕克蹲下来检查防爆门的锁芯,锁芯已经被人从内侧用某种精密的手法彻底焊死了。“他在突击队破门之前就通过另一条路离开了冷库。然后他把门焊死,拖延他们搜索内部的时间。”

“另一条路?”哈特环顾四周,岛上除了石屋和冷库入口,没有任何其他建筑物的痕迹。

帕克站起来,目光落在冷库入口旁边一块看起来毫不起眼的花岗岩露头上。岩石表面长满了暗绿色的苔藓,但有一片苔藓的颜色比其他地方浅一些,边缘有被翻动过的痕迹。他用鞋尖轻轻拨开那片苔藓,露出下面一个直径约八十厘米的铁制检修井盖。井盖没有上锁。

他掀开井盖,一股冷冽而干燥的空气从下面涌上来,带着明显的电子设备运转时特有的臭氧味。井下是一道笔直向下的铁梯,梯子底部透出微弱的蓝色光——那是服务器机柜的LED指示灯在黑暗中发出的光。

哈特在井口旁边蹲下来,用随身携带的手电筒向下照了一下。铁梯大约有十米深,底部是一个被人工开凿过的地下室空间,面积看起来不小。蓝色光来自房间尽头一排仍在运转的服务器机柜。机柜上方悬着一盏应急LED灯,灯光已经暗到了几乎要熄灭的程度,但还在勉强维持着。

“服务器还在运转。”帕克的声音里透出一种技术人员特有的兴奋和紧张,“他切断了自己和渡鸦网络的连接,但没有关掉服务器。他把服务器的物理连接从外部网络中断开了,但让它继续在本机运转。这意味着他想保护里面的数据不被入侵——但他也想让后来的人能找到它们。”

两人沿着铁梯下到地下冷库。冷库内部是一个约四十平方米的矩形空间,四壁是裸露的混凝土,天花板上还留着冷战时期安装的老式通风管道,但管道口已经被康拉德用钢板从内部焊死了——他封住了所有可能被用来灌入催泪瓦斯或切断氧气供应的通道。房间尽头靠墙排列着六台标准机柜高度的服务器,每台服务器的前面板都贴着用防水笔手写的标签。标签上的字迹工整而清晰,是康拉德的手笔。

帕克走到最近的一台服务器前,用手指轻轻拂过标签上的文字:“FSB镜像备份—2015至2025—完整操作日志”。旁边的服务器标着“财政部内部审计记录—已撤销案件汇编”。第三台标着“堤丰控股架构—完整股东名单及分红记录”。第四台标着“清洁协议—执行记录及授权签名”。第五台——“幽灵账户—开户/操作/注销全周期日志”。第六台——“隐性名单—合作方完整索引”。

康拉德没有试图逃跑。他在突击队登岛之前的最后几天里,把过去十年间所有能收集到的、被联邦安全系统掩埋在深处的数据全部下载到了这六台服务器里,然后按类别整理好,贴上标签,切断网络连接,焊死通风口,焊死防爆门的锁芯,然后从检修井离开了冷库。他不是在躲避追捕——他是在用最后的时间为追捕他的人准备一份完整的证据库。那些标签不是写给自己的,是写给后来者的。

“他说‘已将名单交渡鸦’。”哈特站在一排服务器前,声音压得很低,像是在某个庄严的场合里不敢高声说话,“但他交的不只是名单。他交的是一整套证据系统。”

帕克没有回答。他已经在第五台服务器的终端前坐下了,手指在键盘上快速敲击。这台服务器的显示器是唯一还亮着的屏幕,上面显示着一个简单的命令行界面,光标在一行绿色的提示符后面闪烁。屏幕上方有一行康拉德留下的文字:“阿尔文·帕克——如果你看到这个,说明你已经到了。输入你在FSB的原始工号。不需要密码。系统只认你一个人。”

帕克的手悬在键盘上方,停了一秒。然后他输入了自己的六位FSB工号——一个他已经将近两周没有用过的数字。屏幕闪了一下,跳转到一个他从未见过的操作界面。界面的标题栏写着:“幽灵账户注销记录恢复程序——康拉德·瓦尔特专用取证工具v.7”。

“他知道我会来。”帕克的声音很轻,但在地下室的寂静中每一个字都很清晰,“他在发完最后一条消息之后还在写代码。他用最后的时间为我写了一个程序。”

程序界面很简洁,功能却极其复杂。帕克只用了不到三分钟就理解了康拉德的设计思路——这个程序能自动扫描FSB镜像备份中所有与幽灵账户相关的操作日志,然后根据操作者的系统权限签名反向追踪每一个账户的开户人、操作人和注销人。而每一个签名——就像克劳斯在羁押室里告诉伊恩的那样——都是基于国防级加密协议生成的,无法被伪造,无法被删除。即使在系统中被手动注销的账户,签名的生成记录仍然会作为元数据永久保留在操作日志的最底层。

他启动了扫描程序。屏幕上弹出了一条进度条,绿色光标开始以一个稳定的速度向右移动。六台服务器的风扇同时加速旋转,整个地下室里充满了电子设备全力运转时那种低沉的轰鸣。哈特靠在冰冷的混凝土墙上,掏出录音笔开始逐条记录每一台服务器上的标签内容。她知道渡鸦网络的无线信号在这个地下掩体里接收不到,但她的录音笔会在回到地面之后成为第一份完整的现场勘查报告。

帕克盯着进度条,脑子里想着的不是代码,而是科瓦尔在气象站说的那句话:“你的退休金账户里有六万二千联邦币。没有脏钱。没有幽灵账户。它还是干净的。”肖在最后一夜注销了所有幽灵账户,但康拉德在更早之前就备份了所有操作记录。当进度条跑完的时候,帕克会知道每一个幽灵账户的操作者签名——肖的、克劳斯的、还有那些隐性名单上至今未曝光的人。

“找到了。”帕克的声音打破了地下室的沉默。

进度条停在了百分之百。屏幕上弹出了一份表格,标题是“幽灵账户注销记录——完整操作日志”。表格列出了一百四十七个账户的详细信息。其中大多数是像维斯那样被伪造签名的替罪羊,余额在账户注销时已经为零。但帕克没有在看替罪羊名单。他在看操作者签名栏。签名栏里每一个注销操作都对应着一个系统管理员的唯一数字签名。大部分签名的所有人是罗曼·克劳斯——他是堤丰的系统管理员,绝大多数幽灵账户都是他开的。但在最近的一次注销操作中——昨天晚上十一点四十七分——执行注销的签名不是克劳斯。

是劳伦斯·肖。

肖在提交辞职信之前,亲自登录了FSB的服务器,用自己执行副局长的最高权限手动注销了所有剩余幽灵账户。他的目的和科瓦尔分析的一样——切断自己和堤丰之间的联系。但康拉德的备份服务器记录了每一次注销操作的完整元数据,包括操作时的IP地址、设备指纹和时间戳。IP地址显示,肖执行注销操作的地点不是联邦财政部大楼,甚至不是旧金山。那个IP地址属于银湖西岸一家小型旅馆的公共Wi-Fi网络——和科瓦尔入住的湖滨旅馆是同一家。

“肖也在银桥市。”帕克站起来,盯着屏幕上的IP地址,声音里第一次出现了某种接近于恐惧的东西,“他昨天晚上就在科瓦尔楼下的某个房间里,用同一家旅馆的网络登录了FSB服务器。科瓦尔不知道。科瓦尔以为肖还在旧金山准备消失。但实际上肖已经进入纽黑文了。”

哈特从墙上直起身,快步走到帕克身后,俯身看着屏幕上的IP定位记录。IP地址的物理定位精确到了旅馆的楼层和房间号——湖滨旅馆,三楼,314号房间。科瓦尔的房间是312号。两人相隔只有一堵墙。

“科瓦尔今早给我打电话的时候,肖就在他隔壁。”哈特的声音压得很低,但每个字都像一颗钉子钉进了地下室的安静里,“肖没有给科瓦尔发完预警之后就消失。他跟了科瓦尔一路。也许从旧金山就开始了——也许科瓦尔入境纽黑文的那一刻,肖就也用了另一个假身份入住了同一家旅馆。”

“为什么?”帕克转向哈特,“肖如果要消失,为什么不趁清洁协议曝光之前就离开?为什么还要冒着被识破的风险跟在科瓦尔旁边?”

哈特沉默了几秒。她的脑子里正在把科瓦尔在气象站说过的每一句话重新过筛。然后她想到了。科瓦尔说肖给他发了最后一条消息,内容是提醒科瓦尔他的特别行动处将被作为替罪单位交出。这条消息不是预警。这条消息是测试。肖要测试科瓦尔在被当作替罪羊之后会做什么——是沉默、逃命、还是翻转。如果科瓦尔沉默或逃命,他仍然是肖可以继续利用的资源。如果科瓦尔翻转——如果科瓦尔把清洁协议交给独立媒体——那么肖就在隔壁。一个在隔壁房间里待了四天的执行副局长,有能力在科瓦尔走进气象站之前就阻止他。

但肖没有阻止。他让科瓦尔把清洁协议交了出去。

“他没有阻止科瓦尔。”帕克把哈特的思维接了进来,两人在不知不觉中完成了一段无声的接力推理,“因为他需要科瓦尔把他想公开、但不方便自己出面公开的信息递出去。他的辞职信、幽灵账户注销、给科瓦尔的预警——他每一步都在给科瓦尔制造翻转的条件。他知道科瓦尔会来找你,他知道你会把清洁协议公开,他知道帕克会来岛上恢复服务器数据。他把一切都安排好了,然后坐在隔壁房间里等。”

“如果肖想让信息公开,为什么他不自己来?”哈特问。

帕克转回去看着屏幕上肖的注销记录,看了一秒之后有了答案。“因为自己来会死。肖在堤丰隐性名单里的身份是清洁协议的直接执行者。如果他公开出庭作证,斯威尼还没被定罪之前,肖自己先会被起诉——他手上沾了太多东西。但如果他让科瓦尔替他公开——如果清洁协议是通过一个翻转的特工和一个独立记者曝光给媒体的——那他在法律上仍然是‘被下属出卖的无辜上级’。他既能确保证据被公开,又不用承担公开的后果。他送给科瓦尔的不只是一次预警,是一套他花了十五年设计、在最后四天启动的脱身方案。”

进度条上跳出了一行新提示:“已恢复全部注销记录。是否导出完整签名列表?”帕克按下了确认键。六台服务器的硬盘指示灯开始以前所未有的频率闪烁,数据以加密压缩包的形式写入一个外接存储器。屏幕上的进度条再次开始移动,这一次更快,每一秒都在把过去十年的隐秘历史从一个死去的人留下的备份系统里抽离出来。

哈特拿出对讲机,调到法警队的加密频道。“我需要你们派一队人到银桥市老城区湖滨旅馆,314房间。目标是一个叫劳伦斯·肖的人。不要强行突入——如果他在里面,他很可能没有武器。他是一个计算者,计算者不靠武力脱身。”

对讲机里传来法警队长的声音:“收到。预计到达时间十五分钟。哈特,你确认肖的身份无误?”

“是他。”帕克替哈特回答了这个问题。他站起来,把刚从服务器上下载完成的加密存储卡从接口中拔出来,在指尖翻了一面。“IP地址是他的。操作签名是他的。时间戳和科瓦尔的入住记录完全吻合。他现在可能还在那里。”

“也可能已经不在了。”哈特说,“科瓦尔今早和我们在气象站见面的时候,肖就在隔壁房间里。他知道科瓦尔会把一切都告诉我们。他知道我们会去旅馆。如果他计算到这一步,他应该已经离开了。”

帕克把存储卡握在手心里,感觉它比看起来更重。康拉德用生命最后的时间整理好了所有证据,科瓦尔用十五年后唯一一次翻转把清洁协议交了出来,肖用一套精密的脱身方案让自己既不用出庭又能让真相公开。而他现在站在这个冷战时期留下地下掩体里,手里握着一个能还原所有幽灵账户和隐性名单的加密存储卡,不知道谁是真正的敌人,也不知道谁是真正的朋友。

他想起科瓦尔在气象站说的话——一个成功的牧羊人从不自己出手。肖从来没有自己出手过。他让克劳斯设计了幽灵账户,让科瓦尔执行了策反,让斯威尼背负了主要罪责,让清洁协议的执行人员承担了所有法律风险。他永远在幕后,端着一杯红茶,用和蔼的语气告诉每一个审计员把案子归档。当这个系统最终崩溃的时候,他也没有自己出手——他让科瓦尔替他交出了清洁协议,让帕克替他恢复了签名记录,让哈特替他把一切公之于众。他不用承担任何后果,仍然可以像他十五年来的每一次一样,在所有人意识到他在哪之前消失。

但现在他们有了签名。国防级加密协议生成的数字签名,无法伪造,无法删除。

帕克把存储卡放进外套内侧的口袋里,用和维斯一样的动作——快速、精准、带着肌肉记忆的惯性。然后他关掉显示器,让地下室重新回到只有服务器风扇轰鸣的黑暗中。

“我们得回银桥市。”他对哈特说,“旅馆也好,边境检查站也好,或者他已经离开纽黑文也好——不管他在哪,签名会告诉他逃不掉。没有签名能被伪造,也没有签名能被永远藏起来。”

两人沿着铁梯爬出检修井,湖面落日正把整个小岛染成深金色。哈特发动了渔船。船头划破平静的湖面时,帕克回头看了一眼那座石屋——它的影子被夕阳拉得很长,一直延伸到码头边缘。康拉德不在那座石屋里,也许永远不会再回来了。但他留下的东西还在。六台服务器,一个取证程序,一百四十七个账户的完整操作日志,一条指向肖藏身坐标的IP地址。一个人在自己生命的最后时间里,用一台焊死在地下掩体里的服务器,把一场跨度超过十年的腐败案的最后一环递了出来。他的证据不是枪,不是芯片,甚至不是服务器本身。他的证据是一个能让人从中找到答案的系统。

帕克回过头,面对船舷前方的湖面。银湖的雾开始从水面上升起来,和每天傍晚一样。但在雾气完全吞没旧灯塔礁之前,他看到了一个细节——旧灯塔的灯室里有光。不是探照灯的强光,而是一小簇微弱而稳定的橘黄色光,像是在灯室地板上点燃的一根蜡烛。

“哈特。”帕克指向灯塔的方向,“灯室里有人。”

哈特从舵轮上抬起头,眯着眼睛朝灯塔的方向看了几秒。然后她把油门推到底,渔船朝着旧灯塔礁的方向破浪而去。

本章评论(0)

暂无评论,来抢沙发吧!

我来评论

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