身分與成員資格
bae 完全沒有帳號系統。資料庫中的每個人都是一位 coven 成員:一個隨機且永久的成員 id,以及兩個金鑰對,一個用於簽署,一個用於接收封存給他的金鑰;它們由此人的所有裝置共用,並保存在每台裝置的 OS 鑰匙圈中。裝置是一次安裝,有自己的 id,屬於一位成員。誰屬於某個資料庫,是雲端主目錄中的一組簽署記錄,由每位成員的裝置檢查,不是由伺服器發出。這套機制來自 coven;本頁說明 bae 如何使用它。
資料庫在雲端主目錄中的全部歷史是一條編號序列,每台裝置都以相同順序套用它。成員資格或設定的變更是這條序列中的一個管理項目,以作者的金鑰簽署,並依據它之前那一刻的狀態判定,因此每台裝置都能獨立得出相同結論。項目只有在作者有權建立時才生效,而資料庫始終至少保留一位管理員。
裝置傳送的每項變更都會對照此記錄檢查:由目前成員簽署,來自未被移除的裝置。來自已移除裝置或成員、從未加入的金鑰,或簽章無效的變更都不生效。提供者儲存記錄,但無法偽造它們。
管理員 與 成員 都能讀寫資料庫:coven 不會對資料庫寫入檢查權限,因此唯讀角色無法成立。管理員另外能邀請與移除人、變更角色,以及重新命名資料庫。為資料庫提供雲端主目錄的人是它的第一位管理員。
| 動作 | 誰 |
|---|---|
| 邀請某人 | 管理員 |
| 加入裝置 | 本人,從新裝置,用自己的還原碼 |
| 移除裝置 | 裝置所屬的人,或任何管理員 |
| 移除某人 | 管理員 |
| 重新命名資料庫 | 管理員 |
一個人的個人檔案、評分、播放紀錄與播放清單都是擁有者列:只有此人的裝置能變更它們,因此掛在某人名下的評分確實出自他本人。
加入你自己的裝置
Section titled “加入你自己的裝置”還原碼證明裝置屬於其主人,因此不需要核准:
- 新裝置透過掃描此人另一台裝置顯示的 QR 碼、在 Apple 裝置上從 iCloud 鑰匙圈選取,或手動輸入來取得還原碼。
- 它連到儲存空間:在 Dropbox 與 OneDrive 上登入此人自己的帳號,在 S3 上使用此人的存取金鑰,QR 碼會在還原碼旁攜帶該金鑰。
- 它載入資料庫,確認還原碼中的金鑰屬於目前成員,並以這些金鑰簽署的項目把自己登記為新裝置。
金鑰此後已被替換的還原碼會失敗。還原總是會建立一台新裝置;它不會挽救另一個安裝中尚未傳送的編輯。
- 管理員輸入對方的提供者帳號並選擇其角色。bae 把資料庫的資料夾分享給該帳號,或在 S3 上為對方建立存取金鑰,並顯示邀請:一個 QR 碼,內含資料庫的位置、為此人選定的成員 id、一次性密鑰與資料庫目前的名稱。邀請在建立一天後過期。
- 對方的裝置掃描邀請,登入他自己的帳號,產生他的金鑰對,並把加入請求寫入儲存空間;該請求以從邀請密鑰衍生的金鑰加密,並以他的新金鑰簽署。
- 管理員的裝置是唯一持有該密鑰的裝置,它會顯示請求,由管理員核准。
- 核准會把每把存放區金鑰封存給此人的新封存金鑰,然後新增接納他的項目。
- 新裝置開啟自己的金鑰,載入資料庫,登記自己,並以他輸入的名字寫入此人的個人檔案。
拒絕邀請,或讓邀請過期,會收回它授予的提供者存取權。
移除裝置或人是一個管理項目,它在序列中的位置是歷史中的一條分界線:被移除的裝置或人之後傳送的內容不生效,之前抵達的內容會保留。移除某人也會移除其裝置與私人圈子,並在寫入更多資料前替換他持有的金鑰(見加密)。切斷儲存存取是提供者那邊的工作:持有資料庫的帳號所在的裝置會取消分享資料夾,在 S3 上則刪除此人的存取金鑰。已同步到被移除裝置上的內容會留在那裡;資料無法被收回。
還原碼包含成員 id 及其目前的私密金鑰對、資料庫的 store id 與儲存位置;從不包含儲存憑證、登入 token 或資料庫名稱。它依需求顯示,在 Apple 平台上自動保存在 iCloud 鑰匙圈中,敏感度與資料庫本身完全相同:持有它且能存取儲存空間的人,在資料庫看來就是那個人。失去每台裝置與還原碼的人,可以由管理員重新邀請到他現有的成員 id,這會替換他的金鑰。