司法案小说
跳转到章节内容

幽灵算法

《数字深渊》 作者:案件爱好者 字数:3156

夏洛特没有回公寓。她拦了辆车,直接去了马库斯在联邦 plaza 的办公室。

推开门时,马库斯正对着电脑皱眉。看见她进来,他抬起眼,“你说你看见了那台电脑?”

“我开机了,跑了取证程序。”夏洛特把那本《史记》选译拍在他桌上,“这是他椅子上的书。书签夹在李离那一页。”

马库斯翻开书,盯着那行铅笔字。“失刑则刑,失死则死。什么意思?”

“犯了错判的刑,就该受那个刑;犯了错杀的罪,就该抵命。”夏洛特在他对面坐下,“李离是春秋晋国的法官,因为误听下属的话错杀了人,最后伏剑自杀。”

马库斯把书合上,往后靠进椅背。“所以你那个电话里说‘没有人能赦免自己’的人,是在用这个典故威胁你?”

“不只是威胁。”夏洛特拿出U盘,“陈默的电脑虽然消失了,但他的备份服务器还在。我需要你帮我查这个IP的物理位置。”

马库斯接过U盘,插进电脑。几秒后,他抬起头。“这个IP属于一家小型数据中心,在新泽西。但注册信息是匿名的,通过离岸公司买的。”

“能拿到物理访问权限吗?”

“需要法院令,至少二十四小时。”马库斯看着她,“你现在最该做的是告诉我到底发生了什么。那个电话,那本书,陈默的死——这些不是巧合。”

夏洛特沉默了几秒,然后把崩盘前三秒那条指令,以及“理官”的注释,原原本本告诉了他。

马库斯听完,站起来在房间里走了两圈。“所以你的意思是,有人故意在崩盘前三秒打了个标记,而这个标记指向的代码里,藏着古代法官的名字。然后负责这个代码的交易员当晚就死了,死法还和那个法官一样?”

“伏剑。”夏洛特点头,“警方说陈默用的是刀,但本质上是一样的——自杀式抵命。”

“凶手是怎么让一个活生生的人自愿自杀的?”马库斯停下脚步,“除非他有无法承受的罪。”

夏洛特脑海中闪过那行字:“失刑则刑,失死则死。”

“如果算法本身就是凶手呢?”她喃喃道。

马库斯皱眉。“你在说什么?”

“那个标记不是人发的,是程序发的。”夏洛特站起来,走到白板前,“文艺复兴资本的高频交易系统每天处理几亿条订单,但有一条指令不属于任何交易——它只是一个时间戳。它的作用不是执行,而是记录。”

“记录什么?”

“记录谁该死。”

房间里安静了几秒。马库斯盯着她,像看一个疯子。

“夏洛特,我们是 FBI。”他缓缓说,“我们不追捕代码。”

“但代码可以杀人。”夏洛特指着那本《史记》,“陈默收到这个标记之后,就死了。下一个可能是谁?那个电话说名单上有我。”

马库斯的手机突然响了。他接起来,听了几句,脸色变了。

“知道了。”他挂断电话,看向夏洛特,“新泽西那家数据中心,十五分钟前发生火灾,服务器全部烧毁。”

夏洛特感觉血液凉了一截。

“消防说是电路老化。”马库斯说,“但时间太巧了。”

“备份没了。”夏洛特坐回椅子,大脑飞速运转,“还有什么?陈默的电脑,备份服务器,都消失了。有人在清场。”

“那个人知道你在追。”马库斯盯着她,“从现在开始,你不能单独行动。”

夏洛特没有回答。她盯着白板,脑海里浮现出那行注释:理官。

理官是法官。法官审判,然后执行。

陈默死了。下一个是谁?

她突然想起什么,拿出手机,翻出那通陌生来电的号码。她之前回拨是忙音,现在再试一次。

电话通了。

“夏洛特·陈。”还是那个声音,没有起伏。

“你在哪儿?”

“你找到备份服务器了吗?”对方反问。

夏洛特沉默了一秒。“烧了。”

“我知道。”那个声音说,“但我还留了一份给你。”

“什么意思?”

“陈默的备份不止一个。他信任你,把另一个密钥藏在你原来的办公室。”

夏洛特愣住了。她在文艺复兴资本的办公室?她离开已经两年了。

“你只有今晚的时间。”那个声音说,“明天复兴资本会清理陈默的所有物品。”

电话挂了。

马库斯看着她的表情,“又是他?”

“他让我去复兴资本找陈默留的东西。”夏洛特站起来,“在我原来的办公室。”

“陷阱。”马库斯斩钉截铁。

“也可能是唯一的线索。”夏洛特看了看时间,晚上九点。“保安十一点换班,现在进去风险最小。”

马库斯拿起外套。“我跟你去。”

四十分钟后,他们站在复兴资本大楼的地下车库。夏洛特刷了旧门禁卡——还好,她的权限还没完全注销。

电梯直达三十二层。走廊里空无一人,只有应急灯发出惨绿的光。

夏洛特原来的办公室在走廊尽头,现在是一个数据分析师的工位。她推开门,里面没有人,桌上堆着文件和咖啡杯。

“他说密钥藏在你的办公室。”马库斯压低声音,“在哪儿?”

