第25章 · 清算
塞拉斯在数据天堂誕生的第七十三小時找到了它的命門。
不是靠技術手段——靠的是人。他在星链亞太安全中心的舊檔案裏翻出了一份二十年前的工程紀要,夾在一批被標記為"待銷燬"的紙質文件中,紙頁已經泛黃發脆。紀要記錄的是星链第一代地面段的備用電源系統部署方案——在那份方案中,所有舊型號地面站的備用電源機房都被設計為"核心節點容災託管區",可以部署一組獨立的域名解析服務器,在軌衞星與地面控制完全失聯時接管基礎路由功能。
這份方案從未被實施。星链的衞星間激光鏈路讓地面段的冗餘需求降到了最低,那些備用電源機房從未被用於容災託管。但塞拉斯在紀要的附件中找到了一份清單——列出了全球十七個仍然保留着備用電源機房物理結構的廢棄地面站。
清單上的第八個座標,在深圳以北約七十公里。
塞拉斯把手按在那個座標上,感到自己握住的不是一張紙——是一條正在收緊的繩索。
他沒有上報米蘭。他直接聯繫了星链董事會中的激進派——一個叫科爾的前美國空軍准將,現任星链戰略安全委員會副主席。科爾在加密通話中聽了塞拉斯四分鐘的陳述,然後問了一個問題:
"那個自治域——他們叫它什麼來着?"
"数据天堂。"
"你確定它的核心節點在那個地面站?"
"確定。数据天堂的路由模式是樹狀擴展——所有路由宣告最終回溯到一個根節點。根節點的物理路徑追蹤到了一個備用電源機房的獨立供電系統。那套系統不屬於星链的聯網資產清單——它是一台孤立的、不上線的物理機。但它的供電線纜是從那個機房接出去的。"
科爾沉默了幾秒。塞拉斯能聽到線路那頭緩慢的、煙草浸潤過的呼吸聲。
"你需要的授權等級是什麼?"
"物理清除。不是網絡層面的阻斷——他們的路由協議有自愈機制,即使切斷鏈路,他們會自動尋找新的路徑。只能從物理上移除那個根節點。"
"地面站附近有民用設施嗎?"
"半徑五公里內沒有常駐人口。"
科爾的呼吸停了一下。然後他説了一句讓塞拉斯嘴角浮起一絲弧度的話:
"我給你授權。用無人機。星链的系統裏不會留下任何地面人員操作的記錄。你需要什麼載荷?"
塞拉斯掛斷通話之後,在辦公室裏站了片刻。他沒有開燈——窗外深圳的夜景在他面前鋪展開來,像一張被髮光二極管點亮的巨大電路板。他在那片燈海中尋找北方——那個廢棄地面站的方向。他看不到它。但他知道它在那裏。
那台決定数据天堂命運的根服務器,此刻正在七十公里外的一個混凝土機房裏安靜地運轉,執行着米兰·沃伊诺维奇留下的嵌套入口路由規則。它不知道自己已經被鎖定了。它只是一台機器,執行着它被寫好的指令。
塞拉斯拿起外套走出了辦公室。他沒有告訴任何人他要去哪裏。他要親自去指揮中心看那架無人機升空。
因為他要親眼確認数据天堂從物理上被抹去。
因為這是他最後的機會。
米蘭是在無人機起飛後九分鐘得知的。
他不是通過星链的官方通報系統知道的——科爾和塞拉斯繞過了他的權限層級,用董事會的戰略安全授權直接調用了無人機。米蘭是通過一條他埋在星链衞星地面指揮鏈路中的側信道發現的:一條非標指令流——不是星链標準協議中的任何格式——從亞太安全中心的戰術終端出發,經過三次跳轉,最終抵達了一架停放在惠州某備用基地的軍用級無人機的飛控系統。
指令內容:武裝。升空。座標鎖定。
米蘭坐在貝爾格萊德的辦公室裏,時間已經是深夜。他的屏幕上顯示着那組被解析出來的指令參數——高度、速度、載荷類型、目標座標。他看了兩遍,確認自己沒有讀錯任何一個數字。
目標座標:北緯 22.71,東經 113.91。
廢棄地面站。数据天堂的根節點。
米蘭沒有站起來。沒有砸桌子。沒有打電話給任何人申辯或求助。他坐在椅子上,在黑暗中把整個過程在腦海中重演了一遍——塞拉斯繞過了他,科爾給了他授權,無人機已經在空中了。按照那組飛行參數,無人機將在大約十一分鐘後抵達目標上空。它所攜帶的載荷不是爆炸物,是一台高功率微波發射器——不會引起爆炸,不會留下彈坑,但足以在瞬間燒燬那座機房裏所有未屏蔽的電子設備的主板。硬盤會被消磁。服務器會永久失效。数据天堂的根節點會從物理上消失。
米蘭打開了一台不聯網的終端。他撥出了那個他保存了很久、從未用過的號碼——深圳據點的應急線路。
陆远接起電話的時候,米蘭沒有説話。他聽到線路那端傳來一個男人的呼吸聲——平穩,清醒,像是已經預感到這個電話會來。
"有一架無人機已經過去了。"米蘭説。他的聲音在他自己聽來有一種奇怪的平整感,像是一塊被壓路機碾過太多次的柏油路面。"它從惠州出發,飛行高度一千二百米,巡航速度每小時二百二十公里。預計抵達時間——十分鐘後。載荷是高功率微波。它會燒燬根服務器所在機房內所有未屏蔽的電子設備。"
他停頓了一下。
"塞拉斯繞過我拿到了授權。我沒辦法遠程召回它。無人機已經切換到自主模式——一旦進入攻擊路徑,控制權從地面站轉移到了機載計算機。唯一的攔截方法——是物理上的。"
陆远在電話那頭沉默了大約兩秒鐘。當他開口時,聲音比米蘭預想的要平靜得多:
"它從哪個方向來?"
"西北。"
"我們能看到它。"
米蘭握緊了一下話筒——不是憤怒,是一種他無法命名的、類似失重的感覺。
"陆远——你們還有時間撤離。"
"撤離之後呢?根節點燒掉了,数据天堂的自治域會在一小時內被星链的共識協議從內部回收。我們不是從頭再來——我們在米兰·沃伊诺维奇的系統裏建了一座房子。房子的產權是他的。他隨時可以收回這片地。"
米蘭沒有説話。
"所以這不是撤退的問題。"陆远説,"是你能不能在那架無人機到達之前,找到比燒掉它更好的方法。"
米蘭掛斷了電話。
他坐在黑暗中,終端屏幕的光映在他臉上,把輪廓切割成明暗分明的兩塊。無人機正在飛行。根服務器還在運轉。他知道那間備用電源機房的精確位置——他甚至記得那份工程紀要中的每一個字,因為那是二十年前他自己審核過的文檔。那間機房的設計冗餘度足夠抵抗常規電磁干擾,但高功率微波是另一個級別——它是專門用來摧毀電子設備的武器級載荷。
他看了一眼嵌套入口的狀態指示器。藍色,仍然在線。数据天堂還在呼吸。
然後他做了一個決定。
他站起來,走向門口。他拿起了衣帽架上的那件深灰色大衣——貝爾格萊德的十一月已經很冷了。他沒有帶電腦,沒有帶手機,只帶了一把車鑰匙。
他知道塞拉斯此刻在哪裏。星链亞太安全中心在深圳的戰術指揮室——一個地下三層的屏蔽空間,配備着與軌道上所有星链衞星直連的通信陣列。塞拉斯會在那裏看着無人機的實時畫面,從它的光電探頭中俯瞰那座廢棄地面站的屋頂在夜空中逐漸放大的輪廓。
米蘭要去那個房間。
不是通過網絡。不是通過電話。
他自己去。
從米蘭的貝爾格萊德公寓到深圳的戰術指揮室,直線距離超過八千公里。米蘭沒有飛過去——他不可能在十分鐘內跨越八千公里。
但他也不需要。
因為塞拉斯所在的戰術指揮室,在星链全球指揮鏈的架構中,不是一個孤立的物理空間。它在邏輯上連接着所有首席級別高管的遠程接入端口——包括米蘭在貝爾格萊德辦公室裏的那台終端。在星链的協議中,任何首席架構師都可以通過最高級權限碼即時接入任何一個戰術指揮室的音視頻矩陣。
米蘭沒有使用遠程接入。他使用了另一個端口。
他打開了辦公室角落裏那台黑色工作站——那台不屬於星链網絡、連接着獨立光纖的機器。他在上面輸入了一行指令,激活了一組他六年前寫好的、從未使用過的腳本。腳本的功能很簡單:通過一條星链官方網絡中不存在於任何路由表中的路徑,向深圳戰術指揮室的主屏幕推送一個視頻信號。
那個視頻信號的源,是米蘭辦公室的攝像頭。也就是他自己。
他整理了一下衣領。然後他按下推送鍵。
在深圳戰術指揮室的主屏幕上——那塊由十二塊拼接屏組成的巨型顯示器上,原本正在顯示無人機光電探頭的實時畫面——畫面被強制切換了。
米兰·沃伊诺维奇的臉出現在屏幕上。
戰術指揮室裏大約有十幾個人。操作員、分析師、通信協調員。他們在米蘭的臉出現的那一瞬間全部停住了——不是被嚇到,是一種他們在星链工作多年、從未見過首席協議架構師以這種方式出現在戰術屏幕上而產生的認知失調。
塞拉斯站在指揮室中央,背對着主屏幕。他注意到所有人的表情變化,轉過身來。
然後他看到了米蘭的臉。
"塞拉斯。"米蘭的聲音通過指揮室的音頻系統傳出來,清晰、平穩,不帶任何雜音。"你做了你不得不做的事。我也要做我不得不做的事。"
塞拉斯沒有回答。他的下頜咬得很緊,兩條咬肌在臉頰側面鼓起堅硬的輪廓。他當然知道米蘭會來——他只是沒想到米蘭會用這種方式來。
"你想阻止我?"塞拉斯説,聲音不大,但在安靜的指揮室裏每個字都清晰可聞,"你來不及。無人機距離目標還有——"他抬手看了一眼戰術手錶,"——七分半鐘。"
"我不阻止你。"米蘭説,"我阻止不了那架無人機。你設計了一條沒有回頭的攻擊路徑——我知道。它是你的風格,一旦啓動就沒有撤銷開關。"
塞拉斯的眉毛微微動了一下。
"但你做過的所有事情——不只是今天的事——是有撤銷開關的。"米蘭的聲音在指揮室的音箱中均勻地擴散,像一層覆蓋在所有人之上的冰面,"數據黑市。在曼谷、新加坡和利馬建立的三條未經授權的token轉售通道。你在香港註冊的七家空殼公司的轉賬記錄——你通過安全監控後門獲取的、用於敲詐東南亞政商界人士的私密通信檔案。我全部保存了。"
塞拉斯的表情沒有太大變化,但他的呼吸節奏變了——變得更深、更慢,像一個在努力維持氧氣供給的人。
"你以為那些記錄消失在了審計日誌的擦除操作中。"米蘭説,"但入口-7協議不止有一個審計輸出端口。還有一個——塞拉斯——你沒有權限看到。六年前,在設計這套系統的時候,我就為像你這樣的人預留了一個備份輸出口。"
米蘭在屏幕那一端停了一下。他的目光沒有離開攝像頭,像在透過鏡頭看着房間裏的每一個人。
"我在等你的錯誤積累到足夠多。現在夠了。"
他按下了終端上的一個鍵。
不是發送給塞拉斯的。是一封加密郵件——同時發送給了三個地址:星链CEO的私人郵箱、董事會的安全審計委員會、以及國際刑事法院在荷蘭海牙的電子備案系統。
附件大小:2.3 GB。包含內容:時間跨度從塞拉斯入職第一年到今天的完整審計日誌副本,經米蘭用獨立數據源交叉驗證,每一筆記錄的篡改痕跡都已標記。
發送狀態:成功。
米蘭做完這個操作之後,把目光重新聚焦在攝像頭上。他的表情沒有勝利者的得意,沒有憤怒——只有一種在長久等待之後終於執行了一個既定步驟的平靜。
"数据党的事情——星链會掩蓋。星链不能承認自己的核心網絡存在一個任何人都可以利用的後門。但數據黑市的證據——那些是你個人的罪行。星链不能容忍內部腐敗威脅其壟斷合法性。他們會把你交出去。因為你不可回收了。"
塞拉斯站在原地,沒有説話。他的嘴角微微抽動了一下——像是一個人在一台已經無法翻盤的棋局面前,終於放下了手中攥了太久的棋子。
"你毀了你自己的職業生涯。"他説。聲音不高,帶着一種被凍透了的平整。
"也許。"米蘭説,"但至少我不用在牢裏想這個。"
他切斷了視頻連接。
指揮室的大屏幕重新切換回了無人機光電探頭的實時畫面。畫面中,廢棄地面站的屋頂正在畫面中央緩慢放大——機載計算機已經完成了目標識別,用綠色方框框定了備用電源機房的位置。那個混凝土方塊在夜視模式中泛着暗淡的熱信號——機房內部的服務器還在運轉,散熱系統向外排放着微弱的餘温。
塞拉斯看着那個畫面。他的手下意識地抬了一下——不是操作手勢,是一種想要觸碰什麼但什麼也沒碰到的空抓。
然後他垂下手,沒有説話。
指揮室裏沒有人開口詢問下一步指令。因為所有人都知道那架無人機不會回來了——它已經進入了自主攻擊模式。沒有人能在地面上改變它的航向。
無人機距離目標還有四分鐘的時候,陆远看到了它。
他站在廢棄地面站機房前方的那片空地上。夜風比前半夜更大了一些,野草在風中東倒西歪,發出持續的沙沙聲。頭頂的雲層很薄,月亮在雲後投下一片朦朧的光暈,把地面站的輪廓染成一層暗淡的銀色。
法尔汉站在他旁邊,手裏握着一台便攜式終端。終端上顯示着他們在那顆舊型號衞星——STK-17254——的QKD信道中捕獲到的實時數據。那條信道現在不僅傳輸着SkyWalker的自治域宣告,還在傳輸着另一種東西:無人機與地面站之間的控制鏈路信號。
無人機使用的是星链通信協議——這是塞拉斯選它的原因之一,因為星链協議的延遲最低、帶寬最大、抗干擾能力最強。但這也是它的致命弱點。
因為在星链的近地軌道上,有十二萬顆衞星在運行。每一顆都在執行着米兰·沃伊诺维奇設計的協議棧。而法尔汉和陆远剛剛花了幾週時間,在米蘭留下的嵌套入口中,學會了如何通過SkyWalker协议劫持星链網絡中的數據包。
"它的控制鏈路用的是加密信道。"法尔汉低頭看着終端上滾動的數據流,"密鑰交換通過星链的QKD模塊完成——理論上不可破解。"
"理論上。"陆远重複了一遍這個詞。
他接過法尔汉手中的終端,看着那些在屏幕上快速滾動的十六進制數據包。無人機的控制鏈路使用星链的標準加密協議——那個協議是米蘭設計的。但米蘭在嵌套入口中留下了一組路由規則——當某些特定的數據包特徵出現時,可以繞過加密層的直接處理,訪問裸數據。
陆远輸入了那組十六進制的激活碼——米蘭在固件中埋下的鑰匙:0xA7F3_1C44_9B20_7D81。
嵌套入口的第二層被觸發了。
屏幕上出現了一行新的信息:「加密旁路激活 · 控制鏈路裸數據可讀」
無人機的控制指令流出現在終端上,不再是加密後的亂碼——是一串清晰的、可讀的指令序列。高度、航向、速度、載荷狀態。陆远的手指在屏幕上劃過那些參數,找到了他想要的那一個:目標座標寫入接口。
"你能修改它的目標座標嗎?"法尔汉問。
"不需要修改它的座標。"陆远説。他的目光落在另一組參數上——無人機的高度鎖定值和發動機狀態控制寄存器。"它的飛控系統使用的是星链的通信協議棧。在協議棧的異常處理分支中——如果接收到的數據包包含無效的校驗和——飛控會進入安全模式,暫停執行當前的飛行指令,等待地面站發送新的指令集。"
"但那架無人機已經在自主模式下了——"
"自主模式依賴機載的慣性導航和視覺定位系統。但如果飛控進入安全模式,它會重置所有的導航參數——包括當前座標。它的計算機會問自己一個問題:我在哪裏?"
法尔汉看着陆远的手指在終端上快速輸入一串指令序列。他明白陆远的計劃了——不是修改目標座標,而是製造一次飛控重置。讓無人機在安全模式下丟失自己的位置信息。
"它會從視覺定位系統中重新獲取座標。"法尔汉説,"只要它看到地面——"
"所以我們要讓它看不到地面。"
陆远敲完了最後一條指令。不是發送給無人機的——是發送給STK-17254的。那顆舊型號衞星此刻正在目標空域上方飛行。它的光學傳感器——原本用於星間鏈路對準——可以被重新定向。陆远通過SkyWalker协议向衞星的傳感器控制接口發送了一組參數:對準無人機所在空域,打開所有波段的干擾光發射器。
舊型號衞星沒有干擾光發射器。但它有星間激光鏈路的對準激光器——一台用於在太空中與其他衞星建立光通信連接的激光發射器。它不是為了照明而設計的。但如果它的光束指向地面,穿過大氣層之後會擴散成一個直徑約數百米的光錐。那個光錐的亮度不足以灼傷任何東西——但它足以讓一架無人機的視覺定位系統在一瞬間失去所有的參考特徵點。
陆远按下了發送。
三秒鐘後——在四百公里高的軌道上——編號STK-17254的星链衞星按照指令旋轉了它的激光對準器,使其光軸指向地面方向。激光器激活。
一道肉眼不可見的近紅外光束從太空中垂直落下,穿過大氣層,在廢棄地面站上空的雲層底部擴散開來——然後照亮了無人機正下方的整片地面。不是用可見光——而是用一束經過精確調製的、覆蓋了視覺定位系統敏感波段的光學噪聲。
無人機的機載計算機在一瞬間失去了所有可追蹤的地面特徵點。它的慣性導航系統報告當前位置正常,但視覺定位系統返回的結果是一片無法識別的均勻亮度場——沒有任何邊緣、沒有任何紋理、沒有任何可以用於修正慣導累積誤差的參考標記。
飛控系統進入了安全模式。
無人機的高度開始緩慢下降——不是俯衝,是一種受控的、在安全模式下的標準操作:降低高度、減小空速、進入盤旋等待狀態,直到視覺定位系統恢復或地面站發送新的指令。
但地面站不會再發送新的指令了。因為米蘭切斷了塞拉斯與指揮系統的連接。那架無人機正在用它最後的邏輯——由米兰·沃伊诺维奇寫進飛控固件中的邏輯——在安全模式下盤旋下降。
它沒有爆炸。它沒有燒燬任何東西。
它在那片被激光照亮的空地上空盤旋了三圈,高度從一千二百米降到了三百米,然後它的機載計算機執行了安全模式下的最後一道預設指令:在電量充足且無法恢復導航的情況下,尋找最近的平坦區域執行自動着陸。
無人機的起落架放下了。它在距地面站約一百米外的一片雜草叢生的空地上觸地,滑行了幾米,然後停住了。
螺旋槳的噪音逐漸降低,最終停止。
夜風重新成為這片空地上唯一的聲音。
陆远站在機房門口,看着那架停在野草中的無人機。它的光電探頭仍然指向地面,像一個被摘掉了眼睛的哨兵。他手裏的終端屏幕上,飛控狀態已經切換到了"已着陸·待指令"。
法尔汉從陆远手中接過終端,低頭檢查着飛控日誌。他的手指在屏幕上一行一行地滑動,表情在微弱的背光中看不出任何明顯的情緒。
"米蘭在飛控固件裏也留了後門。"他最終説,聲音很低,帶着一種説不清是驚訝還是已經麻木了的平靜,"不只是星链的通信協議棧——他把後門寫進了所有使用星链協議棧的設備的固件裏。無人機、地面站、終端設備——所有東西。"
陆远沒有説話。他轉過身子,看了看那個機房的混凝土牆面——在那面牆之後,一台服務器正在安靜地運轉,執行着数据天堂的路由宣告。那台機器不知道自己剛剛差點被一束來自太空的激光和一架攜帶微波載荷的無人機以兩種不同的方式摧毀。它只是一台服務器,執行着代碼,不關心代碼背後的政治。
他抬頭看了看天空。雲層正在散去,月亮重新露出了輪廓。那顆編號STK-17254的舊型號衞星已經掠過了天頂,正在向東南方向緩緩移動——它的激光器已經關閉了,它的視覺定位系統的光軸已經重新回到了星間鏈路的對準方向。
它看起來和任何一顆普通的星链衞星沒有任何區別。
但它剛剛做的事情——它在人類歷史上第一次用衞星的激光器照亮了一架無人機的着陸點——不會被記錄在任何官方的日誌中。因為那條指令是通過嵌套入口的数据天堂自治域發送的,而自治域中的任何操作都不在星链的審計系統之內。
米蘭在嵌套入口中留下了一條路。陆远和法尔汉找到了怎麼走那條路。那架無人機在数据天堂面前停住了,像一個忽然被問了一個無法回答的問題的人,站在原地,放下了武器。
因為数据天堂不只是不會被摧毀——它已經從星链的體系中學會了如何保護自己。它用的是米蘭留下的工具。米蘭在圍牆的每一塊磚裏都埋了活門。他建了一個完美的監獄,然後他把監獄的鑰匙撒在了風中。
陆远轉身走回機房。他需要檢查一下根服務器的狀態。他走了幾步之後,口袋裏手機震了一下。
他沒有停下腳步。他繼續走着,走進機房的門口,在備用電源櫃旁邊蹲下來,查看服務器前面板上的指示燈——全部正常,綠色,穩定運行。
然後他從口袋裏掏出手機。
是一條消息。短到只有三個字。發送者不是通訊錄中的任何名字——號碼沒有存儲過。但陆远認得那串數字的尾號:貝爾格萊德的區號。
「你看到了。」
不是問句。是確認。
陆远握着手機,在機房的備用電源櫃旁邊蹲了很久。服務器風扇的低頻嗡鳴在他周圍形成一道白色的聲牆。他想起女兒——想起她今天下午遠程會診結束後趴在牀上畫的那幅新畫:一架無人機停在草地上,機翼上有星星。
他不知道她怎麼知道無人機的事。也許她不知道——也許她只是在畫她夢裏的東西。
他給那個貝爾格萊德的號碼回了一條消息。只有兩個字。
「看到了。」
他發完消息之後,把手機放回口袋,站起來。
法尔汉站在機房門口,夜風從他身後吹進來,把他額前的頭髮吹亂了一些。他倚在門框上,終端夾在腋下,看着陆远。他的表情是那種——一個人剛剛經過了一場他自己都不完全確定是否打贏了的戰鬥之後,看到的不是勝利的喜悦,而是一種更深層的、更安靜的東西。
"它停下來了。"法尔汉説。
"停下來了。"
"米蘭燒了他自己的橋樑。那些證據發給CEO、董事會和國際刑事法院——他不只是搞掉了塞拉斯。他在星链內部把自己變成了一個不可預測的人。CEO會保他——因為他是唯一知道所有嵌套入口位置的人——但他不會再被完全信任了。"
陆远站起來,拍了拍膝蓋上的灰。
"他知道。"
法尔汉看着他。
"他選擇進門的時候就知道。"陆远説,"他知道走進來之後就不能再假裝他只是一個觀察員了。他現在是共犯。"
夜風在廢棄地面站的空地上掠過野草,發出持續的低響。那架無人機安靜地停在百米之外的草叢中,像一個被繳械的哨兵。在四百公里高的軌道上,一顆舊型號的衞星正在繼續它無聲的繞地飛行,它的內存中保留着一個從未被任何審計系統記錄過的新副本:一組激光器的非標操作日誌,和一個關於一架無人機如何在一片被光照亮的草地上着陸的數據片段。
兩個數據都不會出現在任何官方記錄中。
但它們存在。
数据天堂又活過了一夜。