晋江文学城
下一章   目录  设置

1、异常沙箱 凌晨两点四 ...

  •   凌晨两点四十分,虚拟犯罪调查科的灯还亮着三盏。
      沈谛安坐在工位前,后背微微佝偻,像一棵被风长期吹拂后定型在海岸边的树。这个姿势他已经保持了太久,久到肩胛骨之间的肌肉开始酸痛,像有人用钝刀在那里一下一下地刮。但他没有动。屏幕的冷光落在他脸上,把本就清瘦的面部轮廓削得更深,颧骨下方的阴影几乎能盛住一勺水。他盯着屏幕,但眼睛的焦点不在任何一处——那是长时间专注后,眼球肌肉短暂的失焦状态,像一台过热后需要冷却的机器。
      熬了三天。他抬手揉了揉眉心,指腹触到皮肤时,能感觉到那种熬夜特有的油腻和粗糙。眼眶周围那圈青灰色已经不再是“黑眼圈”,更像是皮肤底层渗出的某种疲倦的墨水,从内部洇染开来,洗不掉,遮不住。
      深色外套搭在椅背上,他只穿着件洗得发软的灰色衬衫。这件衬衫他穿了三年,领口微微卷边,袖口挽到小臂中段,露出一截瘦而紧实的腕骨。手腕内侧有几道浅浅的疤痕,是六年前那次行动留下的——碎玻璃划的,他不记得疼,只记得后来血滴在键盘上,把几个键黏住了,后来换了新的。
      办公室很安静。安静到能听见服务器散热风扇的低鸣从地板下的机房传来,像某种巨兽沉睡时的呼吸,平稳、低沉、永不停歇。偶尔有键盘敲击声脆响一下,是他无意识地在空格键上敲了敲,指腹与塑料键帽接触的瞬间,触感冰凉而熟悉,像某种确认——他还醒着,还在。
      “净土系统”测试链的压力测试已经持续了七十二小时。
      屏幕上开着四个终端窗口,分别跑着不同的攻击模拟脚本。最左边那个窗口的代码还在滚动,一串串十六进制字符像溪水般往下淌,无穷无尽。旁边是一个拓扑图,蓝色的节点连成网状,偶尔有节点闪烁一下,代表一次查询通过。按照计划,三个月后它将正式上线,成为全国第一个用数学方法解决公民前科隐私问题的标杆工程。
      沈谛安端起第五杯咖啡。纸杯握在手里已经冷掉了,杯壁上挂着几道淌下来的咖啡渍,其中一道还在缓缓下流,在桌上洇出一小片圆形的湿痕。他仰头喝了一口,舌面上漫开一股劣质速溶的焦苦,还有一点点酸——这杯泡了太久。他皱了皱眉,没有吐,咽了下去,把杯子放回原处。放的时候不小心碰到了鼠标,屏幕上的光标跳了一下。
      他盯着那个光标,忽然想:如果现在有一面镜子,自己看起来会是什么样子?
      大概像一个在深海里泡得太久的人,皮肤发灰,眼神空洞,浮出水面时已经忘了阳光的温度。
      目光重新落在屏幕角落的监控面板上。压力测试很顺利。CPU负载曲线平缓得像熟睡者的心电图,没有一丝波澜。内存占用率在预期范围内波动,像潮汐一样规律。证明生成速度稳定在每秒钟两千三百次左右,每一次都精确无误。
      技术文档里写着的“具备国际领先水平的安全架构”——那句话是他自己参与撰写的。写的时候他在想什么?大概是某种骄傲吧,觉得终于有一堵墙,能挡住所有不该进来的人。
      但现在他看着那堵墙,忽然觉得它太安静了。
      太完美的安静,有时候本身就是一种异常。
      但有什么东西不对。
      他说不清那是什么。一种类似于第六感的警觉,像在空房间里突然察觉身后有人。他猛地回头,身后只有空荡荡的过道和一排排熄了灯的工位。电脑待机时亮着的电源灯像一只只红色的眼睛,在黑暗里凝视着他。
      六年前那次误判之后,他对自己的“直觉”已经不再信任。数据不会说谎——这是他曾经的信仰。但那次行动告诉他,数据会不完整,会误导,会在最关键的时刻露出一个他看不见的盲区。从那以后,他把自己变成了一个怀疑主义者,怀疑一切,包括自己的怀疑。
      但那种警觉依然会在某些时刻浮现。像伤口愈合后残留的痒,提醒他那里曾经被割开过。
      他放下杯子,手指在触控板上划动,将监控面板切换到另一个视图。那不是系统预设的监测指标,是他自己写的一个脚本——专门抓取特定节点的加密流量元数据。这个脚本运行在后台,没有任何日志输出,连名字都是晦涩的“syslog_collector_7”。做这行十年,他早学会了如何在系统的夹缝里给自己留一扇后门。不是不信任,是太多次被信任辜负之后的习惯性防御。
      过去六小时,节点N-37的流量曲线出现了七次微小的波动。
      他把那七次波动的截图调出来,放大,一格一格地看。波幅极小,只有正常峰值的千分之三。放在常规审计脚本里,这种波动会被归因于网络抖动——某个路由器的缓存满了,或者某条光纤里恰好有几束光被折射了一下。自动审计会打上一个“无异常”的标签,归档,然后忘掉。
      但沈谛安盯着那七次波动的时间戳,在心里默默计算。
      62分钟。58分钟。64分钟。61分钟。59分钟。63分钟。60分钟。
      间隔不是随机的。
      他的手指停在触控板上,没有动。心跳快了半拍,然后恢复正常。他重新看了一遍那些数字,又算了一遍平均值、方差、分布规律。结果一样——一个接近但不等同于一小时的周期。
      不是自动脚本。自动脚本会严格执行60分钟整,像瑞士钟表一样精准。也不是网络抖动。网络抖动没有这种统计学上的自律,那是一种混乱的、无序的、随机的东西,而不是这种近乎强迫症般的规律性偏差。
      有人在手动触发。或者有一个与系统时钟不完全同步的定时任务。
      他打开深度包解析工具,手指在键盘上敲出一串命令。那些按键他闭着眼睛都能找到位置,二十年了,从少年时代第一次接触电脑到现在,键盘已经成为他身体的延伸。屏幕上弹出一个新的窗口,目标锁定在N-37节点最近二十四小时的所有流量上。
      数据流经过解密层。经过解压缩层。一层层剥开,像剥开一个洋葱,剥到最后会不会流泪,他不知道。
      最终呈现在他面前的是数千条经过零知识证明处理的“清洁记录”。
      沈谛安盯着那些记录,喉结动了动,咽下一口什么都没有的唾沫。口腔很干,舌苔发苦,刚才那杯咖啡的余味还在。
      净土系统的核心逻辑是这样的:当警方临检或用人单位查询某人是否有吸毒前科时,系统不会直接返回“有”或“无”的具体记录,而是生成一个零知识证明——用数学方式告诉查询者“此人无吸毒记录”或“此人有记录”,但查询者看不到任何原始数据。这被称为“证明生成”机制。
      就像你能证明自己有一把钥匙能打开一把锁,但不必把钥匙的形状给别人看。
      沈谛安现在看到的,正是这些证明的生成日志。
      他快速筛选,将所有与节点N-37相关的记录单独提取出来。三百七十二个证明请求,分布在二十四小时内。他写了一个脚本,批量验证这些证明的原始输入参数——也就是那些被查询者的生物特征哈希值。
      脚本开始运行。进度条缓慢爬升。10%、30%、50%、70%、90%——
      完成。
      前两百个,一切正常。
      第二百三十一个,脚本输出了一个红色的“ERROR”。
      他的手指停住了。
      这是一个名叫“赵某某”的查询请求。系统生成的证明是“无吸毒记录”,证明有效,通过验证。但脚本在比对历史数据时发现:三个月前,在系统旧架构上,此人因吸毒被处理过一次,原始数据应该存在。
      怎么可能?
      沈谛安没有激动。他太熟悉系统的每一个环节了,代码是他一行行审计过的,逻辑是他一个个验证过的。出现这种情况只有三种可能:原始数据被篡改、证明生成逻辑有漏洞、或者他的脚本出了问题。
      他靠在椅背上,闭上眼睛,让自己沉入黑暗里。
      三十秒后,他睁开眼睛,开始排查。
      原始数据哈希值经过时间戳锚定,存储在不可篡改的冷钱包链上。他调出那条链上的记录,用手工验证哈希值。每一个数字,每一个字母,逐一核对。没有错。哈希值匹配,时间戳匹配,锚定记录完整。
      证明生成逻辑是开源的。他打开代码文件,从入口函数开始,一行行往下看。每一行都熟悉得像自己的掌纹。加密库调用,参数传递,随机数生成,证明构造——没有后门,没有错误,没有可以被利用的缝隙。零知识证明的数学原理像一堵墙,坚实、冰冷、不容置疑。
      他的脚本——他重新写了三个测试用例,用已知数据跑了一遍又一遍。输出结果一致,没有错误,没有偏差。
      那么问题出在哪里?
      他盯着屏幕,盯着那条记录的元数据,目光慢慢聚焦在其中一个字段上。
      随机数。
      零知识证明的验证过程需要一组公共输入参数,包括被查询者的生物特征哈希值、查询时间、以及一个随机数。这个随机数的用途是增加证明的不可预测性,防止某些类型的攻击。理论上,它应该是完全随机的,由系统自动生成,没有任何规律可循。
      但他看着那一串十六进制字符,忽然有种奇怪的感觉。那感觉说不清,像看见一张熟悉的脸,但表情不对;像听见一首熟悉的歌,但旋律走调。他说不出具体是什么,但就是觉得——不对。
      他选中那个随机数,复制,打开一个新的命令行窗口。
      他将那个随机数拆解,转换成十六进制,再转换成ASCII字符串。屏幕上出现了一串乱码——各种无法识别的符号混在一起,像一堆被打翻的铅字,像一场没有意义的风暴。
      他没有停。他用Base64再次解码。
      屏幕上,一行字符浮现出来:
      “zkp_fake_clean_07”
      沈谛安的手指僵在键盘上。
      房间里很安静。安静到他听见自己的心跳声,咚、咚、咚,像有人在胸腔里敲一面闷鼓。他听见自己的呼吸,一浅一深,像某种疲惫的节拍器。他感觉到后背的衬衫被汗水浸湿,黏在皮肤上,又凉又痒,像有无数只蚂蚁在爬。
      他盯着那行字,看了很久。
      “zkp_fake_clean_07”——zkp是零知识证明的缩写,fake是伪造,clean是清洁,07是编号。
      有人在向链上注入伪造的清洁证明。不是删除记录,不是破解加密,不是任何传统意义上的攻击。而是制造“混淆的合法性”——用真实的零知识证明逻辑,为有前科的人生成虚假的“无记录”证明。
      那个随机数字段里的字符串,是攻击者留下的标记。或者说,是某个自动化脚本的日志残留,不小心被写进了本该随机生成的位置。
      第七个伪造清洁证明。
      还有更多。
      他快速检索其他来自N-37节点的证明,用同样的方式解码随机数。三十七个被标记为“fake_clean”的证明,对应着三十七个身份。他把这些身份信息导出到一个新文件里,开始交叉比对公开数据源。
      二十分钟后,他有了第一个发现。
      名单中的一个人——化名“李某某”——是上周一个暗网科技拍卖会的匿名买家。那场拍卖会的信息在一个只有邀请才能进入的IRC频道里流传过。沈谛安曾经用卧底账号进去看过一眼,只是为了了解一下暗网最新的交易趋势。拍卖会成交的标的是一套工业级的分子结构模拟算法,成交价不是比特币,也不是法币,而是一种他没见过的计价单位。
      他当时没在意,只当是暗网又发明了某种新的洗钱游戏,关掉窗口就忘了。
      现在他回想起来,那个计价单位叫做“药资”。
      沈谛安曾在情报简报里读到过“药资”这个概念。它由几个隐秘的做市商根据毒品的纯度和稀缺性动态调整与法币的兑换率,在某些灰色经济领域已经成为默认的结算单位。他记得当时看完简报,只是默默记住了这个名词,没有多想。简报里说,这是一种以“清醒时间”为计量单位的新型毒品黑市稳定币——你为别人提供多少小时的“清醒”,就能获得多少单位的“药资”。
      他没有想到,自己会在净土系统的测试链上,第一次与它正面相遇。
      他将所有发现整理成一个简报。打字的时候,他发现自己的手指在微微发抖。不是害怕。是某种混合了警觉和兴奋的生理反应——就像闻到血腥味的猎犬,全身的肌肉都绷紧了,每一根神经都在尖叫:有什么东西,就在这里,就在眼前。
      凌晨四点零七分,他把简报发给了陆天明。

      第二天上午十点,沈谛安坐在刑侦支队副支队长办公室里,面前摆着一杯没动过的茶。
      办公室不大,一张办公桌,一排文件柜,墙角放着一个饮水机和几盆绿植。绿植的叶子上落了一层薄灰,大概很久没人擦过。窗帘半拉着,阳光从缝隙里挤进来,在地板上切出一道亮白色的光带。光带里有细小的尘埃在浮动,缓慢地、无意义地盘旋。
      陆天明坐在办公桌后面,穿着件半旧的深蓝色夹克,头发比平时更乱一些,显然也是熬过夜的。他低着头,慢条斯理地翻着沈谛安打印出来的材料。翻页的时候,纸张摩擦发出细碎的声响,像秋风吹过落叶,像某种时间流逝的声音。
      沈谛安盯着他的手指。那双手很稳,骨节分明,翻页的动作不急不缓,看不出任何情绪。但沈谛安注意到,陆天明翻到某一页时,停顿了比平时更长的一秒。只有一秒。然后继续往下翻,速度不变。
      “N-37节点,”陆天明念出那个编号,声音平和得像在讨论今天的天气,“这个节点归属哪个单位?”
      “名义上归属于省卫健委数据中心,”沈谛安说。他坐得很直,后背没有靠在椅背上,双手放在膝盖上,像在等待某种检阅,又像在克制某种冲动。“但根据路由追踪和物理位置定位,它的真实服务器在临市的一个商业机房,租用方是一家名叫‘明远科技’的私营企业。”
      陆天明抬起眼睛看了他一眼。那一眼很轻,像蜻蜓点过水面,但沈谛安感觉到了其中的重量——审视、掂量、还有一点说不清的东西。然后陆天明继续低头翻材料,没说话。
      沈谛安等他翻完最后一页。
      陆天明合上材料,沉默了几秒。他端起茶杯喝了一口。茶水已经凉了,他也没有在意,只是慢慢地咽下去,喉结滚动了一下,然后把茶杯放回原处。放的时候动作很轻,几乎没有发出声音。
      “系统上线还有多久?”
      “三个月。”
      “你知道这个系统是谁推动的吗?”陆天明放下茶杯,语气依然平和。他抬起头看着沈谛安,那双眼睛温和而疲惫,眼角的皱纹在光线里显得格外清晰,像地图上的等高线,记录着这些年走过的路。“‘社会发展与治理创新研究院’的郑怀临副院长是这个项目的顶层设计顾问。上个月在内部研讨会上,郑院长专门强调过,净土系统是未来社会治理现代化的标杆工程,必须确保如期上线。”
      沈谛安没有接话。他听懂了陆天明的言外之意——这不是一个单纯的技术问题。这是政治,是博弈,是一张他看不见但触得到的网。
      陆天明站起身,走到窗边。阳光落在他的侧脸上,把那几道皱纹照得更深,像刀刻的痕迹。他背对着沈谛安,声音从肩膀上传过来,有些闷:“你的报告我会往上递,但现在,你的任务是继续保障压力测试顺利进行。至于N-37节点和那些伪造记录……”
      他停顿了一下。
      “不要扩散,不要打草惊蛇。”
      沈谛安看着他的背影。五十二岁的陆天明,从基层民警一步步走上来的老警察,在这个系统里摸爬滚打了三十年。他的肩膀微微下塌,是常年伏案工作留下的痕迹,也是某种疲惫的写照。但那种疲惫里有一种沈谛安看不懂的东西——不是放弃,不是妥协,不是害怕,而是一种更深沉的、被时间沉淀过的了然。像知道河水最终会流向哪里,所以不再徒劳地筑坝。
      “陆支,”沈谛安说,“你是不是早就知道有人在这么做?”
      陆天明转过身。阳光在他身后,把他的脸罩在一片阴影里,只有那双眼睛是亮的。那眼神里闪过一丝复杂的东西,像闪电划过夜空,短暂但刺目。那是疲惫,是了然,是无奈,也是某种无法言说的沉重——像一个知道自己时日无多的人,看着年轻人还在拼命追逐注定会落空的东西。
      “谛安,”他说,“你在这个系统里待了十年,应该明白一个道理:有些墙,不是用来挡住外面的人,而是用来让里面的人看不见彼此。”
      他没有正面回答沈谛安的问题。但那个眼神,那句话,已经说明了很多。
      沈谛安低下头,看着面前那杯没动过的茶。茶水已经凉透了,表面浮着一层薄薄的茶膜,像一面蒙尘的镜子。他看见自己的脸倒映在里面,模糊、变形、看不真切。那层茶膜轻轻晃动了一下——是他的手在抖。

      从陆天明办公室出来,沈谛安没有回自己的工位。他拐进楼梯间,推开防火门,在台阶上坐了下来。
      楼梯间里很安静。只有头顶的声控灯亮着惨白的光,照在水泥台阶上,照出一些经年累月留下的污渍和磨损。有人在这里扔过烟头,黑色的烫痕还在。有人在这里吐过痰,干了之后留下一片浅白色的痕迹。空气里有灰尘的味道,还有淡淡的消毒水气息,从某个楼层的卫生间飘过来,混合成一种说不清的、公共空间特有的气味。
      他坐在第三级台阶上,双手搭在膝盖上,低着头。
      需要一个人待一会儿。
      六年前的那场行动,此刻像一根刺扎在他脑海里。不,不是刺,是一块永远化不开的淤血,堵在胸口某个位置,平时可以忽略,但每次呼吸太深就会疼。
      当时他也是像现在这样,凭借数据模型判断出一个“绝对准确”的嫌疑人位置,坚持让搭档按他的方案行动。他记得搭档当时犹豫了一下,转过头看他,眼神里有种说不清的东西——是怀疑?是担忧?还是只是单纯的迟疑?——然后搭档说:“谛安,我觉得有点不对。”
      但他太相信自己的数据了。他说:“数据不会错。”
      结果那个位置是陷阱。
      搭档为了掩护他撤离,永远留在了现场。他最后看见的,是搭档的背影——那个人在巷口转过身,朝他喊了一句什么,然后枪声响了,那个背影倒下去,再也没有起来。
      他始终没有听清搭档最后喊的那句话是什么。
      从那以后,他学会了怀疑一切——怀疑数据,怀疑直觉,怀疑自己。他把自己变成了一个永远在计算概率的人,每一次行动前都要在心里列出所有可能出错的地方,然后逐一防范。他在脑海里建了一座数据构成的堡垒,每一块砖都经过精确计算,每一扇门都有三道锁。
      但他也明白,这种怀疑本身就是一种创伤。就像一条腿断了之后接上,走路没问题,但每到阴雨天,伤口就会隐隐作痛。那种痛提醒你:这里曾经断过,永远不再是原来的样子。
      数据不会说谎,但数据会不完整。
      他现在掌握的这些线索——三十七个伪造记录、一个异常节点、一笔“药资”交易——拼在一起,已经足够勾勒出一个庞大犯罪网络的冰山一角。但也仅此而已。他无法证明这些伪造记录与现实中的毒品交易有直接关联,无法证明那个暗网买家背后是谁在操作,无法证明“明远科技”的服务器里藏着什么。证据链上每一个环节都有缝隙,每一个缝隙都足够让真相滑落。
      他需要一个更完整的证据链。
      沈谛安站起来,推开防火门,回到办公室。

      办公室里的灯还亮着,他的工位在靠窗的位置,桌上堆着三个显示器、两个笔记本、一堆乱七八糟的线缆。显示器之间放着一个空咖啡杯,杯底有一圈干了的褐色痕迹。旁边是一包开了封的饼干,已经受潮变软,他三天没动过了。
      他坐下来,打开自己的电脑,开始写一个新的脚本。
      写代码的时候,他的手指很稳。一行一行,逻辑严密,注释清晰。这是他最擅长的领域,是他唯一确信自己不会犯错的地方。代码是诚实的,要么能运行,要么不能,没有中间状态。不像人。
      这个脚本不会触发任何警报,不会在系统日志里留下痕迹——它会伪装成一次普通的网络延迟测试,用合法的协议、合法的端口、合法的数据包格式,悄悄潜入N-37节点的内存空间,抓取那个正在运行的伪造证明生成程序的进程快照。整个过程会模拟得和真实网络延迟一模一样,连时间戳都会伪装成随机抖动的样子。
      他知道这是违规的。压力测试的任务范围不包括主动渗透第三方服务器。他也知道陆天明的暗示已经很清楚:这件事很复杂,牵扯的不仅是犯罪分子,还有更高层面的博弈。
      但他更清楚的是,如果他现在停下来,等着“上级指示”,那些伪造记录会被新的数据覆盖,那个异常节点可能被悄然下线,那个暗网买家会继续用“药资”交易下一批货物。等一切证据消失,陆天明也好,郑怀临也好,所有人都会当什么都没发生过。
      他敲下最后一行代码,手指悬在回车键上方。
      屏幕上倒映出他的脸。黑眼圈比凌晨更深,眼眶凹下去,像两个浅坑。眼神疲惫但依然锐利,那种锐利不是锋芒,而是长期磨砺后留下的痕迹,像一把用旧了但依然锋利的刀。
      六年前那个相信数据不会错的年轻人,现在已经学会了在每一次行动前计算所有可能的代价。但他还是按下了回车键。
      有些东西没变。
      脚本开始运行。进度条缓慢爬升。10%、25%、50%、75%——
      一个弹窗突然出现在屏幕中央。
      不是错误提示,不是系统警告。那是一个白色的对话框,背景是纯黑色,只有一行字。字体纤细,像手写体,像有人在纸上用钢笔写下的那句话:
      “你也在找忒修斯之墙的漏洞吗?”
      沈谛安的瞳孔骤然收缩。他条件反射地切断所有网络连接——拔掉网线,关闭WiFi,甚至把手机抓起来扔到三米外的空桌上。手机落在桌面时发出“砰”的一声闷响,屏幕亮了一下又暗下去。
      但那行字依然停留在屏幕上。
      没有闪烁,没有消失,只是安静地浮在那里,仿佛已经写进了他的本地内存,写进了他的视网膜,像某种烙印。
      忒修斯之船——那艘在航行中不断更换木板,直到所有部件都被替换过的船。它还是原来那艘船吗?
      忒修斯之墙——那是净土系统核心架构文档里的一个内部代号。指的是系统长期运行后可能面临的哲学困境:当代码、协议、管理权限在一次次的维护更新中被悄然替换,最终没人能说清这堵墙保护的究竟是公民隐私,还是寄生其上的新特权阶级。
      这个代号从未公开过。知道它的人,不超过十个。沈谛安是其中之一。
      他盯着那行字,大脑在高速运转。谁?为什么?怎么进来的?那个“也”字是什么意思——还有谁在找?
      他想起了六年前牺牲的那位搭档。那个人生前参与过净土系统的早期设计,那个代号,很可能就是他在某次讨论中随口提出的比喻。当时几个人在会议室里抽烟,烟雾缭绕中,搭档靠在椅背上,忽然说:“这系统以后要是维护个几十年,代码换了一遍又一遍,那它还是原来的系统吗?就像忒修斯之船。”
      有人接了一句:“那不就是忒修斯之墙?”
      大家都笑了。后来这个代号就留在了内部文档里。
      但搭档已经不在了。
      弹窗消失了。脚本返回的结果文件夹里,多了一个名为“蒲公英”的加密文件。
      沈谛安盯着那个文件名,心跳加速。他能感觉到血液在太阳穴突突地跳,像有人在里面敲鼓。
      他双击打开。文件里面只有一条记录——一个地址,在境外,不在任何公开数据库里。以及一行备注:
      “三年无忧记忆的买家,在这里。”

      那天晚上,沈谛安没有回家。
      他把自己关在办公室里,一遍又一遍地分析那个神秘弹窗留下的痕迹。对方的渗透手法极其高明——没有利用任何已知漏洞,没有留下任何常规日志,没有在防火墙里留下任何记录。仿佛只是在他专注盯着屏幕的那几秒钟里,有一只手轻轻从虚空中伸出来,在他耳边说了一句话。
      但对方知道忒修斯之墙,知道净土系统的核心机密,知道如何绕过他设下的所有防线。这个人要么是系统内部的高层,要么是——
      沈谛安没有继续往下想。那个方向太危险了。
      他想到了另一个人——那个在弹窗里留下“蒲公英”的人。那个图标很小,像素风格,像某种涂鸦,像小孩子随手画的那种。但沈谛安知道它代表什么。蒲公英,随风散落的种子,每一颗都带着生命。那是某种隐喻,某种宣告,某种——希望?
      凌晨四点,他的手机震动了一下。
      一条匿名短信,没有号码,只有五个字:
      “查药资流向。”
      沈谛安看着那五个字,忽然意识到一件事:无论对方是谁,他都在告诉自己同一个方向。那个方向不是伪造的清洁记录,不是异常的节点流量,不是N-37的服务器归属,而是“药资”——那种以“清醒时间”为计价单位的毒品黑市稳定币。
      如果“药资”的交易记录可以被追踪,如果那些交易的参与者中有与伪造记录名单重合的人,如果他能证明这些人在用洗白后的身份继续从事犯罪——
      他打开那个“蒲公英”文件里的境外地址,开始编写新的追踪脚本。
      窗外,天快亮了。

      办公室的门被轻轻推开。
      简晞站在门口,手里提着两杯咖啡。她穿着件简单的灰色卫衣,头发有点乱,刘海翘起来一撮,脸上带着熬夜后的疲惫和某种年轻的、压不住的兴奋。看见沈谛安,她愣了一下。
      “沈哥,你一晚上没睡?”
      沈谛安没回答,只是看着她。她站在门口,逆着走廊的光,整个人被镶上一层浅金色的轮廓。年轻,挺拔,鲜活。
      简晞走进来,把一杯咖啡放在他桌上。她自己端着另一杯,在旁边的椅子上坐下,打开笔记本电脑。动作很利落,没有多余的话。
      “我一夜没睡,把N-37节点过去一周的所有出站流量重新过了一遍。”她说。声音里带着熬夜后的沙哑,像砂纸磨过木头,但语速很快,每个字都迫不及待地往外蹦。“你猜我发现了什么?”
      沈谛安等着她说下去。他端起那杯咖啡喝了一口,热的,现磨的,不是速溶。他不知道简晞什么时候学会喝咖啡的,也不知道她什么时候开始留意他喝的是什么。
      简晞把电脑屏幕转过来。上面是一张流量关系图——N-37节点的出站连接中,有二十三次指向同一个境外IP,而那个IP在另一个情报源的标记里,与“药资”的其中一个做市商钱包地址存在通信记录。图上用红线圈出了那个IP,旁边标注了时间、频率、数据包大小,清清楚楚。
      “你什么时候开始查这个的?”沈谛安问。
      “昨天下午。”简晞说,眼睛看着他,“我看到你在和陆支谈话,回来之后又一直在写脚本。我就想,如果N-37节点真的有问题,它不可能只进不出。那些伪造的清洁证明,总得有个去处吧?”
      沈谛安看着她。二十三岁,刚从警校毕业不到三个月,电子取证专业的高材生。她的眼睛明亮而坚定,没有他那种被时间磨损过的疲惫,没有那种每次行动前都要计算伤亡概率的习惯。她还相信数据可以抵达真相,相信正义是黑白分明的,相信只要足够努力,就能抓住所有坏人。
      “你知不知道,”沈谛安说,声音很轻,轻得像怕惊动什么,“如果这件事真的查下去,可能会得罪很多人?”
      “我知道。”简晞说。
      她顿了顿,下巴微微扬起,又说:“但我们是警察。”
      沈谛安沉默了几秒。他看着她的眼睛,那双眼睛里有一种光,是他很久很久以前也曾经有过的。
      简晞看着他,又说:“而且沈哥,你教过我的——数据不会说谎,但人会。我们要做的,就是让数据替那些不能说话的人,说出真相。”
      沈谛安低下头,看着桌上那杯咖啡。热气从杯口袅袅升起,在空中画出一个个看不见的漩涡,旋转着,消散着。他端起杯子喝了一口。咖啡是热的,带着一点苦,一点酸,还有一点点回甘。味道比他喝的那些速溶好得多。
      “把那个IP的完整通讯记录调出来,”他说,“从现在开始,这件事只有你和我两个人知道。”
      简晞点点头,转身走向自己的工位。她的脚步很轻,但每一步都带着某种确信。
      沈谛安看着她的背影。年轻,挺拔,像一棵刚种下的树。他想起六年前的自己,那时候他也像她一样,相信技术可以筑起完美的墙,相信数据可以抵达绝对的真相。后来那堵墙塌了,他从废墟里爬出来,学会了怀疑,学会了防备,学会了在每一次行动前计算伤亡概率。
      但简晞的话,让他想起那些被他遗忘的东西——那些值得守护的东西,那些数据无法衡量的东西,那些在废墟上依然可以生长的东西。
      窗外的天色渐亮。城市的万千数据流在黎明前最安静的时刻里缓缓涌动,像无数条看不见的河流,穿过高楼,穿过街道,穿过每一个还在沉睡的人。在那些流量中,有些属于正常的社交网络,有些属于金融交易,有些属于政府系统——还有极少数,属于一场正在酝酿的风暴。
      沈谛安没有看到的是,在他追踪的那个“药资”做市商钱包地址旁,一个极小的、像素风格的蒲公英图标,悄然出现在链上数据的某个角落。
      它标记着那个地址的主人,此刻正在某处,看着同一片天空渐渐亮起来。
      而在沈谛安的屏幕上,新的警报正在生成:
      “检测到‘药资’交易模式与境内三十七个身份信息存在统计相关性。相关性系数:0.89。”
      他锁起硬盘,站起身走到窗边。窗外是城市的天际线,高楼在晨光中逐渐清晰,玻璃幕墙反射出金色的光。有人在街边开始摆摊,有车开始在路上行驶,有新的一天正在开始。
      他不知道的是,那个蒲公英图标的主人——那个自称“K”的人——此刻正坐在某个不为人知的角落,看着同样的数据流。屏幕上,是他留给沈谛安的第二条信息:
      “忒修斯之墙的漏洞,不在代码里。在建造这堵墙的人心里。”
      那个人摘下耳机,窗外传来城市苏醒的喧嚣。他闭上眼睛,听了一会儿,然后睁开眼,继续敲击键盘。
      一切才刚刚开始。
note 作者有话说
第1章 异常沙箱

  • 昵称:
  • 评分: 2分|鲜花一捧 1分|一朵小花 0分|交流灌水 0分|别字捉虫 -1分|一块小砖 -2分|砖头一堆
  • 内容:
  •             注:1.评论时输入br/即可换行分段。
  •                 2.发布负分评论消耗的月石并不会给作者。
  •             查看评论规则>>