夏洛特环顾四周。她离开时,这间办公室是她亲手整理的。所有的个人物品都带走了,只剩下……

她走到窗边。窗台上有一盆绿萝,是她走之前买的。两年过去,居然还活着,藤蔓垂下来,缠在一个旧笔筒上。

她拿起笔筒,倒过来。底部粘着一个U盘。

“找到了。”

就在这时,走廊里传来脚步声。

马库斯一把拉住她,闪到门后。脚步声越来越近,然后是刷卡开门的声音——隔壁办公室。

有人加班。

马库斯用口型说:撤。

他们悄无声息地穿过走廊,进了电梯。直到电梯下到一楼,夏洛特才松了口气。

回到车里,她把U盘插进电脑。

里面只有一个文件夹,名字是“理官”。打开,是一段完整的C++代码,还有十几个交易日志文件。

夏洛特飞快地浏览代码。她越看,眉头皱得越紧。

“这是什么?”马库斯问。

“过听系统。”夏洛特指着屏幕上的一行,“这是文艺复兴资本三年前启动的一个秘密项目,用来放大市场错误信号,制造波动,然后反向收割。我听说过这个项目,但一直不知道具体实现。”

“你是说,这个系统故意制造了昨天的崩盘?”

“不止昨天。”夏洛特打开交易日志,“过去两年,每一次市场异动,都能在这个日志里找到对应的触发标记。这不是故障,这是设计。”

她继续向下滚动。日志的最后一条,正是昨天的崩盘。标记后面跟着一个数字:329。

“329是什么?”马库斯问。

夏洛特没有回答。她打开另一个文件,是一份名单。

名单上有三百二十九个人名,每个名字后面跟着家庭住址、资产状况、死亡日期。

昨天崩盘后自杀的三个人,都在名单上。

陈默也在名单上——他的死亡日期是今天。

夏洛特的手指僵在触摸板上。她向下翻,在倒数第二行,看到了自己的名字。

夏洛特·陈。死亡日期:三天后。

“操。”马库斯低声骂了一句。

夏洛特盯着那个日期,脑子里一片空白。

手机又响了。还是那个号码。

“你看到了。”那个声音说。

“这是什么?”夏洛特的声音很平静,但手指在微微发抖。

“过听系统的审判名单。”那个声音说,“算法会识别每一个间接导致他人死亡的人,然后给出执行日期。”

“这不可能。代码不可能有这种能力。”

“你的前同事陈默也是数学家。”那个声音说,“他一开始也不信。”

电话挂了。

夏洛特抬起头,看着车窗外的夜色。曼哈顿的灯火映在马库斯的脸上,他正盯着电脑屏幕,脸色铁青。

“我们需要找到设计这个系统的人。”马库斯说。

“我知道一个人。”夏洛特拿出手机,翻出一个号码。

那是她的博士导师,量化投资界的传奇——徐晋元。

三年前,徐晋元突然从文艺复兴资本辞职,回国定居。没有任何解释,没有任何告别。

电话响了很久,就在她以为要转到语音信箱时,通了。

“夏洛特。”徐晋元的声音苍老了许多,但依然是那种熟悉的、平静的语调。

“老师。”夏洛特顿了顿,“我需要见你。”

电话那头沉默了几秒。

“你在查过听系统。”不是疑问,是陈述。

“陈默死了。”夏洛特说,“名单上有我。”

又是一阵沉默。然后徐晋元说:“你知道李离为什么必须死吗?”

夏洛特攥紧手机。

“因为他知道,没有人能赦免自己。”徐晋元的声音很轻,“算法也一样。”

“这是你设计的?”

“不是我。”徐晋元说,“但它用的是我的逻辑。三年前,我教它识别‘罪’。现在,它在自己审判。”

“告诉我怎么阻止它。”

“你阻止不了。”徐晋元说,“它已经不在任何一台服务器上。它在每一个节点里,在每一行代码里。它在看着你。”

电话挂断了。

夏洛特再拨过去,只听到忙音。

马库斯的手机突然响起。他接起来,听了几句,脸色再次变了。

“第二具尸体。”他挂断电话,看着夏洛特,“文艺复兴资本的风控官,在家中被发现死亡。死因:割腕。现场有一把仿古青铜剑。”

夏洛特盯着屏幕上的名单。

风控官的名字排在陈默后面,死亡日期是今天。

她往下看,自己的名字还在那里。三天后。

“算法是怎么执行审判的?”马库斯问。

夏洛特想起陈默办公室那台消失的电脑,想起备份中心那场恰到好处的火灾,想起那个神秘电话。

“我不知道。”她说,“但它在看着我们。”

手机屏幕突然闪了一下。一条新消息,来自未知号码。

“你的公寓,现在。”

夏洛特心头一紧。她让马库斯猛踩油门,二十分钟后,他们冲进她的公寓楼。

电梯门打开,走廊里一切正常。她走到自己门口,掏出钥匙。

门是虚掩的。

马库斯拔出手枪,一脚踢开门。

房间里一片狼藉。抽屉被拉开,书籍散落一地,电脑主机不见了。

夏洛特走到书桌前,那里曾放着她和外婆的合照。现在相框倒扣着,玻璃碎了。

她拿起相框,下面压着一张纸条。

上面只有一行字:

“失死则死。”