第20章 · 斷鏈的時刻
第一輛突擊車停在大樓南側入口的時候,據點裡的燈同時熄滅了。
不是被動斷電——是法尔汉在離開之前設置的最後一道自動防禦:當外圍震動傳感器檢測到超過閾值的重型車輛接近時,主電源自動切斷,備用照明切換至不可見光譜。地下三層在零點三秒之內從一個人造白晝沉入了一種介於黑暗和深灰色之間的、沒有方向感的空間。
陆远站在距離女兒不到兩米的地方。他沒有動。他的眼睛需要大約二十秒才能適應這種光線,但大腦中沒有那種時間——他直接蹲下來,憑記憶伸手摸到了摺疊床的邊緣,然後是毯子的邊緣,然後是女兒的肩膀。她還在睡。呼吸平穩。
他輕輕把手按在她背上,確認她的心跳頻率正常。然後他站起來,轉向通道入口的方向。
入口的鐵門已經半開。法尔汉揹著一個黑色的防震箱站在陰影裡。他的身體擋住了通道里透出來的唯一一絲微光,讓他在昏暗的據點中呈現為一個輪廓分明的人形剪影。他的聲音很低,但在地下三層這種極端安靜的聲學環境中,每一個字都像敲在鼓面上:
“他們從三個方向同時進入。南側入口——四輛車。東側巷道——兩輛。沿街正面——至少十二人步行接近。確認的武裝人員數量在二十五到三十之間。我們沒有時間了。”
他說這些話的時候,語氣和他在報告調試結果時一模一樣。陆远已經學會了辨認法尔汉在極端壓力下的信號特徵——他的聲音會變得更加平穩,語速會變得更加均勻,所有的情緒都會被壓縮到聲帶以下,只留數據和邏輯在表層流動。
“沈姐帶子衿走貨梯通道,”陆远說,“那個出口沒有覆蓋到她的信號特徵——她不是数据党的成員,目標檔案裡沒有她的射頻指紋。你和我走地下通道,吸引他們的注意。”
法尔汉沒有任何猶豫,也沒有任何確認。他只是轉過身,用一隻手推開通道入口的鐵門,然後消失在門後。
陆远沒有立刻跟上去。他蹲在摺疊床邊,在黑暗中找到了女兒的小腿——隔著毯子,他能感覺到她身體的溫度。他從口袋裡掏出一個東西,放在她枕頭旁邊。那是他從拉各斯帶回的那隻木雕大象——烏木的,象鼻子向上揚起,線條淳樸。他沒有說話。在黑暗中,他低下頭,把額頭貼在女兒握著毯子邊緣的手背上,停留了大約兩秒鐘。然後他站起來,轉身走向通道入口。
他在門口停了一下,回頭看了一眼。女兒的身影在黑暗中已經被完全吞沒了,他看不到她。但沈姐的聲音從那個方向傳來,像一根信號微弱但穩定的線:“我會照顧好她。”
陆远沒有回答。他側身擠進了地下通道的半開鐵門,讓它在自己身後無聲地合攏。
通道里沒有燈。
法尔汉走在前面大約五步的距離,黑色防震箱的輪廓在伸手不見五指的黑暗中像一塊更黑的斑塊在移動。陆远跟在他後面,左手指尖擦著通道牆壁的粗糙表面行走——這是他在廢棄數據中心的施工圖上看過這條通道之後記住的一個細節:牆壁每隔三米有一道垂直的伸縮縫,可以通過數縫合計數來估算自己走了多遠。二十米。三十五米。五十米。按照施工圖,通道的長度是七十三米,盡頭是一個廢棄的泵房,泵房有一扇通向地面排水渠的鐵柵欄門。
六十八米的時候,法尔汉停住了。
陆远也停住了。在絕對的黑暗中,任何非預期的動作變化都是一種信號。法尔汉沒有說話,但陆远聽到了一種極其細微的、從通道前方傳來的聲音——不是腳步聲,不是人聲,是一種機械裝置解鎖時的振動。像一把鑰匙插進鎖芯,正在轉動。
不是從通道盡頭傳來的。是從通道牆壁的另一側傳來的。
突擊隊已經進入了建築的地下層。他們與法尔汉和陆远之間,只隔了大約四十釐米厚的混凝土牆。
法尔汉重新開始移動——速度比剛才更快,但步幅更短,噪音更小。他不再撫摸牆壁來導航——他已經把這條通道的每一條接縫都記在了他的空間記憶裡,黑暗中行走對他來說和對光下的區別不大。
七十三米。
通道盡頭。
泵房的鐵柵欄門就在前方——從通道口的縫隙裡透進來一絲極其微弱的光線,來自地面排水渠上方的城市路燈,經過雨水篦子的過濾之後,變成了一束被切割成細密條紋的灰色光帶,灑在泵房積了灰的水泥地面上。
法尔汉的手指碰到鐵柵欄門的鎖釦。他沒有立刻打開。他側過頭,耳朵貼近門縫,聽了三秒鐘。
外面沒有異常聲音。
他擰開鎖釦,推開了鐵柵欄門。鉸鏈已經很久沒有上油了,發出一聲短促的、像動物低鳴一樣的金屬摩擦聲,在狹窄的泵房裡顯得格外刺耳。
但沒有人回應那聲音。
陆远跟著法尔汉鑽出鐵柵欄門,進入了排水渠。渠底是乾的——只有一層淺淺的淤泥和落葉,踩上去軟綿綿的,幾乎沒有聲響。兩側的牆壁上覆蓋著深綠色的苔蘚,空氣裡瀰漫著泥土、廢水和腐敗有機物混合的氣味。頭頂的雨水篦子間距大約十米,每一個篦子下面都漏下一束灰白色的路燈光線,在黑暗的渠道中形成一串等距的光斑,像一條由光線組成的鐵軌,延伸向視線盡頭的拐彎處。
他們沿著排水渠走了大約五十米。法尔汉在第二個拐彎處停住了,從一個雨水篦子下方仰頭向上看了一段大約十秒鐘,然後退回來。他的聲音在排水渠的牆壁之間產生了一個微弱的回聲:
“篦子上方是一條小巷。沒有監測信號——他們在巷口部署了兩臺移動基站,但巷子中間有大約七米的覆蓋盲區。我們可以從那裡上到地面,然後——”
他沒有說完。
頭頂的雨水篦子發出一聲劇烈的金屬撞擊聲——像一塊沉重的鐵板被人踩了一腳。然後是一個模糊的人聲,壓得很低,但距離太近了,隔著篦子的縫隙傳下來的時候仍然清晰可辨:
“——地下三層已經空了。他們跑了。泵房方向的鐵柵欄門是開的——”
法尔汉不再說話。他直接抓住排水渠牆壁上的一根鏽蝕的鐵管,開始向上攀爬。鐵管在他體重的壓迫下發出令人不安的吱嘎聲,但沒有斷裂。他的腳在溼滑的苔蘚上找了兩下,找到了一個受力點。陆远跟在他下面,用手托著防震箱的底部幫他保持平衡。
法尔汉的頭頂到了雨水篦子的底面。他沒有直接推開——他先側耳聽了一下上面的聲音。巷子裡沒有腳步聲,沒有人聲。剛才那個聲音是從更遠的篦子位置傳來的——他們沒有發現這個出口。
他用力向上推。
雨水篦子在城市裡被焊死是常態。沒有被焊死——被鏽住。法尔汉的第一下推擊沒有讓它移動分毫。鏽蝕的鐵框和鑄鐵篦子之間的摩擦力經過多年的積累,已經大到需要一種比人力更大的扭矩才能打破。
法尔汉沒有做第二次嘗試。他直接把手伸進口袋,拿出一個煙盒大小的裝置——是一臺低頻振動器,他用它貼在了篦子的邊沿,按下開關。裝置發出一聲類似牙齒咬碎硬糖的嗡嗡聲,持續了大約兩秒鐘。鐵鏽的顆粒從篦子邊緣簌簌落下。
然後他再次向上推。
雨水篦子發出一聲沙啞的、像被從沉睡中強行拉起來的金屬尖嘯,向上翻起了一角。法尔汉從那個縫隙中側身擠了出去,然後趴在巷道的路面上,伸出援手,把陆远拉了上來。
他們站在一條寬不到兩米的窄巷裡。兩側的牆壁是居民樓的山牆,一面灰色一面白色,牆面上密佈著空調外機和鏽蝕的管道。巷道的兩端都被街燈的光照亮,唯獨中間這一段落在兩盞路燈之間的盲區內——法尔汉判斷對了。覆蓋盲區確實存在。
巷口方向傳來一陣急促的腳步聲——不是朝他們來的,但仍然很近。法尔汉把防震箱夾在腋下,貼著牆壁向北移動,腳步快但不跑——在夜晚的城市裡,跑步的人會引起注意,但快步行走的人不會。
陆远跟在他身後,走出那條窄巷,拐進了一條沿街的騎行道。
街道上幾乎沒有人。凌晨的深圳,除了偶爾經過的夜間貨運三輪車和掃街的環衛工人之外,整座城市都在沉默中呼吸。路燈把行道樹的影子投在人行道上,像一幅用墨水畫在不平整紙張上的素描。
他們走了大約兩個街區。法尔汉在一個公交站臺的廣告牌後面停下來,蹲下身,打開防震箱,從裡面取出一部已經預先配置好的加密終端。他按下了電源鍵。
屏幕亮起。一行綠色的字出現在純黑的背景上。
「鸽子网络 · 前哨節點 7 · 鏈路狀態:正常 · 等待輸入」
法尔汉的手指在鍵盤上敲了一行指令——不是啟動注入程序的指令,是一組座標。新的工作地點。然後他關上了防震箱,站起來,轉向陆远。
他的表情在路燈的照射下,呈現出一種陆远從未在他臉上見過的混合——疲憊的巔峰和某種被重新點燃的東西在同一張臉上共存,像一個已經燒了太久快要熄滅的爐子,被人倒進了一桶新的燃料。
“你女兒——沈姐帶她去安全點了。鸽子网络的線路確認過了。她們已經到了。”
陆远站在公交站臺的邊緣。一陣夜風從街道盡頭吹來,帶著南方沿海城市特有的潮溼和微鹹的氣息,吹過他暴露在空氣中的皮膚。他感到自己的手在發抖——不是恐懼,是一種身體在意識到安全之後,終於開始釋放之前積累的全部緊張。
他沒有說謝謝。他知道法尔汉不需要。
“米蘭,”陆远說,“他做了什麼?”
法尔汉沒有立刻回答。他低頭看了看那臺防震箱。然後在路燈下,他說了一句話——聲音很輕,但每一個字都像被精確測量過重量之後才放出來的:
“我不知道。但塞拉斯的突擊隊在我們進入排水渠之前三分鐘收到了撤離指令。”
陆远看著他。
“什麼?”
“撤離指令。從指揮鏈路頂層發出的——權限碼等級A0,僅次於CEO本身的緊急授權碼。命令內容:‘目標已轉移。A級誤報。撤回。’塞拉斯試圖抗命——但A0碼在星链的戰術執行協議中是不可反駁的。任何收到A0指令的現場指揮官若不執行,其指揮權會在十五秒內被自動轉交給最近的其他授權節點。”
法尔汉停了一下,像在確認一個他自己都不太確定的判斷。
“米蘭用了那個碼,”他說,“那個碼只有他和CEO知道。CEO目前在新加坡參加一個不能中斷的閉門會議——不可能在凌晨四點下發戰術指令。所以只能是米蘭。”
陆远站在路燈下,把法尔汉的話在腦子裡過了一遍。他發現自己的分析能力正在緩慢地恢復——從剛才在排水渠裡那種純粹的本能求生模式,切換回正常的邏輯處理模式。
米蘭發出了A0指令。米蘭撤銷了塞拉斯的突擊行動。米蘭用一個不可反駁的權限碼,在最後一分鐘阻止了那場包圍。
但米蘭沒有告訴任何人。
沒有通知数据党。沒有通知陆远。沒有給他自己留下任何可以解釋的餘地——他直接用最高權限修改了一個正在執行中的A1級截獲行動,這在星链的內部審計系統中會留下一條永不刪除的記錄。任何人在任何時候回溯這條記錄,都會看到米兰·沃伊诺维奇在凌晨四點零三分,用自己的權限碼撤銷了自己四小時前簽署的授權令。
他是一個既簽署逮捕令又簽署釋放令的人。
陆远閉上眼。在他合攏的眼瞼後面,他看到的不是黑暗——他看到的是米蘭坐在貝爾格萊德那間辦公室裡的樣子。也許米蘭在那一刻終於想明白了:他不是在星链和数据党之間做選擇,他是在保護系統本身和讓一個五歲的孩子不被他的系統傷害之間做選擇。
他選擇了那個孩子。
這可能不是因為那個孩子是陆远的女兒。可能是因為——那個孩子和米娅小時候一樣大。
“他不知道我女兒現在在哪裡。”陆远說,“他撤軍的時候——他連她是否安全都不知道。他只是在她可能還在那棟樓裡的時候,做了阻止那個行動的決定。”
法尔汉沒有說話。但他微微點了一下頭。在這個凌晨的城市街頭,兩個剛剛從包圍中逃出來的人站在一盞路燈下,用一種他們都沒想到的沉默,確認了一個他們都沒有預料到的結論:
米兰·沃伊诺维奇切斷了那條鏈。
塞拉斯撥通米蘭的電話時,貝爾格萊德的時間是晚上九點四十七分。
米蘭接起電話,沒有說話。他把聽筒放在耳邊,靠在椅背上,聽著線路那端傳來的、塞拉斯壓抑到幾乎要斷裂的呼吸聲。
“你知道你做了什麼嗎?”塞拉斯的聲音很低。低到米蘭差點聽不出那是憤怒——更像是某種被凍到極點的東西發出的聲音。
“我知道。”
“你知道你四小時前簽署了那個授權令,四小時後又撤銷了它——你在星链的內部審計系統裡留下了一條什麼記錄嗎?你等於在告訴所有人,你簽署了一個A1級行動,然後在執行前最後一刻用一個A0密碼推翻了你自己的命令。沒有理由。沒有補充說明。沒有錯誤報告。一個首席架構師在同一個晚上既簽發又撤銷同一道命令——這在安全委員會看來只有兩種可能:你要麼被人控制了,要麼你在保護那些目標。”
塞拉斯停了下來,等米蘭否認。但米蘭什麼也沒有說。
“你在保護他們。”塞拉斯的聲音裡出現了一道極其細小的裂縫,像冰面上第一個裂紋出現之前發出的那種聲音,“你在保護那個中國人和他的孩子。別以為我不知道為什麼——你女兒——”
“塞拉斯。”
米蘭的聲音從彼端傳來,沒有升高音量,沒有加快語速,但塞拉斯還是住了口。
“你如果再提一句我女兒,”米蘭說,聲音平靜得像一塊在河底放了很久的石頭,水流已經把它所有的稜角都磨平了,“我會向CEO提交你那套全球數據黑市的完整審計日誌——包括你在新加坡、曼谷和利馬建立的三條未經授權的token轉售通道,你在香港註冊的七家空殼公司的轉賬記錄,以及你通過星链安全中心的監控後門獲取的、用於敲詐東南亞政商界人士的私密通信檔案。我都保存了。全部。時間跨度從你入職的第一年到現在。”
電話那頭陷入了死寂。
米蘭沒有給他回應的機會。他繼續說下去,聲調不變:“你一直以為你的那些操作沒有被記錄,因為你有最高權限可以清除審計日誌。但你忘了——入口-7協議不止一個審計輸出端口。還有一個,你沒有權限看到。”
他停頓了一下。
“我設計的系統,塞拉斯。你以為我是為了監控普通用戶設計的嗎?”
塞拉斯的呼吸聲在電話線的那一端變得不均勻了。那不是恐懼——是一個人在看到自己的整個底牌被翻開之後,身體產生的本能反應。
“你不可能——”
“2053年6月,曼谷。你通過一個鑽-認證的終端訪問了一條不存在的QKD信道——那條信道的元數據記錄不在標準審計系統中,但它在入口-7的嵌套入口緩存中留了一個副本。不是內容——是連接的事實。時間,地點,終端ID。七條記錄。全部在我的私人目錄裡。”
塞拉斯沒有回答。他無法回答,因為米蘭說的每一個細節都是真的。他以為自己在這個系統中的活動是完全不可追蹤的——因為他擁有亞太安全中心的最高權限,因為他可以在每一次操作之後清除審計日誌,因為他確保了自己在系統中的每一步都不會留下可以被常規審查發現的痕跡。
但米蘭在他擁有這些權限之前就已經設計了那個系統。
米蘭不是在他的操作之後才開始追蹤他的。米蘭在六年前設計入口-7協議的時候,就已經把追蹤塞拉斯這種人的接口嵌入了系統的底層架構中。就像一個設計師在建房子的時候,在牆壁裡預埋了一條只有他自己知道走向的管道——不是為了自己用,是為了在某一天需要把房子裡某個人的罪行從牆壁裡抽出來。
“所以那封授權令——”塞拉斯說。
“是一個測試。”
“測試什麼?”
米蘭沒有回答。但他沒有掛斷電話。他讓塞拉斯在線路那端等待了大約五秒鐘,然後說了最後一句話:“測試你會不會對一個五歲的孩子下手。”
他把電話輕輕地放回了座機上。聽筒與底座接觸時發出的一聲清脆的咔嗒聲,在安靜的辦公室裡像是一個被落定的句號。
窗外,薩瓦河的對岸亮著稀疏的燈火。米蘭在椅子上坐了一會兒,然後拿起手機——他看到了陆远發來的那條關於木雕大象的消息,已經過去幾個小時了。他沒有回覆。但他也沒有關閉那條消息。
他把它留在了屏幕上。
深圳,凌晨四點半。
陆远沒有回據點。據點已經被封鎖了,雖然突擊隊已經撤離,但塞拉斯的人可能在周圍留下了長期監控設備。
法尔汉用加密終端聯繫了鸽子网络在深圳的最後一個備用節點——一個位於寶安區城中村的單元房,屬於一個從未在任何数据党名單上出現過的人。接收地址是一條短信,內容只有三個字:「老地方。」
那間單元房在一棟沒有電梯的舊樓的五樓。防盜門的漆面已經起泡剝落,門框上有幾道用鑰匙劃出來的、深淺不一的痕跡。陆远敲了三下門——法尔汉說的暗號,三下,間隔由短到長。
門開了。站在門口的是一個看起來不到三十歲的男人,穿著一件洗到領口發白的T恤,頭髮有些亂,鼻梁上架著一副度數不低的眼鏡。他看了一眼陆远,又看了一眼法尔汉,側身讓開了門口。
“進來吧。路由器密碼在冰箱門上貼著。床單上週換的。”
他沒有問任何問題。他沒有問他們是誰,為什麼來這裡,什麼時候會走。
陆远走進那間單元房。房間不大——大約四十平方米,陳設簡單到近乎樸素:一張床,一張書桌,一把椅子,一個簡易衣櫃。書桌上放著一臺臺式電腦,屏幕亮著,顯示著一條命令行終端,光標在屏幕底部安靜地閃爍。窗簾拉得嚴嚴實實。
陆远在那張書桌前面坐了下來。他打開法尔汉遞給他的加密終端,連接到冰箱門上貼著的WiFi密碼,然後打開了鸽子网络的命令行界面。
屏幕上出現了一條新的消息。來自拉各斯節點的加密通道,發送時間顯示為大約十分鐘前。發件人是阿米娜。
消息很短:
「第一組存儲卡已通過塔曼拉塞特檢查點。比預訂時間提前四小時。灰鴿沒有停過車。——阿米娜」
陆远盯著那條消息看了一會兒。
然後他做了一件法尔汉沒有預料到的事。他轉過身,在書桌旁邊的床沿上躺了下來——不是躺下睡覺,是仰面躺著,看著天花板上那盞沒有開的吸頂燈,一動不動地躺了大約半分鐘。
然後他閉上了眼睛。
“我睡二十分鐘。”他說,“之後你叫醒我。剩下的編譯工作我來接著做——你還欠我四到五個小時的時間壓縮。”
法尔汉沒有制止他。他只是坐在那把唯一的椅子上,把防震箱放在膝蓋上,打開蓋子,開始檢查裡面的硬盤是否在剛才的逃亡途中受到了物理損傷。他的動作安靜而精確,像一臺已經校準好的機器在做例行檢查。
在窗外,深圳的天空正在從最暗的深藍色過渡到一種介於灰色和淺藍之間的顏色——不是黎明,是黎明到來之前那一段最安靜的時間。路燈還在亮著,但光線已經開始變得不那麼重要了。早起的清潔工正在樓下的街道上打掃,掃帚刷過柏油路面的聲音透過牆壁傳來,沙沙的,持續不斷的,像某種被時間拉長了的呼吸。
那間單元房的窗戶正對著一條窄巷的盡頭。巷口有一盞路燈,此刻還在亮著。在路燈的不遠處,有一根電杆,上面貼著一張已經被風雨撕掉了大半的免費星链服務海報。海報上那位笑容燦爛的白領女性已經被雨淋褪了色,只剩下一隻手還指著畫面右上角的方向——指向一個陆远看不到的位置。
陆远閉著眼睛躺在床上。他不知道自己是否真的能睡著。但他知道自己需要在這二十分鐘裡,讓身體和大腦停下來——哪怕只是表面上的停止。像一個高速運轉中的硬盤,在寫入下一個扇區之前,讓磁頭回到起始位置。
城市在窗外緩慢地甦醒。在遙遠的地方——塔克拉瑪干沙漠的邊緣,或者說撒哈拉沙漠的公路上,或者說貝爾格萊德一間仍然亮著燈的辦公室裡——別的人們正在繼續各自的旅程。線還在延伸,有人正在把斷開的接口重新焊接到一起。
陆远不知道那些事情。他只知道自己的女兒還活著。米蘭沒有按下那個按鈕。他還有三十多個小時。
在意識逐漸模糊的邊緣,他似乎看到了那隻木雕大象——它正靜靜地躺在女兒枕邊,象鼻子向上揚起,在黑暗中保持著那個沉默而確定的姿勢。
像一個不會改變方向的座標。