######### E2EE 機能 ######### .. caution:: この機能を利用する場合は事前にサポートまでご連絡ください .. warning:: この機能は :doc:`実験的機能 ` のため、正式版では仕様が変更される可能性があります 概要 ==== E2EE とは End-to-End Encryption の略で、音声や映像を、 WebRTC SFU が保持しない暗号鍵を利用して暗号化した状態で WebRTC SFU に送る仕組みです。 そのため WebRTC SFU 側では音声や映像を解析することが不可能になります。 既知の問題 ============= **この問題は将来の Sora E2EE ライブラリのリリースで解決予定です** - 同一ページで同一チャネルに複数接続できない - 同一ページで複数チャネルに接続できない SDK 対応状況 ============= 現時点では Sora JavaScript SDK が E2EE に対応しています。 そのほかの SDK は非対応です。 対応済みブラウザ ================ - Chrome 89 以降 - Edge 89 以降 Sora E2EE の詳細 ================ 別途ドキュメントにまとめています。 `Sora E2EE ドキュメント `_ E2EE を有効にする ================= e2ee 設定の有効化 ----------------- **E2EE 機能はデフォルトで無効です** sora.conf にて ``e2ee = true`` を設定してください。 .. code-block:: ini e2ee = true 有効にすることで Sora が E2EE メッセージルーティングを行うようになります。 この設定が ``false`` の状態でクライアントが E2EE 接続を行っても、メッセージのルーティングを行わず切断されます。 signaling_notify の有効化 -------------------------- **シグナリング通知機能はデフォルトで有効です** E2EE 機能はシグナリング通知機能を利用します。 .. code-block:: ini signaling_notify = true signaling_notify_connection_id の有効化 ----------------------------------------- **シグナリング通知コネクション ID 機能はデフォルトで有効です** E2EE 機能はシグナリング通知機能のコネクション ID を利用します。 .. code-block:: ini signaling_notify_connection_id = true signaling_notify_metadata の有効化 ---------------------------------- **シグナリング通知メタデータ機能はデフォルトで有効です** E2EE 機能はシグナリング通知機能のメタデータを利用します。 .. code-block:: ini signaling_notify_metadata = true E2EE を利用する =============== wasm ファイルの用意 ------------------- ブラウザで Sora の E2EE を利用するには wasm ファイルが必要です。 wasm ファイルは自前でビルドすることをおすすめします。ビルドをご確認下さい。 https://github.com/shiguredo/sora-e2ee ビルド済み WebAssembly バイナリ ------------------------------- 弊社では、開発ツールでの利用のため、ビルド済み WebAssembly バイナリを CDN で提供しています。 - https://sora-e2ee-wasm.shiguredo.app/2020.2/wasm.wasm - 2020.2 バージョン .. important:: 本番環境では、これらの URL は利用しないでください。 代わりに、自前でビルドしたバイナリを配置してご利用下さい。 Sora JavaScript SDK の用意 -------------------------- Sora JS SDK の最新版を利用してください。 .. code-block:: javascript // 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/shiguredo Discord にてコミュニティを運営しています。 なにか質問したい場合は Discord サーバーへ参加してください。