数据恢复进度条在屏幕上缓慢爬行。百分之一。百分之二。百分之三。
凯伦站在终端前,手指仍然悬在键盘上方,眼睛盯着那根绿色的进度线。她的手机在口袋里震动个不停——玛雅在发消息,艾伦的同事们在加密频道里呼叫,联邦司法广场上的投票数字还在跳动。但她没有接,也没有看。她全部的注意力都在那个正在从数字坟冢中苏醒的数据库上。
百分之四。
“多久能完成?”艾琳的声音在她身后响起。
“以这个速度,至少一小时。”艾伦查看了一下机房的数据传输监控。“恢复完成后,我们需要解析3.7版本的训练数据,提取真实姓名对照表,然后才能证明克罗斯就是那个百分之零的人。证明他的身份在预警系统建立之初就被手动从训练数据集中剔除了。”
“一小时太长了。”凯伦说。“克罗斯已经知道我们进来了。他刚才在信里说倒计时两小时,现在他可以把倒计时缩短到任何他想要的时间。”
话音刚落,整个机房的灯光同时熄灭了。不是渐暗,不是闪烁,而是一瞬间的绝对黑暗——那种连服务器状态灯都同时灭掉的黑暗。空调的轰鸣声戛然而止,只剩下管道里残留的冷却液还在发出轻微的汩汩声,像某种正在缓慢窒息的心跳。
“他切断了数据中心的电源。”艾伦的声音在黑暗中说,语调冷静但每个字都咬得很紧。“不是从大楼供电系统切的。是从核心服务器内部——他用最高管理权限关闭了存储阵列。我们有备用电源,但备用电源只供应服务器主板,不供应存储阵列。数据恢复被中止了。”
凯伦在黑暗中握紧了拳头。百分之八。进度条停在了百分之八。数据库的四十七万条记录恢复了不到十分之一,真实姓名对照表还远没有被解析出来。他们手里仍然没有可以证明克罗斯身份的直接证据。
“他可以切断电源,但他不能删除数据,”她说,“主备份阵列是物理存储。数据还在硬盘上,只是没有电就无法读取。”
“你想把硬盘拆出来?”艾伦问。
“不是拆出来。是把备用电源从服务器主板重新分配到存储阵列。暂时放弃服务器运算能力,把所有电力集中到硬盘读写上。”
“这会烧掉至少一半的存储阵列,”艾伦犹豫了一下,“备用电源的设计不适合驱动这么多块硬盘同时全速运转。电流过载会导致硬盘损坏,数据可能会永久性丢失。这是不可逆的。”
凯伦转向他,黑暗中看不清他的脸,但她知道他在看着自己。“克罗斯正在用可逆的方式消灭证据。如果我们不用不可逆的方式抢救证据,那这些数据就等于不存在。莫林用三年时间保守的秘密,莫洛伊用生命换来的修正方案——都会消失在一个没有任何人能看到的地方。”
沉默持续了五秒钟。然后艾伦打开手电筒,把光束打在天花板上,借反射的微光照亮整个机房。他走到机房后方的配电柜前,用随身携带的多功能工具撬开面板,露出里面密密麻麻的线缆。
“我需要二十分钟。你们帮我把所有存储机架的备用电源输入线找出来,从主板上拔掉,然后全部接到阵列控制器上。蓝线接蓝线,红线接红线。接错了任何一根,整个机房就会短路。”
凯伦和艾琳蹲下来,分别爬向左右两侧的机架。黑暗中只有三束手电筒光在来回扫动,照亮那些贴着编号标签的线缆。凯伦的手指在冰冷的金属连接器之间摸索,按照艾伦的口头指示逐一识别线缆的颜色和接口类型。她的膝盖跪在机房冰冷的防静电地板上,手掌被线缆的金属卡扣划破了好几道口子,但她感觉不到疼。她只感觉到一种奇异的平静——像是在暴风雨的中央,一切都在疯狂旋转,而她正站在风眼里。
“克罗斯知道他必须阻止我们,”艾琳的声音从右排机架后传来,带着轻微的喘息,“但他为什么不用更简单的方法?他有一整支正义猎犬的行动组。他可以让狙击手从对面楼射杀我们。他可以在我们走进大楼之前就把门锁死。他有无数种方式让我们消失。但他没有。他给我们写纸条,关我们的电源,像在玩猫捉老鼠。”
“因为这不是他想要的实验结论。”凯伦回答,手指继续在线缆中穿梭。“如果他用暴力手段消灭反对者,那他只不过是一个普通的罪犯。警察可以抓他,媒体可以写他,法院可以审判他。但如果他能让反对者在拥有全部证据、全部技术手段、全部行动自由的情况下仍然失败——那就证明了他的系统是不可战胜的。他不是想赢我们。他是想赢整个概念——正义、真相、人类对抗算法的可能性。他要的不是胜利。他要的是证明胜利不可能。”
“他像一个在和自己下棋的人,”艾琳说,“每一步都走在自己的预设之内。连我们的反抗都是他棋盘上的一步。”
“那就让他继续以为我们在他的棋盘上。”凯伦拔下最后一根蓝线,按照艾伦的指示接到阵列控制器上。“他不了解一件事——棋子的视角永远比棋手的视角更低。他站在顶楼看着整张棋盘,但他看不到棋盘上的裂缝。莫林就是那道裂缝。莫林在他设计的系统里留下的不是后门,不是密码,不是密钥。莫林留下的是一种他永远无法理解的东西——信任。莫林信任一个他不知道是谁的后来者,会拿着他留下的线索一层一层地揭开真相。这种信任不在任何算法的预测范围之内。”
配电柜方向传来一阵电流声,然后是艾伦的声音:“接线完成。我现在合闸。如果运气好,我们会得到大约十五分钟的备用电力,专门驱动存储阵列。十五分钟后备用电源耗尽,所有硬盘都会停止运转。你们最好祈祷百分之八的数据里已经包含了足够的证据。”
电流声变得更响了。然后,像多米诺骨牌一样,一排又一排的服务器状态灯重新亮起。红色、绿色、蓝色,在黑暗中交织成一片密集的星点。存储阵列的散热风扇开始重新转动,发出由低到高的呼啸声。终端屏幕重新亮起,那根停滞的进度条闪了一下,然后继续移动。
百分之九。
百分之十。
凯伦冲向终端。她的手指在键盘上飞快敲击,调出已恢复数据的目录列表。百分之十的数据量大约相当于四十七万条记录。这其中包括了系统日志、算法参数、标注模板和一部分训练样本。她需要在这四十七万条记录中找到被清洗前的真实姓名数据。
“太快了,”艾琳盯着屏幕上飞速滚动的文件列表,“进度条太快了。备用电源撑不到十五分钟。电流过载正在烧毁硬盘磁头。数据在恢复的同时也在被物理破坏。我们只能拿到一小部分。”
“那就拿最关键的那一部分。”凯伦放大了已恢复数据中的一段日志记录。那是系统开发早期的一份测试报告,日期比预警系统正式交付政府还要早两年。报告标题是“初始训练数据集标注完成确认”,落款签名是一串首字母缩写。
D.K.
多米尼克·克罗斯。
“他亲自签了训练数据的标注确认,”凯伦说,“在系统开发的最初阶段,他直接参与了训练数据的筛选。他不是后来才介入的。他从一开始就在。”
“但这不能证明他把自己的数据从训练集中剔除了,”艾伦从配电柜后走出来,衣服上沾满灰尘,“这只能证明他参与了早期开发。我们需要找到原始标注清单——每一笔训练数据对应的真实身份编号。如果能找到被剔除者名单,就能找到他。”
进度条跳到百分之十二。
屏幕上弹出一个新的文件夹。文件夹名称只有两个字——“豁免”。
凯伦点开文件夹。里面是一份表格,格式简单但内容刺眼。表格只有一列,标题是“从训练数据集中永久移除的个体”,下面跟着一行行编号。没有姓名,没有身份,只有编号。但每一行编号后面都有一个移除原因,用极简短的代码标注。
第一行:“0001。移除原因:项目主管。移除时间:系统初始化前。”
第二行:“0002。移除原因:项目主管直系亲属。移除时间:系统初始化前。”
第三行:“0003。移除原因:项目主管指定人员。移除时间:系统初始化前。”
名单继续往下滚动。凯伦数了一下,一共有七十六个编号。七十六个人被永久移除了预警系统的训练数据集。这意味着他们的行为模式永远不会出现在系统的参考样本中,他们的数据永远不会被用来训练预测犯罪概率的算法。他们不存在于系统的记忆中,因此系统不会对他们进行任何评估。他们的预测概率不是零,而是根本没有数值。用一个律师能理解的说法——他们不在司法管辖范围之内。
“七十六个人,”艾琳低声说,“克罗斯、他的家人、他的朋友、他在正义猎犬中的核心成员。他给他们所有人买了免疫权。然后他把剩下的八百万人留在训练集里,让算法根据他们的行为模式来定义什么是犯罪、什么是风险、什么是值得被标记的危险信号。”
“这就是正义猎犬真正的承诺,”艾伦的声音里压抑着一种凯伦从未在他身上听到过的愤怒,“不是消灭犯罪,不是保护无辜。是豁免。每一个加入正义猎犬的人,每一个为克罗斯工作的人,都可以从名单上被移除。他们不用害怕被系统标记,因为系统根本看不见他们。而剩下的人——所有被标记的人——他们的恐惧正好成为了正义猎犬招募新成员的招募广告。你想从名单上消失吗?加入我们。你想获得豁免吗?帮我们处决那些被我们标记的人。”
凯伦盯着屏幕上那七十六个编号。她知道这意味着什么。这些人不是被算法豁免的。他们是被克罗斯豁免的。他用最原始的方式——不是篡改评估分数,不是修改预测概率,而是直接把他们的数据从训练集中删除。系统的基石上缺了七十六块石头,而整座大厦的重量全部压在其余八百万块石头上。
进度条跳到百分之十五,然后开始剧烈波动。备用电源的电流正在变得不稳定,硬盘的读写速度时快时慢。屏幕上跳出一行警告:“存储阵列温度异常。建议立即关闭。”凯伦按掉警告,继续在文件夹中搜索。
“我需要找到这七十六个编号对应的真实身份。克罗斯一定在某处保留了对照表。他需要知道谁在豁免名单上,他不可能只用编号管理。”
“也许他不保留,”艾伦说,“也许他把对照表记在脑子里。七十六个人对一个人来说不是不能记忆的数字。”
“那莫林就不会知道,”凯伦说,“如果没有人能找到对照表,莫林怎么知道克罗斯是百分之零的人?莫林一定发现了什么——不是编号列表,而是别的什么。他在3.7版本的代码里藏了东西,一种不需要对照表就能识别出豁免者的方法。”
她停止搜索文件夹,转而打开3.7版本的算法参数文件。那个文件她之前在看莫林技术报告时匆匆扫过一眼,但没有时间深究。现在她打开它,一行一行地翻看那些密密麻麻的数学公式和代码注释。
在第三千二百一十七行,她找到了。
那是一行注释,用双斜杠开头,插在一段复杂的卷积神经网络参数中间。注释很简短,但每个字都像一颗钉子钉入木板:
“// 注意:训练数据在初始化之前已被手动修改。七十六个样本被删除。删除者的系统编号从注册表中跳过了。后续注册编号全部偏移+76。任何人如果发现自己的系统编号与实际注册时间不匹配,就说明在你之前有七十六个幽灵。——VM”
VM。维克托·莫林。
“编号偏移。”艾琳凑到屏幕前,眼睛发亮。“预警系统的系统编号按注册时间顺序分配。如果克罗斯在初始化之前删除了七十六个样本,那么后续每一个被录入系统的人,他们的系统编号都会比实际注册顺序大七十六。这不是数据库错误,这是数学事实。任何人的系统编号减去他的注册顺序编号,差值如果是七十六,就证明在你之前有七十六个人被删除了。”
“不需要对照表,”凯伦说,“这个偏移本身就证明了存在豁免名单。任何人只要查到自己的注册时间顺序,再用自己的系统编号减去那个顺序,看到七十六这个差值——他就知道真相了。”
“但普通人查不到自己的注册时间顺序,”艾伦说,“那是系统底层元数据,不对外公开。”
“所以他们需要透明度接口。莫林设计的透明度接口,不仅可以查询自己被标记的原因,还可以查询自己的注册时间顺序。他故意设计了这个功能,作为他隐藏的最后一个证据。当足够多的人使用透明度接口时,他们就会发现编号偏移。当足够多的人发现编号偏移时,他们就会追问——那七十六个人是谁。”
凯伦点开了透明度接口的源代码文件。那是莫林三年前在被否决后独自维护的最后一份代码。文件的最底端,在她之前从未看到过的一个角落里,莫林留下了最后一段注释。不是给克罗斯的,不是给莫洛伊的,不是给正义猎犬的。是给所有后来者的。
“// 如果你读到了这段注释,说明你已经知道编号偏移的存在。你正在追问七十六个幽灵是谁。但我不能告诉你他们的名字,因为我没有那些名字。克罗斯只保留了一份对照表,存在一个永远不会联网的设备里,在他触手可及的地方。你可以找到那个设备,但你不能强迫他交出密码。唯一能强迫他交出密码的方法是让他自己需要用它。当你把他逼到一个需要证明自己豁免权的角落时,他会亲自打开那个设备。到时候,所有人都会看到。——VM”
进度条在屏幕上闪了一下,然后开始急剧加速——不是因为数据传输变快了,而是因为硬盘正在成片地失效。百分之十八。百分之十九。电流过载的焦糊味开始在机房里弥漫。
“备用电源撑不住了,”艾伦喊道,“我们得出去,现在!”
凯伦把透明度接口的源代码文件连同编号偏移的注释一起复制到随身移动硬盘里。她的手在退出系统时颤抖了一下,然后她看到了屏幕上最后一条没有被她点击的文件夹。
文件夹名字是“莫林·维克托·个人文件”。
她点开文件夹。里面只有一个音频文件,时长三十一秒。创建时间是莫林自杀前三天。
她戴上耳机,点击播放。
莫林的声音从耳机里传来,沙哑、低沉,像是在深夜录制的,背景里只有偶尔敲击键盘的声音。
“我叫维克托·莫林。我在这段录音里要说的事情,是我在预警系统里发现的最后一件我无法解释的事情。它不是我写的代码,不是我知道的任何测试留下的痕迹。它是一段完全无法溯源的程序指令,在系统最底层的执行日志里,每隔二十四小时执行一次,持续了至少四年。指令的内容只有一行——‘验证豁免名单完整性。如有缺失,恢复缺失项。’”
录音里他停顿了一下。凯伦听到他深深吸了一口气。
“这段指令不是克罗斯写的。不是莫洛伊写的。不是我写的。不是开发团队里任何一个人写的。我不知道它是谁写的。但我知道它的功能——它在自动修复豁免名单。如果有人试图从名单上移除某个编号,它会在二十四小时内把那个编号加回去。它让那七十六个人永远无法被移除。”
又停顿。然后是他的最后一句话。
“这不是预警系统。这是预警系统的免疫系统。有人在系统的更深处,在连克罗斯都不知道的地方,设置了一道永远运行的防护墙。这道墙保护的不是克罗斯,不是豁免者,而是真相本身——真相不能被消灭。它只能被隐藏。但总有一天,它会自己长出来。如果你正在听这段录音,那一天已经到了。”
录音结束。
耳机里只剩下电流的微弱的嘶嘶声,和凯伦自己越来越响的心跳。
莫林发现的不是编号偏移,不是豁免名单,不是3.7版本的数据备份。他发现的是另一个人——另一个人也在系统里藏了东西。这个人不是克罗斯的敌人,不是莫林的盟友。这个人可能从来没有在任何信件、任何邮件、任何技术报告中出现过。但这个人写了一段代码,一段在最底层自动运行的代码,一段像免疫细胞一样不断修复真相碎片的代码。
这个人是谁?
“凯伦!”艾伦的声音把她从耳机里拉了回来。存储阵列已经开始冒烟。焦糊味从机架后方渗透出来,变得越来越浓。天花板上的火警灯开始闪烁。整栋楼的警报系统终于被触发了。
凯伦拔下移动硬盘,三个人朝机房出口冲去。在他们身后,一排又一排的服务器硬盘在电流过载中接连失效,像一场正在蔓延的火灾烧毁一座看不见的图书馆。
他们冲进消防通道,沿着楼梯向上攀爬。每一层的警报都在尖叫。红色应急灯把楼道染成了血的颜色。
当他们终于冲出地下二层,回到地面时,凯伦停下脚步,靠在裙楼的墙面上大口喘气。她的手机正在接收一条来自玛雅的紧急加密信息。她打开信息,屏幕上只有三行字:
“广场上新发布了下一阶段的公告。倒计时两小时仍然是。但名单变了。现在上面只有三个名字。”
下面是一个附件。凯伦点开附件。图片是一张从联邦司法广场屏幕直接拍摄的照片。屏幕上没有排行榜,没有投票选项。只有三个名字,以最简洁的字体排列在黑色背景上,每一个名字后面都跟着一个数字。
凯伦·沃斯。预测概率百分之七。红叉标记——已添加。
艾伦·肖。预测概率百分之二十一。红叉标记——已添加。
艾琳·马尔科姆。预测概率百分之六十二。红叉标记——已添加。
最后一行字:“三个证人。两小时。一次处决。欢迎来到最终环节。”
凯伦把手机屏幕翻转给艾伦和艾琳看。没有人说话。远处,联邦司法广场方向的天空仍然灰暗而阴沉,但那片红色的光芒似乎比之前更亮了。它照在纽维斯特每一扇窗户上,照在每一个低头看手机的人脸上,照在那三个刚刚被整个世界看到的名字上。
艾琳是第一个开口的人。她的声音在裙楼外墙的阴影里显得异常清晰。
“两小时。够我们做什么?”
“够我们让克罗斯自己打开那个永不联网的设备。”凯伦说。“莫林在注释里写了——唯一能让他打开设备的方法,是把他逼到一个需要证明自己豁免权的角落。我们有编号偏移的数据,有莫林的录音,有莫洛伊的修正方案,还有莫洛伊的血。我们现在需要做的是把这些东西同时公之于众,然后提出一个克罗斯无法拒绝回答的问题。”
“什么问题?”艾伦问。
凯伦推开通往街道的防火门,纽维斯特阴冷的空气扑面而来。
“问他——‘多米尼克·克罗斯,你的系统编号是多少?’”


暂无评论,来抢沙发吧!