同一份內容在生成以前就留下哈希,離線分析室里反而比剛才更安靜。
顧沉舟看見許燃先望向唐梨,又把目光移到牆上的界橋資料。四戰窗口已經二勝一負,最後一場沒有第二種結果。若支援位仍處在無法解釋的接觸鏈上,隊伍必須承擔風險;若臨時換人,界橋也不會因為他們謹慎就少打一個位置。
「我先問最難聽的。」許燃說,「最後一場還讓不讓唐梨上?」
他沒問唐梨是不是內鬼。可在只剩一場的晚上,是否上場很容易被所有人聽成另一種判決。
周硯沒有替他收回問題:「要分開。比賽風險可以現在決定,泄密責任不能用同一張票決定。」
「那先投我們信不信她。」許燃說,「不是定罪,至少知道隊裡還有沒有執行基礎。」
唐梨沒反對,只把剛恢復的墓碑欄位推到屏幕中央:「先看它在什麼時間出現。你們投信我,不會讓這個哈希晚兩個小時;投不信也不會讓它變早。」
顧沉舟把投票頁關掉。
「不能投。」他說。
唐梨問:「如果所有人都投相信,調查停不停?」
本書首發 讀好書上 101 看書網,𝟷𝟶𝟷ᴋᴋs.ᴄᴏᴍ超省心 ,提供給你無錯章節,無亂序章節的閱讀體驗
「不停。」
「如果所有人都投不信?」
「事實也不會因此多一條。」
「那這張票唯一能改變的,就是別人以後怎麼描述我。」唐梨把手從投票端移開,「我不需要靠五個人替我生成一個無罪結果。」
許燃沒有立即同意。他擔心的並非採訪標題,而是界橋會利用每一次支援遲疑。可顧沉舟知道,正因為比賽利益存在,票才更不能判斷責任。有人可能相信唐梨卻想換下她止損,也可能懷疑她仍認為替補更差;把這些選擇壓成贊成與反對,只會讓戰術計算冒充事實判斷。
許燃皺眉:「上次匿名消息,你退出預案決定,不也是全隊投的?」
「那次投的是流程,決定誰接觸信息、誰承擔哪項風險。現在如果投相信誰,多數人的感覺會被寫成唐梨是否做過一件事。」
「沒人會把票當證據。」
「比賽結束以後會。」顧沉舟說,「三比四也會變成『隊內多數懷疑』,四比三會變成『曜石已經內部洗清』。兩種說法都比我們手裡的事實走得遠。」
他太熟悉這種變化。顧臨川舊案里,有人同意停賽,有人同意暫緩申訴,還有人只是不想整隊失去資格。幾年後,那些不同選擇被壓成一句「全隊默認他有問題」。人數留下了,票究竟在決定什麼卻消失了。
顧沉舟不想借哥哥的經歷替唐梨證明清白。舊案只能提醒他,表決適合分配共同承擔的行動,不適合製造一個已經發生過的過去。
「先列能由別人複查的事實。」他說,「不寫相信,不寫解釋。」
林知微新建一頁空白記錄。顧沉舟沒有坐到主位,七個人仍圍著同一塊只讀屏。唐梨的授權副本留在隔離機里,任何新增核對都不能越過她剛才劃定的本人分區。
第一項,巡潮說出了代號「折返點」。
賽前採訪原片已經由星聯保全,節目上線時間、自動字幕和主持人問題可以複查。巡潮隊長不僅說出三個字,還描述了中央交接後向外環撤退、再從西側重新進入的反包,與唐梨版本的路線結構相同。
這能證明外部出現相同代號與對應打法,不能證明詞來自唐梨的只讀頁面。巡潮可能看過文件,可能從其他來源得到路線,也可能在相同描述上獨立取出同一簡稱。
顧沉舟在第一項後面寫:命中存在,來源未知。
第二項,唐梨接觸唐嶼。
昨夜二十二時十三分,唐梨私人終端與唐嶼仍顯示永久禁賽狀態的舊帳號完成加密握手。已恢復的出站包與回包只有單調計數、公共信標籤名、容器頭、漂移數值和硬體參數表,沒有折返點正文。
但兩包不等於整台服務端。總流量里仍有正常協議開銷,其他時間的記錄也未完整取得。唐嶼只授權唐梨這一張校時工單,沒有開放客戶盤與其他恢復任務。
這能證明禁賽帳號聯繫真實發生,也能排除已恢復兩包攜帶測試正文;不能證明同一連接絕無第三包,更不能把未授權區域寫成有內容或無內容。
顧沉舟寫:接觸存在,已知兩包不含正文,剩餘範圍未知。
第三項,刪除前文件摘要早於假版本。
校時服務臨時索引的墓碑只保留五個欄位。文件名是「支援候選_臨時」,字節大小與唐梨版相同,內容哈希也完全相同;正文、發送者、接收者和傳輸方向都沒有恢復。
它的創建時刻比林知微離線生成批次開始早兩小時。那一批次是周硯哈希總表預先登記的共同錨點,位於三份假版本任何正文寫入以前。即使把兩台設備的校時誤差向最不利方向計算,也不可能把兩個小時縮成寫入先後不明。
這能證明同大小、同哈希的對象曾被唐梨終端校時服務索引,且索引出現得更早;不能證明對象由誰生成、從哪一側進入、是否離開本機,也不能憑文件名恢復它的路線正文。
顧沉舟寫:更早對象存在,傳輸方向未知。
第四項,三份假版本的共同哈希未被改動。
林知微調出離線生成錄屏。顧沉舟口述變化項,三份正文依次寫入,單份內容哈希再與文件名、創建時間、接觸人組成總表;周硯持有一份,總表原件留在封存終端。兩份總表從生成到賽後逐位一致,三條接觸通道當前文件也與各自初始校驗值一致。
共同哈希不能證明生成終端此前從未出現相同緩存,不能證明文件沒有被拍照或重錄。它能證明現在看到的唐梨版就是當時生成的唐梨版,沒人能在發現早期墓碑以後,回頭修改假文件讓兩串哈希對上。
林知微又讓周硯現場從封存副本計算一次。新結果與總表逐位相同,計算軟體和命令記錄一起投到只讀屏。驗證沒有依賴林知微口頭保證,也沒有因她是生成端就把她從接觸鏈里抹掉。
顧沉舟寫:誘餌內容未被事後改寫,複製與否未知。
四項列完,沒有一項寫著唐梨清白,也沒有一項寫著唐梨泄密。
許燃從上往下讀了一遍:「如果她把東西給唐嶼,唐嶼再給巡潮,第一、第二項能連起來。」
「中間缺傳輸記錄。」林知微說。
「但很像。」
「像是調查方向,不是已經存在的箭頭。」
秦越一直看第三、第四項。他不擅長給設備欄位命名,問得卻比所有技術詞都直接:「如果後面的文件一直沒改,前面的哈希怎麼抄後面的?」
沒人回答,因為問題本身已經排除了一種順序。
秦越指著時間線:「不是誰從唐梨這裡複製了文件。至少不是複製這份後來才生成的文件,去造成兩個小時前的索引。應該查誰在更早的時候生成了同一個答案,或者什麼東西能生成。」
許燃說:「也可能創建時間是假的。」
「所以查時鐘。」秦越回答,「先查它能不能假,不是先選一個人。」
顧沉舟把這句話記在判斷欄。共同哈希未變,加上更早索引成立,調查對象就必須從「誰拿走唐梨文件」擴大為「同一內容為何被提前生成」。這不排除有人泄露更早的來源,卻排除了誘餌第一次製造那條路線。
韓岑問:「上場風險怎麼定?」
周硯看向唐梨:「污染版本已經撤銷。最後一場只用公開方案,私人終端不進場,支援截圖改由賽務設備保存。你能執行嗎?」
「能。」
「那就不因為一條無法由時間成立的指控換人。若後續出現參賽資格或設備安全事實,再按預先條件處理。」
這不是投票證明唐梨值得信任,而是按當前可見風險決定比賽流程。許燃沒有再要求舉手。他在上場名單旁簽下自己的執行責任,又在第二項後保留了「其他包未知」。
顧沉舟本可以到這裡停下。最後一場必須贏,隊伍已經有一套不使用匿名答案的公開預案;繼續追查只會減少訓練時間。可那條提前兩小時的哈希也給了他一個私人希望:若答案能在文件以前生成,顧臨川當年的「提前知道」或許同樣有另一種來源。
他沒有把這個希望寫進調查理由。哥哥的舊案能解釋他為什麼不願停,不能讓當前證據多證明一個字。
顧沉舟回到最早的匿名消息。污染終端仍然斷開戰術庫,十七行原文與平台快照逐字一致。他不看具體順序,先看每一行如何命名。
東側第三節點、北偏牆體、西側相位門、中央折返進入排潮溝。
曜石正式預案習慣先寫行動,再寫參數,例如「許燃壓西門,牆北偏十七度」。匿名消息相反,先按環境類別排序,再依次寫位置、方向與生效時刻,像是把一組候選欄位直接轉換成中文。
林知微打開星聯普通戰術工具的開發說明。候選欄位本身公開,具體入選順序不公開;為了讓不同語言客戶端顯示一致,系統給每個欄位附有默認翻譯。
她沒有用當前頁面覆蓋過去。開發說明經歷過兩次措辭更新,若默認翻譯是比賽以後才加入,就不能解釋更早的匿名消息。林知微從公開版本庫調出消息到達當天的簽名快照,欄位編號、排列順序和中文文本都沒有變化。
匿名十七行甚至保留了默認工具不太自然的語序:先寫環境對象,再寫方向,最後寫落點。曜石隊內為了報點速度通常會把落點提前。發送者可能手工模仿這種格式,也可能直接導出;無論哪一種,命名源都不必來自曜石文件。
其中一項的中文正是「中央折返進入排潮溝」。
唐梨當時把這段路線縮成了「折返點」。巡潮也可能從同一句默認描述里縮出相同代號。兩個隊伍恰好取出同樣三個字仍需解釋,卻不再只有「看過曜石文件」這一條路徑。
林知微複查先前反向搜索。她搜索的是完整代號「折返點」,範圍是曜石歷史文件、公開論壇和本賽季字幕,沒有檢索候選參數的默認欄位。先前結論仍然成立:它不是常用簡稱;但不能再寫成路線概念只存在於唐梨版本。
顧沉舟把第一項的說明改掉,沒有刪去命中。
匿名消息里的路線命名,不是曜石內部術語。
它是系統候選參數的默認翻譯。