Skip to content

身分與成員資格

bae 完全沒有帳號系統。裝置的身分是它為自己產生並保存在 OS 鑰匙圈中的 Ed25519 金鑰對;公開金鑰就是身分。誰屬於某個資料庫,是雲端主目錄中的一組簽署記錄,任何持有它們的人都可驗證,且不是由伺服器發出。這套機制來自 coven;本頁說明 bae 如何使用它。

每個擁有者會把僅附加的已簽署成員記錄流寫入雲端主目錄:此金鑰以此角色加入,此金鑰已移除。每個記錄都連到前一個,每個擁有者也會簽署一個頭部來宣告其流的末端,因此提供者若丟棄或重新排序記錄,會被偵測到而不是被相信。資料庫接受的是每個擁有者已驗證流的聯集。

每次拉取時,每個 changeset 的作者都會對照此記錄檢查:由目前成員簽署,且角色可寫入。來自已移除裝置、從未加入的金鑰,或簽章無效的 changeset 不會套用。提供者儲存記錄,但無法偽造它們;只有持有 owner 金鑰者能變更成員資格。

OwnerMember 都能讀寫資料庫;擁有者另外能核准與移除裝置。bae 的建立裝置是 owner,它核准的每台裝置都以 member 身分加入。(底層機制中還有第三個角色,即唯讀 follower,目前 bae 不會指派。)

新增設備是一個具有明確人工驗證的本機配對會話:

  1. 所有者啟動 新增設備。 bae 短暫監聽本地網路並顯示一個配對代碼。它包含偵聽器位址、臨時會話金鑰、庫名稱、提供者和到期日 - 沒有庫密鑰或持久性儲存憑證。
  2. 加入裝置掃描程式碼,建立其裝置金鑰對,在需要時登入供應商,並透過加密的本機連線發送其簽署的公鑰和提供者帳戶身分。兩台設備顯示相同的指紋。
  3. 所有者比對指紋並確認其確切身分。批准後將在需要時授予其雲端帳戶存取權限,簽署成員資格條目,並密封庫密鑰和對新設備公鑰的最終儲存存取權限。
  4. 密封包透過相同的經過身份驗證的本地連接返回。加入設備打開它,從雲端儲存引導,然後開始同步。

過期、中斷或拒絕的配對不會提供任何幫助。

移除成員會附加已簽署移除記錄,並把資料庫金鑰輪替到被移除金鑰永遠收不到的新世代(見加密)。在可撤銷存取權的儲存上,存取也會被收回。已同步到被移除裝置上的內容會留在那裡;資料無法被收回。輪替之後的一切都超出它的觸及範圍。

復原碼刻意繞過成員資格:它是雲端主目錄座標加上資料庫金鑰,放在一個 bearer 字串中,用於在沒有仍可核准者時還原你自己的資料庫。它依需求產生,在 Apple 平台上自動儲存在 iCloud Keychain 中,敏感度與資料庫本身完全相同。