Crittografia HLS con AES-128
Aggiornato il 06 ott 2026L'uscita HLS di un canale può essere cifrata con AES-128: ogni segmento viene cifrato con una chiave a 128 bit che il server Castreon crea da solo, e i player prendono la chiave dallo stesso server. Qualsiasi player HLS la riproduce — Safari e iPhone, Android (ExoPlayer / Media3), hls.js, Video.js, VLC, Smart TV e set-top box — senza fornitore DRM e senza costi aggiuntivi.
Disponibile da Castreon 1.0.5, in tutti i piani.
Cosa protegge — e cosa no
- Senza chiave i segmenti non servono a nulla: copiati da una cache, da una CDN o dal disco, non si possono riprodurre.
- La chiave viene consegnata con le stesse regole di accesso del flusso — Token per i player e Indirizzi consentiti — e non resta mai nelle cache lungo il percorso.
- Uno spettatore autorizzato a guardare riceve anche la chiave. AES-128 tiene fuori chi non è autorizzato; non impedisce a uno spettatore autorizzato di registrare. Per contenuti a pagamento con protezione sul dispositivo stesso, usa il DRM — Widevine, PlayReady e FairPlay (Enterprise).
Attivazione
- Apri il canale → Modifica → l'uscita HLS.
- In Crittografia scegli AES-128.
- Scegli la Rotazione della chiave:
- solo all’avvio — una chiave nuova a ogni avvio del canale;
- ogni 10 minuti, ogni ora (predefinito) o una volta al giorno — la chiave cambia anche mentre il canale è in funzione.
- Salva. In Distribuzione l'indirizzo compare come HLS · AES-128 — è lo stesso indirizzo di prima (
http://<dominio>/live/canale1/index.m3u8).
AES-128 funziona con segmenti TS. Con il Container su automatico, i canali H.264 usano TS, quindi non serve cambiare altro. Con il container impostato su fMP4 (CMAF) l'opzione non si può scegliere; HEVC e AV1 usano sempre fMP4, quindi con loro il canale non parte e il suo registro dice perché — scegli H.264 per questo canale oppure usa il DRM.
Con più qualità (ABR), ogni qualità viene cifrata.
Le chiavi
- Le chiavi vengono create sul server e restano accanto ai segmenti, in
/live/<canale>/keys/. La playlist dice al player quale chiave appartiene a ogni segmento. - Quando la chiave cambia, i nuovi segmenti usano la nuova chiave; le chiavi vecchie restano disponibili per la durata dell'intervallo più 10 minuti (almeno le ultime tre), così chi è un po' indietro continua a guardare senza interruzioni.
- I player non hanno bisogno di nulla di particolare: leggono l'indirizzo della chiave dalla playlist.
Usa HTTPS
La chiave viaggia come qualsiasi altro file. Con HTTP semplice può essere letta in rete; con HTTPS no. Metti pannello e distribuzione dietro HTTPS e imposta il Dominio pubblico in Impostazioni → Istanza su https://… — vedi WebRTC → HTTPS per il pannello per una configurazione pronta con Caddy o nginx.
Con una CDN davanti a Castreon, lascia che la CDN tenga in cache i segmenti, ma non /live/<canale>/keys/ (Castreon invia già Cache-Control: no-store per le chiavi), e fai passare il token.
Cosa non viene cifrato
AES-128 vale solo per l'uscita HLS. DASH, LL-HLS, HTTP-TS, WebRTC e le uscite push (SRT, RTMP, UDP, RIST) non sono toccati — per loro usa gli Indirizzi consentiti, il token, la crittografia SRT/RIST o il DRM.
L'anteprima nel pannello funziona anche sui canali cifrati.
Se non funziona
- AES-128 non si può scegliere — il Container HLS è impostato su fMP4 (CMAF). Scegli TS o automatico.
- Il canale non parte: «la crittografia AES-128 dell’uscita HLS funziona solo con segmenti TS…» — il profilo è HEVC o AV1, che usano fMP4. Usa H.264 per questo canale oppure il DRM.
- Il player carica la playlist ma non l'immagine — non riesce a prendere la chiave: controlla il token e gli indirizzi consentiti per lo spettatore, e che una pagina servita in HTTPS non carichi il flusso in HTTP (i browser bloccano i contenuti misti).
- Il registro del canale dice «crittografia HLS: impossibile creare la chiave» — nella cartella HLS non si può scrivere (disco pieno o permessi).