暗号化
bae がクラウドホームへ置くものは、デバイスを離れる前にすべて暗号化されます。暗号化しないモードはありません。bae は独自の暗号を実装しません。方式全体は coven のもので、このページでは bae がそれをどう使うかを説明します。
| 鍵 | 役割 |
|---|---|
| ストア鍵 | ライブラリとそのメンバーシップレコードを暗号化します |
| 各人のサークル鍵 | その人が非公開にしているもの、つまり非公開の再生履歴とプレイリストを暗号化します |
| 各ファイルの鍵 | 1 つのファイルを暗号化し、その行の暗号化された変更の中でだけ運ばれます |
| 人の署名鍵ペア | その人のデバイスが送るすべての変更に署名します |
| 人の封印鍵ペア | その人に向けて封印された鍵を開きます |
ストア鍵はランダムで、ライブラリがクラウドホームを得たときに作られます。人の鍵ペアは、その人のすべてのデバイスで共有されます。秘密鍵とライブラリの鍵は OS のキーリングにあり、ファイルやデータベースには入りません。鍵がデバイスに届く方法は 2 つあり、どちらも アイデンティティとメンバーシップ で説明しています。復元コードはその人自身の鍵ペアを運び、招待を承認する管理者は、新しい人の封印鍵に向けてストア鍵を封印します。
ローテーション
このセクションへのリンク鍵はその場で変更されることはなく、新しい鍵が追加されます。人が削除された後、残るメンバーのデバイスは、そこへさらにデータを書き込む前に、新しいストア鍵と、その人が属していた各サークルの新しい鍵を追加します。それ以降に書き込まれたものはその人には読めませんが、残るメンバーは古い鍵をすべて保持し、全履歴を読めます。1 台のデバイスを削除しても何もローテーションされません。その人の他のデバイスが同じ鍵を共有しているためです。削除以降、そのデバイスが送るものは反映されません。
封印されるもの
このセクションへのリンクホーム内のすべてのオブジェクトです。変更、スナップショット、メンバーシップレコード、ファイルが含まれます。内容は XChaCha20-Poly1305 で暗号化され、すべての変更は Ed25519 で署名され、鍵は X25519 のシールドボックスで人に向けて封印されます。ファイルは 64 KiB チャンクごとに暗号化され、各チャンクは個別に認証され、位置に結び付けられます。そのため、チャンクを気づかれずに改変、差し替え、並べ替えることはできません。チャンク化されているため、ストリーミングではプレーヤーが取得したチャンクだけを復号できます。
プロバイダーが見られるもの
このセクションへのリンクオブジェクト数、オブジェクトサイズ、アップロードのタイミング、各オブジェクトを書き込んだアカウント、各ファイルとスナップショットをアップロードしたデバイスです。パスにデバイス名が含まれるためです。名前、メタデータ、音声、アートワークは見えません。ファイルはランダムな名前で置かれ、内容のハッシュは使いません。サーバー側の復旧はありません。全員がすべてのデバイスとすべての復元コードを失うと、ライブラリは失われます。それは設計どおりです。
キーリング
このセクションへのリンクライブラリを開くと、OS のキーリングから鍵を読みます。セッションのロックやディスプレイのスリープで今ロックされているキーリングは、壊れたキーリングと区別されます。bae はライブラリを使用不能と報告するのではなく、ロック中として表示し、ロック解除後にもう一度試します。デバイスが鍵を忘れることもでき、その場合はロックが再び解除されるまで、そのデバイスでライブラリがロックされます。