WebRTC SUF Sora E2EE

Warning

Sora E2EE ライブラリは現時点でまだ WebAssembly に対応していないため、ここに書かれている機能は利用できません。

URL

https://github.com/shiguredo/sora-e2ee/tree/feature/wasm

概要

Sora で E2EE を実現するには Sora 側の設定を一切変える必要はありません。 Sora JavaScript SDK を利用する際にオプションとして {"e2ee": true} を渡すだけです。

要求

  • Sora 2020.3 以降

    • 2020 年 12 月リリース予定

  • Chrome M86 以降

  • Edge M86 以降

仕組み

クライアント実装

Sora の E2EE はすべてクライアント側で実装されています。 サーバ側は E2EE メッセージを配送する仕組みとそのメッセージがクライアント側が正しく送られているかどうかだけをチェックしています。

公開鍵ペアの生成と破棄

公開鍵ペアはすべて WebAssembly 側で生成しており、セッションが切断されたタイミングですべての鍵は破棄されます。

公開鍵の登録

クライアント側で自分の公開鍵ペアを生成し、公開鍵だけを Sora のシグナリング通知メタデータ機能を利用して登録します。

公開鍵のフィンガープリント取得

自分と全員から送られてきた公開鍵のフィンガープリントを取得することが可能です。

これにより相手が Sora が鍵を書き換えていないかどうかを確認することができます。

参加/離脱の通知

Sora のシグナリング通知機能を利用します

参加時には WebAssembly 内部に保持しているそれぞれの共通鍵をすべて更新し、新規参加者に自分の共通鍵を共有します。

離脱時には残った参加者全員が自分の共通鍵を再生成して共有します。