加密
bae 放入雲端主目錄的所有內容,都會在離開裝置前加密;沒有不加密的模式。bae 不自行實作密碼學:整套方案都來自 coven,本頁說明 bae 如何使用它。
| 金鑰 | 用途 |
|---|---|
| 存放區金鑰 | 加密資料庫及其成員資格記錄 |
| 每個人的圈子金鑰 | 加密此人設為私人的內容:其私人播放紀錄與播放清單 |
| 每個檔案的金鑰 | 加密一個檔案,只在其所屬列的加密變更中傳遞 |
| 某人的簽署金鑰對 | 為其裝置傳送的每項變更簽署 |
| 某人的封存金鑰對 | 開啟封存給此人的金鑰 |
存放區金鑰是隨機的,在資料庫取得雲端主目錄時產生。一個人的金鑰對由其所有裝置共用。私密金鑰與資料庫金鑰存在 OS 鑰匙圈中,永遠不在檔案或資料庫裡。它們以兩種方式抵達裝置,兩者都在身份和會員資格中說明:還原碼攜帶此人自己的金鑰對;核准邀請的管理員會把存放區金鑰封存給新成員的封存金鑰。
金鑰從不就地變更,而是新增一把。某人被移除後,仍在的成員的裝置會在繼續寫入資料之前,新增一把存放區金鑰,並為此人所在的每個圈子新增一把金鑰:之後寫入的一切對他都不可讀,而其餘成員保留所有舊金鑰,可讀取所有歷史。移除單一裝置不會輪替任何金鑰,因為此人的其他裝置共用相同的金鑰;從移除起,那台裝置傳送的內容不再生效。
主目錄中的每個物件:變更、snapshot、成員資格記錄與檔案。內容以 XChaCha20-Poly1305 加密,每項變更都以 Ed25519 簽署,金鑰則以 X25519 sealed box 封存給人。檔案依 64 KiB 區塊加密,每個區塊各自驗證並綁定到自己的位置,因此區塊無法在不被察覺的情況下被竄改、替換或重新排序。分塊就是串流可行的原因:播放器可只解密它抓取的區塊。
提供者能看到什麼
Section titled “提供者能看到什麼”物件數量、物件大小、上傳時間、哪個帳號寫入每個物件,以及哪台裝置上傳了每個檔案與 snapshot,因為它們的路徑帶有裝置名稱。看不到名稱、中繼資料、音訊、圖片。檔案以隨機名稱存放,從不使用其內容的雜湊。沒有伺服器端復原:如果每個人都失去每台裝置與每個還原碼,資料庫就會遺失,這正是設計的結果。
開啟資料庫會從 OS 鑰匙圈讀取其金鑰。目前被鎖定的鑰匙圈(因工作階段鎖定或螢幕睡眠)會與損壞的鑰匙圈區分開來:bae 會把資料庫顯示為已鎖定,並在解鎖後再試一次,而不是回報資料庫無法使用。裝置也可以忘記金鑰,這會把該裝置上的資料庫鎖定,直到再次解鎖。