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 y versiones posteriores, el cifrado de extremo a extremo no funcionará al conectarse con clientes que utilicen una versión anterior de OpenTok.js. Cuando actualices tu aplicación para utilizar OpenTok.js 2.27.0 o superior, asegúrate de que todos los clientes utilicen OpenTok.js 2.27.0 o superior si la aplicación utiliza cifrado de extremo a extremo.

Este tema incluye las siguientes secciones:

Visión general

El cifrado de extremo a extremo (o E2EE) permite a los desarrolladores de aplicaciones cifrar los archivos multimedia 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, de modo que permanezca cifrada a través del OpenTok Media Router, que redirige 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 las aplicaciones web en navegadores basados en Chromium (Chrome, Opera, Edge, Samsung Internet y Android WebView) y en navegadores basados en WebKit, como Safari en macOS/iOS, Chrome en iOS y WebView en iOS. El cifrado de extremo a extremo no es compatible con las aplicaciones web en Firefox.

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

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 configura en una aplicación web mediante OpenTok.js. Debes configurar los secretos de cifrado en el cliente web al inicializar una sesión, y puedes modificarlos sobre la marcha una vez que la sesión se haya conectado. El secreto de cifrado es una cadena de caracteres no vacía. Todos los usuarios deben utilizar el mismo secreto para recibir contenidos multimedia inteligibles. El secreto de cifrado es el material clave para generar una clave criptográfica que se utiliza para cifrar y descifrar el contenido multimedia. Concretamente, el secreto de cifrado genera una clave de cifrado AES-256 utilizando un algoritmo AES-CTR con una clave de 256 bits.

Ten en cuenta que el OpenTok Media Router no tiene acceso a los archivos multimedia sin cifrar cuando se utiliza el cifrado de extremo a extremo. Por lo tanto, las funciones que requieren la decodificación de archivos multimedia —como el archivado, las retransmisiones en directo, el «Experience Composer», el «Audio Connector» y la interconexión SIP— no son compatibles con las sesiones cifradas de extremo a extremo.

Compatibilidad con el cifrado de extremo a extremo por códec en todos los terminales de OpenTok

Códec/Punto final Chrome Android Chrome Chrome para iOS Firefox Safari Borde SDK para iOS SDK de Android SDK de Windows SDK de macOS SDK para Linux
VP8
H.264
VP9

Añadir cifrado de extremo a extremo a su Account

El cifrado de extremo a extremo está disponible como una funcionalidad adicional. Puedes activarla en tu Página del Account de Vonage Video.

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. Configura el e2ee propiedad a true. Ver creación de una sesión.

Nota: Antes de activar el cifrado de extremo a extremo para una sesión, debes activarlo en tu Account de Vonage Video. Consulta la sección anterior.

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

const opentok = new OpenTok(API_KEY, API_SECRET);
const sessionId;
opentok.createSession({
    mediaMode: 'routed',
    e2ee: true,
  }, function(error, session) {
  if (error) {
    console.log('Error creating session:', error)
  } else {
    sessionId = session.sessionId;
    console.log('Session ID: ' + sessionId);
  }
});