Skip to content

Cifrado de la entrega

El titular de los derechos de un contenido premium exige que el stream nunca llegue al espectador sin cifrar. El streamer puede cifrar lo que sale de él: el espectador recibe texto cifrado y la dirección en la que su reproductor pide la licencia. Se configura en el bloque Cifrado de la entrega (DRM) de la pestaña Entrega del stream — y del mismo modo en la plantilla de stream cuando hay muchos streams.

Se cifra la salida, no la grabación. El archivo del streamer queda sin cifrar, por lo que el rebobinado, las miniaturas, la transcodificación y el reconocimiento de subtítulos siguen funcionando igual que en un stream normal.

Cifra el origin. El cifrado lo hace el streamer que recibió la fuente. Los edges reciben de él el texto cifrado ya listo y lo entregan tal cual: no tienen la clave ni llegan a tenerla — más abajo.

La tarea inversa — tomar una fuente cifrada — se resuelve en la entrada del stream, no aquí: véase Fuente MPEG-DASH.

Active el cifrado

El interruptor Cifrar la entrega habilita el bloque. Después elija el Origen de la clave:

  • En los ajustes — usted mismo indica la clave. Sirve cuando la clave proviene de un acuerdo con el titular de los derechos y no de un servidor.
  • Servidor de claves (SPEKE) — la clave se pide a un servidor externo mediante SPEKE. Así funcionan los servicios comerciales de DRM.
  • EZDRM — la clave se pide a EZDRM con el usuario y la contraseña o con el Secure Token de su cuenta de EZDRM.

El bloque de cifrado: clave de los ajustes y el sistema ClearKey

Véalo funcionar, con ClearKey

Para ver el cifrado de principio a fin — del fragmento a la imagen en el navegador — no hace falta un DRM comercial: ClearKey se reproduce en un navegador corriente y la licencia la emite el propio streamer. Este modo no protege nada, la clave viaja al reproductor en claro, pero todo el recorrido queda comprobado en un minuto y sin una sola suscripción.

  1. En la pestaña Entrega active Cifrar la entrega.
  2. Origen de la clave — En los ajustes. En Valor de la clave escriba 32 caracteres hexadecimales, por ejemplo 00112233445566778899aabbccddeeff. Deje vacío el Identificador de la clave.
  3. En Sistemas de protección deje solo ClearKey.
  4. Guarde y abra la Página del reproductor — el enlace está en el bloque Cómo obtener el flujo, más abajo en la misma pestaña.

La imagen arranca como siempre, y ese es justamente el resultado: los fragmentos salieron cifrados, el reproductor pidió la licencia al streamer, recibió la clave y los descifró por su cuenta.

Un stream cifrado reproduciéndose en el navegador

Dos comprobaciones muestran lo que ocurre de verdad.

En la lista de reproducción apareció una clave. Un stream cifrado lleva una línea del sistema de protección antes de la lista de calidades; uno normal no la tiene:

curl -s http://<dirección>/streaming/v/<nombre>/index.m3u8 | grep KEY
#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="data:text/plain;base64,...",KEYFORMAT="org.w3.clearkey"

Un protocolo sin cifrado se niega. El servidor no sabe cifrar MPEG-TS y por eso no entrega ese stream en absoluto:

curl -s -o /dev/null -w '%{http_code}\n' http://<dirección>/streaming/mpegts/<nombre>
403

La consola ya no muestra una clave guardada — el campo contiene <redacted>, como en la captura de arriba. El valor de la clave no se entrega ni por la API ni a los registros; para poner otra, escriba una clave nueva encima.

La clave en los ajustes

  • Valor de la clave — 32 caracteres hexadecimales (AES-128).
  • Identificador de la clave — puede quedar vacío: entonces se deriva del identificador de contenido y de la sal.

El servidor de claves

  • Dirección del servidor de claves — allí se envía un documento CPIX. Después la clave no sale de este streamer.
  • Versión de SPEKE — la versión del protocolo acordada con el servidor.

El bloque de cifrado con «Servidor de claves» como origen

EZDRM

EZDRM pide la clave a su manera, así que es un origen de clave propio y no un servidor SPEKE: elija EZDRM en Origen de la clave.

Autorización fija cómo se presenta el streamer ante EZDRM, de una de dos maneras:

  • Usuario y contraseña — las credenciales de la cuenta de EZDRM, las mismas que en Flussonic. Es la opción predeterminada: rellene Usuario de EZDRM y Contraseña de EZDRM.
  • Secure Token — el token de la sección My Account de accounts.ezdrm.com. Se puede revocar allí sin cambiar la contraseña de la cuenta.

Dirección del servidor de claves puede quedar vacía: entonces se usa la dirección predeterminada de EZDRM. Solo hace falta si EZDRM le dio una dirección propia.

La contraseña y el token guardados no se vuelven a mostrar: el campo queda vacío y marcado con puntos. Para cambiar el valor, escriba uno nuevo; si no lo toca, se conserva el guardado.

Qué cifrar

El campo Qué cifrar define el alcance:

  • Todas las muestras de vídeo — el valor por defecto y lo que suele exigir el titular de los derechos.
  • Solo fotogramas clave — bastante más barato en CPU: los fotogramas diferenciales no se decodifican sin el fotograma clave de todos modos.

El audio se cifra en ambos modos: es barato, y dejarlo en claro vuelve inútil la protección del contenido.

Sistemas de protección

Sistemas de protección enumera aquellos a los que se anuncia la protección: Widevine, PlayReady, FairPlay, ClearKey. Hay que seleccionar al menos uno: cifrar sin decirle a ningún reproductor con qué descifrar es una entrega que nadie podrá ver.

