2026 年的所有 messenger 公司都說自己在乎你的隱私。行銷頁用的措辭都差不多 —— 「端到端加密」、「我們不讀你的訊息」、「你的資料由你掌控」。這些話技術上多半都是真的。它們想表達的東西卻完全不是一回事。
真正重要的區分是這一條:這家公司能不能「看到」它聲稱自己不去看的東西?
如果能,你擁有的是「承諾式隱私」。公司持有資料,他們口頭保證不會拿它幹什麼壞事。你在同時信任他們當前的政策、當前的管理層、當前的法律暴露面、當前的安全水位 —— 四件事一起信任。
如果不能,你擁有的是「架構式隱私」。公司沒有這份資料。想交也交不出來,傳票也調不出來,就算被入侵也洩漏不了。承諾變得無關緊要 —— 沒東西可承諾了。
幾乎每家 messenger 都活在第一列裡。我們很有意識地想把自己搬到第二列。
「承諾」能買到什麼,以及它怎麼破
一份承諾今天可以完美,明天可以一文不值。能把承諾變成空氣的幾種事:
- 一張傳票。「我們承諾不分享你的資料」這句話敵不過「交出來,否則按藐視法庭處理」。承諾約束的是自願披露;法庭命令是強制披露。
- 管理層更替。當年定政策的 CEO 退休。新 CEO 看到你的資料裡有商業機會。政策改了。資料原本一直在那裡。
- 被收購。公司被買走。新東家繼承全部資產,包括資料。註冊時承諾過的一切,現在重新可議價。
- 被入侵。承諾跟攻擊者能不能讀資料庫毫無關係。他們就是讀了。
- 轄區變化。公司總部遷移。新轄區的強制披露法律不一樣。原本機密的東西,現在受你不知道的法律程序約束。
- 誠實的失誤。新來的工程師加了一條日誌語句,把本來應該保密的東西也記下來了。承諾沒變,資料照漏。
這些都不是假設。過去十年內,每一種都已經在 messaging 公司身上發生過,有的還不止一次。
「架構」能買到什麼 —— 它的破法不一樣
架構層級的隱私不是一種感覺,是關於「什麼資料結構存在 / 什麼表裡有什麼欄位 / 什麼函式能在什麼資料上呼叫」的事實。如果你的手機號不在我們資料庫裡,法庭無法命令我們交出它。如果我們沒有「你在哪些群組」的紀錄,入侵也曝不出「你的群組清單」 —— 因為這個清單不存在。
這正是本系列其他文章一路走過的:
- 我們沒有手機號 —— 這根線不存在。
- 我們沒有群組成員表 —— 這根線不存在。
- 我們沒有角色表 —— 這根線不存在。
- 我們**解不了你發出去的訊息** —— 即便傳票、入侵、我們自己腐化三個一起發生也解不了。數學閉不上。
架構有它自己的失敗模式:
- 實作錯誤。一個微妙的 bug 讓架構在某處比聲稱的更漏。(我們測試這件事;但我們不無敵。)
- 在裝置層面被繞過。手機被入侵就是被入侵 —— 我們這邊的架構擋不住針對你本機儲存的鑑識。(我們盡力 —— 裝置端加密、推送通知不帶內容 —— 但手機是你的,作業系統的安全水位我們改不動。)
- 被「我們確實知道的事」繞過。我們確實知道你的用戶端在 T 時刻連了我們的叢集。我們不知道加密通道裡是什麼,但**「連線發生過」這件事**是 metadata。這部分我們盡量縮到最小,但沒辦法做到完全零 —— 否則你壓根收不到訊息。
「承諾」仍然要做的部分
架構幹掉了大多數本來需要承諾去守的資料。但不是全部。剩下還要靠承諾的部分:
- 連線事件我們會記日誌 —— 沒辦法不記,維運和濫用處理需要。我們承諾這類日誌生命週期短,且我們不跟任何外部識別符做關聯查詢(因為我們就沒有外部識別符)。
- 伺服端跑的程式碼是我們選的。今天你沒法稽核我們伺服端的程式碼(我們還沒開源)。這是一個真實的差距。我們正在縮小它。
- 我們不會加入會改變架構的功能。「我們下季度不會開始收集手機號」是一個承諾。今天的架構讓它容易守;承諾則把「讓它容易守」這件事固化下來。
信任的覆蓋面變小了,但沒有消失。剩下的承諾只針對那些架構本身沒有讓其變得不可能的事 —— 是一個很短的清單,而且我們的目標是讓它繼續縮。
那根 dial,你想撥到哪
你可以把任何 messenger 想像成一根 dial,在「架構」和「承諾」之間滑動。越靠近「承諾」那一端,你越是在信任這家公司;越靠近「架構」那一端,你越是在信任數學。
公司會變。數學不會。
這是本系列至此第 X 篇文章。我們一路走過的,都是某一處我們把 dial 往架構那一端撥過的具體場景。後面還會繼續講那些還沒覆蓋的。希望你讀完能帶走的一件事:下次某個 messenger 告訴你「我們重視隱私」時,你的下一句應該問「是用架構保證,還是用承諾保證?」 —— 而且這個問題應該是可以驗證的。
BlindPost