換手機之後名字要跟著走,伺服器還是不能看懂
換了一支手機,VanishWhisper 裡每段對話都變回一截 UID。「你幫我取名叫 Alice 的那個人」變成 a9f3c2…。對話還在,名字沒有。
這是在整自己。可是名字放在伺服器上,又違反當初那句「不留痕跡」——伺服器不該知道你把誰叫什麼。
我以為這兩件事打架。要不伺服器記住名字,要不每換一次裝置就失憶。模型若照常見的帳號系統做,會開一張 profile 表,事情十分鐘結束,產品也結束。
名字本來就只活在這台裝置的 IndexedDB 裡,那是故意的。搬家不必把這個決定翻掉。舊裝置產生一把只用一次的 AES-256-GCM 鑰匙,把整包名稱加密,再用新裝置的 RSA 公鑰把這把鑰匙包起來,寫進 Migrations/{newUID} 這一份文件。新裝置解開、寫進自己的 IndexedDB、把那份文件刪掉。Firestore 看到的一直是一堆看不懂的 bytes。
規則沒辦法證明「只有你的舊裝置能寫這份文件」。伺服器上,舊的 UID 和新的 UID 之間沒有關聯。最壞的情況是別人塞進一份假的名稱,而那些名稱屬於新裝置根本沒有的對話,不會畫出來,只是幾筆多餘的本地資料。這個爆炸半徑我接受。
伺服器可以當一時的封套,不可以當記得你怎麼叫對方的那個人。
收尾
不留痕跡不是什麼都不能搬。可以搬的是一個連搬運的人都讀不懂、而且搬完就銷毀的包裹。
先不說了,我得去想還有哪種「只存在這台手機上」的東西,換機時會不會又整自己一次。
這件事發生於 2026 年 4 月,文章整理於 2026 年 10 月。