第167章 第193步的崩塌
九月一日,晚上八点零六分。
江临结束军训,洗完澡回到402室时,研究支持单元转来的材料已经躺在固定窗口队列里。
邮件標题经过了重新编號。
【a-1/bb5/第一轮復现材料/仅供本地审查】
附件没有直接进入电脑。
附件中包含外部代码。
即使代码公开,也可能访问不该访问的文件,或者在异常输入下长期占用处理器和內存,因此必须放进断网、限权的隔离环境中復现。
江临先核对来源、文件清单、公开decider仓库的提交记录,以及內部证书草案的版本清单。
確认哈希校验无误后,他才把压缩包下载到一块专门负责外部代码审查的物理介质里。
联网电脑的网线隨即被拔除,无线模块物理断电,介质接入旁边的隔离工作站。
工作站的屏幕亮起,展露出核心材料的真容。
三份来自公开仓库的decider代码。
三套包含数千个边界情况的测试集。
三份由清华团队根据现有decider输出格式整理出来的未公开证书草案。
以及二十七个已经被原始工具验证通过,却在统一草案中暴露出栏位衝突、错误拒绝或兼容性问题的边缘样例。
目录和昨晚建立的三个空项目一一对应。
【cyclers_reproduction】
【translated_cyclers_reproduction】
【backward_reasoning_reproduction】
江临没有运行作者提供的一键脚本。
在不可信的环境中运行自动化脚本,无异於把系统底层的控制权交出去。
他新建虚擬机快照,固定了编译器版本、底层运行库和所有第三方依赖,將三个项目的网络权限从內核层面全部切断,又为原始代码目录设置了只读掛载。
每一次编译產生的中间文件、標准输出和异常退出记录,都被定向写入一个单独的復现日誌系统。
第一轮復现很快失败。
程序能够正常完成编译,首个证书的哈希却无法与原记录对齐。
cycler项目引用了一个用於证书持久化的序列化库。原作者环境中保留著旧版本,本地构建脚本却没有写明依赖上限。新版接口改变了栏位的默认编码顺序,同一个证书对象写入磁碟后,字节表示与原环境不再一致。
江临没有修改源码,也没有强行兼容新版编码,而是根据提交日期回退依赖版本,並在復现日誌中记录环境差异。
八点四十三分,第一组样例完成復现。
【写到这里我希望读者记一下我们域名 101 看书网超好用,.??????隨时看 】
屏幕上出现第一组机器编號和运行记录。
【machine_id: cy-rp-017】
【state_count: 5】
【symbol_count: 2】
【t1: 186】
【t2: 254】
【configuration_hash_match: true】
江临没有因为最后一行绿色的true就轻易接受结果。
他从空白纸带重新执行转移函数,在第186步和第254步分別导出完整有限支撑、读写头位置和內部状態,再逐项比较。
两次配置完全相同。
从第186步开始,机器落入了一个无可逃脱的陷阱。
之后六十八步形成了一个封闭的拓扑环。
图灵机再次回到与起点毫无二致的配置,它未来的全部演化,只能像推石头的西西弗斯一样,机械地重复这段轨跡,直到时间尽头。
cycler证书所需的见证对象很清楚。
一张確定的包含所有分支的机器转移表。
两个明確的整数时间点。
两份通过计算得到的,必须完全一致的机器配置。
以及从第一份配置执行到第二份配置的,可由独立程序覆核的確定性运行段。
江临把作者提供的四百二十七个普通cycler样例,送进自己的模擬器里全部重新跑了一遍。
四百二十七次测试,全数通过。
隨后,他开始进行破坏性测试。
他写了一个简易的变异脚本,隨机篡改证书中的时间点、把读写头位置偏移一格、扩大纸带验证边界,甚至仅仅是翻转了某个非活跃区间的单个符號,从而生成了一大批人为製造的偽造证书。
核验器如同无情的闸刀,將这些偽造品逐一拒绝,没有出现一次漏判。
十点五十一分,第一份復现记录撰写完成。
【cyclers_reproduction / pass】
【证书语义:精確配置重复】
【可信前提:核验器独立执行t1至t2之间的全部转移】
【异常测试:未发现错误接受漏洞】
江临保存虚擬机快照,物理切断隔离工作站的电源。
当天的固定技术窗口就此结束。
第二天清晨,他照常去操场。
军姿、队列、正步、休息、补水。
九月的阳光带著残存的暑气,在塑胶跑道上蒸腾。
白天的训练没有因为昨晚硬碟里那些复杂的拓扑结构发生任何变化。
关於图灵机的多维状態空间、停机与非停机的边界,全都被他严丝合缝地压在意识的后台,直到晚间窗口重新打开。
九月二日,晚上八点零九分。
江临开始復现translated cycler(平移循环)。
前一晚在审阅立项摘要时,为了让技术联络员快速理解,江临用了一个通俗的比喻,把translated cycler概括成了一枚不断向远处滚动的印章。
印章每翻滚一圈,就在纸带上留下一个相同的图案,只是位置更靠右了。
既然它永远在向右开拓新的未访问区域,自然永远不会停机。
但现在真正进入代码级別的復现,他需要检查的,恰恰是那段科普里最容易被一笔带过的附加条件。
印章確实可以不断向右滚动。
但它过去留下的那些旧痕跡,那些被遗忘在左侧遥远坐標上的零星符號,真的永远不会像幽灵一样,在某次未知的回溯中重新挡住它前进的去路吗?
作者提供的专用decider非常谨慎。
它不会在纸带上隨便挑选两个看起来相似的局部图案就草率判定。
只在读写头抵达此前从没到过的新位置时留下记录,等机器再次向同一方向开出新格子,再把两次记录中的读写头位置对齐。
两次记录之间,读写头向后退得最远有多少格,需要比较的窗口就至少覆盖多少格。
只有机器状態相同、窗口內的图案能够平移重合,而且窗口外的旧痕跡不会重新挡住去路,才能把它列为translated cycler候选。
前二十七个基础样例全部顺利通过。
但江临没有继续编写脚本扩大测试数量。
二十七个绿色的通过记录,只能证明本地復现环境与原作者的开发环境在依赖和编译器行为上达成了一致,却无法证明清华团队试图草擬的那套通用证书规则在数学逻辑上是可靠的。
他把目光投向了那些棘手的边缘数据。
不过他没有先处理那些被统一草案拒绝的样例,而是从已经被专用核验器和统一核验器同时接受的样例里,抽出了一台处在纸带边界附近的机器。
这台编號为 tc-edge-09 的机器,在第912步和第1074步,出现了两段形状完全相同的局部纸带图案。
內部状態一致,读写头的相对偏移量一致,第二段图案整体向右平移了十一格。
translated cycler原始判定程序將它判定为非停机。
清华团队为这类证书编写的专用核验器接受了它。
试图统合所有规则的统一核验器也返回了通过。
一切看起来都很顺利。
江临敲击键盘,调用可视化工具,把两次机器配置从局部窗口,直接展开到了整条纸带的全局视野。
第912步,在被標记为有效的窗口左侧,距离三十七格的地方,安静地躺著一个孤立的数字1。
那是机器在极早期的运行阶段,向左侧无序游荡时留下的废弃物。
在此后的七百多步里,读写头一路向右狂奔,再也没有回头访问过这个坐標。
到了第1074步,那个孤立的1依然停留在原先的绝对坐標上。主体图案向右平移了十一格,窗口內部的0和1完全一致,整条纸带却没有发生严格的整体平移。
这台机器仍然可以被正確判定为translated cycler。
原始专用decider並不需要预测机器的无限未来。它只在读写头抵达此前从未访问过的最右位置时留下记录,然后等待机器再次向右开出新格子。
两次记录之间,读写头向左退得最远有多少格,专用decider就把比较窗口至少向左扩展多少格。隨后,它將两次记录中的读写头位置对齐,检查机器状態是否相同、窗口內的图案能否在平移后完全重合。
如果这些条件全部成立,確定性的转移规则就会让下一段运行按照同样的方式整体向右平移。不断重复这一结论,便能证明机器只会继续开闢新的格子,不会重新退回窗口之外的孤立符號。
专用核验器之所以接受这台机器,是因为它会独立重放两次记录之间的运行段,重新计算最大回退距离,並检查比较窗口是否真正覆盖了所有可能重新参与演化的內容。
但在试图追求通用性的统一核验器代码里,江临没有找到这段防御性的检查逻辑。
为了让普通的cycler和复杂的translated cycler能够共享同一套精简的数据结构,草案的设计者做了一个大胆的架构妥协。
他们把窗口之外的旧痕跡以后绝对不会重新参与演化这个极其复杂的动態验证过程,强行压缩成了一个由证书生成端自己填写的布尔类型栏位。
【isolated_window: true】
对於眼前的这台 tc-edge-09 机器来说,这个布尔值在物理事实上恰好是真的。
它確实不会回头。
统一核验器虽然放弃了亲自验证,但因为它碰巧读到了一个诚实的声明,所以碰巧得到了正確的结果。
江临的眼神冷了下来。
一个被设计用来进行最终形式化裁决的核验系统,它的权威性不能建立在证书生成端碰巧说实话的脆弱基础上。
如果在法庭上,法官只凭嫌疑人自己出具的一纸无罪声明就直接落槌,那这套审判系统本身就是最大的安全漏洞。
江临在復现日誌的顶端,敲下第一条被標红的阻塞项声明。
【blocker-01:translated cycler证书缺少可独立核验的窗口隔离见证。】
【技术细节:专用核验器会独立重放两次记录之间的运行段,並校验最大回退范围;统一核验器则只读取isolated_window栏位。】
【结论:当前边缘样例虽判定正確,但该流程存在根本性逻辑断裂,无法证明统一核验系统具备抗偽造能力。】
写完阻塞项,他隨后复製了那份边缘样例,准备进行一项在系统验证领域极具攻击性的操作——构造恶意的逻辑炸弹。
原始的图灵机规则、原始的生成证书、原始的通过判定全部保留,作为比对的基准对照组。
在复製出来的新沙盒里,江临像个精密的外科医生,拆开机器的转移函数表。
改写了其中一条罕见触发的分支规则,强行修改了读写头的转向。
这台被改造过的机器,依然会在早期运行中把一个1拋弃在有效窗口之外数十格的地方,也依然会规规矩矩地完成两次相隔上百步的局部图案平移,生成一份看似无懈可击的平移证明。
但是,在这两次平移完成、骗过比对逻辑之后,江临植入的暗门被触发了。
机器的状態陷入了一个冗长的折返循环,读写头开始缓慢而坚决地向左侧倒退。
对应的恶意证书依然只提交那段表现良好的局部快照,並在隔离声明栏位里,堂而皇之地填上了代表安全的真值。
【isolated_window: true】
机器的静態描述哈希、窗口內部的运行轨跡追踪、以及局部的配置快照哈希,全都顺利通过了统一核验器的重重重算。
唯一没有被核验器独立沙箱验证的,依然是那个问题。
窗口之外的符號,到底能不能重新侵入读写头的路径?
原版专用核验器重新执行证书对应的运行段,发现读写头的最大回退范围越过了证书声明的隔离边界,因此拒绝了这份证书。
然而,清华团队主推的现有统一核验器,毫无防备地读取了那个虚假的布尔值,跳过了边界检查。
屏幕上,一行刺眼的绿色字符跳了出来。
【certificate valid(证书有效)】
江临盯著这行违和的绿色字体看了一会儿,调出自己编写的底层模擬器,將这台被篡改的机器置於空白纸带上,让它在没有环境干预的情况下自然演化。
时间流逝。
终端上的步数计数器疯狂跳动。
第6841步,向左折返的读写头越过证书声称不会回访的边界,碰到了窗口之外那个孤立的1。
局部平移结构隨即被破坏。机器沿著新触发的转移继续执行,进入停机状態。
而就在几分钟前,代表著最高审查標准的统一核验器,刚刚庄严地接受了一份证明这台机器永远不会停机的法定证书。
江临面无表情地敲击回车,把测试环境完全重置,清空所有缓存,再次运行整个流程。
结果没有任何改变。
绿色的有效声明,与最终的停机事实,构成了极其讽刺的对比。
这次漏洞,错误不在挖掘出这台机器的原始decider,也不在於那个勤勤恳恳做边界检查的translated cycler专用核验器。
它完全且只存在於那份雄心勃勃,试图用一套简洁结构容纳三类复杂数学证明的统一草案之中。
原样例里的隔离声明確实是真的,偽造证书里的同一声明却是彻头彻尾的谎言。
统一核验器读取了这个决定生死的栏位,却主动切断了分辨真偽的神经。
一个试图用形式化工具缩小可信边界、消除人类干预的系统,在最底层的架构设计上,反而把最核心的判断权,原封不动地交回了根本不受信任的证书生成端。
晚上十点五十六分。
江临没有继续去修改草案的验证代码。
在確认了架构上的逻辑断裂后,修补几行代码没有任何意义。
他保存了那份恶意偽造的失败证书,长达6841步的完整运行轨跡,统一核验器被欺骗后的接受日誌,以及最终停机配置、完整纸带快照与运行轨跡,生成了一个独立的隔离復现包。
【tc_false_accept_case_01】
但这还远远称不上是一个优雅的最小反例。
当前的测试对象依然保留了太多原始机器复杂的转移结构,需要运行足足六千多步,状態空间膨胀到难以肉眼追踪,才会暴露出核心衝突。
这种庞大且混乱的用例,对於需要进行人工逻辑覆核的研究员来说,无异於在垃圾堆里找线索,说服力大打折扣。
江临移动滑鼠,把任务看板上的状態从【漏洞確认】改成了【反例压缩】。
十一点,固定窗口关闭。
江临保存所有进度,安静地合上电脑。
第三天晚上,江临依然没有去碰第三个项目 backward reasoning(反向推理)。
他调出了昨晚那台错误接受的测试对象,开始进行枯燥却需要逻辑直觉的剪枝工作。
他要在不破坏底层漏洞逻辑的前提下,逐项刪除机器多余的状態节点和转移路径。
首先,他尝试將五个状態节点压缩成四个。
刪去一个辅助跳转状態,重新路由相关的转移指令。
重新运行统一核验器,依然被欺骗接受。
运行模擬器,机器依然在数千步后停机。
错误路径存活。
接著,他盯上了转移表里一条只有在机器刚启动,向左游荡那几十步里才会被触发的冗余支路。
手起刀落,將分支抹平。
重新测试,错误仍然存在。
隨后,他开始挑战物理空间的极限。
那台机器把炸弹符號扔在了距离主体图案三十七格远的地方。
这太远了。
江临调整了写入逻辑,让机器刚走出去九格,就把那个1留在原地,然后立刻掉头开始构筑偽造的平移结构。
统一核验器依然对九格之外的隱患视而不见,盲目接受。
而原本要熬到第6841步才会暴露的衝突,因为物理距离的缩短,被极大地提前到了第193步。
江临看著转移表,试图进行最后一次极限压缩。
他试图再刪掉一个状態节点,让机器变成三状態。
但这一次,数学的刚性显现了。
在当前构造中,再刪一个状態便无法同时保留局部平移和延迟回访。
江临毫不犹豫地撤销更改,退回到上一个四状態版本。
压缩后的样例只保留四个状態、七条有效转移、一个位於窗口外九格的符號,以及两次相隔26步的偽平移配置。
统一核验器在不到一秒內接受了证书。完整模擬运行到第193步时,读写头重新碰到窗口外的符號,机器隨即停机。
而將其放入底层模擬器,仅仅在运行到第193步时,读写头便撞上了那个遗留的符號,机器宣告停机。
【tc_false_accept_case_01 / compressed】
【verifier_result: accept】
【ground_truth: halt_at_193】
【root_cause: unverified_isolation_claim(未核验的隔离声明)】
江临连接了宿舍里的小型印表机,伴隨著轻微的机械运作声,把这份浓缩了整个验证漏洞的完整反例列印到了两张a4纸上。
第一张,是清清爽爽的四状態转移表,以及前两百步纸带演化的关键帧图解。
第二张,是统一核验器从读取恶意证书、跳过边界检查,一路狂奔到返回接受结果的底层系统调用路径。
这晚,江临並没有急於把这份足以推翻现有草案的反例发出去。
本章未完,点击下一页继续阅读。