Cifrado HLS con AES-128
Actualizado el 06 oct. 2026La salida HLS de un canal puede cifrarse con AES-128: cada segmento se cifra con una clave de 128 bits que el servidor Castreon crea por sí mismo, y los reproductores toman la clave del mismo servidor. Cualquier reproductor HLS lo reproduce — Safari e iPhone, Android (ExoPlayer / Media3), hls.js, Video.js, VLC, Smart TV y decodificadores — sin proveedor DRM y sin costes adicionales.
Disponible desde Castreon 1.0.5, en todos los planes.
Qué protege — y qué no
- Sin la clave, los segmentos no sirven de nada: copiados de una caché, de una CDN o del disco, no se pueden reproducir.
- La clave se entrega con las mismas reglas de acceso que el flujo — Token para reproductores y Direcciones permitidas — y nunca se queda en las cachés del camino.
- Un espectador que puede ver el canal también recibe la clave. AES-128 deja fuera a quien no tiene permiso; no impide que un espectador autorizado grabe. Para contenido de pago con protección en el propio dispositivo, usa DRM — Widevine, PlayReady y FairPlay (Enterprise).
Activarlo
- Abre el canal → Editar → la salida HLS.
- En Cifrado elige AES-128.
- Elige la Rotación de la clave:
- solo al iniciar — una clave nueva cada vez que arranca el canal;
- cada 10 minutos, cada hora (por defecto) o una vez al día — la clave cambia también mientras el canal funciona.
- Guarda. En Entrega la dirección aparece como HLS · AES-128 — es la misma dirección de antes (
http://<dominio>/live/canal1/index.m3u8).
AES-128 funciona con segmentos TS. Con Container en automático, los canales H.264 usan TS, así que no hay que cambiar nada más. Con el contenedor en fMP4 (CMAF) la opción no se puede elegir; HEVC y AV1 usan siempre fMP4, así que con ellos el canal no arranca y su registro dice por qué — elige H.264 para este canal o usa DRM.
Con varias calidades (ABR), se cifra cada calidad.
Las claves
- Las claves se crean en el servidor y se guardan junto a los segmentos, en
/live/<canal>/keys/. La lista de reproducción indica al reproductor qué clave corresponde a cada segmento. - Cuando la clave cambia, los segmentos nuevos usan la clave nueva; las claves antiguas siguen disponibles durante el intervalo más 10 minutos (al menos las tres últimas), para que quien va un poco atrás siga viendo sin cortes.
- Los reproductores no necesitan nada especial: leen la dirección de la clave en la lista de reproducción.
Usa HTTPS
La clave viaja como cualquier otro archivo. Por HTTP simple se puede leer en la red; por HTTPS, no. Pon el panel y la entrega detrás de HTTPS y fija el Dominio público de Ajustes → Instancia en https://… — consulta WebRTC → HTTPS para el panel para una configuración lista con Caddy o nginx.
Con una CDN delante de Castreon, deja que la CDN guarde en caché los segmentos, pero no /live/<canal>/keys/ (Castreon ya envía Cache-Control: no-store para las claves), y deja pasar el token.
Qué no se cifra
AES-128 se aplica solo a la salida HLS. DASH, LL-HLS, HTTP-TS, WebRTC y las salidas push (SRT, RTMP, UDP, RIST) no se ven afectadas — para ellas usa las Direcciones permitidas, el token, el cifrado SRT/RIST o DRM.
La vista previa del panel sigue funcionando en los canales cifrados.
Si no funciona
- No se puede elegir AES-128 — el Container HLS está en fMP4 (CMAF). Elige TS o automático.
- El canal no arranca: «el cifrado AES-128 de la salida HLS solo funciona con segmentos TS…» — el perfil es HEVC o AV1, que usan fMP4. Usa H.264 para este canal o DRM.
- El reproductor carga la lista pero no la imagen — no consigue la clave: revisa el token y las direcciones permitidas del espectador, y que una página servida por HTTPS no cargue el flujo por HTTP (los navegadores bloquean el contenido mixto).
- El registro del canal dice «cifrado HLS: no se pudo crear la clave» — no se puede escribir en la carpeta HLS (disco lleno o permisos).