エンド・ツー・エンド暗号化API

エンドツーエンド暗号化APIを使用して、アプリケーションからメディアサーバー経由で送信されるメディアを暗号化します。

重要だ: OpenTok.js 2.27.0+ では、以前のバージョンの OpenTok.js を使用しているクライアントに接続する場合、エンドツーエンドの暗号化は機能しません。アプリをアップグレードして OpenTok.js 2.27.0+ を使用する場合、アプリがエンドツーエンド暗号化を使用している場合は、すべてのクライアントが OpenTok.js 2.27.0+ を使用していることを確認してください。

概要

エンド・ツー・エンド暗号化(E2EE)により、アプリケーション開発者は、以下のメディアを暗号化することができます。 ルーティングセッション クライアントからクライアントへ。中継セッションの場合、メディアはWebRTCプロトコルによってクライアント間ですでに暗号化されています。この機能は、クライアントでメディアのペイロードを暗号化することで、メディアを他のクライアントにルーティングするメディアルーター(ルーティングされたセッションの場合)を通して暗号化されたままになるように、暗号化レイヤーを追加します。エンドツーエンドの暗号化は、セッションを作成するときに有効にします。

エンドツーエンドの暗号化は、Chromiumベース(Chrome、Opera、Samsung Internet、Edge、Android WebView)およびWebKitベースのブラウザ(macOS/iOSのSafari、iOSのChrome、iOSのWebViewなど)上のウェブアプリでサポートされています。エンドツーエンドの暗号化は、Firefox上のウェブアプリではサポートされていません。

WebKitベースのブラウザのサポートは、バージョンOpenTok.js 2.30.0以降でのみ利用可能です。

エンドツーエンドの暗号化は、各ネイティブクライアントSDK(Android、iOS、Windows、Linux、macOS用)でサポートされています。

暗号化の秘密は、OpenTok.jsを使ってウェブアプリケーションで設定します。暗号化シークレットは、セッションを初期化するときにウェブクライアントで設定する必要があります。暗号化の秘密は空でない文字列です。すべてのユーザーが同じ秘密を使わなければ、わかりやすいメディアを受信することはできません。暗号化シークレットは、メディアの暗号化と復号化に使われる暗号鍵を生成するための鍵材料である。具体的には、暗号化秘密は256ビットの鍵でAES-CTRアルゴリズムを使用してAES-256暗号化鍵を生成する。

にはご注意ください。 メディア・ルーター エンドツーエンドの暗号化を使用している場合、暗号化されていないメディアにアクセスすることはできません。

そのため、アーカイブ、ライブ・ストリーミング放送、エクスペリエンス・コンポーザー、オーディオ・コネクター、SIP相互接続などのメディア・デコードを必要とする機能は、エンド・ツー・エンドの暗号化セッションではサポートされない。 .

エンドポイント間のコーデックごとのエンド・ツー・エンド暗号化をサポート

Codec/End-point Chrome Android Chrome iOS Chrome Firefox Safari Edge iOS SDK Android SDK Windows SDK macOS SDK Linux SDK
VP8
H.264
VP9

アカウントにエンドツーエンドの暗号化を追加する

エンドツーエンドの暗号化は アドオン機能.を有効にすることができます。 動画アカウントページ.

REST APIを使用して暗号化を有効にする

REST APIを使用してセッションを作成するときに、エンドツーエンドの暗号化を有効にします。セッションの e2ee プロパティ true.

参照 セッション作成.

注: セッションのエンドツーエンドの暗号化を有効にする前に、ビデオアカウントで暗号化を有効にする必要があります。

以下のNode.jsの例は、エンドツーエンドの暗号化が有効なセッションを作成する:

インプリメンテーション

Setting the encryption secret

End-to-end encrypted sessions are created using server APIs (see Enabling encryption using the REST API). To have a React Native client join an end-to-end encrypted session, set the encryptionSecret prop of the OTSession component:

A valid secret is a string between 8 and 256 characters.

You can change the secret by setting the encryptionSecret prop to a property of the React state and changing its value:

Events and errors

Events and errors are essential to managing the behavior of user-driven encryption behavior. End-to-end encryption uses the shared secret model: everyone in the session is expected to use the same secret to encrypt their media and decrypt everyone else's.

The OTSubscriber error() event handler callback is invoked when the subscriber is unable to decode a stream's media due to a mismatched (or unset) encryption secret:

The OTSession error() event handler callback is invoked if the client tries to connect to an end-to-end encrypted session that was initialized with an invalid encryption secret (or without specifying an encryption secret). A valid secret is a string between 8 and 256 characters. For the best user experience, the application should catch an invalid user supplied secret before setting the OTSession encryptionSecret prop. In the following example, a session is initialized with an empty (and thus invalid) secret, which causes an error when attempting to connect: