ニュース · Blackbearのセキュリティ
共有しても封をしたまま
多くの製品は、共有の場面でひっそりと暗号化をあきらめます。ふたりが同じドキュメントを必要とした瞬間、いちばん簡単なのはサーバー側で復号して「機能」と呼ぶことです。私たちはその簡単な道を選びませんでした。
Blackbearは、私たちに鍵を渡すことなく、ファイル、フォルダ、リアルタイムの編集を共有します。その仕組みをご紹介します。
権限は署名された文書
共有スペースはどれも、権限スキーマによって管理されています。各メンバーとその人にできることを記した、小さなポリシー文書です。署名するのは所有者のデバイスです。新しいバージョンはどれも前のバージョンのハッシュに連鎖し、世代のカウンターを進めます。
あるスペースのバージョンを一度見たデバイスは、それより古いものを受け付けません。バージョン8がバージョン7に置き換わることはありません。まったく新しいデバイスには比べる履歴がないため、最初に受け取ったものから始めますが、その瞬間からは後戻りしません。サーバーはポリシーを配るだけです。作ることはできず、履歴のあるデバイスに対して巻き戻すこともできません。
ひとつの鍵を、一人ずつ封をして
共有スペースにはコンテンツ鍵があります。誰もそれをむき出しのまま送り回したりはしません。鍵は各メンバーの公開鍵に対して個別に封をされ、サーバーはその封をしたコピーを保存します。サーバーはそのすべてを持っていても、ひとつも開けられません。
偽造できない役割
閲覧者、コメント者、編集者、モデレーター、所有者。どの役割の付与にも、それを付与した人の署名がついています。データベースの行を書き換えても、誰かを昇格させることはできません。
取り消しで鍵を入れ替える
誰かを外すと、世代が切り替わります。コンテンツ鍵が入れ替わり、残る全員に対して封をし直されます。その瞬間から共有されるものは、去った人にはもう見えません。
正直に言えば、もう半分の話もあります。すでに同期されたものは、すでにその人の手元にあります。どんなプロトコルも、デバイスの中に手を伸ばしてデータを取り戻すことはできません。それができると言う人は、何かを売り込もうとしています。
リアルタイム編集は中継される暗号文
リアルタイムの共同編集では、暗号化されたCRDTの更新がサーバーを通って流れます。サーバーに見えるのは、メンバーのフィンガープリント、鍵の世代、サイズです。サーバーは流れに順番をつけ、みんなに配ります。共同編集者のカーソルの下に現れる言葉は、私たちのサーバーではなく、その人のデバイスで開かれます。
作成者には署名がある
あなたの操作には、あなたのプロフィールの鍵で署名がされます。Paxは自分の鍵で署名します。あなたが書いたものとアシスタントが書いたものは、何も設定しなくても暗号的に区別されたままです。
大切な人はお金を払わなくていい
共有するのに、相手がお金を払う必要はありません。コンテンツの封は、無料でも有料でも、すべてのメンバーに同じように働きます。そして無料のゲストも、有料のホストが支えるスペースには完全に参加できます。メッセージを送り、共同編集し、通話に加わり、ほかの全員と同じアクセスのルールに従います。その下にあるルールはシンプルです。中継されるどの接続にも少なくとも一人のホストが含まれていなければならず、サーバーがそれを証明できないときは拒否します。
これでシリーズは終わりです。あなたのコンテンツは、届けられる前にあなたのデバイスで封をされます。私たちのサーバーが持つのは、メタデータの短く、公開された台帳だけです。そして共有は、その封を破るのではなく、広げていきます。
参考文献
- Public-key cryptography — 相手に対して封をする仕組み
- Conflict-free replicated data types — リアルタイム共同編集を支える数学
- Yjs — 私たちのリアルタイム編集の土台となるCRDTエンジン
- Hash chains — 権限をひそかに巻き戻せない理由
- Digital signatures — 役割を偽造できない理由
Blackbearのセキュリティ
- 1. 私たちにも読めないもの
- 2. サーバーに見えるもの
- 3. 共有しても封をしたまま (この記事)