一月二十七號,周二。大年初六。
楠書房。
林遠從工作室回來,推開門就聞到餃子的香味。
母親在廚房包餃子。父親坐在院子裡曬太陽,手裡拿著當天的報紙。
"回來了?"林建國放下報紙,"先洗手,幫忙擀皮。"
林遠洗了手坐下來。一家三口包餃子,誰也沒提工作的事。
直到吃完午飯,林建國才問了一句:"你那個電腦的事,忙完了?"
"沒忙完。還有幾天。"
"嗯。"林建國點點頭,"別太累。"
下午。書房。
小艾的聲音在腦海里響起。
"宿主,MyDoom最新數據。全球感染電腦約二十萬台。傳播速度仍在加快。"
"每封郵件的感染率?"
"目前約十二比一。也就是每十二封郵件中就有一封攜帶病毒。"
林遠皺了皺眉。十二比一。昨天還是一百比一。
"按照這個趨勢,兩天之內就會到每五封郵件就有一封攜帶病毒。"小艾補充道。
"我知道。"林遠打開筆記本電腦,"MyDoom的傳播曲線是經典的指數增長。再過兩天就會到峰值。"
他打開CTIN的架構文檔。
十台終端的並發測試已經通過,八點七秒。但RSA的演講不能只展示十台終端——那只是demo級別。
要展示真正的實力,至少需要一百台。
"小艾,幫我規劃一下百台並發的架構升級方案。"
"好的,宿主。當前瓶頸不在終端檢測層和驗證層,在推送層。十台終端用TCP單播沒問題,但一百台終端的並發推送會導致消息broker的連接數爆炸。建議改為UDP廣播加確認機制。"
"UDP廣播?可靠性怎麼保證?"
"採用選擇性重傳。每個終端收到推送後回一個ACK。如果三秒內沒收到ACK,用TCP單播補推。這樣既保證速度,又保證可靠性。"
林遠在紙上畫了幾筆。"做。"
一月二十八號,周三。
工作室。
趙強和周凱都到了。
"百台並發?"趙強看著林遠的升級方案,"上哪找一百台終端?"
"不用真的找一百台電腦。"林遠說,"寫一個模擬器。每台'虛擬終端'就是一個線程,模擬哈希上傳和接收推送的過程。"
"模擬器?"周凱眼睛亮了,"這個我在學校做過類似的。我負責。"
"好。你負責模擬器,我負責推送層改造,趙強負責終端檢測層的壓力測試。"
三個人分頭行動。
趙強用腳本模擬不同大小的郵件附件——從十KB到十MB不等,測試哈希提取的穩定性。周凱搭了一百個線程的模擬框架。林遠重寫推送層的消息分發邏輯。
下午四點,第一輪百台並發測試。
"準備。三、二、一——開始。"
一百個虛擬終端同時啟動。每個終端生成一個模擬惡意樣本的512位哈希,同時上傳到驗證節點。
驗證節點收到一百個哈希,開始沙箱驗證。
然後推送層把驗證結果分發回一百個終端。
屏幕上的計時器跳動。
十四點二秒。
"超了。"周凱搖頭,"十秒目標沒達到。"
瓶頸還是推送層。即使改成了UDP廣播,一百個終端的ACK回傳在驗證節點端造成了大量並發寫入,資料庫I/O成了瓶頸。
"ACK不要寫資料庫。"林遠說,"直接在內存里做。用一個環形緩衝區記錄每個終端的ACK狀態。超時三秒沒ACK的,再走TCP補推。"
周凱改代碼。半小時後,第二輪測試。
九點八秒。
"接近了。"趙強說,"但還不夠。"
林遠盯著屏幕上的性能檢測數據。"推送層的數據包還是太大。每個推送包包含了完整的威脅特徵描述,五百多字節。"
"壓縮一下?"周凱建議。
"不只是壓縮。"林遠說,"推送包不需要攜帶完整特徵。只需要攜帶一個差量更新——新威脅的哈希值和版本號。終端本地已經有特徵庫,收到差量後自行合併。"
"差量推送?"
"對。數據包從五百字節壓到六十四字節。"
又是一輪修改。
晚上八點,第三輪測試。
"開始。"
計時器跳動。
七點九秒。
"通過了。"趙強站起來,"七點九秒。比十台並發時的八點七秒還快了零點八秒。"
"百台並發,七點九秒。"周凱重複了一遍,"從檢測到防護,七點九秒。"
林遠點了點頭。
比demo版還快。因為百台並發的壓力逼著他做了更深層的架構優化——差量推送、內存ACK、UDP廣播。這些優化反過來讓整體效率更高了。
"CTIN原型v0.2完成。"林遠在筆記本上記下,"百台並發,七點九秒。RSA演示版本。"
一月二十九號,周四。
RSA演講PPT。
林遠坐在楠書房的書桌前,打開幻燈片軟體。
演講標題:《威脅情報網絡:從四小時到十秒》。
結構四部分。
第一部分:問題。用MyDoom作為案例。
"好的,宿主。一月二十六日首次發現,當天約十五萬台電腦感染。二十七日約二十萬台。二十八日三十萬台。今天——二十九日——預計四十萬台。每五封郵件中就有一封攜帶病毒。"
"做成時間線圖表。橫軸是日期,縱軸是感染量。再加一條線——傳統殺毒軟體的特徵碼更新時間。"
圖表出來了。感染量曲線陡峭上升。而特徵碼更新的時間線是一條水平線——四到六小時。兩條線的差距越來越大。
"這就是問題。"林遠自言自語,"傳統模式追不上蠕蟲速度。"
第二部分:方案。CTIN的三層架構——終端檢測層、驗證層、推送層。用一張簡潔的架構圖說明。不講代碼,不講協議,只講原理。
第三部分:演示。現場跑CTIN原型。用MyDoom的真實樣本做輸入,讓台下觀眾親眼看到——從檢測到防護,七點九秒。
第四部分:展望。節點越多,防禦越強。這不是一個軟體,是一個網絡。一個全球性的安全防禦網絡。
PPT做到晚上十一點。三十頁。簡潔、有力、數據說話。
手機震了。楊姝冪的簡訊。
"林遠哥,輥石試音完了。"
"結果不好不壞。導演說我的聲線'出乎意料地合適',但有一個前輩聲線更成熟,公司還在考慮。"
"不管怎樣,我不後悔。試過了,知道了自己的水平。就算這次不行,下次再來。"
林遠看著簡訊,想了想,回了一條。
"你的聲線最大的優勢不是成熟,是乾淨。乾淨到能讓人記住。這是稀缺的東西。"
"等消息。"
過了兩分鐘,楊姝冪回覆:"謝謝林遠哥。"
一月三十號,周五。
Consumer v1.1發布。
分組管理、報表導出、多用戶支持。企業客戶最需要的功能全部到位。
"發布到SourceForge。"林遠對趙強說,"同步通知所有企業客戶。"
"好。"趙強操作了一番,"已發布。"
幾乎是同時,MyDoom的最新數據傳來。
五十萬台電腦感染。每四封郵件中就有一封攜帶病毒。
全球網際網路流量下降了百分之十。網頁加載速度平均慢了百分之五十。
"這已經不是蠕蟲了。"趙強說,"這是一場瘟疫。"
"而且明天還有一件事。"林遠說。
"什麼?"
"二月一號。MyDoom會發動DDoS攻擊。目標是SCO的伺服器。"
趙強愣了一下。"你怎麼知道?"
"病毒代碼里寫了。"林遠說,"反編譯MyDoom的代碼就能發現——它內置了一個定時任務,二月一號對SCO的伺服器發起分布式拒絕服務攻擊。"
"百萬台電腦同時攻擊一個網站……"
"那是網際網路歷史上最大規模的DDoS攻擊之一。"
趙強沉默了幾秒。"RSA演講——你要用這個做引子?"
"對。"林遠說,"明天是二月一號。後天是二月二號。RSA開幕。如果我在演講現場實時播報SCO伺服器被攻擊的消息——"
"全場都會震動。"
"不只是震動。"林遠說,"是證明。證明我說的每一句話都是真的。"
一月三十一號,周六。
最後一天準備。
林遠把CTIN原型打包,拷到筆記本電腦里。演講PPT拷了一份備份。機票是昨天訂的——今天下午的飛機,經停東京,飛往舊金山。
蘇明遠打電話來:"VPN最新數據。累計二十五單,總額三十二萬。廣深那邊又簽了一單。"
"不錯。"
"RSA那邊,需要我準備什麼嗎?"
"幫我盯著工作室。CTIN原型的代碼已經提交了,趙強和周凱會維護。如果Consumer v1.1出了問題,先讓趙強處理。"
"放心。"蘇明遠說,"一路平安。"
"嗯。"
下午。首都國際機場。
林遠背著雙肩包,拖著一個小行李箱。筆記本電腦在包里。
過安檢。候機。登機。
飛機起飛。
十二個小時的飛行。
林遠靠在座位上,看著窗外的雲層。太平洋在上面鋪展開來,灰藍色的,一望無際。
他閉上眼睛,在腦海里把演講內容又過了一遍。
開場——MyDoom的數據。
問題——傳統殺毒的困境。
方案——CTIN三層架構。
演示——七點九秒,現場跑。
展望——節點越多,防禦越強。
結尾只有一句話。
"這不是一個產品的發布會。這是安全行業新紀元的開始。"
他睜開眼睛。
窗外的雲層散開了一片。遠處,隱約能看到陸地的輪廓。
快到了。