加密暫存區(實驗)¶
一個用 passkey 解鎖的本機加密儲存。建立時產生一把資料金鑰,放進 passkey 的 user.id,之後在任何有這把 passkey 的裝置上驗證一次就能解開。不必記密語。
這一頁是實驗,內容暫時只有一個文字欄位。真正要放的是 checklist 那類讀者主動打開才看的東西。
它怎麼運作¶
資料金鑰是 32 個隨機位元組,那正好也是一把 age 私鑰的長度,所以直接拿來加密,輸出是標準 age 檔。金鑰放在 passkey 的 user.id 裡,每次驗證時原樣回傳,任何 provider、任何裝置都一樣。實驗頁量的就是這件事。
密文存在這台裝置的 IndexedDB。解鎖之後金鑰只留在記憶體,分頁關掉就沒了。
跟站上檔案加密的差別¶
本機檔案加密的 passkey 模式走 WebAuthn 的 PRF 擴充,保證是「就算密碼管理器的 vault 洩漏,也算不出金鑰」。代價是 iPhone 配第三方密碼管理器拿不到 PRF。
這一層改把金鑰放進 user.id,任何支援 passkey 的環境都能用,代價是金鑰跟著 credential 存在 vault 裡,能解開 vault 的人就能解開這裡的資料。兩種取捨各有適合的東西,所以是兩套並存而不是互相取代。
備援金鑰¶
沒有 WebAuthn 的環境(例如 Tor Browser)只剩備援私鑰這條路,passkey 全丟了也一樣。建立時可以產生一把,公鑰會被加進收件人,私鑰只顯示一次,自己存進密碼管理器。
用備援私鑰解開是唯讀的,看得到內容也匯得出去,改不了。資料金鑰在 passkey 裡,備援那條路拿不到它。
換一台裝置¶
passkey 有同步(Bitwarden、iCloud 鑰匙圈)的話,那台裝置直接解得開。不同步的環境要另外處理,那部分還沒做。
匯出的是標準 age 檔,可以自己搬到另一台裝置匯入。