幾乎每個主流 messenger 在註冊時都問你要手機號(只有一個例外,後面會講到)。其中一些會說「手機號只是用來驗證,不是你的身分」。這種說法多半是行銷修辭:手機號就是這套系統裡的身分,從所有有意義的維度看都是。你換號了,帳號就失聯;有人偷了你的號,帳號就被偷;誰有你的號、你跟誰聊過、你跟誰同群組 —— 整張社交圖都用手機號當 key。
BlindPost 沒有手機號。不是「我們不把你的手機號跟帳號關聯起來」,是根本沒有。註冊介面不問你要,我們的資料庫裡沒有「手機號」這一欄,我們也沒有 SMS provider 帳戶,因為我們壓根不發簡訊。
下面講講這件事實際上意味著什麼 —— 當「身分」不再是手機號,什麼會發生改變。
「那我手機丟了怎麼找回帳號?」
聽到我們不收手機號,接下來通常會有兩個問題:
問:你們沒有我手機號,那我手機丟了怎麼找回帳號?
答:12 個英文單字的助記詞 —— 註冊時生成,有一個引導頁讓你「把這 12 個詞記在一個安全的地方」。換裝置時,你把這 12 個詞輸回去,用戶端會重新生成跟之前一模一樣的金鑰。同一個身分、同一個地址、同一批聯絡人和群組,只是換了一台手機。沒有簡訊驗證碼,沒有 Email 連結,任何一步都不需要經過我們的基礎設施。
問:12 個詞看起來挺短的 —— 會不會被人暴力破解?
答:不會,差距大概是宇宙存在年齡的 7.8 億倍。這個數我們在另一篇文章裡算過。簡版結論:12 個 BIP39 助記詞攜帶 128 位元熵,可能的組合數比地球上每一粒沙、可觀測宇宙裡每一顆恆星、大約 10 萬個地球裡每一個原子的總數還要多。
助記詞是「這個帳號是你的」和「這個帳號丟了」之間唯一的分界。把它當成保險箱鑰匙對待 —— 寫在紙上、離線保存、不要拍照、不要寄給自己 Email。助記詞跟裝置一起丟了 → 帳號永久找不回。沒有「客服找回」這條路 —— 因為我們手上沒有任何東西能證明「這帳號是你的」。
在 BlindPost 上,「你」是誰
你裝 BlindPost、建立帳號的時候,手機本機生成一對長期密碼學金鑰 —— Ed25519。公鑰那一半就是你的身分。其他人看到的是從公鑰派生出來的一段短字串(base58 編碼的指紋);這就是你想讓別人找到你時分享的「地址」。
你用一組 12 個英文單字的助記詞來備份這把金鑰。(我們在前一篇文章算過這組助記詞的安全性。)助記詞也是你換裝置時唯一的恢復方式。助記詞丟了、裝置也沒了 → 帳號永久找不回來。 沒有「簡訊驗證碼重置」,也沒有「點這裡發條簡訊給你」。
顯示名、頭像、個人簡介都能改,改這些不影響你密碼學層面是誰。你的身分就是那把公鑰,公鑰永遠不輪換。
其他 messenger 怎麼做的 —— 以及洩漏點在哪
WhatsApp 用手機號作為帳號識別符。通訊錄發現走的是:你上傳整個通訊錄,伺服器告訴你哪些號碼是 WhatsApp 使用者。換手機,號碼跟著;換 SIM —— 大多數地區允許 SIM 移植,驗證手段意外地薄弱 —— 帳號也跟著。
Signal 在很多維度上比 WhatsApp 好得多,但註冊時仍然要手機號。最近的版本支援在通訊錄裡隱藏手機號、改用 username —— 是個真改進。但手機號還在 Signal 的資料庫裡,還綁著帳號,還能被傳票調到,還有 SIM-swap 被盜的風險。
Telegram 用手機號方式類似,加上一個額外特點:伺服器存「非密聊」訊息的明文副本。
共同形態:公司持有你的手機號。任何針對公司的傳票都能拿到你的手機號。任何對公司的入侵都暴露你的手機號。任何對你手機號的 SIM port 都會接管你的帳號。
你的攻擊面變成什麼樣
當 BlindPost 的伺服器被傳票 / 搜查令 / 入侵時,關於你的「身分」,可被鑑識恢復的是:
- 你的 Ed25519 公鑰(順便,這也是你願意公開的地址 —— 設計上就是公開資訊)。
- 發到這把公鑰的加密 envelope(我們在別的文章裡講過的那些封死密文)。
- 你最近一次連接我們叢集的時間(因為我們要判斷連線是不是活躍)。
不能被恢復的:
- 你的手機號 —— 我們沒有。
- 你的 Email —— 我們不問。
- 你的姓名 —— 我們不存;你設的名字本機,透過端到端加密分享給聯絡人。
- 你的通訊錄 —— 我們不同步。沒有「查看哪些聯絡人在 BlindPost」這種功能。
- 你的 SIM 卡 / IMSI / IMEI —— 跟我們模型無關;手機只是承載金鑰的硬體。
這就是「沒手機號」換來的:在我們的紀錄裡,沒有任何一根線能把「張三、0912-XXX-345、2026 年 8 月 3 日註冊」這類資訊從檔案裡抽出來送進法庭 —— 因為這根線根本不存在。
代價
我們失去最便利的那種通訊錄發現:你沒辦法「打開 app → 看通訊錄裡誰也在用 → 一鍵添加」。那個功能只有在用戶端和伺服器都知道你的手機號時才能運作。我們都不知道,所以我們做不到。
替代方式:
- 分享你的地址 —— 那段 base58 公鑰指紋 —— 透過任何 out-of-band 通道(貼到 Signal、發 iMessage、寫在紙上)。或者分享邀請連結,本質是同一個東西套了一層。
- 當面掃 QR code。
- 透過群組邀請連結加群組,然後在群組裡認識成員。
跟 WhatsApp 的「上傳通訊錄一鍵發現」比,這是真實的體驗摩擦。我們選擇承擔它,因為另一條路 —— 收集和儲存手機號 —— 跟整個專案的隱私目的相違背。一個資料庫可以被傳票調出帳號手機號的隱私 app,本質上是一隻手被綁著打仗;不如一開始就不收。
收尾
「手機號即身分」這套模型是 2010 年代的便利,Signal 那一代端到端加密的預設假設裡就這麼定下來,後來也沒有被認真重新思考過。它換來的是 SMS 註冊和順滑的通訊錄發現,這兩件事對使用者成長來說是實打實的好處。但它同時給了公司 —— 以及透過公司給了政府 —— 一根永久通往你現實身分的線:你的 SIM swap 風險、你的帳單地址、你的電信業者紀錄、你的通話元資料。
我們走了更難的那條路。助記詞是代價;一個其他人都拿不到的身分 —— 不是我們、不是電信業者、不是法庭 —— 是收穫。
BlindPost