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.

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 claveEn 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

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.

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.

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. Los ajustes de cifrado no viajan: Flussonic tiene una quincena de proveedores de claves frente a un único SPEKE, y no se pueden trasladar literalmente. El cifrado se configura de nuevo — más seguro que un canal que tras la importación quedara emitiendo en claro.