周子墨消失后的第四个小时,叶诤的系统日志里出现了一条无法归类的条目。
不是攻击拦截记录,不是异常流量告警,不是暗链观测者的节点变动。是一条被标记为“未定义”的事件,系统自动分配了一个临时编号,备注栏只有一个问号。技术小哥最先发现的,盯着那行日志看了半分钟,叫了一声叶哥。
“有人在对我们做端口扫描。但跟以前完全不一样。”
叶诤走过去。日志显示扫描请求的源Ip一直在变,变化速度快到不像是代理切换。每个Ip只发一个SYN包就消失,下一个SYN包从完全不同的地址过来,间隔只有零点几毫秒。更诡异的是目标端口不是随机分布,而是按一个精确序列在走——1024,2048,3072,4096,每次加1024,扫完一圈又从1024开始。
“这什么扫法?”技术小哥问。
叶诤没回答。他把序列抄在纸上,每个数字下面标了二进制偏移量。1024是2的10次方,2048是2的11次方,3072是10加11,4096是2的12次方。不是等差数列,是二的幂次叠加。这个序列在计算机科学里有个特定的名字——量子比特的叠加态编码。
“他在用量子态的格式扫描我们。”叶诤放下笔,“不是传统端口扫描。他把扫描包本身当成量子比特来编码。每个SYN包被我们观测到的同时状态就坍缩了——但在坍缩之前,它同时存在于所有可能的端口上。”
“经典网络怎么做得到?”
“做得到才有问题。扫描包发出之前用量子随机数发生器决定了每个包的叠加态。我们的防御矩阵每秒换上万次Ip,但更换本身就是观测行为。他在用我们的观测来锁定我们——观测者效应反过来用。”
技术小哥张了张嘴,没出声。
叶诤重新打开防御矩阵控制台。动态防御矩阵的设计逻辑是靠不断变化的Ip让攻击者瞄不准。但影刃——或者说现在操作影刃工具的人——换了一种思路。她不再尝试瞄准单个Ip,而是把攻击包撒在概率云里,让防御矩阵自己通过观测行为来选择哪个包命中。矩阵Ip切换越快,扫描包坍缩次数越多,每一次坍缩都泄露一个微小信息碎片——延迟、跳数、ttL值。这些碎片拼起来,就能反向重建整个防御矩阵的拓扑。
“她拿我们的防御当镜子。”叶诤说,“每换一次Ip,等于向她报告一次位置。”
他启动了系统备用协议。不是反溯源盾牌,不是洋葱路由,是之前解锁后一直没用过的概率云防御模块。运作逻辑和量子扫描刚好对称——不阻止对方扫描包,而是在每个节点上同时生成大量虚拟扫描响应,让攻击者分不清哪个响应来自真实节点、哪个来自虚拟节点。防御本身也变成了一片概率云。
两片概率云撞在一起的时候,屏幕上的日志忽然安静了。
不是攻击停了。是双方的探测包和响应包在概率层面互相抵消了。对方的扫描包在观测之前同时存在于所有端口,叶诤的虚拟响应也在观测之前同时存在于所有节点。两片不确定性的迷雾叠在一起,谁也看不清谁。
安静持续了大约四十秒。
然后一条新的攻击请求从完全不同的方向打了进来——不是量子扫描,不是激光通信,不是ddoS。是一种叶诤从未见过的攻击向量。系统自动分配了一个名称:薛定谔漏洞。
攻击原理极其狡猾。攻击者向诤言科技的服务器发了一个精心构造的数据包,在进入网卡的那一刻同时满足两个互相矛盾的条件——校验和既正确又不正确。网卡芯片解析校验和时会进行一次微秒级错误纠正,纠正后包是合法的。但如果跳过芯片直接用软件解析,校验和就是错的。硬件和软件对同一个数据包做出了不同判断。硬件放它进了缓冲区,软件检查缓冲区时发现了一个不该存在的包,但无法判断是真实攻击还是硬件误判——因为硬件说它合法。
“她找到了硬件和软件之间的缝。”叶诤的声音很低,像自言自语。
这条缝只有几十纳秒的窗口。在这几十纳秒里,恶意代码已经执行完毕,把自己从缓冲区里删掉了。软件检查时除了转瞬即逝的校验和不一致,什么都看不到。但代码已跑完,在系统内核里写入了一个后门。
后门的位置叶诤花了将近二十分钟才定位到。不在系统目录,不在注册表,不在任何常规持久化位置。后门藏在cpU的微码缓存里——每次cpU启动时自动加载的那部分固件级指令。清除它需要重启整个服务器集群,而重启意味着诤言科技的反诈数据库会有至少三分钟离线窗口。三分钟,够对方做太多事了。
“不能重启。”叶诤说,“她在逼我二选一。要么重启清后门,给她空窗期。要么不清,让她继续留在系统里。”
“那怎么办?”
“第三条路。”
他调出进化树。可用点数还剩八点——渗透测试沙盒用了一点,认知锚还没解锁。推荐技能列表里有一个节点在缓慢闪着蓝光,和其他金色推荐项都不一样。名字叫“概率云防御升级——因果律防护罩”。解锁消耗六点。
技能说明:可免疫任何尚未被观测到的攻击。攻击在发生之前即被判定为无效。无冷却。但每次触发免疫后,宿主自身时间感知会被压缩零点一秒——这个副作用会累积,不可逆转。
又是副作用。量子隧道穿刺的代价是暴露生物电信号给极地站,这个是永久性压缩时间感知。每亮一次免死金牌,神经系统就少零点一秒反应时间。十个零点一秒是一秒,一百个是十秒。累积到一定程度会发生什么他不知道,系统小字备注写得模糊而冷淡:累积效应不可逆,建议谨慎使用。
叶诤盯着那行备注看了大概三秒,解锁了因果律防护罩。
解锁瞬间,AR界面弹出一条从未见过的提示格式——不是系统标准模板,而是一行纯文本,老式等宽字体,暗绿色。
“你选了。和严海一样。”
叶诤没有回复。不知道是谁发的——可能是观测者,可能是严海留在系统里的残影,也可能是零。没有时间分辨。
因果律防护罩启动后,薛定谔漏洞的第二个攻击包已进入网卡。硬件校验通过,软件校验报错,几十纳秒的窗口再次打开。但这一次,恶意代码没有执行。不是被拦截,不是被清除——它从一开始就没有存在过。攻击包在网卡接收的瞬间被防护罩从因果链上抹掉了。从未被发送,从未被接收,从未被解析。系统日志里没有拦截记录,因为没有什么需要拦截。攻击本身变成了一个不可能事件。
对方反应是即时的。薛定谔漏洞的攻击流三秒内全部停止。取而代之的是一个全新信号——不是攻击,是一条通信请求,直指叶诤工作站Ip。请求内容是一段未加密语音。系统自动播放。
语音里是一个女声,明显经过多层处理,音质像被砂纸磨过。语言在俄语和日语之间来回切换,夹杂少量中文词汇。系统实时翻译,结果断断续续,但关键词能拼出来:
“概率防御——不应该存在——系统版本不匹配——需要重新评估——07号实验体超出预期——告诉零——终止第三阶段——重复,终止第三阶段——”
后面是掐断的杂音,然后另一个声音插进来。不是刚才的女声,是个更年轻的男声,中文,没经过任何处理,语气急促。
“叶诤,如果你能听到——我是周子墨的助手,她让我在无人机坠毁之后继续监控。刚才那段语音是我从极地站上行链路里截获的,不是发给你的,是发给零的。发信人代号‘守门人’。他发现了你的因果律防护罩,正在要求零终止第三阶段。但零还没回复。还有一个东西——守门人的信号源我可以定位。他不在极地站,不在海外,他在国内。”
语音到此结束。
系统同时弹出守门人信号源定位结果。不是通过Ip——对方根本没走Ip。是基站电磁残留。守门人的通信链路走的不是互联网,是一条专用无线信道,信号穿过城市时在沿途基站电磁场里留下了微弱二次谐波。系统采集七个基站的电磁残留数据做三角定位。
结果指向一座老旧居民楼,四楼,朝北窗户。更让技术小哥倒吸一口气的是,系统通过窗户玻璃反射的电磁波特征,推测出房间显示设备规格——屏幕大概十二到十四寸,比例四比三,刷新率六十赫兹,荧光粉余辉衰减曲线符合cRt显示器特征。
cRt。不是液晶,不是LEd,是一台至少二十年前生产的阴极射线管显示器。又笨又重,功耗大,电磁泄露严重——在现代监控手段下,一台cRt显示器就像开着门的大喇叭,每个像素刷新都在向周围空间广播屏幕内容。守门人不可能不知道。除非他是故意的。
“他在拿cRt当信号源。”叶诤说,“他知道我们能看见他的电磁泄露。他要我们去找他。”
周武盯着那个地址。不是海市,是距离海市大约四十分钟车程的一座城市。旧居民楼,四楼朝北,凌晨五点的现在那扇窗户大概还暗着。
“我去。”周武说。
“等等。”叶诤重新打开暗链观测者。极地站节点的斐波那契数列还在走,数字已跳到让胸口发紧的段落——,,。连续三项,出现时机刚好对应普罗米修斯备忘录里标注的“行为匹配度计算完成”理论时间点。
匹配度算完了。冰架节点计时器走到这个数字,意味着已完成对母亲数据模型和叶诤当前行为模式之间的匹配度计算。结果多少,叶诤不知道。但守门人的紧急通信和“终止第三阶段”的请求,隐隐暗示一件事——匹配度超过了阈值。
系统弹出最后一条提示。
【隐藏任务“量子纠缠的攻防深渊”已完成。】
【任务成果:防御薛定谔漏洞攻击;部署因果律防护罩;定位守门人物理位置;截获守门人与零通信内容。】
【奖励发放:因果律防护罩(已激活);量子隧道穿刺副作用缩减为每次零点零五秒;进化树点数+4。当前可用点数:6点。】
叶诤看了眼技能栏,因果律防护罩旁的副作用计数器显示当前累积时间感知压缩:零点一秒。就一次。他深吸一口气,把那股微不可察的异样感压下去——零点一秒,连眨眼都不够,但神经末梢确实有了一丝极细微的迟滞,像某个瞬间手指比大脑慢了半拍。
“还有一件事。”技术小哥忽然从椅子上转过身,“你母亲那张旧身份证扫描件,系统刚才自动做了图像增强。照片背景里有个模糊的胸牌,之前分辨率太低看不清。增强之后能辨认了。胸牌上印的项目代号是——”
他停了一下。
“普罗米修斯06。”
叶诤闭上眼睛。零点一秒的时间感知压缩在神经末梢轻轻一颤。