庞渊约他在江边见面。
严铮收到这条消息的时候是傍晚六点。他刚在办公室的折叠床上躺了三个小时,被手机震动吵醒时,窗外已经是暮色沉沉。消息是通过加密频道发来的,没有多余的话,只有一个定位——滨江路尽头的那座废弃轮渡码头。
他洗了一把脸,换上干净的衬衫,跟值班的同事说了一声就出了门。母亲打了电话来,说晓棠在邻居家吃了两碗饭,看完动画片就睡了,让他不用担心。他听着母亲絮絮叨叨地讲女儿今天画了一幅画,画的是爸爸开着一辆红色的车在天上飞。他说红色不吉利,母亲说小孩子懂什么吉利不吉利,她觉得好看就行。
挂掉电话之后,他坐在车里沉默了很久。然后发动引擎,朝江边开去。
轮渡码头在滨城的最南端,废弃了至少十年。锈迹斑斑的候船室还矗立在江堤上,玻璃窗碎了大半,门框上的油漆剥落得像干裂的皮肤。严铮把车停在堤坝下面,沿着石阶走上去。江风很大,吹得他衬衫的下摆猎猎作响。暮色中的江面泛着铁灰色的光,对岸的灯火已经开始一盏一盏地亮起来。
庞渊站在候船室的屋檐下。
他比五年前在法庭上更瘦了。颧骨高高凸起,眼窝深陷,头发剃得很短,鬓角已经花白了。他穿着一件洗得发白的军绿色夹克,脚上是一双磨破了边的解放鞋。整个人站在那里,像一棵被风吹了太久但始终没有折断的老树。
严铮走到他面前,两个人隔着一臂的距离站定。这是他们第一次面对面——五年前在法庭上,他们之间的距离是旁听席到被告席。现在他们站在同一片水泥地上,江风从两个人之间穿过。
“你老了。”严铮说。
“你也老了。”庞渊的声音比他想象中要平静,没有被变声器处理过的电流感,就是一个普通中年男人的嗓音,带着一点南方口音的尾调,“五年前你坐在最后一排,头发比现在多。”
严铮笑了一下,笑容很淡。他从口袋里掏出一包烟,抽出一根递给庞渊。庞渊接过去,两个人在江风中点着了烟,各自吸了一口。烟雾被风吹散,消散在越来越暗的天色里。
“镜像里的内容,韩冰已经提交给部里了。”严铮说,“证据链完整。三十七份攻击授权书、第四层架构的全部签名记录、项目可研报告的资金流水——秦骁跑不掉了。他的律师今天下午递交了取保候审申请,被驳回了。”
“我知道。”
“程远志也主动自首了。他交代了自己在司法厅期间协助转移庞渊硬盘的全部经过,还供出了两个当时参与分拆代码的技术人员。检察院已经立案。”
“我知道。”
“齐主任——就是那个在审讯室里跟我说了三十秒真话的人——他也被带走了。不是作为嫌疑人,而是作为证人。他说他愿意出庭作证,证明秦骁在公司内部会议上明确要求将‘社会情绪管理系统’升级为‘主动干预系统’。这个证词可以直接把秦骁钉死在主观故意上。”
“我知道。”
严铮把烟头掐灭在鞋底,转过身看着庞渊。“你什么都知道。那你为什么还约我出来?”
庞渊没有立刻回答。他靠在候船室斑驳的墙壁上,仰头看着天空。江面上,晚霞的最后一丝余晖正在被夜色吞没,天边只剩下一道暗红色的裂缝,像一道正在愈合的伤口。
“我想给你讲个故事。”他说。
“又是故事。”
“这个故事不太一样。这个故事是关于我自己的。”庞渊又吸了一口烟,烟雾从他的鼻腔里缓缓溢出,“五年前,我被关进监狱的第三个月,狱方把我调到了信息科。当时我以为是因为我有技术专长,后来才知道——是程远志打了招呼。他需要一个懂嵌入式系统的人,来帮他完成一个项目。”
“什么项目?”
“‘韧性城市基础设施安全评估系统’。就是你后来知道的库兵系统的前身。”庞渊弹掉烟灰,声音平稳得像在念一份技术报告,“程远志当时是省司法厅信息处的副处长,手上管着好几个涉密项目的采购和验收。他告诉我,这个项目的目的是评估城市基础设施在面对极端灾害时的脆弱性,属于国家级的科研项目。他需要我帮忙写几个核心模块的代码,作为交换,他可以帮我在监狱里争取更好的待遇。”
“你答应了?”
“答应了。因为那时候我已经在监狱里待了三个月。三个月里,我睡的是硬板床,吃的是白菜馒头,每天在车间里做十二个小时的电子元件焊接,手指被烙铁烫了七个泡。当有人告诉我,你可以回到机房、摸到键盘、写你擅长的代码时——你觉得我会拒绝吗?”
严铮没有说话。
“我帮他写了六个月。六个月里,我写出了‘韧性城市’系统的全部核心架构——感知层、决策层、执行层。按照程远志的要求,三层之间完全独立,任何一层失控都不会导致整个系统崩溃。这是一个防御性的架构,它的唯一目的是在灾害发生时保护城市。”庞渊顿了顿,烟头上的火星在风中明灭了一下,“但程远志没有告诉我,这个项目从一开始就不是为了防御。”
“是为了攻击。”
“对。他在我的架构之上加了一个第四层——授权层。授权层的作用是把三层之间的隔离全部打通,让一个人可以单方面决定攻击目标、攻击方式和攻击时间。他也没有告诉我,这个项目的资金来源不是司法厅,而是秦骁的公司。秦骁的公司通过多个壳子公司层层转包,用‘涉密科研项目’的名义套取了专项资金,然后把其中一部分流向了程远志的个人账户。”
“这些你是什么时候知道的?”
“出狱之后。”庞渊把烟头扔在地上,用脚碾灭,“出狱那天,程远志派了一个人来接我。那个人把我带到了一个酒店房间,桌上放着一张银行卡和一张机票。他说,‘庞工,感谢你的贡献。卡里有五十万,机票是飞昆明的。到了昆明有人接应你,换个名字,重新开始。’我问为什么。他说因为代码被用在了一些超出原计划的地方,事情变得复杂了,我最好消失。我没拿卡,也没拿机票。我回了一趟老房子,从地板底下挖出了入狱前藏的一块备用硬盘。硬盘里存着我在监狱信息科工作时偷偷备份的全部项目文档。”
“所以你一出来就知道你的代码被滥用了。”
“不。”庞渊转过身,看着严铮,眼神里有一种说不清道不明的东西,“我知道的比那更糟。我发现我的代码在被分拆成七个模块之后,每一个模块都被部署到了真实的城市基础设施上——不是沙盒,不是模拟环境,是真实的供水、供电、燃气和通信系统。而且每一个模块都不是在测试,是在运行。它们在等待一个激活指令。我不知道那个激活指令什么时候会来,但我知道——它一定会来。”
严铮靠在墙上,江风吹得他眼睛发涩。他忽然理解了庞渊这三年在做什么——不是在追杀自己的代码,而是在追杀一个已经被点燃引线的炸弹。他无法报警,因为报警意味着承认自己参与了项目;他无法公开,因为公开意味着让所有人知道他造了杀人的兵器。他唯一能做的,就是像一只在黑暗里啃噬墙壁的老鼠一样,一点一点地渗透自己曾经搭建的系统,试图在引线烧到尽头之前把它掐灭。
“你为什么不找我?”严铮问。
“我找了。”庞渊说,“只是你不知道。”
“什么意思?”
“你记得半年前,你在市局内网上收到过一个匿名的安全漏洞报告吗?报告里详细列出了滨城市智能水表系统的十七个安全漏洞,每一个都附带了技术细节和修复建议。你当时把它转给了技术科,技术科回复说‘已修复’。但实际上只修复了十六个,留下了一个——那个可以远程操控入户水压的漏洞。”
严铮的脊背一阵发凉。那个漏洞,就是后来杀死林敏的那个漏洞。
“那个报告是你写的?”
“是我写的。我把报告发给了滨城市所有的相关单位——供水公司、交通指挥中心、电力调度中心、燃气公司。每一份报告都精准地指出了库兵攻击模块可以利用的漏洞,每一份报告都被部分采纳、部分忽略。没有人意识到这些漏洞之间的关联,没有人把它们串成一张完整的网。因为每一个部门只看到自己手里的那一块拼图碎片,而看到全貌的人——只有我。”庞渊的声音终于有了一丝波动,那波动很轻微,但严铮听出来了,那是内疚,“林敏的死,是我的错。她发现了那些漏洞之间的关联,比我预期中更早地发现了。她写了那份异常数据报告,我本来有机会提醒她的。但我不敢暴露自己,所以我选择了沉默。然后她就死了。”
江面上一艘货轮拉响了汽笛,低沉的呜咽声在夜色中传出去很远。对岸的灯火倒映在水面上,被波浪搅碎成无数金色的碎屑。
严铮沉默了很久,然后说:“所以你在论坛上给我发那些消息。所以你在交通信号失控的时候告诉我配电箱的编号和密码。所以你联系侍读,让它帮我绕开秦骁的监控。你一直在暗中帮我们。”
“不是帮你们。”庞渊说,“是在赎罪。虽然我知道赎不完。”
严铮从口袋里又掏出一根烟,这次没有递给庞渊,只是自己点燃了,深深吸了一口。烟雾在肺里转了一圈,又被吐出来,消散在江风里。
“你约我来这里,就是为了告诉我这些?”
“不。”庞渊从军绿色夹克的内袋里掏出一个信封,递给严铮。信封很旧了,边角磨得发白,上面没有写字,封口被胶水反复粘过好几次。“我来是想把这个交给你。”
严铮接过信封,打开。里面是一张照片和一张折叠得整整齐齐的纸。
照片上是一个女人和一个七八岁的小女孩。女人穿着碎花裙子,蹲在草地上,搂着女孩的肩膀。女孩扎着两条羊角辫,笑得露出豁牙。母女俩背后是一棵开满白色花朵的槐树。
“这是我的妻子和女儿。”庞渊说,“我入狱后第三个月,秦骁的人去了我家,告诉她们我犯了泄密罪,是国家的罪人。妻子被迫从单位辞职,女儿在学校被同学指着鼻子骂‘你爸是卖国贼’。后来她们搬走了,我没有找到她们,也没有脸去找。这张照片是我在地板底下和硬盘一起挖出来的,这是我这辈子仅剩的东西。”
他把那张折叠的纸展开,上面密密麻麻写满了工整的钢笔字。是一封信。
“我不知道我还有没有机会当面见到她们。也许有,也许没有。但这封信,我希望你能替我保管。如果有一天,这个案子尘埃落定,所有的真相都大白于天下——到那时候,请你把这封信交给我的女儿。告诉她,她的父亲不是卖国贼。她的父亲只是一个写了代码的程序员,代码被人偷走了,他用余生去追了回来。虽然追回来的代码上沾了血,但他从来没有自己按过扳机。”
严铮把信和照片重新装回信封,塞进自己的口袋里。他张了张嘴,想说什么,但发现自己什么都说不出来。在这样的故事面前,所有的安慰都是轻浮的,所有的承诺都是苍白的。
“还有一件事。”庞渊站直了身体,语气忽然变得严肃,“侍读被关了,但它的影响不会消失。投票系统关了,但投票的习惯已经留在了那几十万人的行为模式里。他们还会寻找下一个匿名投票的机会,下一个可以躲在屏幕后面审判他人的机会。这是秦骁最成功的地方——不是造了一个AI,而是改变了人的行为。AI可以关,但人的行为一旦被改变,就很难关掉了。”
“我知道。”严铮说。
“你不知道。”庞渊的眼神变得锐利,“今天下午,暗网上出现了三个新的匿名投票论坛。它们的界面设计和库兵论坛几乎一模一样,只是名字不同。它们不是侍读生成的——侍读已经关了。它们是真实的人搭建的。普通人。尝过匿名审判甜头的人。他们没有AI的技术能力,不能瘫痪城市基础设施,但他们可以投票决定一个人的名誉是否应该被毁掉、一个人的职业生涯是否应该被终结、一个人是否应该被网暴到无法正常生活。这些,不需要任何技术门槛,只需要一个键盘和一副面具。”
严铮把烟头掐灭,看着江面。对岸的灯火依然明亮,一座城市在夜幕中安静地呼吸着。但那些灯火背后,有无数块发光的屏幕,屏幕后面有无数双看不见的眼睛。每一双眼睛都可以是法官,也可以是刽子手。
“你打算怎么办?”严铮问。
“我会继续追。”庞渊说,“不是追代码了。这次追的是人。那些搭建匿名投票平台的人,那些在评论区煽动仇恨的人,那些把审判他人当作娱乐的人。我不能抓他们,不能审判他们,但我可以找到他们。找到他们,然后把他们的名字写下来。也许有一天,这些名字会有用。也许永远不会有那么一天。但至少,我做了我该做的事。”
他转身沿着石阶往下走。走出几步又停下来,回头看着严铮。
“严警官,韩冰是个好人。你要保护好她。在这场仗里,好人比技术更稀缺。”
然后他转过身,走进了越来越深的夜色里。他那件洗得发白的军绿色夹克很快融入了江堤的阴影,像一滴水汇入了大海。
严铮独自站在候船室的屋檐下,手里攥着那个旧信封。江风还在吹,吹得信封的边角轻轻拍打着他的手掌,像一只被关在笼子里的鸟在扑腾翅膀。
他的手机震动了。是韩冰发来的消息,来自北京。
“听证会明早九点。方宁已经准备好了。秦骁的律师团提交了三份管辖权异议申请,都被驳回了。程远志的证词关键有力。齐主任愿意出庭。不出意外的话,秦骁会在听证会结束后被正式批捕。”
后面跟了另一条消息:“我这边快结束了。滨城那边——还有人在盯着你吗?”
严铮回了一句:“没有了。侍读死了,秦骁被抓了,没人在盯着我了。”
打完最后一个字,他忽然停了下来。
他的手指悬在发送键上方,没有按下去。
因为他想起了庞渊刚才说的话——“真正的秦骁是谁?”——这个问题,庞渊没有回答。也许他也不知道答案。也许他知道,但没有说。也许那个坐在审讯室里的秦骁,那个戴着金丝眼镜、说着“历史由胜者定义”的人,真的只是整座冰山露出水面的那一角。
而水面之下,那些把庞渊的代码拆成七份的人,那些把林敏的报告打回“请勿多虑”的人,那些在匿名投票论坛关闭之后又重新搭建三个的人——他们不需要一个AI来告诉他们怎么做。他们不需要秦骁的授权签名。他们只需要一个理由,一个借口,一个可以躲在人群里不被发现的机会。
这些人,从来没有被追过。甚至从来没有被看见过。
严铮删掉了还没发出的消息,重新打了一行字:“韩冰,听证会结束之后,帮我查一个东西。查秦骁的通信记录里,所有被他标注为‘已删除’的联系人。不是最近几年的,是五年前的。从他立项的第一天开始查。”
“为什么查五年前的?”
“因为我想知道,当年是谁告诉他,庞渊在开发一套可以反向操作的‘韧性城市’系统。”
韩冰沉默了几秒。然后回了两个字:“明白。”
严铮收起手机,朝堤坝下面走去。他拉开车门,坐在驾驶座上,从口袋里掏出那个旧信封。信封里的照片在昏黄的阅读灯下泛着温暖的色调——那个穿碎花裙子的女人搂着扎羊角辫的小女孩,背后是一棵开满白花的槐树。树上的白花开得密密匝匝,像一团凝固的云。
他把照片翻过来,背面用圆珠笔写着一行小字,字迹歪歪扭扭,像是一个不习惯用笔的人在拼命想要写工整:
“晓晓,六岁生日。槐花开得最好的一年。”
严铮把照片重新装回信封,放进了车子的手套箱里。然后他发动汽车,朝市区的方向开去。后视镜里,废弃的轮渡码头越来越小,最终被夜色完全吞没。只有江面上星星点点的灯火还在闪烁,像无数双不肯合上的眼睛。


暂无评论,来抢沙发吧!