ClearKey es un modo de demostración y no ofrece protección: la clave se entrega al reproductor tal cual. Existe para que todo el recorrido — del cifrado a la reproducción — se compruebe con un navegador corriente, sin comprar un DRM comercial. Para contenido real elija un sistema cuya licencia se entregue de forma protegida.

Dispositivos antiguos

El streamer cifra con el esquema cbcs: lo entienden los tres sistemas de protección, así que una sola copia cifrada sirve tanto para HLS como para DASH. Los dispositivos que solo conocen el esquema anterior, cenc, no pueden descifrarlo — televisores y decodificadores con PlayReady anterior a 4.0 y dispositivos Android anteriores a 7.1. Revise los dispositivos de su público antes de pasar un canal.

Identificador de contenido y sal

  • Identificador de contenido — vacío significa el nombre del stream. Varios streams que deban cifrarse con una misma clave indican aquí un identificador común.
  • Sal del identificador de la clave — no es un secreto: solo evita que coincidan los identificadores de dos instalaciones.

Ambos campos alimentan el identificador de la clave, por lo que editarlos cambia lo que se anuncia al reproductor.

Un stream tiene una sola clave

Al stream se le asigna la clave una vez y no cambia mientras el stream funciona: no hay rotación de claves.

  • Toda la escalera de calidades se cifra con una clave — 1080p, 360p y el audio por igual.
  • El archivo se cifra con la misma clave que el borde en vivo. Rebobinar una semana atrás no exige ni una segunda clave ni un segundo viaje al servidor de claves.
  • La lista de reproducción lleva una sola etiqueta de clave para toda la ventana — no aparecen grupos de segmentos bajo claves distintas.

La clave cambia solo junto con los ajustes: editar Valor de la clave, Identificador de contenido o Sal del identificador de la clave significa una clave nueva, y el stream pasa a cifrarse con ella. Quien esté viendo en ese momento sigue viendo: el reproductor vuelve a pedir la licencia, igual que ante un cambio de códec.

Sin clave no hay entrega

El cifrado en sí no se rompe — lo que se rompe es la obtención de la clave, y eso es lo que hay que vigilar.

Mientras no se tenga la clave, el stream cifrado no se entrega en absoluto: la petición de medios termina en error. Un stream así jamás responde con contenido en claro: un servidor de claves inaccesible apaga la entrega, no retira el cifrado.

Lo que puede pasarle al servidor de claves:

  • No responde — el stream no se entrega. En cuanto el servidor responda, la entrega se reanuda sola: sin reiniciar el stream y sin un hueco en el archivo.
  • No devolvió todos los sistemas pedidos — la respuesta se rechaza entera. Si se eligieron Widevine y FairPlay y en la respuesta solo viene Widevine, la clave no se acepta: una señalización incompleta significaría que parte del público no puede ver, en silencio.
  • Respondió otra cosa — no un documento CPIX, o un XML que no se puede analizar: la clave no se acepta y el motivo va al registro del streamer. Los valores de las claves nunca se escriben en los registros.
  • Entregó una clave para otro esquema — el servidor de claves marcó la clave con un esquema distinto de cbcs: la respuesta se rechaza y el esquema se nombra en el registro. Una señalización para otro esquema no descifraría el stream para ningún espectador.

Hay una petición al servidor de claves por stream, no por espectador ni por fragmento: el streamer conserva la clave recibida. Mil espectadores que llegan a la vez producen una sola petición.

Qué deja de funcionar

En un stream cifrado se niegan las superficies que no tienen cifrado: la extracción MPEG-TS y su subárbol HLS, la vista previa MP4 del archivo, el flujo del archivo para RTSP, la entrega WebRTC y SRT. La negativa es deliberada: entregar ese stream en claro sería una forma de sortear la protección.

Siguen funcionando: las vistas previas JPEG y las miniaturas, los subtítulos WebVTT y los pushes del stream.

Streamers que entregan

La clave se queda en el streamer que recibió la fuente, el origin. Los streamers vecinos, los edges, reciben el mismo texto cifrado que el espectador y lo siguen entregando, anunciando la protección en listas y manifiestos — pero no tienen la clave, y tampoco aparece en sus ajustes. Un streamer de entrega comprometido no reparte medios en claro.

Solo el streamer que recibió la fuente habla con el servidor de claves, de modo que el número de peticiones depende del número de streams y no del tamaño del clúster.

Si el streamer de entrega tiene discos de caché configurados, el texto cifrado se deposita en ellos tal cual, y una petición repetida del mismo fragmento se sirve localmente. El streamer sigue sin poder descifrar esa caché: entrega exactamente los bytes que llegaron. El texto cifrado no llega al archivo — el archivo alimenta vistas previas, miniaturas y la línea de tiempo, y todo eso mira dentro de la imagen.

Migración desde Flussonic

Un stream que tenía el cifrado configurado en Flussonic Media Server se importa desactivado, y el motivo se nombra en el informe — siempre, pase lo que pase con sus ajustes.

Los ajustes de EZDRM viajan: el usuario, la contraseña y el identificador de recurso llegan al origen EZDRM, y Qué cifrar conserva el valor de Flussonic — solo fotogramas clave, salvo que allí estuviera fijado el cifrado completo. El identificador de clave del stream cambia, eso sí: el streamer lo deriva con su propia regla, y EZDRM entrega al canal una clave nueva. Active el stream después de comprobar que se reproduce.

Los ajustes de los demás proveedores de claves no viajan: Flussonic tiene una quincena de ellos frente a tres orígenes de clave aquí, y no se pueden trasladar literalmente. El cifrado de un stream así se configura de nuevo — más seguro que un canal que tras la importación quedara emitiendo en claro.