第168章 架構落定,不可逾越的邊界
九月六日,晚上七點五十八分。
江臨坐到電腦面前的時候,固定窗口裡,多了一項十五分鐘的閉門會議提示。
【會議通知】
主題:A-1/BB5/統一草案撤回後的邊界校準
議題一:現有工作保留範圍
議題二:Backward Reasoning復現計劃
議題三:共享可信核的下一版結構
桌面上,昨晚那封確認郵件已經完成處置。
在那封郵件里,第193步反例復現成功,舊統一草案被正式宣告破產。
四狀態圖靈機在無垠的空白紙帶上留下了它的痕跡。
項目的三類原始decider及既有分類結果繼續保留。
今晚,無須再討論那台四狀態機器為什麼會在第193步停機。
數學和邏輯的法庭上,反例一旦成立,爭論便隨之終止。
真正需要確定的,是那份被截停的草案究竟要拆到哪一層,以及在這場浩大的解構之後,還能在廢墟中留下什麼。
……
事實上,在會議接通前的半小時,清華大學項目組的辦公室里,周述還在瘋狂修改著第三套方案的草稿。
過去的一天一夜,他幾乎沒有合眼。
他嘗試了十七種不同的接口重構,試圖把Backward Reasoning龐大的搜索樹壓進一個標準格式里。
但每一次,只要他不把那個臃腫的搜索算法帶進去,核驗器就無法確認結果。
「根本拆不開。」周述煩躁地揉著眉心,對一旁的葉寧說,「要想向一個毫無智能的程序證明反向沒有路,除非讓它自己再去把路搜一遍。我們之前的設計之所以要讓證書自己聲明,就是因為工程上不可能把搜索過程交給核驗器去驗收,那會把核驗器撐爆的。」
帶著這種這是一個工程死結的深切無力感,周述進入了八點整的會議。
……
八點整。
屏幕上的倒計時歸零,會議準時接通。
屏幕被分割成五個大小不一的窗口,連同江臨在內,五個人處於各自不同的物理空間,卻被同一條邏輯鏈條拴在了一起。
主持會議的是位於正上方窗口的喬聞鐸。
他背後的書架上堆滿了厚重的理論計算書籍和歷年項目的歸檔卷宗。
作為清華計算機系教授、博士生導師,同時也是這個BB5項目的架構負責人,喬聞鐸有著十餘年程序語義與形式化驗證的經驗,曾主持過驗證編譯器和安全關鍵軟體的可信核審查。
在他的研究組裡,有一種近乎殘酷的共識:作者親手跑出的綠色結果,充其量只能算作內部實驗記錄。
換一批人、換一種完全不同的語言實現、只憑公開的規格說明書重新得到同一結論,這個結果才有資格被寫入正式的證明鏈中。
喬聞鐸是一個極少在技術意見里使用帶情緒形容詞的人。
然而,在昨晚的處置紀要里,他連續寫了兩次嚴重。
對於形式化驗證而言,一個能夠被繞過的核驗器,比一個完全不工作的核驗器更加危險。
左側窗口是葉寧,組裡的助理研究員。
她負責decider結果復現與Translated Cycler的專用核驗,有著多年和底層代碼搏鬥留下的沉穩。
既能閱讀高視角的計算理論證明,也能一路追潛到模擬器最底層的單步轉移函數。
項目早期,她曾用另一套實現獨立重放了百萬級機器的分類過程。
原工具與復現結果出現的幾處微小邊界差異,都是她從海量的紙帶快照里,一格一格用肉眼和腳本找出來的。
昨晚,第193步反例送達後,也是她帶著兩名研究生從空白紙帶重新跑完全部軌跡,確認問題確實停在統一草案的驗收層,沒有越過原始decider的邊界。
右下角窗口裡,戴著黑框眼鏡的青年研究員周述顯得有些憔悴。
他是姚班本科畢業後留校直博的尖子生,研究方向正是攜帶證明的代碼與最小可信計算基(TCB)。
那份被宣告破產的舊統一草案,正是由他主筆。
過去三個月里,二十七個模塊、四百多項接口測試和兩輪繁複的證書格式遷移,大半經過他的手。
他設計這套草案的初衷無比正確:把最終需要信任的代碼壓縮到儘可能小。
然而,問題恰恰出在這次過度的壓縮上:一項本該由核驗器親自下場完成的證明義務,為了統一接口,被縮減成了證書生成端填寫的一個布爾值True。
最後一個窗口沒有開啟攝像頭,那是研究支持單元的技術聯絡員。
負責會議紀要的實時錄入、版本封存和材料隔離,從不參與任何證明判斷。
他的麥克風傳出細微的紙張翻動聲,他的面前攤著一份列印稿,第一頁右上角已經蓋上了刺眼的紅色印章:【WITHDRAWN】。
沒有人寒暄。
會議接通的瞬間,周述便直接共享了過去二十四小時的緊急審計表。
數據在屏幕上展開,嚴謹而清晰。
【可原樣保留】:19項(包括基礎狀態定義、紙帶讀寫頭邏輯等)
【需拆回專用規則】:5項
【涉及未核驗信任聲明,直接廢止】:3項
頁面下方,列著三套經過整日爭吵後得出的備選方案。
【方案一:共享核回調原專用decider】
優點:恢復最快,代碼改動最少。
代價:搜索程序重新進入可信邊界。
【方案二:將三種decider全部納入可信核】
優點:外部接口最少。
代價:可信核膨脹成三套decider的總和,失去小而可審的意義。
【方案三:共享機器語義,分離三套核驗規則】
優點:可信邊界清晰,每套規則只驗收有限見證。
代價:需要重新設計見證結構,Backward Reasoning尤其困難。
葉寧率先打破沉默,她的聲音透過網絡傳輸略顯失真,但邏輯依然鋒利:「第一套方案能最快恢復進度,但這意味著裁判又要重新相信尋找證據的搜索程序。第二套方案最省接口,但可信核的體積會膨脹成三套decider的總和。這違背了我們建立可信計算基的初衷。」
「我們組內經過討論,傾向於第三套方案。」周述接過話頭,他的嗓音有些沙啞,顯然熬了一個通宵,「可第三套還是有一個問題,三套規則進入可信核以後,怎樣保證我們只是拆開了證明義務,而非換個名字重造三套decider?」
他將屏幕上的架構圖放大,紅色的高亮標記圈出了幾個關鍵模塊。
decider之所以難以被形式化信任,恰恰因為它的本質是探索。
它會使用啟發式算法去搜索、去猜測未知的狀態。
它會為了效率進行大幅度的剪枝、合併狀態空間,並使用各種優化策略。
如果所謂的分離規則仍然在底層把這些探索性的工作全做一遍,那麼可信邊界根本沒有被縮小,它只是從一個巨大的黑箱,變成了三個稍微小一點的黑箱。
江臨移動光標,打開昨晚自己歸檔的一份手繪架構草圖,將屏幕共享權切了過來。
在圖表上的搜索程序與核驗規則之間,用紅色的線條劃下了一道不可逾越的鴻溝。
「decider負責在黑暗裡找證據,核驗規則只負責在燈光下驗收證據。」
江臨的聲音平靜,卻帶著不容置疑的確定性。
「搜索端可以擴展大量局部配置,反覆進行前驅生成、去重與剪枝;核驗端只檢查證書提交的有限對象。它不搜索新節點,也不依賴任何決定結論的啟發式優化。」
江臨將光標停在那條紅線上。
「它只回答兩個最簡單的問題:第一,證書里列出的事實,能不能由機器的最底層轉移表重新推算出來?第二,證書聲稱覆蓋的證明義務,在數學上有沒有邏輯缺口?」
周述注視著屏幕上那條涇渭分明的分界線,鏡片後的眼睛微微眯起,沉默了幾秒鐘,說道:「也就是說,搜索端可以繼續保持聰明、狡猾甚至激進,但裁判端必須足夠笨。」
「越笨越好。」江臨毫不遲疑地回答,「笨到任何一行代碼都能被人工一眼看穿。」
葉寧將第三套方案移到了頁面的最上方,快速評估了可行性,說道:「Translated Cycler這邊可以做到,專用的decider繼續在外面負責尋找平移段,規則層只負責重放這一段有限的運行軌跡,然後再檢查最大回退範圍。所有的搜索和探測策略,全部留在邊界外面。」
周述揉了揉眉心,提出了最棘手的問題:「普通的Exact Cycle 循環也可以直接拆。真正卡住我們的,還是Backward Reasoning。它交來的結果如果仍然是一整棵龐大的反向搜索樹,小核驗器照樣要陪著它重新遍歷一遍。這又繞回了原點。」
江臨切換了終端頁面,敲擊了幾下鍵盤,調出了一個全新的目錄。
【Backward_Reasoning_Reproduction/PENDING】
「所以,第三類程序現在還不能直接接入。我今晚會進行復現和重構。它最終需要交出來的,應該是一張已經窮盡所有可能的『有限地圖』,而不是冗長的搜索過程。」
一直靜靜傾聽的喬聞鐸此時終於開口:「一張地圖,怎樣在不藉助外部搜索的前提下,向一個毫無智能的核驗器證明自己沒有漏掉任何一條路?」
「讓核驗器根據機器的單步轉移表,自己去倒推地圖上每一個節點的合法前驅。」江臨給出了答案,「核驗器絕不往外做任何探索。它只做一件事:核對根據規則計算出的所有合法前驅,是否都已經存在於這張地圖的邊界之內。」
喬聞鐸深深地看了屏幕里的江臨一眼,轉頭看向周述。
「把江臨剛才說的這句話,一字不差地寫進第三套方案的設計約束里。」
周述的手指在鍵盤上飛快敲擊,紀要系統里立刻多了一行加粗的紅字。
【系統設計鐵律:搜索與推斷能力不得進入可信核;可信核只驗證有限見證及其邏輯閉合義務。】
隨後,周述拿起手邊那份蓋有撤回標記的第一頁列印稿,將其翻了過去,露出下面密密麻麻的底層代碼。
「如果Backward Reasoning也能按照這條邊界清晰地拆開,那麼過去三個月的工作,就真的只廢掉了最上面的那三項統包接口。」周述長舒了一口氣,「新規範出來以後,其中一套獨立實現,由我來寫。」
八點十五分,十五分鐘的議程結束,會議通道關閉。
江臨回到隔離工作站的界面前。
前兩個復現目錄【Cyclers_Reproduction】和【Translated_Cyclers_Reproduction】保持著加密封存狀態。
他移動滑鼠,只雙擊打開第三個目錄。
【Backward_Reasoning_Reproduction】
這個目錄此前只有一個空殼和幾份基礎材料,連復現環境都尚未搭建。
江臨從九月一日保存的絕對乾淨的空白虛擬機基線中,複製出了一份新的系統快照。
接著嚴格按照項目版本清單,逐一載入編譯器、依賴庫和基礎運行環境。
隨後將源碼目錄的權限硬性修改為只讀。
所有的測試材料均採用六月修訂後的公開哈希版本,舊的Git提交記錄與舊的日誌輸出被打包隔離在獨立的歷史目錄中,確保它們絕不干涉本輪的復現結果。
八點三十一分。
所有的準備工作完畢。
提交號、依賴版本和測試集哈希全部被封存。
Backward Reasoning(反向推理)程序,在這個與世隔絕的獨立環境中正式啟動。
與前兩種試圖預測未來的方法完全相反,Backward Reasoning 的運行邏輯是反直覺的。
它不跟著圖靈機的讀寫頭從空白紙帶的起始狀態出發,去一步步追問未來會發生什麼。
它選擇站在圖靈機停機的終點站,轉過身,往回看。
為了在腦海中具象化這個過程,可以想像一座道路錯綜複雜,龐大到看不見邊界的超級城市。
這台圖靈機就是一個在城市中遊蕩的機器人。
機器人從一間全白的初始屋子出發,停機則是一扇寫著下班的終點之門。
傳統的正向模擬,相當於一個人跟在機器人身後,看著它今天向左拐,明天向右轉,默默記錄,等待它自己某一天湊巧走到那扇門前。
如果這個機器人陷入了某種死循環,或者在無盡的荒野中向著遠離門的方向一直亂走,跟在後面的人就只能在絕望中無止境地等下去,直到宇宙熱寂。
反向推理則採取了截然不同的哲學。
它先派人直接站到那扇下班門前,不問來路,先找出所有能夠一步跨進門裡的位置。
假設有三個這樣的位置,就把它們標記為距離終點一步。
接著,再從這三個位置繼續往回找,標記出所有能夠通過兩步到達門口的位置,然後是三步、四步、更多步。
如果經過一段時間的瘋狂擴張,尋找前驅的過程突然停止了,不再有新的位置被加入進來。
最終,反向推理程序繪製出了一張邊界清晰的有限地圖。
這意味著,所有理論上能夠通向終點門的道路,哪怕是迂迴曲折的,都已經全部被圈入這張地圖之中。
地圖的邊緣,再也找不到任何一個可以進入內部的隱秘入口。
此時,只要檢查最後一件事情:機器人最初所在的那個全白屋子,在不在地圖上?
如果不在,結論便確鑿無疑。
因為通往終點的路已經被窮盡,而起點不在這些路上,所以機器人永遠無法走到終點。
這就是Backward Reasoning證明圖靈機不停機的核心數學思想。
然而,這套思想在工程實現上的巨大麻煩,深深隱藏在窮盡所有道路和沒有任何遺漏這幾個字里。
一個龐大的搜索程序,可以自信地列印出一行日誌,聲稱自己已經把路找完。
但最終的可信核驗器,絕不能因為這句毫無根據的聲明就蓋章放行。
第193步的致命反例剛剛用血淋淋的事實證明,把關鍵的閉環結論交給證書生成端去自說自話,只會讓可信核重新長出同一處潰瘍。
江臨敲擊回車,運行了第一組公開的測試樣例。
終端很快給出結果。
【Backward_Depth:300】
【Decision:NON_HALTING】
與結論一同留下的,還有數量龐大的節點擴展、前驅生成與重複配置合併記錄。
這些記錄能夠說明原decider怎樣得到答案,卻無法成為一份輕量證據。
另一套程序若想沿著日誌確認結論,幾乎等於重新執行一次反向搜索。
這樣一來,複雜的搜索程序仍然留在可信邊界之內。
江臨面無表情地關閉日誌窗口。
他不需要這些冗長的證明過程,也不需要知道程序是如何在黑暗中摸索的。
所以只抽取最後留下的那張結果地圖。
地圖上的每一個節點,代表著圖靈機在某一刻可能處於的局部快照:當前內部狀態、讀寫頭腳下的符號,以及讀寫頭周圍一小段已經確定的紙帶內容。
最關鍵的是,窗口以外的區域不默認全是0,而是明確標記為未知。
因此,一個節點代表的不是一張具體的完整紙帶,而是一個集合,所有可能從這段局部已知圖案向外延伸出去的,無數種紙帶情況的總和。
江臨開始重構代碼。
將小核驗器需要做的事情,暴力壓縮成了三項絕對客觀的檢查。
第一重驗證:檢查所有能夠直接觸發停機狀態的紙帶入口,是否都已經一字不落地包含在這張地圖中。
第二重驗證:針對地圖裡的每一個已知節點,根據圖靈機的規則,逐條倒推它所有合法的上一步。核對這些前驅是否必然落在地圖的現有節點集合內。絕不能有一條合法的路徑,從地圖的虛無邊緣悄悄漏進來。
第三重驗證: 檢查全白紙帶上的初始狀態快照,絕對不能出現在這張地圖裡。任何試圖通過坐標系平移、或者局部窗口裁剪來隱藏起點的欺騙手段,都必須被識別。
只要這三項檢查通過,無論原先的搜索過程是聰慧還是愚笨,是耗時一秒還是一年,都可以從裁判席上光榮退役。
證書只負責提交這張有限的靜態地圖。小巧的核驗器自己負責檢查地圖的邊界是否完全封閉。
九點四十一分。
第一份符合新規範的反向不可達見證在江臨的指尖生成。
他毫不猶豫終止原decider進程,清除它留下的臨時文件,只保留機器描述與見證文件。
隨後啟動剛剛編譯好的獨立核驗器。
屏幕上沒有重新渲染幾百層的反向搜索樹。
核驗器如同一個沒有感情的齒輪,逐個讀取地圖節點,死板地按照機器的單步轉移表,重新計算所有的前驅。
四秒鐘後,屏幕刷新,四行代表通過的綠色字符依次躍出。
【HALTING_ENTRANCES/COVERED】
【PREDECESSOR_SET/CLOSED】
【BLANK_INITIAL_CONFIGURATION/ABSENT】
【WITNESS/VALID】
一份原本依賴程序發誓它不會停的複雜結論,在這一刻,第一次變成了一張可以完全脫離原程序,由任何第三方工具獨立驗收的有限路線圖。
江臨並沒有在這一串令人心安的綠色結果前停下腳步。
對於一個旨在無懈可擊的安全架構來說,能驗證正確的結果只是及格,能防住精心構造的惡意欺騙才是核心。
他複製了剛才那份有效的見證文件,打開了十六進位編輯器,開始手動捏造三份用於攻擊的惡意樣例。
第一份攻擊樣例:他在地圖中間,人為地刪掉了一個合法前驅節點。這相當於在原本封閉的城牆上,硬生生砸出了一個缺口,抹去了一條確實存在的進路,試圖欺騙核驗器這張地圖已經封閉。
運行核驗器。
【REJECT/MISSING_PREDECESSOR】
紅燈亮起。
核驗器在倒推時,發現了一個算出來的前驅不在名單上,當場拒收。
第二份攻擊樣例:他不動地圖結構,而是悄悄挪動了局部窗口的坐標原點參數,試圖將全白紙帶上的起始狀態,通過坐標系的偏移偽裝成另一個不相關的邊緣位置,藉此繞過起點檢查。
運行核驗器。
【REJECT/BLANK_START_HIDDEN_BY_TRANSLATION】
紅燈再次亮起。
嚴格的坐標對齊邏輯識破了偽裝。
第三份攻擊樣例:他保留了全部真實的節點,卻把幾處明明尚未收攏、還可以繼續往外推導的邊緣節點,強行打上了已封閉的標籤。
運行核驗器。
核驗器沒有理會標籤,它根據轉移表現場倒推,準確地找到了證書里沒有列出來的合法的上一步。
【REJECT/FALSE_CLOSURE】
三盞紅燈依次在屏幕上亮起,仿佛三道堅不可摧的鐵閘。
每一盞都精準地停在了偽造發生的第一現場。
在整個駁回過程中,核驗器沒有調用一次原始的Backward Reasoning decider,也沒有相信證書里那句虛假的已檢查聲明。
江臨將一份有效見證、三份偽造見證、獨立核驗器的源碼,以及一頁極為簡練的人話說明文檔,封裝進同一個壓縮目錄。
【Backward_Unreachability_Witness_v0.1】
【Backward_Rule_Checker_v0.1】
【Adversarial_Cases/3】
隨後,他把今晚會議中各方同意保留下來的共同部分,如同拼接精密儀器的底座一般接了上去。
機器描述哈希值。
空白紙帶初始條件定義。
單步轉移語義引擎。
證書類型路由標籤。
失敗位置的追蹤器。
公共層的職責,到此戛然而止。
在路由標籤下方,三條核驗路徑開始各走各的路,互不干擾。
前兩條路徑沿用已經確認無誤的專用證明義務。
而今晚新接入的反向不可達規則,只負責檢查通往下班門的有限地圖有沒有漏路,以及起點是否被安全地排除在外。
十點五十二分,江臨點擊了發送。
復現包經過研究支持單元完成版本核驗與轉發。
郵件標題沿用了原先的追蹤編號,只在末尾增加了一項狀態說明。
【A-1/BB5/Backward Reasoning/Independent Witness Ready】
此時,距離技術窗口的關閉時間還剩八分鐘。
江臨按部就班地導出運行日誌、封存當前的虛擬機快照,最後關閉隔離工作站。
機箱風扇的嗡鳴聲漸漸平息,江臨站起身,活動了一下酸痛的頸椎。
冰箱裡還放著前晚剩下的半盒葡萄,桌面上那兩張印有第193步反例軌跡的紙張,已經被他整齊地收進了一旁的黑色文件夾。
那台引發軒然大波的四狀態機器,已經完成了它作為試金石的任務。
接下來要接受整個團隊嚴苛審查的,將是這張從終點向後展開的地圖。
九月七日,早上七點十二分。
北京的晨霧還未散去。
周述已經坐在了項目組那間寬敞的辦公室里,手邊放著一杯早已涼透的濃縮咖啡。
他頂著濃重的黑眼圈,先是校驗了江臨發來的復現包哈希值,確保文件在傳輸中未被篡改。
隨後將龐大且複雜的原 Backward Reasoning程序,連同它所有的依賴庫,一把從運行路徑中徹底移出。
現在的測試環境裡,只剩下機器描述文件、幾份體積小巧的有限見證,以及那個剛剛誕生的核驗器。
回車鍵敲下。
有效見證,順利通過。
江臨隨包附帶的三份公開對抗偽造見證,依次在預期位置被無情拒絕。
但周述並沒有在這裡停下。
作為曾經踩過雷的主筆,他的多疑已經被激發到了最高點。
他轉身從內部的高度機密結果庫里,抽出了一台江臨此前絕對沒有見過的真實圖靈機描述。
叫來剛進辦公室的葉寧,讓她按照昨晚的新規範,用另一套工具將他們自己的反向搜索結果,導出為有限地圖格式。
新核驗器根本不需要知道這張地圖是誰生成的,也不關心它是怎麼找出來的。
它像一個盲人摸象的機器,只管順著機器轉移表,一個個節點去檢查前驅。
葉寧看著屏幕上連續亮起的綠燈,多年的底層找蟲經驗讓她本能地生出一股不服輸的勁頭。
「他只花了一個晚上,我不信這套防禦網沒有一點縫隙。」葉寧將咖啡杯推到一邊,雙手敲擊鍵盤的速度驟然加快,「周述,數學閉環暫時沒看出問題,那我先試證書結構。」
她複製那份有效見證,將其中一個節點記錄的前驅編號改成節點表範圍以外的數值,又重新生成外層文件校驗。
這份證書在形式上依然能夠被讀取,內部卻指向了一個根本不存在的節點。
若核驗器沒有先檢查引用範圍,後續的閉合性判斷便可能讀取錯誤對象,甚至直接異常退出。
葉寧提交修改後的見證。
核驗器完成文件解析,卻沒有進入機器語義與反向閉合檢查。
【REJECT/OUT_OF_RANGE_NODE_REFERENCE】
日誌同時給出具體位置。
【NODE:184】
【PREDECESSOR_REF:OUT_OF_RANGE】
等葉寧調出輸入層的處理流程。
核驗器在接觸任何數學規則以前,已經依次檢查節點數量、編號唯一性、引用範圍和機器綁定。
不料畸形證書連進入證明核驗階段的資格都沒有。
「結構層先拒絕壞證書,證明層再判斷數學。」周述看著那行紅字,苦笑了一聲,「不用白費力氣了,這兩層他也分開了。」
葉寧抿了抿嘴唇,決定轉向更隱蔽的機器綁定問題,發起最後一次攻擊。
她拿回那份有效見證,用文本編輯器換掉了機器描述文件里的一條轉移規則,試圖張冠李戴,讓一張真實的地圖去替另一台完全不同的機器作無罪辯護。
這一次,程序甚至沒有運行到反向規則檢查的那一步。
公共層在讀取配置時,便如同觸電般截住了它。
【REJECT/MACHINE_WITNESS_MISMATCH】
周述見狀嘆了口氣,搖搖頭,把核驗器的最後一個調用路徑追蹤完畢。
結論無可辯駁:它不會擴展搜索深度,不會在運行時猜測新的局部配置,甚至沒有讀取原decider留下的任何緩存碎片。
證書給多少節點,它便一絲不苟地驗多少節點。
證書哪怕少交一條合法前驅,它就會毫不留情地停在缺口前報錯。
周述將原始decider的複雜調用圖,與新核驗器的精簡調用圖,並排投射到了辦公室的白牆上。
左邊的圖譜層層疊疊,如同繁茂的原始森林,充滿了搜索、啟發式剪枝、狀態合併不確定性。
右邊的圖譜卻猶如一根筆直的標槍:只有機器單步語義、前驅生成、集合包含與閉合性檢查,以及初始狀態排除。
葉寧端著水杯看了一會兒,緩緩說出了昨晚江臨那句話的後半句。
「搜索程序可以繼續聰明,而裁判,終於笨到了足夠可信的地步。」
十一點,喬聞鐸推門走進辦公室。
他沒有看那些繁複的代碼,而是先仔細查閱了防住第四份攻擊的日誌,接著看了牆上那兩張對比強烈的調用圖,最後翻到了江臨寫的那一頁極度凝練的人話說明。
「第193步反例,證明他有能力找到我們的錯誤。」喬聞鐸的手指輕輕敲擊著桌面,聲音中帶著罕見的讚許,「而今天這份見證說明,他不僅能破,而且知道正確的可信邊界,究竟應該用什麼材料、建在哪個坐標上。」
他把厚厚的復現報告推回給周述。
「今天下午,把兩套實現的人員名單和測試隔離方案徹底定下來。框架已經立住,該我們幹活了。」
與此同時,在校園另一端的操場上,軍訓照常繼續。
九月七日的太陽比前幾天更加毒辣。塑膠跑道散發著刺鼻的橡膠味,綠色的方陣在廣闊的場地上移動。
「向右——轉!」
「齊步——走!」
「立定!」
隊列在教官嘶啞的口令中轉向、齊步、停下。
江臨面無表情,汗水順著臉頰滑落,砸在迷彩服的領口。
他和其他幾千名新生一樣,按照集體的節奏,機械地完成著每一個動作。
陽光晃得人睜不開眼。
辦公室里發生的那場關於圖靈機與計算邊界的高層次討論,沒有一絲一毫進入他的白天。
他的世界此刻只有燥熱的微風,發酸的小腿,以及遠處食堂飄來的飯菜香氣。
兩個世界,在現實的物理空間裡摺疊,互不相干。
晚上七點五十三分,夜幕降臨。
江臨剛洗完澡,研究支持單元的技術聯絡員便轉來了下午的復現結果與一項臨時會議請求。
【復現評估報告】
有效見證: 通過
三份公開對抗見證: 全部在預期位置拒絕
團隊追加攻擊:MACHINE_WITNESS_MISMATCH/拒絕
核驗過程:整個生命周期內未調用原 Backward Reasoning decider
復現結論:證明規則已具備脫離搜索程序獨立運行的能力。架構分離可行。
八點整,前一晚的五人會議重新上線。
周述一掃昨夜的陰霾,顯得異常亢奮。
他把那份舊草案的列印稿舉到了鏡頭前。
昨天還在上面的那個寫著統一證書的龐大方框,已經被他用剪刀整塊剪掉,留下一個規則的方形窟窿。
而在窟窿下方,保留下來的十九項機器語義、測試樣例與失敗追蹤,被重新用馬克筆畫進了一隻更小更緊湊的公共框架里。
公共框架之下,三條清晰的紅線分別連向三套獨立的驗證規則。
「昨晚那個靈魂拷問,我今天白天重新核驗了一遍。」周述的聲音里透著如釋重負的輕鬆,「過去三個月的心血,大部分都還在。我們撤掉的,僅僅是那種非要讓三種截然不同的證據,去說同一種標準語言的傲慢要求。」
他放下手中殘缺不全的列印稿。
「Backward見證的閉環已經走完了,白天我們團隊自己加了一份你沒見過的機器綁定攻擊樣例,也被公共層準確地擋住了,你的防線非常堅固。」
葉寧隨即共享了最新的任務表。
兩支實現組已經完成隔離。
代碼倉庫、編譯環境和內部溝通頻道全部分開。
一支沿用項目現有語言,另一支採用不同語言,只依據凍結後的規範從零重寫。
雙方都要獨立完成三套核驗規則,在盲測結束以前,任何一方都看不到對方的代碼。
「具體實現由我們負責,隱藏測試集交給第三方。」葉寧說,「你只負責凍結規範和公開測試向量。」
喬聞鐸將一張全新的系統架構圖投到了共享屏幕的正中央。
【Shared Machine Semantics (公共機器語義層)】
├── 【Exact Cycle Rule (精確循環規則)/READY】
├── 【Translated Cycle Rule (平移循環規則)/READY】
└── 【Backward Unreachability Rule (反向不可達規則)/READY】
在三套閃爍著綠色READY標識的規則下方,還有一行灰色字體,靜靜等待著被點亮。
【Independent Blind Replay (獨立盲測重放)/PENDING】
「兩套實現團隊,從明天起互不交換任何代碼,這是我們這邊的內部隔離方案。」
喬聞鐸看向江臨所在的窗口,語氣中帶著明顯的徵詢。
這次BB5項目的攻堅,本就是他們團隊主動發出的合作請求。
「所有的真實證書、偽造證書,以及帶有陷阱的隱藏樣例,我們會統一交由第三方安全團隊進行打包混淆。」
喬聞鐸說明了接下來的安排,隨後用商量的口吻提出了建議。
「江臨,接下來的盲測階段,你看這樣安排是否合適:盲測集就不勞煩你親自過目了,具體的語言實現和代碼Bug交由那兩支團隊自己去頭疼。你只需把控規範,不用把精力消耗在這些底層工程問題上,同時也能最大程度保證最終審查的客觀性。這個流程,你看可以嗎?」
隨後,喬聞鐸在項目的協作架構表上做了一項權限變更,在權限最高的一欄設置了一個新的節點,並填上了江臨的名字。
【可信核架構與證明邊界審查:江臨】
在協作表的前幾行,寫著項目總牽頭人喬聞鐸、規則負責人葉寧,以及實現組主筆周述。
而江臨的位置,獨立於所有工程實現模塊之外,猶如達摩克利斯之劍般,高懸在整個可信核架構的頂端,擁有絕對的一票否決權。
儘管在名字旁邊的系統身份欄里,依然只是一行簡單得過分的文字。
【清華大學求真書院/2022級本科生】
但這早已不是什麼需要被團隊審查的標籤。
早在解決江氏磚和PFR猜想時,這個名字在理論界的含金量就已經聞名過學術界。
如今,那條撕碎舊草案的第193步停機軌跡,以及今晚這張堅不可摧的反向推導地圖,更是讓屏幕這頭的幾位頂尖學者心服口服。
他們很清楚,是他們在仰仗這位天才大腦來給BB5項目兜底,而不是他們在給他分配任務。
從這項權限生效的那一秒開始,凡是涉及BB5項目共同機器語義的改動、證書綁定的邏輯,必須先過江臨這一關。
兩支高學歷的實現團隊,將完全在他的架構圖紙下進行盲人摸象般的編碼工作。
這是一種基於絕對智力的信任託付。
周述拿起電子筆,毫不猶豫地在協作表上籤下了自己的確認名字。
「我贊成。」周述看著鏡頭,語氣中不僅是誠懇,甚至帶著一絲受教的敬意,「能把我花了三個月蓋起來的危樓,精準地拆掉三塊承重牆,保留下十九根好柱子,然後再給出一張堅若磐石的新圖紙。能請到江神來做這套系統的最高法官,是這個項目的運氣。」
對於喬聞鐸的提議和團隊的表態,江臨並沒有表現出多餘的情緒波動。
對於他而言,真理本就該是這個運轉方式。
既然架構上的話語權和隔離機制已經確立,那他自然不用再管那些底層的泥瓦匠活兒。
「可以。」江臨簡短地回復。
隨後,他移動滑鼠,在後台管理界面點開了版本控制選項,按下了那個象徵著規範鎖定的按鈕。
【Shared_Verification_Kernel_Spec_v0.1-rc1/FROZEN】
周述在會議紀要的最下方,用一段感性的文字作為總結。
【統一的是門框和鎖孔,但三類證明證據,各自保留自己的鑰匙。】
江臨看到這行字,指尖在鍵盤上短暫停頓。隨後,他在周述的那句話下方,敲下了一行補充。
【三把鑰匙,三套齒紋,誰也不能代替誰。如果有人想用一把鑰匙開所有的門,防盜系統必須報警。】
時鐘指向八點十五分,項目總控面板的狀態再次自動刷新。
所有前置審查全線變綠。
進入盲測階段的大門正式開啟。
會議結束,通道的連接切斷。
周述靠在椅背上,看著屏幕上那行代表著候選規範凍結的綠色字符。
「他今年才多大?」葉寧忽然開口打破了沉默,語氣裡帶著幾分鬱悶的複雜,「二十歲都不到啊。」
「別用年齡去衡量那種怪物,會讓人抑鬱的。」周述摘下黑框眼鏡,捏了捏鼻樑。
作為姚班畢業生,周述見過太多所謂的天才。
但那些天才往往沉醉於算法的奇技淫巧,或者代碼的運行效率。
而剛才屏幕對面的那個年輕人,身上卻有著令人嘆服的冷靜與通透。
「我花了三個月,寫了幾萬行代碼,試圖讓所有的機器聽懂同一種話。」周述指著白牆上的調用圖,「我覺得那是一件很偉大的工程,但他只看了一眼,就用最基礎的數學常識告訴我:機器語義必須統一,三類證明結構不能強行統一。」
周述重新戴上眼鏡,眼底那一抹連熬兩夜的疲憊反而一掃而空。
「能給這種人當底層的泥瓦匠,不算丟人。葉寧,準備繼續幹活吧。」
從此以後,每一份試圖聲稱某台圖靈機永遠不會停下的證據,都再也不能躲在龐大複雜的判定器背後。
它們必須剝去所有算法的偽裝,在江臨劃定的這條不可逾越的邊界前,自己一步一步,走完通往裁決席的嚴苛之路。
江臨坐到電腦面前的時候,固定窗口裡,多了一項十五分鐘的閉門會議提示。
【會議通知】
主題:A-1/BB5/統一草案撤回後的邊界校準
議題一:現有工作保留範圍
議題二:Backward Reasoning復現計劃
議題三:共享可信核的下一版結構
桌面上,昨晚那封確認郵件已經完成處置。
在那封郵件里,第193步反例復現成功,舊統一草案被正式宣告破產。
四狀態圖靈機在無垠的空白紙帶上留下了它的痕跡。
項目的三類原始decider及既有分類結果繼續保留。
今晚,無須再討論那台四狀態機器為什麼會在第193步停機。
數學和邏輯的法庭上,反例一旦成立,爭論便隨之終止。
真正需要確定的,是那份被截停的草案究竟要拆到哪一層,以及在這場浩大的解構之後,還能在廢墟中留下什麼。
……
事實上,在會議接通前的半小時,清華大學項目組的辦公室里,周述還在瘋狂修改著第三套方案的草稿。
過去的一天一夜,他幾乎沒有合眼。
他嘗試了十七種不同的接口重構,試圖把Backward Reasoning龐大的搜索樹壓進一個標準格式里。
但每一次,只要他不把那個臃腫的搜索算法帶進去,核驗器就無法確認結果。
「根本拆不開。」周述煩躁地揉著眉心,對一旁的葉寧說,「要想向一個毫無智能的程序證明反向沒有路,除非讓它自己再去把路搜一遍。我們之前的設計之所以要讓證書自己聲明,就是因為工程上不可能把搜索過程交給核驗器去驗收,那會把核驗器撐爆的。」
帶著這種這是一個工程死結的深切無力感,周述進入了八點整的會議。
……
八點整。
屏幕上的倒計時歸零,會議準時接通。
屏幕被分割成五個大小不一的窗口,連同江臨在內,五個人處於各自不同的物理空間,卻被同一條邏輯鏈條拴在了一起。
主持會議的是位於正上方窗口的喬聞鐸。
他背後的書架上堆滿了厚重的理論計算書籍和歷年項目的歸檔卷宗。
作為清華計算機系教授、博士生導師,同時也是這個BB5項目的架構負責人,喬聞鐸有著十餘年程序語義與形式化驗證的經驗,曾主持過驗證編譯器和安全關鍵軟體的可信核審查。
在他的研究組裡,有一種近乎殘酷的共識:作者親手跑出的綠色結果,充其量只能算作內部實驗記錄。
換一批人、換一種完全不同的語言實現、只憑公開的規格說明書重新得到同一結論,這個結果才有資格被寫入正式的證明鏈中。
喬聞鐸是一個極少在技術意見里使用帶情緒形容詞的人。
然而,在昨晚的處置紀要里,他連續寫了兩次嚴重。
對於形式化驗證而言,一個能夠被繞過的核驗器,比一個完全不工作的核驗器更加危險。
左側窗口是葉寧,組裡的助理研究員。
她負責decider結果復現與Translated Cycler的專用核驗,有著多年和底層代碼搏鬥留下的沉穩。
既能閱讀高視角的計算理論證明,也能一路追潛到模擬器最底層的單步轉移函數。
項目早期,她曾用另一套實現獨立重放了百萬級機器的分類過程。
原工具與復現結果出現的幾處微小邊界差異,都是她從海量的紙帶快照里,一格一格用肉眼和腳本找出來的。
昨晚,第193步反例送達後,也是她帶著兩名研究生從空白紙帶重新跑完全部軌跡,確認問題確實停在統一草案的驗收層,沒有越過原始decider的邊界。
右下角窗口裡,戴著黑框眼鏡的青年研究員周述顯得有些憔悴。
他是姚班本科畢業後留校直博的尖子生,研究方向正是攜帶證明的代碼與最小可信計算基(TCB)。
那份被宣告破產的舊統一草案,正是由他主筆。
過去三個月里,二十七個模塊、四百多項接口測試和兩輪繁複的證書格式遷移,大半經過他的手。
他設計這套草案的初衷無比正確:把最終需要信任的代碼壓縮到儘可能小。
然而,問題恰恰出在這次過度的壓縮上:一項本該由核驗器親自下場完成的證明義務,為了統一接口,被縮減成了證書生成端填寫的一個布爾值True。
最後一個窗口沒有開啟攝像頭,那是研究支持單元的技術聯絡員。
負責會議紀要的實時錄入、版本封存和材料隔離,從不參與任何證明判斷。
他的麥克風傳出細微的紙張翻動聲,他的面前攤著一份列印稿,第一頁右上角已經蓋上了刺眼的紅色印章:【WITHDRAWN】。
沒有人寒暄。
會議接通的瞬間,周述便直接共享了過去二十四小時的緊急審計表。
數據在屏幕上展開,嚴謹而清晰。
【可原樣保留】:19項(包括基礎狀態定義、紙帶讀寫頭邏輯等)
【需拆回專用規則】:5項
【涉及未核驗信任聲明,直接廢止】:3項
頁面下方,列著三套經過整日爭吵後得出的備選方案。
【方案一:共享核回調原專用decider】
優點:恢復最快,代碼改動最少。
代價:搜索程序重新進入可信邊界。
【方案二:將三種decider全部納入可信核】
優點:外部接口最少。
代價:可信核膨脹成三套decider的總和,失去小而可審的意義。
【方案三:共享機器語義,分離三套核驗規則】
優點:可信邊界清晰,每套規則只驗收有限見證。
代價:需要重新設計見證結構,Backward Reasoning尤其困難。
葉寧率先打破沉默,她的聲音透過網絡傳輸略顯失真,但邏輯依然鋒利:「第一套方案能最快恢復進度,但這意味著裁判又要重新相信尋找證據的搜索程序。第二套方案最省接口,但可信核的體積會膨脹成三套decider的總和。這違背了我們建立可信計算基的初衷。」
「我們組內經過討論,傾向於第三套方案。」周述接過話頭,他的嗓音有些沙啞,顯然熬了一個通宵,「可第三套還是有一個問題,三套規則進入可信核以後,怎樣保證我們只是拆開了證明義務,而非換個名字重造三套decider?」
他將屏幕上的架構圖放大,紅色的高亮標記圈出了幾個關鍵模塊。
decider之所以難以被形式化信任,恰恰因為它的本質是探索。
它會使用啟發式算法去搜索、去猜測未知的狀態。
它會為了效率進行大幅度的剪枝、合併狀態空間,並使用各種優化策略。
如果所謂的分離規則仍然在底層把這些探索性的工作全做一遍,那麼可信邊界根本沒有被縮小,它只是從一個巨大的黑箱,變成了三個稍微小一點的黑箱。
江臨移動光標,打開昨晚自己歸檔的一份手繪架構草圖,將屏幕共享權切了過來。
在圖表上的搜索程序與核驗規則之間,用紅色的線條劃下了一道不可逾越的鴻溝。
「decider負責在黑暗裡找證據,核驗規則只負責在燈光下驗收證據。」
江臨的聲音平靜,卻帶著不容置疑的確定性。
「搜索端可以擴展大量局部配置,反覆進行前驅生成、去重與剪枝;核驗端只檢查證書提交的有限對象。它不搜索新節點,也不依賴任何決定結論的啟發式優化。」
江臨將光標停在那條紅線上。
「它只回答兩個最簡單的問題:第一,證書里列出的事實,能不能由機器的最底層轉移表重新推算出來?第二,證書聲稱覆蓋的證明義務,在數學上有沒有邏輯缺口?」
周述注視著屏幕上那條涇渭分明的分界線,鏡片後的眼睛微微眯起,沉默了幾秒鐘,說道:「也就是說,搜索端可以繼續保持聰明、狡猾甚至激進,但裁判端必須足夠笨。」
「越笨越好。」江臨毫不遲疑地回答,「笨到任何一行代碼都能被人工一眼看穿。」
葉寧將第三套方案移到了頁面的最上方,快速評估了可行性,說道:「Translated Cycler這邊可以做到,專用的decider繼續在外面負責尋找平移段,規則層只負責重放這一段有限的運行軌跡,然後再檢查最大回退範圍。所有的搜索和探測策略,全部留在邊界外面。」
周述揉了揉眉心,提出了最棘手的問題:「普通的Exact Cycle 循環也可以直接拆。真正卡住我們的,還是Backward Reasoning。它交來的結果如果仍然是一整棵龐大的反向搜索樹,小核驗器照樣要陪著它重新遍歷一遍。這又繞回了原點。」
江臨切換了終端頁面,敲擊了幾下鍵盤,調出了一個全新的目錄。
【Backward_Reasoning_Reproduction/PENDING】
「所以,第三類程序現在還不能直接接入。我今晚會進行復現和重構。它最終需要交出來的,應該是一張已經窮盡所有可能的『有限地圖』,而不是冗長的搜索過程。」
一直靜靜傾聽的喬聞鐸此時終於開口:「一張地圖,怎樣在不藉助外部搜索的前提下,向一個毫無智能的核驗器證明自己沒有漏掉任何一條路?」
「讓核驗器根據機器的單步轉移表,自己去倒推地圖上每一個節點的合法前驅。」江臨給出了答案,「核驗器絕不往外做任何探索。它只做一件事:核對根據規則計算出的所有合法前驅,是否都已經存在於這張地圖的邊界之內。」
喬聞鐸深深地看了屏幕里的江臨一眼,轉頭看向周述。
「把江臨剛才說的這句話,一字不差地寫進第三套方案的設計約束里。」
周述的手指在鍵盤上飛快敲擊,紀要系統里立刻多了一行加粗的紅字。
【系統設計鐵律:搜索與推斷能力不得進入可信核;可信核只驗證有限見證及其邏輯閉合義務。】
隨後,周述拿起手邊那份蓋有撤回標記的第一頁列印稿,將其翻了過去,露出下面密密麻麻的底層代碼。
「如果Backward Reasoning也能按照這條邊界清晰地拆開,那麼過去三個月的工作,就真的只廢掉了最上面的那三項統包接口。」周述長舒了一口氣,「新規範出來以後,其中一套獨立實現,由我來寫。」
八點十五分,十五分鐘的議程結束,會議通道關閉。
江臨回到隔離工作站的界面前。
前兩個復現目錄【Cyclers_Reproduction】和【Translated_Cyclers_Reproduction】保持著加密封存狀態。
他移動滑鼠,只雙擊打開第三個目錄。
【Backward_Reasoning_Reproduction】
這個目錄此前只有一個空殼和幾份基礎材料,連復現環境都尚未搭建。
江臨從九月一日保存的絕對乾淨的空白虛擬機基線中,複製出了一份新的系統快照。
接著嚴格按照項目版本清單,逐一載入編譯器、依賴庫和基礎運行環境。
隨後將源碼目錄的權限硬性修改為只讀。
所有的測試材料均採用六月修訂後的公開哈希版本,舊的Git提交記錄與舊的日誌輸出被打包隔離在獨立的歷史目錄中,確保它們絕不干涉本輪的復現結果。
八點三十一分。
所有的準備工作完畢。
提交號、依賴版本和測試集哈希全部被封存。
Backward Reasoning(反向推理)程序,在這個與世隔絕的獨立環境中正式啟動。
與前兩種試圖預測未來的方法完全相反,Backward Reasoning 的運行邏輯是反直覺的。
它不跟著圖靈機的讀寫頭從空白紙帶的起始狀態出發,去一步步追問未來會發生什麼。
它選擇站在圖靈機停機的終點站,轉過身,往回看。
為了在腦海中具象化這個過程,可以想像一座道路錯綜複雜,龐大到看不見邊界的超級城市。
這台圖靈機就是一個在城市中遊蕩的機器人。
機器人從一間全白的初始屋子出發,停機則是一扇寫著下班的終點之門。
傳統的正向模擬,相當於一個人跟在機器人身後,看著它今天向左拐,明天向右轉,默默記錄,等待它自己某一天湊巧走到那扇門前。
如果這個機器人陷入了某種死循環,或者在無盡的荒野中向著遠離門的方向一直亂走,跟在後面的人就只能在絕望中無止境地等下去,直到宇宙熱寂。
反向推理則採取了截然不同的哲學。
它先派人直接站到那扇下班門前,不問來路,先找出所有能夠一步跨進門裡的位置。
假設有三個這樣的位置,就把它們標記為距離終點一步。
接著,再從這三個位置繼續往回找,標記出所有能夠通過兩步到達門口的位置,然後是三步、四步、更多步。
如果經過一段時間的瘋狂擴張,尋找前驅的過程突然停止了,不再有新的位置被加入進來。
最終,反向推理程序繪製出了一張邊界清晰的有限地圖。
這意味著,所有理論上能夠通向終點門的道路,哪怕是迂迴曲折的,都已經全部被圈入這張地圖之中。
地圖的邊緣,再也找不到任何一個可以進入內部的隱秘入口。
此時,只要檢查最後一件事情:機器人最初所在的那個全白屋子,在不在地圖上?
如果不在,結論便確鑿無疑。
因為通往終點的路已經被窮盡,而起點不在這些路上,所以機器人永遠無法走到終點。
這就是Backward Reasoning證明圖靈機不停機的核心數學思想。
然而,這套思想在工程實現上的巨大麻煩,深深隱藏在窮盡所有道路和沒有任何遺漏這幾個字里。
一個龐大的搜索程序,可以自信地列印出一行日誌,聲稱自己已經把路找完。
但最終的可信核驗器,絕不能因為這句毫無根據的聲明就蓋章放行。
第193步的致命反例剛剛用血淋淋的事實證明,把關鍵的閉環結論交給證書生成端去自說自話,只會讓可信核重新長出同一處潰瘍。
江臨敲擊回車,運行了第一組公開的測試樣例。
終端很快給出結果。
【Backward_Depth:300】
【Decision:NON_HALTING】
與結論一同留下的,還有數量龐大的節點擴展、前驅生成與重複配置合併記錄。
這些記錄能夠說明原decider怎樣得到答案,卻無法成為一份輕量證據。
另一套程序若想沿著日誌確認結論,幾乎等於重新執行一次反向搜索。
這樣一來,複雜的搜索程序仍然留在可信邊界之內。
江臨面無表情地關閉日誌窗口。
他不需要這些冗長的證明過程,也不需要知道程序是如何在黑暗中摸索的。
所以只抽取最後留下的那張結果地圖。
地圖上的每一個節點,代表著圖靈機在某一刻可能處於的局部快照:當前內部狀態、讀寫頭腳下的符號,以及讀寫頭周圍一小段已經確定的紙帶內容。
最關鍵的是,窗口以外的區域不默認全是0,而是明確標記為未知。
因此,一個節點代表的不是一張具體的完整紙帶,而是一個集合,所有可能從這段局部已知圖案向外延伸出去的,無數種紙帶情況的總和。
江臨開始重構代碼。
將小核驗器需要做的事情,暴力壓縮成了三項絕對客觀的檢查。
第一重驗證:檢查所有能夠直接觸發停機狀態的紙帶入口,是否都已經一字不落地包含在這張地圖中。
第二重驗證:針對地圖裡的每一個已知節點,根據圖靈機的規則,逐條倒推它所有合法的上一步。核對這些前驅是否必然落在地圖的現有節點集合內。絕不能有一條合法的路徑,從地圖的虛無邊緣悄悄漏進來。
第三重驗證: 檢查全白紙帶上的初始狀態快照,絕對不能出現在這張地圖裡。任何試圖通過坐標系平移、或者局部窗口裁剪來隱藏起點的欺騙手段,都必須被識別。
只要這三項檢查通過,無論原先的搜索過程是聰慧還是愚笨,是耗時一秒還是一年,都可以從裁判席上光榮退役。
證書只負責提交這張有限的靜態地圖。小巧的核驗器自己負責檢查地圖的邊界是否完全封閉。
九點四十一分。
第一份符合新規範的反向不可達見證在江臨的指尖生成。
他毫不猶豫終止原decider進程,清除它留下的臨時文件,只保留機器描述與見證文件。
隨後啟動剛剛編譯好的獨立核驗器。
屏幕上沒有重新渲染幾百層的反向搜索樹。
核驗器如同一個沒有感情的齒輪,逐個讀取地圖節點,死板地按照機器的單步轉移表,重新計算所有的前驅。
四秒鐘後,屏幕刷新,四行代表通過的綠色字符依次躍出。
【HALTING_ENTRANCES/COVERED】
【PREDECESSOR_SET/CLOSED】
【BLANK_INITIAL_CONFIGURATION/ABSENT】
【WITNESS/VALID】
一份原本依賴程序發誓它不會停的複雜結論,在這一刻,第一次變成了一張可以完全脫離原程序,由任何第三方工具獨立驗收的有限路線圖。
江臨並沒有在這一串令人心安的綠色結果前停下腳步。
對於一個旨在無懈可擊的安全架構來說,能驗證正確的結果只是及格,能防住精心構造的惡意欺騙才是核心。
他複製了剛才那份有效的見證文件,打開了十六進位編輯器,開始手動捏造三份用於攻擊的惡意樣例。
第一份攻擊樣例:他在地圖中間,人為地刪掉了一個合法前驅節點。這相當於在原本封閉的城牆上,硬生生砸出了一個缺口,抹去了一條確實存在的進路,試圖欺騙核驗器這張地圖已經封閉。
運行核驗器。
【REJECT/MISSING_PREDECESSOR】
紅燈亮起。
核驗器在倒推時,發現了一個算出來的前驅不在名單上,當場拒收。
第二份攻擊樣例:他不動地圖結構,而是悄悄挪動了局部窗口的坐標原點參數,試圖將全白紙帶上的起始狀態,通過坐標系的偏移偽裝成另一個不相關的邊緣位置,藉此繞過起點檢查。
運行核驗器。
【REJECT/BLANK_START_HIDDEN_BY_TRANSLATION】
紅燈再次亮起。
嚴格的坐標對齊邏輯識破了偽裝。
第三份攻擊樣例:他保留了全部真實的節點,卻把幾處明明尚未收攏、還可以繼續往外推導的邊緣節點,強行打上了已封閉的標籤。
運行核驗器。
核驗器沒有理會標籤,它根據轉移表現場倒推,準確地找到了證書里沒有列出來的合法的上一步。
【REJECT/FALSE_CLOSURE】
三盞紅燈依次在屏幕上亮起,仿佛三道堅不可摧的鐵閘。
每一盞都精準地停在了偽造發生的第一現場。
在整個駁回過程中,核驗器沒有調用一次原始的Backward Reasoning decider,也沒有相信證書里那句虛假的已檢查聲明。
江臨將一份有效見證、三份偽造見證、獨立核驗器的源碼,以及一頁極為簡練的人話說明文檔,封裝進同一個壓縮目錄。
【Backward_Unreachability_Witness_v0.1】
【Backward_Rule_Checker_v0.1】
【Adversarial_Cases/3】
隨後,他把今晚會議中各方同意保留下來的共同部分,如同拼接精密儀器的底座一般接了上去。
機器描述哈希值。
空白紙帶初始條件定義。
單步轉移語義引擎。
證書類型路由標籤。
失敗位置的追蹤器。
公共層的職責,到此戛然而止。
在路由標籤下方,三條核驗路徑開始各走各的路,互不干擾。
前兩條路徑沿用已經確認無誤的專用證明義務。
而今晚新接入的反向不可達規則,只負責檢查通往下班門的有限地圖有沒有漏路,以及起點是否被安全地排除在外。
十點五十二分,江臨點擊了發送。
復現包經過研究支持單元完成版本核驗與轉發。
郵件標題沿用了原先的追蹤編號,只在末尾增加了一項狀態說明。
【A-1/BB5/Backward Reasoning/Independent Witness Ready】
此時,距離技術窗口的關閉時間還剩八分鐘。
江臨按部就班地導出運行日誌、封存當前的虛擬機快照,最後關閉隔離工作站。
機箱風扇的嗡鳴聲漸漸平息,江臨站起身,活動了一下酸痛的頸椎。
冰箱裡還放著前晚剩下的半盒葡萄,桌面上那兩張印有第193步反例軌跡的紙張,已經被他整齊地收進了一旁的黑色文件夾。
那台引發軒然大波的四狀態機器,已經完成了它作為試金石的任務。
接下來要接受整個團隊嚴苛審查的,將是這張從終點向後展開的地圖。
九月七日,早上七點十二分。
北京的晨霧還未散去。
周述已經坐在了項目組那間寬敞的辦公室里,手邊放著一杯早已涼透的濃縮咖啡。
他頂著濃重的黑眼圈,先是校驗了江臨發來的復現包哈希值,確保文件在傳輸中未被篡改。
隨後將龐大且複雜的原 Backward Reasoning程序,連同它所有的依賴庫,一把從運行路徑中徹底移出。
現在的測試環境裡,只剩下機器描述文件、幾份體積小巧的有限見證,以及那個剛剛誕生的核驗器。
回車鍵敲下。
有效見證,順利通過。
江臨隨包附帶的三份公開對抗偽造見證,依次在預期位置被無情拒絕。
但周述並沒有在這裡停下。
作為曾經踩過雷的主筆,他的多疑已經被激發到了最高點。
他轉身從內部的高度機密結果庫里,抽出了一台江臨此前絕對沒有見過的真實圖靈機描述。
叫來剛進辦公室的葉寧,讓她按照昨晚的新規範,用另一套工具將他們自己的反向搜索結果,導出為有限地圖格式。
新核驗器根本不需要知道這張地圖是誰生成的,也不關心它是怎麼找出來的。
它像一個盲人摸象的機器,只管順著機器轉移表,一個個節點去檢查前驅。
葉寧看著屏幕上連續亮起的綠燈,多年的底層找蟲經驗讓她本能地生出一股不服輸的勁頭。
「他只花了一個晚上,我不信這套防禦網沒有一點縫隙。」葉寧將咖啡杯推到一邊,雙手敲擊鍵盤的速度驟然加快,「周述,數學閉環暫時沒看出問題,那我先試證書結構。」
她複製那份有效見證,將其中一個節點記錄的前驅編號改成節點表範圍以外的數值,又重新生成外層文件校驗。
這份證書在形式上依然能夠被讀取,內部卻指向了一個根本不存在的節點。
若核驗器沒有先檢查引用範圍,後續的閉合性判斷便可能讀取錯誤對象,甚至直接異常退出。
葉寧提交修改後的見證。
核驗器完成文件解析,卻沒有進入機器語義與反向閉合檢查。
【REJECT/OUT_OF_RANGE_NODE_REFERENCE】
日誌同時給出具體位置。
【NODE:184】
【PREDECESSOR_REF:OUT_OF_RANGE】
等葉寧調出輸入層的處理流程。
核驗器在接觸任何數學規則以前,已經依次檢查節點數量、編號唯一性、引用範圍和機器綁定。
不料畸形證書連進入證明核驗階段的資格都沒有。
「結構層先拒絕壞證書,證明層再判斷數學。」周述看著那行紅字,苦笑了一聲,「不用白費力氣了,這兩層他也分開了。」
葉寧抿了抿嘴唇,決定轉向更隱蔽的機器綁定問題,發起最後一次攻擊。
她拿回那份有效見證,用文本編輯器換掉了機器描述文件里的一條轉移規則,試圖張冠李戴,讓一張真實的地圖去替另一台完全不同的機器作無罪辯護。
這一次,程序甚至沒有運行到反向規則檢查的那一步。
公共層在讀取配置時,便如同觸電般截住了它。
【REJECT/MACHINE_WITNESS_MISMATCH】
周述見狀嘆了口氣,搖搖頭,把核驗器的最後一個調用路徑追蹤完畢。
結論無可辯駁:它不會擴展搜索深度,不會在運行時猜測新的局部配置,甚至沒有讀取原decider留下的任何緩存碎片。
證書給多少節點,它便一絲不苟地驗多少節點。
證書哪怕少交一條合法前驅,它就會毫不留情地停在缺口前報錯。
周述將原始decider的複雜調用圖,與新核驗器的精簡調用圖,並排投射到了辦公室的白牆上。
左邊的圖譜層層疊疊,如同繁茂的原始森林,充滿了搜索、啟發式剪枝、狀態合併不確定性。
右邊的圖譜卻猶如一根筆直的標槍:只有機器單步語義、前驅生成、集合包含與閉合性檢查,以及初始狀態排除。
葉寧端著水杯看了一會兒,緩緩說出了昨晚江臨那句話的後半句。
「搜索程序可以繼續聰明,而裁判,終於笨到了足夠可信的地步。」
十一點,喬聞鐸推門走進辦公室。
他沒有看那些繁複的代碼,而是先仔細查閱了防住第四份攻擊的日誌,接著看了牆上那兩張對比強烈的調用圖,最後翻到了江臨寫的那一頁極度凝練的人話說明。
「第193步反例,證明他有能力找到我們的錯誤。」喬聞鐸的手指輕輕敲擊著桌面,聲音中帶著罕見的讚許,「而今天這份見證說明,他不僅能破,而且知道正確的可信邊界,究竟應該用什麼材料、建在哪個坐標上。」
他把厚厚的復現報告推回給周述。
「今天下午,把兩套實現的人員名單和測試隔離方案徹底定下來。框架已經立住,該我們幹活了。」
與此同時,在校園另一端的操場上,軍訓照常繼續。
九月七日的太陽比前幾天更加毒辣。塑膠跑道散發著刺鼻的橡膠味,綠色的方陣在廣闊的場地上移動。
「向右——轉!」
「齊步——走!」
「立定!」
隊列在教官嘶啞的口令中轉向、齊步、停下。
江臨面無表情,汗水順著臉頰滑落,砸在迷彩服的領口。
他和其他幾千名新生一樣,按照集體的節奏,機械地完成著每一個動作。
陽光晃得人睜不開眼。
辦公室里發生的那場關於圖靈機與計算邊界的高層次討論,沒有一絲一毫進入他的白天。
他的世界此刻只有燥熱的微風,發酸的小腿,以及遠處食堂飄來的飯菜香氣。
兩個世界,在現實的物理空間裡摺疊,互不相干。
晚上七點五十三分,夜幕降臨。
江臨剛洗完澡,研究支持單元的技術聯絡員便轉來了下午的復現結果與一項臨時會議請求。
【復現評估報告】
有效見證: 通過
三份公開對抗見證: 全部在預期位置拒絕
團隊追加攻擊:MACHINE_WITNESS_MISMATCH/拒絕
核驗過程:整個生命周期內未調用原 Backward Reasoning decider
復現結論:證明規則已具備脫離搜索程序獨立運行的能力。架構分離可行。
八點整,前一晚的五人會議重新上線。
周述一掃昨夜的陰霾,顯得異常亢奮。
他把那份舊草案的列印稿舉到了鏡頭前。
昨天還在上面的那個寫著統一證書的龐大方框,已經被他用剪刀整塊剪掉,留下一個規則的方形窟窿。
而在窟窿下方,保留下來的十九項機器語義、測試樣例與失敗追蹤,被重新用馬克筆畫進了一隻更小更緊湊的公共框架里。
公共框架之下,三條清晰的紅線分別連向三套獨立的驗證規則。
「昨晚那個靈魂拷問,我今天白天重新核驗了一遍。」周述的聲音里透著如釋重負的輕鬆,「過去三個月的心血,大部分都還在。我們撤掉的,僅僅是那種非要讓三種截然不同的證據,去說同一種標準語言的傲慢要求。」
他放下手中殘缺不全的列印稿。
「Backward見證的閉環已經走完了,白天我們團隊自己加了一份你沒見過的機器綁定攻擊樣例,也被公共層準確地擋住了,你的防線非常堅固。」
葉寧隨即共享了最新的任務表。
兩支實現組已經完成隔離。
代碼倉庫、編譯環境和內部溝通頻道全部分開。
一支沿用項目現有語言,另一支採用不同語言,只依據凍結後的規範從零重寫。
雙方都要獨立完成三套核驗規則,在盲測結束以前,任何一方都看不到對方的代碼。
「具體實現由我們負責,隱藏測試集交給第三方。」葉寧說,「你只負責凍結規範和公開測試向量。」
喬聞鐸將一張全新的系統架構圖投到了共享屏幕的正中央。
【Shared Machine Semantics (公共機器語義層)】
├── 【Exact Cycle Rule (精確循環規則)/READY】
├── 【Translated Cycle Rule (平移循環規則)/READY】
└── 【Backward Unreachability Rule (反向不可達規則)/READY】
在三套閃爍著綠色READY標識的規則下方,還有一行灰色字體,靜靜等待著被點亮。
【Independent Blind Replay (獨立盲測重放)/PENDING】
「兩套實現團隊,從明天起互不交換任何代碼,這是我們這邊的內部隔離方案。」
喬聞鐸看向江臨所在的窗口,語氣中帶著明顯的徵詢。
這次BB5項目的攻堅,本就是他們團隊主動發出的合作請求。
「所有的真實證書、偽造證書,以及帶有陷阱的隱藏樣例,我們會統一交由第三方安全團隊進行打包混淆。」
喬聞鐸說明了接下來的安排,隨後用商量的口吻提出了建議。
「江臨,接下來的盲測階段,你看這樣安排是否合適:盲測集就不勞煩你親自過目了,具體的語言實現和代碼Bug交由那兩支團隊自己去頭疼。你只需把控規範,不用把精力消耗在這些底層工程問題上,同時也能最大程度保證最終審查的客觀性。這個流程,你看可以嗎?」
隨後,喬聞鐸在項目的協作架構表上做了一項權限變更,在權限最高的一欄設置了一個新的節點,並填上了江臨的名字。
【可信核架構與證明邊界審查:江臨】
在協作表的前幾行,寫著項目總牽頭人喬聞鐸、規則負責人葉寧,以及實現組主筆周述。
而江臨的位置,獨立於所有工程實現模塊之外,猶如達摩克利斯之劍般,高懸在整個可信核架構的頂端,擁有絕對的一票否決權。
儘管在名字旁邊的系統身份欄里,依然只是一行簡單得過分的文字。
【清華大學求真書院/2022級本科生】
但這早已不是什麼需要被團隊審查的標籤。
早在解決江氏磚和PFR猜想時,這個名字在理論界的含金量就已經聞名過學術界。
如今,那條撕碎舊草案的第193步停機軌跡,以及今晚這張堅不可摧的反向推導地圖,更是讓屏幕這頭的幾位頂尖學者心服口服。
他們很清楚,是他們在仰仗這位天才大腦來給BB5項目兜底,而不是他們在給他分配任務。
從這項權限生效的那一秒開始,凡是涉及BB5項目共同機器語義的改動、證書綁定的邏輯,必須先過江臨這一關。
兩支高學歷的實現團隊,將完全在他的架構圖紙下進行盲人摸象般的編碼工作。
這是一種基於絕對智力的信任託付。
周述拿起電子筆,毫不猶豫地在協作表上籤下了自己的確認名字。
「我贊成。」周述看著鏡頭,語氣中不僅是誠懇,甚至帶著一絲受教的敬意,「能把我花了三個月蓋起來的危樓,精準地拆掉三塊承重牆,保留下十九根好柱子,然後再給出一張堅若磐石的新圖紙。能請到江神來做這套系統的最高法官,是這個項目的運氣。」
對於喬聞鐸的提議和團隊的表態,江臨並沒有表現出多餘的情緒波動。
對於他而言,真理本就該是這個運轉方式。
既然架構上的話語權和隔離機制已經確立,那他自然不用再管那些底層的泥瓦匠活兒。
「可以。」江臨簡短地回復。
隨後,他移動滑鼠,在後台管理界面點開了版本控制選項,按下了那個象徵著規範鎖定的按鈕。
【Shared_Verification_Kernel_Spec_v0.1-rc1/FROZEN】
周述在會議紀要的最下方,用一段感性的文字作為總結。
【統一的是門框和鎖孔,但三類證明證據,各自保留自己的鑰匙。】
江臨看到這行字,指尖在鍵盤上短暫停頓。隨後,他在周述的那句話下方,敲下了一行補充。
【三把鑰匙,三套齒紋,誰也不能代替誰。如果有人想用一把鑰匙開所有的門,防盜系統必須報警。】
時鐘指向八點十五分,項目總控面板的狀態再次自動刷新。
所有前置審查全線變綠。
進入盲測階段的大門正式開啟。
會議結束,通道的連接切斷。
周述靠在椅背上,看著屏幕上那行代表著候選規範凍結的綠色字符。
「他今年才多大?」葉寧忽然開口打破了沉默,語氣裡帶著幾分鬱悶的複雜,「二十歲都不到啊。」
「別用年齡去衡量那種怪物,會讓人抑鬱的。」周述摘下黑框眼鏡,捏了捏鼻樑。
作為姚班畢業生,周述見過太多所謂的天才。
但那些天才往往沉醉於算法的奇技淫巧,或者代碼的運行效率。
而剛才屏幕對面的那個年輕人,身上卻有著令人嘆服的冷靜與通透。
「我花了三個月,寫了幾萬行代碼,試圖讓所有的機器聽懂同一種話。」周述指著白牆上的調用圖,「我覺得那是一件很偉大的工程,但他只看了一眼,就用最基礎的數學常識告訴我:機器語義必須統一,三類證明結構不能強行統一。」
周述重新戴上眼鏡,眼底那一抹連熬兩夜的疲憊反而一掃而空。
「能給這種人當底層的泥瓦匠,不算丟人。葉寧,準備繼續幹活吧。」
從此以後,每一份試圖聲稱某台圖靈機永遠不會停下的證據,都再也不能躲在龐大複雜的判定器背後。
它們必須剝去所有算法的偽裝,在江臨劃定的這條不可逾越的邊界前,自己一步一步,走完通往裁決席的嚴苛之路。