Criptarea HLS cu AES-128
Actualizat la 06 oct. 2026Ieșirea HLS a unui canal poate fi criptată cu AES-128: fiecare segment se criptează cu o cheie de 128 de biți pe care serverul Castreon o creează singur, iar playerele iau cheia de la același server. Orice player HLS o redă — Safari și iPhone, Android (ExoPlayer / Media3), hls.js, Video.js, VLC, Smart TV-uri și set-top box-uri — fără furnizor DRM și fără costuri în plus.
Disponibil din Castreon 1.0.5, în toate planurile.
Ce protejează — și ce nu
- Fără cheie, segmentele nu folosesc la nimic: copiate dintr-un cache, dintr-un CDN sau de pe disc, nu pot fi redate.
- Cheia se livrează cu aceleași reguli de acces ca fluxul — Token pentru playere și Adrese permise — și nu rămâne niciodată în cache-urile de pe drum.
- Un privitor care are voie să urmărească primește și cheia. AES-128 îi ține afară pe cei care nu au voie; nu împiedică un privitor permis să înregistreze. Pentru conținut cu plată, cu protecție chiar pe dispozitiv, folosiți DRM — Widevine, PlayReady și FairPlay (Enterprise).
Pornirea
- Deschideți canalul → Editează → ieșirea HLS.
- La Criptare alegeți AES-128.
- Alegeți Schimbarea cheii:
- doar la pornire — o cheie nouă la fiecare pornire a canalului;
- la fiecare 10 minute, la fiecare oră (implicit) sau o dată pe zi — cheia se schimbă și cât timp canalul rulează.
- Salvați. La Livrare, adresa apare ca HLS · AES-128 — e aceeași adresă ca până acum (
http://<domeniu>/live/canal1/index.m3u8).
AES-128 merge cu segmente TS. Cu Container pe automat, canalele H.264 folosesc TS, deci nu mai trebuie schimbat nimic. Cu containerul pus pe fMP4 (CMAF) opțiunea nu se poate alege; HEVC și AV1 folosesc mereu fMP4, deci cu ele canalul nu pornește, iar jurnalul lui spune de ce — alegeți H.264 pentru acest canal sau folosiți DRM.
Cu mai multe calități (ABR), fiecare calitate e criptată.
Cheile
- Cheile se creează pe server și stau lângă segmente, în
/live/<canal>/keys/. Playlistul îi spune playerului ce cheie aparține fiecărui segment. - Când cheia se schimbă, segmentele noi folosesc cheia nouă; cheile vechi rămân disponibile cât intervalul plus 10 minute (cel puțin ultimele trei), ca privitorii rămași puțin în urmă să urmărească fără întrerupere.
- Playerele nu au nevoie de nimic special: citesc adresa cheii din playlist.
Folosiți HTTPS
Cheia circulă ca orice alt fișier. Prin HTTP simplu poate fi citită în rețea; prin HTTPS, nu. Puneți panoul și livrarea în spatele HTTPS și setați Domeniu public din Setări → Instanță la https://… — vedeți WebRTC → HTTPS pentru panou pentru o configurație gata făcută cu Caddy sau nginx.
Cu un CDN în fața Castreon, lăsați CDN-ul să păstreze segmentele, dar nu /live/<canal>/keys/ (Castreon trimite deja Cache-Control: no-store pentru chei), și lăsați tokenul să treacă.
Ce nu se criptează
AES-128 se aplică doar ieșirii HLS. DASH, LL-HLS, HTTP-TS, WebRTC și ieșirile push (SRT, RTMP, UDP, RIST) nu sunt atinse — pentru ele folosiți Adrese permise, tokenul, criptarea SRT/RIST sau DRM.
Previzualizarea din panou merge și pe canalele criptate.
Dacă nu merge
- AES-128 nu se poate alege — Container-ul HLS e pus pe fMP4 (CMAF). Alegeți TS sau automat.
- Canalul nu pornește: „criptarea AES-128 a ieșirii HLS merge doar cu segmente TS…” — profilul e HEVC sau AV1, care folosesc fMP4. Folosiți H.264 pentru acest canal sau DRM.
- Playerul încarcă playlistul, dar nu și imaginea — nu poate lua cheia: verificați tokenul și adresele permise pentru privitor, și ca o pagină servită prin HTTPS să nu încarce fluxul prin HTTP (browserele blochează conținutul mixt).
- Jurnalul canalului spune „criptarea HLS: nu am putut crea cheia” — în folderul HLS nu se poate scrie (disc plin sau drepturi).