Rust大規模應用:為WhatsApp增添一層安全保障

Hacker News·

Meta工程部落格闡述了WhatsApp如何利用Rust程式語言來強化其安全架構,特別是在處理敏感資料和大規模緩解潛在漏洞方面。

背景

Meta 近期分享了 WhatsApp 如何在大規模環境下導入 Rust 語言,以提升其媒體處理庫 Wamedia 的安全性與效能。這項工程涉及將原本超過 16 萬行的 C++ 程式碼重構為約 9 萬行的 Rust 程式碼,並宣稱這是目前全球規模最大的 Rust 函式庫部署案例,覆蓋超過 30 億使用者。

社群觀點

Hacker News 的討論首先聚焦於「全球最大規模部署」的說法。部分開發者質疑此頭銜的準確性,指出 Android 系統本身已大量採用 Rust,且其裝機量可能不亞於 WhatsApp;同時,Chromium 瀏覽器也整合了多個 Rust 函式庫,如處理字體與圖片編碼的組件,其影響力同樣遍及全球。此外,關於 WhatsApp 是否仍在使用 Signal 的 libsignal 函式庫也引發討論,有留言指出 WhatsApp 早期確實整合了 C 語言版本的 libsignal,但目前的 Wamedia 顯然是 Meta 自行研發的成果。

在技術實踐層面,社群對 Meta 採用的「差異化模糊測試」驗證策略表示高度讚賞。開發者認為,重寫舊有系統最困難的挑戰不在於撰寫新語言,而是在於如何維持與舊系統「臭蟲級別」的相容性。由於現實世界中的媒體檔案往往不符合規範,若 Rust 解析器過於嚴謹,反而會導致原本在 C++ 版本能正常開啟的檔案失效。透過讓新舊版本並行運作並比對輸出結果,Meta 成功在不破壞使用者體驗的前提下完成遷移,這種漸進式的驗證被視為比「砍掉重練」更具參考價值的工程實踐。

針對 Rust 帶來的二進位檔案體積增加問題,討論區展開了深入的技術辯論。雖然 Rust 標準函式庫會增加約 200KB 至 300KB 的開銷,但在 WhatsApp 高達 170MB 的應用程式體積中,這點增量幾乎可以忽略不計。有經驗的開發者分享,透過 LTO 連結優化與 Buck2 建置系統,可以有效剔除未使用的程式碼。然而,也有觀點批評這類文章過於偏向公關宣傳,未能深入探討如何應對 Rust 生態系中常見的供應鏈安全風險,或是如何處理 C++ 與 Rust 混合開發時的複雜調用問題。

最後,討論延伸到了 WhatsApp 的端到端加密(E2EE)可信度。儘管 Meta 強調安全性提升,但部分資深用戶對其封閉原始碼的特性感到不安,認為即便通訊協定安全,客戶端軟體仍可能存在後門或元數據洩漏。社群中存在一種矛盾的情緒:一方面認可 Rust 在消滅記憶體安全漏洞上的貢獻,另一方面則對 Meta 掌握全球 30 億人通訊命脈的現狀保持警惕,甚至討論起在健身器材等嵌入式設備上過度使用 Android 系統所導致的硬體浪費與維護困境。

延伸閱讀

  • 影片資源:Microsoft is Getting Rusty: A Review of Successes and Challenges(探討微軟在 Windows 與 Azure 導入 Rust 的經驗)。
  • 技術工具:min-sized-rust(GitHub 上的 Rust 二進位體積優化指南)。
  • 定義文件:IETF 關於端到端加密(E2EE)的定義草案。

Hacker News

相關文章

  1. Rust 僅僅是一項工具

    大約 2 個月前

  2. Ubuntu 採用 Rust 語言的深層意義

    大約 2 個月前

  3. 我對 Rust 的宏偉願景

    大約 2 個月前

  4. 供應鏈噩夢:Rust 將如何遭受攻擊以及我們能如何緩解風險

    13 天前

  5. 美國調查WhatsApp聊天記錄非私密聲稱

    3 個月前