暗号化
bae が opaque クラウドホームへ置くものは、デバイスを離れる前にすべて暗号化されます。bae は独自の暗号を実装しません。方式全体は coven のもので、このページでは bae がそれをどう使うかを説明します。閲覧可能ホームはこの仕組み全体を使いません。以下は適用されません。
ライブラリ鍵
このセクションへのリンクopaque ライブラリには 1 つのルートシークレットがあります。ホーム作成時に生成されるランダムな 256 ビット鍵です。これは OS のキーリングにあり、ファイルには入りません。Apple プラットフォームではキーリング項目が iCloud Keychain 経由で同期されます。bae の設定が保存するのは鍵のフィンガープリントだけで、シークレットを保持せずに、ロック解除時に誤った鍵と正しい鍵を区別するのに十分です。
鍵は 2 つの方法でデバイス間を移動します。どちらも 身元とメンバーシップ で説明しています。招待時に承認済みデバイスの公開鍵へ封印される方法と、復元コード内で運ばれる方法です。
ライブラリ鍵は、実際には番号付き世代のキーリングです。メンバーを削除すると、削除されたメンバーが受け取らない新しい世代が追加されます。その後に書き込まれたものはすべて新しい世代を使うため、そのメンバーには読めません。残るメンバーはすべての世代を保持し、全履歴を読めます。各封印オブジェクトは、それを開く世代を平文で記録します。
封印されるもの
このセクションへのリンクホーム内のすべてのオブジェクトです。変更セット、スナップショット、音声 blob、アートワーク、メンバーシップレコード、制御オブジェクトが含まれます。オブジェクトは XChaCha20-Poly1305 で 64 KB チャンクごとに封印され、各チャンクは認証され、文脈に結び付けられます。封印オブジェクトは、このライブラリで、この鍵を使い、そのオブジェクトとして書かれた場合にだけ復号できます。チャンク化されているため、ストリーミングではプレーヤーが取得したバイト範囲だけを復号できます。
プロバイダーが見られるもの
このセクションへのリンクオブジェクト数、オブジェクトサイズ、アップロードのタイミング、アクセスパターンです。名前、メタデータ、音声、アートワーク、メンバーシップは見えません。サーバー側の復旧はありません。すべてのデバイスと鍵のすべてのコピーを失ったユーザーは、ライブラリの暗号文を永久に失います。それは設計どおりです。
ロック解除とロック
このセクションへのリンクライブラリを開くと、キーリングから鍵を読みます。ライブラリが鍵を必要としていてキーリングにない場合、bae はそのライブラリをロック済みとして扱います。開く前に鍵の入力を求め、保存済みフィンガープリントと照合してからキーリングへ保存します。ライブラリのロックは、意図的にキーリングから鍵を削除します。再入力されるまで、クラウドホーム内のものは読めず、書けません。