E2EE 機能

この機能は実験的機能です

概要

E2EE とは End-to-End Encryption の略で、音声や映像を、 WebRTC SFU が保持しない暗号鍵を利用して暗号化した状態で WebRTC SFU に送る仕組みです。

そのため WebRTC SFU 側では音声や映像を解析することが困難になります。

既知の問題

この問題は次 Sora E2EE ライブラリのリリースで解決予定です

  • 同一ページで同一チャネル複数接続できない

  • 同一ページで複数チャネルに接続できない

SDK 対応状況

現時点では Sora JavaScript SDK が E2EE に対応しています。

iOS / Android / Unity SDK は非対応です。

対応済みブラウザ

  • Chrome 87 以降

  • Edge 87 以降

Sora E2EE の詳細

別途ドキュメントにまとめています。

Sora E2EE ドキュメント

E2EE を有効にする

e2ee 設定の有効化

E2EE 機能はデフォルトで無効です

sora.conf にて e2ee = true を設定してください。

e2ee = true

有効にすることで Sora が E2EE メッセージルーティングを行うようになります。

この設定が false の状態でクライアントが E2EE 接続を行ってもメッセージのルーティングを行わず切断されます。

signaling_notify の有効化

シグナリング通知機能はデフォルトで有効です

E2EE 機能はシグナリング通知機能を利用します。

signaling_notify = true

signaling_notify_connection_id の有効化

シグナリング通知コネクション ID 機能はデフォルトで有効です

E2EE 機能はシグナリング通知機能のコネクション ID を利用します。

signaling_notify_connection_id = true

signaling_notify_metadata の有効化

シグナリング通知メタデータ機能はデフォルトで有効です

E2EE 機能はシグナリング通知機能のメタデータを利用します。

signaling_notify_metadata = true

E2EE を利用する

wasm ファイルの用意

ブラウザで Sora の E2EE を利用するには wasm ファイルが必要です。 wasm ファイルは自前でビルドする事をおすすめします。ビルドをご確認下さい。

https://github.com/shiguredo/sora-e2ee

ビルド済み WebAssembly バイナリ

時雨堂では、デモ機能での利用のため、ビルド済み WebAssembly バイナリを CDN で提供しています。 ただしこの CDN は Netlify を利用しており、転送量が 400GB までとなっています。

本番環境では、これらの URL は利用しないでください。 代わりに、自前でビルドしたバイナリを配置してご利用下さい。

Sora JavaScript SDK の用意

Sora JS SDK の最新版を利用してください。

// E2EE 用 Wasm 読み込み
// Sora.initE2EE("wasm.wasm"); でも良い
Sora.initE2EE("https://example.com/wasm.wasm");

let sora = Sora.connection('wss://example.com/signaling');
let channelId = 'sora-e2ee';
let sendrecv = sora.sendrecv(channelId, undefined, {e2ee: true});

navigator.mediaDevices.getUserMedia({audio: true, video: true})
  .then(mediaStream => {
    // connect
    sendrecv.connect(mediaStream)
      .then(stream => {
        // stream を video.src に追加する等の処理
      });
  })
  .catch(e => {
    console.error(e);
  });

// disconnect
sendrecv.disconnect()
  .then(() => {
    // video を止める等の処理
  });

// event
sendrecv.on('disconnect', function(e) {
  console.error(e);
});

サポート

E2EE ではクライアントを含めたサポートが必要になる場合がありますが、 ご質問などがあればまずサポートまでお問い合わせください。

E2EE が有効かどうか

E2EE の状態で録画を行うと、生成されるファイルが全て暗号化された状態になり、 一切見られなくなりますので E2EE の動作確認 として利用してみて下さい。

Discord

https://discord.gg/EbbB59s

Discord にてコミュニティを運営しています。 なにか質問したい場合は Discord サーバへ参加してください。