第6章 · 数据党
白色的電動車在清晨的車流中穿行,毫不起眼。車身有幾處明顯的刮痕,後視鏡的塑料外殼缺了一角,副駕駛座的安全帶卡扣要用一個紮帶固定才能用——這輛車舊得像是從另一個時代穿越過來的。
但陆远坐進車裏之後,注意到了一些矛盾的東西。中控台被拆掉了,取而代之的是一塊嵌在儀表盤裏的金屬面板,上面有三個指示燈,一紅一綠一藍,此刻只有綠燈亮着。擋風玻璃內側貼了一層極細的金屬網,用肉眼幾乎看不見,但陆远知道那是法拉第網——能把車內所有電磁信號屏蔽在座艙內部。後座腳墊下面露出幾截粗壯的電纜,不是原車的線束,是後加的。
這輛車看起來破舊,但它是一台行走中的法拉第籠。
法尔汉沒有立刻開車。他坐在駕駛座上,透過貼了反光膜的側窗觀察了外面的街道將近一分鐘,確認沒有可疑的車輛和人員在附近停留,然後才擰動鑰匙——不是那種一鍵啓動的按鈕,是真的鑰匙,插進去轉一下,像二十年前的車一樣。
車輛起步的時候幾乎沒有聲音。電動車特有的那種安靜讓車廂內的氣氛更加沉悶。女兒在陆远懷裏睡着了,小小的呼吸聲是車廂裏唯一穩定的節拍。
“她叫什麼名字?”法尔汉問。他的聲音比他打電話時要輕一些。
“子衿。陆子衿。”
“好名字。”法尔汉沒有轉頭,目光始終看着前方的路面,“青青子衿,悠悠我心——曹操的短歌行。你取的?”
“她媽媽取的。她媽媽是語文老師。”
“以前是?”
陆远沒有回答。法尔汉從他的沉默中讀出了答案,沒有再追問。電動車拐進了一條更窄的支路,兩側的建築物逐漸從居民樓變成了工業園區——灰色的混凝土廠房,鏽蝕的鐵門,屋頂上密佈着各種天線和通風管道。這條路陆远以前從來沒有注意過。他在深圳住了七年,自以為對南山區很熟悉,但這座城市有太多他從未看過的角落。
“你打開了一個不該打開的盒子。”法尔汉説,語氣平淡得像在聊天氣,“但既然已經開了,就跟我走吧。”
陆远看着窗外後退的街景。他發現自己沒有問過一個最基本的問題:這個人要帶他去哪裏?這個人憑什麼值得信任?如果他只是從一個陷阱跳進另一個陷阱呢?
但他也沒有其他答案可以選擇了。
“塞拉斯的人在你出門之後進了那家旅館,”法尔汉説,像在陳述一個他已經看到結果的事實,“我看到他們的信號特徵出現在那片區域。比你晚到了大約九分鐘。老週會告訴他們你只住了一個小時,不知道你的去向。他不會有事——他知道怎麼應付。”
“你怎麼看到的?”
法尔汉用下巴指了指那塊嵌在中控台上的面板:“我自己的信號監測網絡。覆蓋深圳大約百分之六十七的區域。覆蓋率不夠高,但對塞拉斯的人足夠了——他們的基站接入設備有很明顯的射頻特徵,像一羣大象在瓷器店裏走路。”
“你自己的信號監測網絡?”陆远重複了一遍這個詞。他意識到自己對這個年輕人的理解可能完全錯了。
“做逆向工程的時候需要知道自己有沒有被人反過來定位。所以我搭了一個監聽網絡。”法尔汉打了一把方向盤,電動車拐進了一棟廢棄大樓的地下停車場的入口,“不是什麼了不起的東西。幾個SDR前端裝在空調外機的支架上,用開源軟件做的信號分類器。”
他説得輕描淡寫。但陆远知道,要用開源軟件搭建一個能覆蓋深圳六成區域、並能識別星链安全部門專用設備射頻特徵的系統——那已經不是“愛好”的範疇了。那是一個人的專業能力達到某種層級之後才會去做的事。
地下停車場的燈光昏暗,每隔三四盞才亮一盞。這裏顯然已經廢棄了很久:牆角堆着建築垃圾,牆上的消防水管被人鋸斷了一截,空氣中瀰漫着混凝土粉塵和機油混合的氣味。法尔汉把車停在一個被兩根承重柱遮擋的角落,熄火,拔下鑰匙。
“到了。”
“這裏?”
“入口不在這裏。跟我來。”
法尔汉推開車門,陆远抱着女兒跟下去。腳踝傳來的疼痛提醒他自己剛剛經歷了一次不成功的二樓跳落——腎上腺素開始退去之後,身體的代價開始逐一結算。他低頭看了一眼,腳踝已經腫了起來,但他沒有停下來。法尔汉從後備箱裏拿出一個黑色的工具包,背在肩上,然後走向牆邊的一扇不起眼的鐵門——上面掛着一塊掉了漆的牌子:高壓配電房 · 非授權人員禁止入內。
法尔汉從口袋裏掏出一把鑰匙,插進鎖孔,轉了半圈。鐵門的鎖芯發出一聲沉悶的咔嗒。他拉開門的動作帶着一種精確的、練習過的節奏——不是隨手一拉,而是先拉開一條縫,確認內部狀況,再全開。
門後是一個配電房。牆壁上掛着幾排早已斷電的配電櫃,玻璃面板裂了大半,裏面的繼電器和斷路器的殘骸積滿了灰塵。法尔汉繞過那些配電櫃,走到房間最裏面的一堵牆前。他用手指在牆面上摸了大概兩秒鐘,找到了一個肉眼幾乎看不到的縫隙——那是牆壁上一塊鋼板與混凝土之間的接縫。他從工具包側面抽出一根細長的磁條,貼在鋼板表面,用力向外一拉。
鋼板無聲地打開了。不是翻折,是整體向外平移了大約十釐米,然後旋轉出一個剛好夠一個人側身通過的開口。
門後是一條向下的樓梯。沒有燈。法尔汉拿出手電筒,光柱在狹窄的樓梯間裏切開一條通道。陆远抱着女兒跟在後面,每往下走一步,腳踝的疼痛就增加一分,但他對這條樓梯盡頭的東西的好奇心超過了痛覺。
一層。廢棄數據中心的地下一層,他能聞到服務器機櫃殘留的硅脂和電路板的焦味。
二層。更冷。更安靜。空氣中有一種很輕微的低頻嗡鳴,像什麼大功率設備在遠處運轉。
三層。
法尔汉在樓梯盡頭停了一下,把手掌按在牆上一塊沒有任何標識的金屬板上。三秒後,金屬板內部的某個機械結構發出一聲清脆的解鎖聲。門開了。
陆远走進了另一個世界。
約四百平方米的開闊空間,層高四米,原先是數據中心的地下層主機房,天花板上還保留着密集的走線架和冷卻管道。但現在這裏被改造成了一個活的、運轉中的技術作戰中心。三十多個人分散在不同的工位上,每個人都戴着隔音耳機,面前是兩到三塊屏幕,屏幕上的數據流以人眼無法追蹤的速度滾動。工位之間沒有傳統的隔斷——取而代之的是一人多高的金屬籠子,每一個工位都被一個獨立的法拉第籠完全包裹。籠子的門是彈簧合頁的,自動閉合。每個人進出都要開關一道物理的電磁屏蔽門。
牆面的主屏幕上投映着一張巨大的實時全球星链拓撲圖——不是公開版的簡化示意圖,是真正的、從星链網絡中實時捕獲的衞星間激光鏈路和QKD信道的連接狀態。每一條綠色的線代表一條活躍的星間鏈路,每一條藍色的線代表一條正在分發量子密鑰的QKD信道。整個畫面像一個活着的神經網絡,密密麻麻的線條在地球上空交織成一張不斷變化的光網。
陆远站在門口,抱着女兒,像一個誤入禁地的局外人。
但沒有人抬頭看他。沒有人因為一個陌生人進入這個空間而感到好奇。三十多個人都在做自己的事,目光鎖定在自己的屏幕上,手指在鍵盤上跳躍。隔音耳機的存在讓每個人都被封閉在自己獨立的聲音世界裏——這裏雖然有三十多個人,但幾乎聽不到任何人聲,只有鍵盤的敲擊聲、散熱風扇的呼嘯、和服務器機櫃裏磁盤陣列運轉時那種持續的低噪。
法尔汉走過去,從一個空着的籠子裏拖出一把椅子,示意陆远坐下。
“歡迎來到数据党的深圳據點。”他説,“條件有限,但在法拉第籠裏待着的時候,你在這個大樓裏的任何電磁信號都不會泄露出去。塞拉斯的獵犬找不到這裏。”
陆远把女兒放在椅子上坐下。她已經醒了,睜大眼睛看着周圍的一切——那些閃爍的屏幕、那些發光的連接線、那個巨大的地球投影。她不知道這裏是什麼地方,但她沒有害怕。她拉住了父親的衣角,但沒有哭。
“她是不是需要休息?”法尔汉看了一眼那孩子,聲音裏第一次出現了一種不太確定怎麼處理的語氣。他顯然不擅長跟孩子打交道。
“她已經休息了。”陆远蹲下來檢查女兒的瞳孔和呼吸頻率——職業習慣,癲癇患兒的父親下意識動作。一切正常。他站起來,轉向法尔汉,“現在你能告訴我了嗎?那個盒子——我打開的那個——到底是什麼?”
法尔汉沒有直接回答。他從牆邊的一個設備櫃裏取出一個東西——看起來像是一台改裝過的平板電腦,沒有品牌標誌,外殼是3D打印的,接口處用熱熔膠做了防水處理。他把它放在桌上,按了一下側面的電源鍵。屏幕亮了,不是圖形界面,是命令行終端。
他敲了一行命令。屏幕上出現了一組ASCII字符畫——一顆地球的輪廓,周圍環繞着三條虛線軌道,軌道用字符“-”和“|”拼成,在終端的光標下緩慢地“旋轉”。一個業餘的、帶着復古氣息的動畫。
“這是SkyWalker。”法尔汉説,“它不是一個協議——目前還不是。它只是一個想法。”
陆远盯着屏幕上那個ASCII地球。他不明白自己在看什麼。
“你知道星链最強大的地方是什麼嗎?”法尔汉沒有等他回答,“不是通信速度,不是覆蓋率,不是那十二萬顆衞星——是計費。星链的每一個數據包,從發射到接收,經過每一顆衞星、每一跳鏈路,都會被系統精確地計量。數據包的源地址、目的地址、協議類型、數據量、優先級、延遲要求——全部被輸入一個叫OrbitNet Billing的推理單元,實時計算這個數據包應該收多少錢。”
“Token税。”
“對。每一bit數據都有價籤。每一TOPS算力都有賬單。”法尔汉用指尖敲了敲屏幕,“但任何計費系統都有一個基礎假設:它能識別出需要計費的東西。它必須看到數據包,才能給數據包定價。”
“你打算讓數據包隱身?”
“不。我是打算讓數據包説另一種語言。”
法尔汉點開了另一個窗口。那是一張星链全協議棧的結構圖,從物理層一直到應用層,每一層都用不同顏色標註。他用手在屏幕上一劃,把其中一層放大了——那是網絡層與傳輸層之間的一個區域,標着“QKD信道元數據區”。
“量子密鑰分發——QKD——是星链用來保護衞星間通信鏈路的加密技術。兩顆衞星通過糾纏光子對來協商對稱密鑰。這個過程會產生大量的元數據——不是密鑰本身,是密鑰協商過程中的各種參數:光子波長漂移、到達時間差、背景噪聲水平、糾錯碼的奇偶校驗模式——”法尔汉停了一下,“星链認為這些元數據是隨機的、無意義的、不會包含任何信息。所以他們不加密,不校驗,不計費。”
“但這些元數據可以被調製?”陆远脱口而出。他還沒完全理解法尔汉的邏輯,但他的工程直覺已經追上了對方的思路。
法尔汉的嘴角動了一下——一個極其微小的弧度,介於滿意和驚訝之間。“對。QKD協商過程中的光子到達時間差——那不是一個完美的隨機過程。它受限於發射端的激光器相位噪聲特性,而這種相位噪聲可以通過對激光器驅動電流的微調來主動控制。也就是説,你可以把數據嵌入到看似隨機的光子到達時間差裏,用星链自己的QKD信道來傳輸未經授權的數據。”
“速率呢?”
“大約每秒一比特。”
陆远沉默了幾秒。每秒一比特——發送一條短信需要幾秒鐘,發送一張照片需要幾個小時。但發送指令、發送加密密鑰、發送認證憑證——這些數據量都很小。每秒一比特,對於元數據傳輸來説,夠了。
“但這只是一個概念,”法尔汉説,語氣裏的漫不經心褪去了一些,“要讓它變成真正能用的協議,還有三個問題需要解決。第一,QKD信道是星間鏈路——在地面上無法直接接入。你需要一個星链地面站或者一個能跟衞星建立QKD連接的終端設備才能讀寫這些元數據。第二,即使你成功嵌入了數據,這些數據要如何從星链網絡中優雅地穿出到接收端,而不觸發任何計費系統的警覺——這是一個路由層的問題。第三——”
他沒有説完。他的目光落在陆远臉上,好像在等他猜出第三個問題。
“信號指紋,”陆远説,“你需要在地面端註冊一個身份。一個不會被星链拒絕的終端身份。不然你的數據根本沒有機會進入任何一條鏈路。”
法尔汉看着他,那種評估的表情持續了好幾秒。然後他點了點頭。
“這就是為什麼我在等你。”
陆远突然明白了很多事情。三年前那個固件問題——那個法尔汉故意留在固件裏的測試入口——不是一次隨意的測試。法尔汉在找人。找一個能讀懂物理層的人,一個能看到“漏洞”背後本質的人,一個遇到漏洞不會用來牟利、而是會用來修手機的人。
自己在三年前就已經被篩選了。
“你知道我會被星链盯上?”陆远的聲音不自覺地壓低了。
“我知道你在用信號克隆,”法尔汉坦然地説,“你的信號指紋特徵在我這裏掛了一個標籤。深圳出現了一個克隆的鉑金級信號,用了大約三週。沒有用於犯罪,沒有用於竊取數據——只是用來給孩子看病。這種信號不常見。”
他在自己的終端上操作了一下,調出一個窗口,上面是一段日誌文件——陆远在華為實驗筆記上的那一頁批註。陆远看到那段自己七年前寫下的文字出現在別人的屏幕上,感到一陣不真實的寒意。
“你——怎麼拿到這個的?”
“华为201所的離職實驗日誌有一個副本被保存在內網歸檔中。2049年星链收購的時候,歸檔數據被整體遷移到了星链的存儲系統裏。我在兩年半前通過一個存儲側通道拿到了整個歸檔。”法尔汉的語氣依然平淡,“七千多份實驗文檔,三千多個固件版本,四百多份個人筆記——你的筆記是唯一一份提到了信號指紋克隆方案的。”
陆远沒有接話。他感到一種奇怪的眩暈——自己七年前隨手寫下的批註,竟然經過了一條如此曲折的路徑,在另一個人的屏幕上重新出現在自己眼前。而且這個人等待了三年,就為了等帶着那個批註的人走到他面前。
“所以——塞拉斯的人在追我,不是因為我在他的監控系統裏觸發了警報,”陆远慢慢地説,“是因為你——你們——需要有人來做那個信號克隆的事情,而塞拉斯知道数据党需要一個懂物理層的人?”
“不。”法尔汉搖頭,“塞拉斯追你是因為米蘭故意把你暴露給他了。米蘭想要看看——當你被逼到牆角的時候,你會找誰。”
“米蘭也知道?”
“米蘭一切都知道。”法尔汉頓了頓,“那個漏洞——信號克隆的漏洞——是米蘭故意留在星链固件裏的。他設計的系統,不可能留下一個七年前的華為工程師都能發現、他的安全團隊卻視而不見的漏洞。他是故意的。”
陆远感到自己的理智正在觸碰一個他無法把握的尺度。他以為自己在偷流量——結果那是一個首席架構師設計的陷阱。他以為自己在逃亡——結果他的每一步都在一個更大棋局的預料之中。他以為自己找到了一條救女兒的路——但這條路指向的方向遠比他想像的要複雜和危險。
法尔汉還想説什麼,但他面前的屏幕上彈出了一個加密頻道的接入請求。他看了一眼,表情微微變化了一下,按下了接通鍵。
屏幕亮起,一張面孔出現在畫面中。
一個女人。六十歲出頭,黑色皮膚,短髮已經花白,戴着一副圓框老花鏡,背景是一個堆滿了紙箱和線纜卷軸的房間,窗户外面是灰濛濛的海港和集裝箱吊機。她穿着一件深藍色的工裝背心,衣領上彆着一枚不起眼的徽章——陆远後來才意識到那是一隻銜着橄欖枝的鴿子,用銅線手工彎成的。
“法尔汉。”她的聲音低沉,帶着西非口音的英語,“你那邊有客人?”
“阿米娜,”法尔汉側了一下身,讓攝像頭能拍到陆远,“這就是我跟你提過的那個人。”
屏幕上的女人——阿米娜·奧烏蘇——透過攝像頭仔細地打量着陆远。她的目光不像法尔汉那樣掃描式的,而是一種更慢、更深、像是要把一個人讀到骨子裏的審視。
“你好,年輕人。”她説,“你知道鸽子网络嗎?”
陆远搖頭。
“你會知道的。”她説。她的話語裏沒有威脅的意味,更像是一種陳述,帶着淡淡的篤定。然後她的目光轉向法尔汉:“那個協議——你確定米蘭是認真的?”
法尔汉沉默了幾秒。在那一瞬間,陆远注意到他的表情——不是猶豫,而是一種更深層的、他在努力保持平靜的重量。
“我確定。它是誘餌。但誘餌也可以釣魚。”
阿米娜在屏幕的另一端點了點頭。她的表情沒有太多變化,但陆远覺得她對這個回答並不意外。
“那個華為來的年輕人,”她説,“他用信號克隆做了什麼?”
“給他女兒看病。”
阿米娜的眉毛動了一下。這是她在整個對話中第一次出現真正的情感反應——不是驚訝,更像是一種無聲的確認。她重新看着陆远,這次的目光比剛才柔和了一點點,只是一點點。
“孩子得的什麼病?”
“癲癇。難治性的。”陆远的聲音有些乾澀,“需要遠程專家會診和AI影像分析。铜级配額不夠。”
阿米娜沒有説“我很抱歉”之類的話。她只是點了點頭。然後她對法尔汉説:“給他一個工位。讓他先學會SkyWalker的信令結構。拉各斯這邊的新固件樣本會在七天內送到,到時候我們需要他在地面端搭建信號克隆的中繼測試節點。”
“他不是來加入数据党的,”法尔汉説,“他是來救他女兒的。”
阿米娜的目光再次落在陆远身上。這一次她的目光停留了更長的時間,好像在看一件她見過太多次的東西——一個以為自己只是在救親人的人,不知道這條路會通向什麼樣的終點。
“救女兒和救世界有時候是同一條路,年輕人。”她説,“先把女兒治好。然後你會發現你已經站在了戰場的中央。”
她關掉了通訊。屏幕恢復成終端界面,光標在屏幕底部靜靜地閃爍。
法尔汉站起來,走向一個空着的法拉第籠隔間。他拍了拍籠子門上貼着的那個手寫標籤——上面寫着“RF-01”。
“你的位置。隔音耳機在桌上的抽屜裏,使用説明貼在顯示器邊框上。操作系統是Linux Mint,沒有星链的任何閉源驅動。開發環境已經裝好了,工具鏈的文檔在/usr/share/skywalker/doc目錄下。有問題來隔壁找我。”
陆远站在那個籠子的門口,看着裏面那台沒有任何品牌的電腦,看着屏幕上那個ASCII地球還在緩慢旋轉。他又看了看女兒——她已經從椅子上下來,站在那個巨大的全球星链拓撲圖前,仰着頭看那些移動的光線。她不知道那些線條是什麼,但她看得入神。
“爸爸,這些線是網線嗎?”
陆远不知道怎麼回答。他想説是的。它們都是網線。每一根線都在連接着什麼,也在斷開什麼。
他蹲下來,握住女兒的手。
“是網線。很長的網線。”
“通向哪裏?”
“通向一個爸爸還不知道的地方。”