API de cifrado de extremo a extremo

Utilice la API de cifrado de extremo a extremo para cifrar los medios que se envían a través de un servidor de medios desde su aplicación.

Importante: En OpenTok.js 2.27.0+, el cifrado de extremo a extremo no funcionará cuando se conecte a clientes que utilicen una versión anterior de OpenTok.js. Cuando actualices tu aplicación para utilizar OpenTok.js 2.27.0+, asegúrate de que todos los clientes utilizan OpenTok.js 2.27.0+ si la aplicación utiliza cifrado de extremo a extremo.

Visión general

El cifrado de extremo a extremo (o E2EE) permite a los desarrolladores de aplicaciones cifrar medios en sesiones enrutadas de cliente a cliente. En las sesiones retransmitidas, los medios ya están cifrados de cliente a cliente, a través de los protocolos WebRTC. Esta función añade una capa de cifrado al cifrar la carga útil de los medios en el cliente para que permanezca cifrada a través del enrutador de medios que enruta los medios a otros clientes (en sesiones enrutadas). El cifrado de extremo a extremo se activa al crear una sesión.

El cifrado de extremo a extremo es compatible con aplicaciones web en navegadores basados en Chromium (Chrome, Opera, Samsung Internet, Edge y Android WebView) y WebKit, por ejemplo Safari en macOS/iOS, Chrome en iOS y WebView en iOS. El cifrado de extremo a extremo no es compatible con las aplicaciones web de Firefox.

La compatibilidad con navegadores basados en WebKit sólo está disponible a partir de la versión OpenTok.js 2.30.0.

El cifrado de extremo a extremo es compatible con cada uno de los SDK nativos de cliente (para Android, iOS, Windows, Linux y macOS).

El secreto de cifrado se establece en una aplicación web mediante OpenTok.js. Debes establecer los secretos de encriptación en el cliente web cuando inicializas una sesión, y puedes cambiar los secretos de encriptación sobre la marcha una vez que la sesión se ha conectado. El secreto de cifrado es una cadena no vacía. Todos los usuarios deben utilizar el mismo secreto para recibir medios inteligibles. El secreto de cifrado es el material clave para generar una clave criptográfica que se utiliza para cifrar y descifrar medios. En concreto, el secreto de cifrado genera una clave de cifrado AES-256 utilizando un algoritmo AES-CTR con una clave de 256 bits.

Tenga en cuenta que el Router multimedia no tiene acceso a medios no cifrados cuando se utiliza el cifrado de extremo a extremo.

Por tanto, las funciones que requieren descodificación de medios, como el archivado, las emisiones en directo, el compositor de experiencias, el conector de audio y la interconexión SIP, no son compatibles con las sesiones cifradas de extremo a extremo. .

Cifrado de extremo a extremo por códec en todos los terminales

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

Añadir cifrado de extremo a extremo a su Account

El cifrado de extremo a extremo está disponible como función adicional. Puede activarlo en su Página de la cuenta de vídeo.

Activación del cifrado mediante la API REST

El cifrado de extremo a extremo se activa al crear una sesión mediante la API REST. Establezca el e2ee propiedad a true.

Véase creación de sesiones.

Nota: Antes de activar el cifrado de extremo a extremo para una sesión, debe activarlo para su cuenta de Vídeo.

El siguiente ejemplo de Node.js crea una sesión habilitada con cifrado de extremo a extremo:

Aplicaciones

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: