第 8 章
人肉密鑰
第八章:人肉密鑰
驗證站在永康特區東側的配電設施地下一層。走廊盡頭已經有三個人在等。鑄鋁牆板,長條冷光管,空氣裡有臭氧和汗的味道。冷光把所有人的臉照得像沒校準的顯示器——對比度過高,中間色調全部丟失。
排最前面的女人靠牆站著,拇指不斷搓食指關節。第二個年輕男人帽子壓得很低,左眼皮每隔幾秒跳一下。第三個,衡遠認得——柴哥,同區的 Dongle,跑了比他更長。
「早。」衡遠站到柴哥旁邊。
柴哥用下巴點了一下前方。「今天排得密。」
「幾次?」
「三次。你呢?」
「兩次。標準。」
柴哥把手從口袋裡抽出來,十指張開看了看,像是在確認它們還聽自己的。「上禮拜有個新的,第一次跑完就吐了。工作人員拿拖把來——不是擦地板,是把他推開,怕擋路。」
「overflow。」衡遠說。
「第一次就 overflow。」柴哥搖搖頭。「我跟他說,腦子是有 buffer 的,你不能一口氣灌完。年輕人嘛,覺得自己的 throughput 很高。」
走廊深處驗證室的門開了,一個人走出來,步子不穩,右手在抖——不是微顫,是前臂在對抗某種殘留的動作指令。衡遠聞到嘔吐物酸澀的味道。
前面的女人走進去。門關上。他們都知道,每一次進去,出來的時候身體都比上次舊了一點。
女人出來了,臉色發灰但步子穩。年輕男人進去。柴哥掏出一顆硬糖剝開塞進嘴裡,含糊地問:「頻率有往上調嗎?」
「維持中頻。」
「別加。」他沒解釋為什麼。
年輕男人出來,帽子歪了。柴哥拍了拍衡遠的肩膀,進去了。
衡遠靠在牆上。頸後的皮膚已經開始發麻——不是因為冷光管的嗡嗡聲,是身體記得接下來會發生什麼。五年的中頻 Dongle,身體的條件反射比大腦更準時。
柴哥出來了,走過衡遠時右手在太陽穴旁邊短促地按了一下。
衡遠走進驗證室。
三公尺見方,鑄鋁牆板,沒有窗戶。驗證終端是一張金屬椅,靠背頂端有一個拳頭大小的圓形凹槽,邊緣被無數個頸後磨出了細紋。椅子前方是操作台,嵌入式螢幕和一排實體按鍵。
衡遠背對椅子坐下。頸後皮膚接觸凹槽金屬——冰涼感向上竄,穿過頭皮,穿過頭骨,像有人把一枚硬幣放在你的腦幹上。
凹槽裡的探針陣列找到了他頸椎 C3-C4 硬膜外的晶片接口。對位是自動的,像老式硬碟的磁頭歸位——啪的一聲,鎖定。
預驗證開始。三組信號被同時讀取,但從內部感受完全不像「三組」那麼清楚。更像是有人從三個角度同時捏了一下你的頭。腦波——一陣極短暫的暈眩。微血管脈動——心臟被迫多跳了兩下。皮膚電導——頸後突然出了一層薄汗,然後被金屬吸走了熱量。
三種感覺在不到一秒內先後湧過——不是同時,但間隔短到身體分不清先後。
預驗證通過。然後是注入。
他的右手食指動了。不是他動的。
指令從晶片灌入運動皮層,接管了手指的運動規劃。大腦收到回饋——手指確實在動——但沒有下達指令。不是疼痛,更接近在夢裡看自己的手在寫字但你不知道寫的是什麼。
食指在操作台上敲擊。節奏規律,力道精確控制在觸發鍵程的最小值。AI 比他更了解他的手指。
心率升到九十。前庭系統開始漂移,視野邊緣的水平線微微傾斜。
這是標準體驗。五年來每一次都一樣。但今天,衡遠沒有閉上眼睛等它結束。
Layer 1 的感覺回饋在視野上疊加了一層半透明的數據流視覺化——他以前把它當噪音屏蔽,像你不會去讀系統啟動時滾過的日誌。但今天他有了一個需要尋找的東西:物理層存取點。
數據流在視野右上角呈現為一連串淡藍色的光脈衝。指令封包從終端流入晶片,經過神經系統被生物噪聲裹住,再從手指輸出回到終端。一條完整的迴路。
但迴路的邊緣,像大河旁邊的細小支流,有另一組信號。非常微弱。非常規律。他以前也感覺過,每一次任務都有,但它太安靜了——像房間裡一直在走的時鐘,你不會注意到它,直到你專門去聽。
一個周期性的脈衝。間隔大約六十秒。每次持續不到一秒。
心跳包。
第二次脈衝來了。衡遠用頸後那種近乎觸覺的壓力感記住了波形。編碼模式很老。不是現行的加密通訊格式。更簡單。更輕。像用一根細線在兩個罐頭之間傳話。
第三次脈衝。他追蹤流向——不走主要數據通道,從終端底層直接發出,穿過驗證層旁邊的一個接口,指向……無法確認。信號太弱,他的神經系統正被指令封包佔用。
然後他感覺到了另一件事。
第三次心跳包到達的瞬間,有一個極短暫的延遲——不到一百毫秒。像是系統在讀取他的信號回饋的同時,多看了他一眼。不是指令流的一部分,不是驗證流程的一部分。是某個別的東西,從某個別的地方,朝他看了一下。
然後就沒有了。六十秒後心跳包又來了一次,這次沒有那個延遲。
右眼視野邊緣閃了一下——一顆微光點,像壞掉的像素。眨眼,消失。
任務結束。手指停了。探針陣列鬆開鎖定。
衡遠站起來。頭暈在預期範圍內。左手開始顫——不劇烈,但比任務前明顯。他握了一下拳,鬆開,顫抖沒有停,他沒有再握。
走出配電設施。地面層的陽光很亮,瞳孔花了幾秒收縮。他在腦中複述信號模式——三次心跳包的波形、間隔、頻率。那個不到一百毫秒的延遲。
他需要 Cornelius。
傍晚。太陽能板的最後一小時電力。
法拉第籠的鋁箔膠帶被撕開時發出細碎的聲音,像拆一份他知道裡面是什麼的包裹。衡遠把主機板的電源線接上,確認 GPU 供電穩定,按下開機鍵。風扇轉了起來,在封閉的工具櫃裡發出放大的嗡嗡聲。
14 吋螢幕亮了。
他從口袋掏出一張紙——走出驗證站後第一件事就是用鉛筆把信號模式全部手寫下來。三次心跳包的間隔(58 秒、62 秒、61 秒),波形的粗略輪廓,以及那個延遲。
他把這些輸入 Cornelius。
Cornelius 想了十一秒。前三行是噪音——模型把「嵌入式系統」解讀成微波爐控制板。衡遠已經習慣了。七十億個參數有時候會走岔路,你要做的不是糾正它,是從錯誤裡找有用的碎片。
第四行開始有意思了。
周期約 60 秒的心跳包是 MQTT v3.1 的典型 keepalive 行為。MQTT(Message Queuing Telemetry Transport)是輕量級發佈/訂閱式訊息傳輸協定,原為低頻寬、高延遲的 IoT 環境設計。其 keepalive 機制要求客戶端在設定的時間間隔內向伺服端發送 PINGREQ 封包以確認連接存活。預設 keepalive 值通常為 60 秒。
衡遠盯著螢幕。
MQTT。他二十年前知道這個——南科的半導體設備廠,EUV 光刻機的環境監測感測器用的就是 MQTT。輕量。簡單。沒有加密。沒有證書驗證。老到不應該還存在於任何現行系統中。
他追問了一個提示詞。Cornelius 回答得更快:
可能是遺留的診斷介面(diagnostic interface)。早期嵌入式驗證系統的設計中,工程師常在硬體驗證模組旁保留低功耗的監測通道,用於遠端校準三組基準信號……
衡遠停止閱讀。他不需要 Cornelius 告訴他剩下的部分。
這條 MQTT 連接是建構生物物理驗證層的那一批工程師留下的。診斷用途。校準用途。然後系統迭代了,軟體升級了無數次,上層一切都變了——但這條連接嵌在硬體驗證層旁邊,太底層、太老舊、太不起眼。沒有人升級它,因為沒有人記得它。也沒有人移除它,因為你不能移除一個你不知道存在的東西。
像地基裡的一根舊水管——樓上裝修了三十次,沒有人去看地基。
物理層存取點。Cornelius 上次說的「方向」,今天變成了一個具體的東西——一條通向底層基礎架構的、用三十年前的協定在自言自語的診斷通道。
他拿起鉛筆,在紙上寫下:「MQTT v3.1 — keepalive 60s — 無加密 — 硬體驗證層旁 — 診斷介面」。
然後他寫下第二行:「不確定項——第三次心跳包的延遲。來源不明。」
那個延遲——Cornelius 無法解釋。衡遠嘗試了三種提示詞,有一次模型宣稱延遲是「量子糾纏的宏觀表現」,他直接跳過了。
歸檔為「可能的威脅」。沒有數據的推演是猜測,猜測消耗注意力但不產出結論。
工程師筆記本攤開在螢幕旁邊。他翻了幾頁,在某一頁邊緣發現一段之前沒注意的潦草筆跡,墨水很淡,像用快沒水的筆匆忙記下的:
「驗證層的設計不是為了阻止 AI——是為了確保人類始終有最後的否決權。診斷通道必須保留。如果連維護的門都關了,系統就真的不可控了。」
衡遠看了那段字很久。寫下這些字的人在很多年前做了一個決定:留一扇門。不是漏洞,是刻意的——一個相信系統應該有人類監督權的工程師,在所有人追求自動化的時代留下的手動開關。
他合上筆記本。電力快到限制了。他關掉模型,在空白的文字介面上打了一份清單:
- MQTT v3.1 診斷通道——已確認存在
- 通道指向——未知
- 通道是否可利用——未知
- 第三次心跳包延遲——來源不明,歸檔為威脅
- 下一步——下次 Dongle 任務中追蹤心跳包的終端位址
存檔。關機。鋁箔膠帶封回工具櫃。
左手又在顫。Dongle 任務加上分析的疲勞累積到了可察覺的閾值。他把左手平放在膝蓋上,讓它顫。不握拳,不壓制。它會自己停,就像佔用率過高的進程在負載降低後回到基線。
葛絡的聲音從門外傳來:「爸,吃飯了。」
「來了。」
飯後。葛索在洗碗。葛絡趴在客廳的矮桌上畫畫,彩色鉛筆在紙上沙沙響。衡遠坐在門口的台階上,看著對面大樓牆壁上用炭筆寫的公告——某戶人家在交換手搖發電機的零件。
他在想駱厝。
準確地說,他在想一個分散式系統的問題——信息的分發策略。單點知識的風險:節點失效,信息永久丟失。分散式儲存的風險:每多一個節點,洩漏的攻擊面大一個量級。
駱厝是可靠的。聚會後幫他處理了兩次配額周轉,沒問多餘的話。駱厝有自己的動機——女兒——利益方向大致平行。
但如果他告訴駱厝,駱厝的行為模式會改變。更小心,或更大膽,或在不該注意的時候注意到不該注意的東西。行為模式的改變是可以被檢測到的。他就要對駱厝也進行每次見面的安全掃描——不是因為不信任,是因為必須確認對方的信號特徵沒有被改變到可檢測的程度。
你不能一邊信任一個人一邊監控他。
駱厝上個月送芒果來的時候,在門口站了不到兩分鐘就走了。沒進屋,沒多問,只說了一句「有什麼需要幫忙的,你講」。那是一個不需要回報的人才會有的姿態。
但如果他不告訴任何人,他就是這條信息的單點故障。沒有備份,沒有冗餘,沒有 failover。二十年設計容錯系統的工程師,比誰都清楚單點故障的致命性。
然而現階段,保密價值遠高於冗餘價值。他手裡拿的是一塊還沒有形狀的拼圖碎片。你不會在拼圖還沒有輪廓的時候就開始分發碎片。
衡遠站起來。
「我出去走走。」他對屋裡說。葛索頭也沒抬,「嗯」了一聲。葛絡停下筆,抬頭看了他一眼:「帶手電筒。」
「帶了。」他拍了拍口袋。
路燈已經亮了,橙色的光把水泥路面染成琥珀色。他沿著眷村改建大樓之間的巷道走。隔壁巷弄裡有人在說話,含糊但帶著笑聲。某個窗戶透出暖黃色的光。
那個工程師留了一扇門。衡遠今天透過自己的神經系統摸到了門框。但門框不是門。他還不知道門開不開得了,門後面是什麼,打開它需要付出什麼。
倒計時像一個低優先級的背景進程,始終佔著一小塊記憶體。大約五十天。也許四十八。
五十天,一條 MQTT 通道,一台離線模型,一本筆記,以及他自己——一把被系統用了五年的、正在慢慢磨損的人肉鑰匙。差別在於,從今天開始,這把鑰匙在被使用的同時也在觀察鎖的結構。
巷道盡頭是永康特區東側的空地,沒有路燈,黑得很徹底。
衡遠沒有告訴駱厝。沒有告訴任何人。不是因為不信任。是因為這個秘密目前的存在形式只適合一個容器。
他站在黑暗的邊緣,手電筒在口袋裡,沒有拿出來。然後轉身,走回橙色路燈照得到的範圍。
永康的夜在變深。他的口袋裡裝著一張折了兩折的紙,上面寫著五行清單和三段波形草圖。還有一本黑色硬皮封面的筆記本,紙邊露出口袋。
和一個還沒有告訴任何人的秘密。
載入留言中…