コンテンツへ移動

暗号化

bae がクラウドホームへ置くものは、デバイスを離れる前にすべて暗号化されます。暗号化しないモードはありません。bae は独自の暗号を実装しません。方式全体は coven のもので、このページでは bae がそれをどう使うかを説明します。

鍵役割
ストア鍵ライブラリとそのメンバーシップレコードを暗号化します
各人のサークル鍵その人が非公開にしているもの、つまり非公開の再生履歴とプレイリストを暗号化します
各ファイルの鍵1 つのファイルを暗号化し、その行の暗号化された変更の中でだけ運ばれます
人の署名鍵ペアその人のデバイスが送るすべての変更に署名します
人の封印鍵ペアその人に向けて封印された鍵を開きます

ストア鍵はランダムで、ライブラリがクラウドホームを得たときに作られます。人の鍵ペアは、その人のすべてのデバイスで共有されます。秘密鍵とライブラリの鍵は OS のキーリングにあり、ファイルやデータベースには入りません。鍵がデバイスに届く方法は 2 つあり、どちらも アイデンティティとメンバーシップ で説明しています。復元コードはその人自身の鍵ペアを運び、招待を承認する管理者は、新しい人の封印鍵に向けてストア鍵を封印します。

鍵はその場で変更されることはなく、新しい鍵が追加されます。人が削除された後、残るメンバーのデバイスは、そこへさらにデータを書き込む前に、新しいストア鍵と、その人が属していた各サークルの新しい鍵を追加します。それ以降に書き込まれたものはその人には読めませんが、残るメンバーは古い鍵をすべて保持し、全履歴を読めます。1 台のデバイスを削除しても何もローテーションされません。その人の他のデバイスが同じ鍵を共有しているためです。削除以降、そのデバイスが送るものは反映されません。

ホーム内のすべてのオブジェクトです。変更、スナップショット、メンバーシップレコード、ファイルが含まれます。内容は XChaCha20-Poly1305 で暗号化され、すべての変更は Ed25519 で署名され、鍵は X25519 のシールドボックスで人に向けて封印されます。ファイルは 64 KiB チャンクごとに暗号化され、各チャンクは個別に認証され、位置に結び付けられます。そのため、チャンクを気づかれずに改変、差し替え、並べ替えることはできません。チャンク化されているため、ストリーミングではプレーヤーが取得したチャンクだけを復号できます。

プロバイダーが見られるもの

このセクションへのリンク

オブジェクト数、オブジェクトサイズ、アップロードのタイミング、各オブジェクトを書き込んだアカウント、各ファイルとスナップショットをアップロードしたデバイスです。パスにデバイス名が含まれるためです。名前、メタデータ、音声、アートワークは見えません。ファイルはランダムな名前で置かれ、内容のハッシュは使いません。サーバー側の復旧はありません。全員がすべてのデバイスとすべての復元コードを失うと、ライブラリは失われます。それは設計どおりです。

ライブラリを開くと、OS のキーリングから鍵を読みます。セッションのロックやディスプレイのスリープで今ロックされているキーリングは、壊れたキーリングと区別されます。bae はライブラリを使用不能と報告するのではなく、ロック中として表示し、ロック解除後にもう一度試します。デバイスが鍵を忘れることもでき、その場合はロックが再び解除されるまで、そのデバイスでライブラリがロックされます。