Întrebarea revine constant în comunitate: de ce Netflix și HBO Max merg fără probleme pe Linux, dar SkyShowTime refuză playback-ul după 2-3 secunde, indiferent de navigator? Răspunsul nu ține de vreo incompatibilitate întâmplătoare, ci de un nivel de certificare DRM pe care Linux desktop, așa cum îl cunoaștem, pur și simplu nu îl poate oferi.
Widevine și cele trei niveluri de securitate
Majoritatea serviciilor de streaming folosesc Widevine, sistemul DRM al Google, pentru a proteja conținutul video de copiere. Widevine definește trei niveluri de securitate:
- L3 - decriptarea se face complet în program, fără nicio componentă hardware dedicată. E nivelul cel mai puțin sigur, dar și cel mai simplu de implementat.
- L1 - decriptarea și decodarea video au loc într-un mediu izolat hardware (TEE - Trusted Execution Environment), astfel încât cheile și conținutul decriptat nu sunt niciodată accesibile sistemului de operare sau aplicațiilor obișnuite.
- L2 - o variantă intermediară, rar folosită în practică.
Netflix și HBO Max acceptă L3, de-aia merg fără probleme pe Linux. SkyShowTime (ca și Peacock, de altfel, tot din portofoliul aceluiași grup) cere L1. Iar aici apare problema.
Ce legătură are Google cu toate astea
Widevine nu e un standard deschis gestionat de un consorțiu neutru - e proprietatea Google, cumpărată în 2010 odată cu compania Widevine Technologies. Google definește nivelurile L1/L2/L3, face certificarea dispozitivelor și, cel mai important, furnizează cheile criptografice (keybox-ul) care se gravează în dispozitiv la fabricație. Fără acea cheie emisă de Google, un dispozitiv nu poate obține niciodată statutul L1, indiferent cât de sigur e hardware-ul în sine.
Serviciile de streaming, la rândul lor, licențiază tehnologia direct de la Google și integrează SDK-ul lor - nu implementează Widevine pe cont propriu. Practic Google e simultan proprietarul tehnologiei, autoritatea care certifică dispozitivele, emitentul cheilor și licențiatorul către servicii. De-aia soluția nu poate veni din partea comunității Linux oricât s-ar strădui - decizia și cheile stau la un singur furnizor extern.
De ce navigatoarele de pe Linux nu au L1
Chrome, Firefox și Brave pe Linux vin doar cu Widevine L3. Motivul nu e vreo neglijență din partea Google, ci o combinație de factori tehnici greu de ocolit:
Nu există un traseu video protejat standardizat. L1 cere ca tot lanțul - de la decriptare, prin decodare, până la ieșirea video - să rămână izolat de restul sistemului. Pe Android, ChromeOS, Windows și macOS, producătorii de chipset-uri implementează acest traseu într-un mod definit și verificabil. Pe Linux desktop nu există așa ceva unificat - fiecare distribuție, kernel, driver de placă video (mai ales cele open-source, ca Nouveau sau Mesa) se comportă diferit.
Certificarea se face per dispozitiv, nu per sistem de operare. Google ar trebui să valideze fiecare combinație posibilă de placă video, driver și distribuție Linux, ceea ce practic nu e fezabil dat fiind numărul enorm de variante.
Modelul de încredere se sparge la kernel. Pe Linux, utilizatorul are acces root nativ și poate recompila kernelul, schimba module, folosi drivere modificate. L1 cere garanția criptografică că nimic din sistem n-a fost umblat - iar pe un sistem unde utilizatorul controlează totul, garanția asta devine imposibil de susținut.
Nu există interes comercial suficient. Linux desktop are o cotă de piață mică pentru streaming video, deci nu există presiune reală asupra Google sau a producătorilor de chipset-uri să investească resurse în certificare pentru el.
De ce merge pe Windows
Pe Windows există exact ce lipsește pe Linux: un ecosistem standardizat și certificat.
Windows are, încă din era Vista și extins mult în Windows 10/11, un sistem numit PMP (Protected Media Path) - un traseu izolat pentru conținut protejat, de la placa video, prin driver, până la ieșire. Nvidia, AMD și Intel scriu și certifică oficial driverele pentru Windows direct cu Microsoft, iar acele drivere implementează suportul necesar pentru TEE.
Practic Google are un „target” fix și certificabil: Windows plus driver oficial de la unul din cei trei mari producători de GPU. Pe Linux ar trebui să certifice teoretic fiecare combinație de kernel, driver și distribuție - ceea ce nu e realist.
Dar ChromeOS rulează tot pe kernel Linux și are L1
Aici e argumentul cel mai interesant, pentru că demonstrează că tehnic chiar se poate face. ChromeOS e literalmente Linux la bază, și are Widevine L1 funcțional. Deci problema nu e imposibilitatea tehnică, ci ce trebuie sacrificat ca să funcționeze.
Suportul pentru TEE hardware există deja parțial în kernel-ul mainline - Intel SGX, AMD PSP (Platform Security Processor), ARM TrustZone prin OP-TEE au deja drivere. Componenta hardware nu lipsește.
Ce face diferența e boot-ul verificat. ChromeOS folosește verificare criptografică a fiecărei componente înainte de încărcare (dm-verity), kernel semnat de Google și nu oferă acces root implicit utilizatorului obișnuit. Practic Google controlează întregul stack, de sus până jos, exact ca pe Android.
Distribuțiile Linux desktop obișnuite - Debian, Fedora, Arch, Ubuntu - se bazează pe premisa exact opusă: utilizatorul are control total, poate recompila kernelul, dezactiva Secure Boot, instala drivere proprii. Exact controlul ăsta e ce Widevine L1 nu poate tolera, pentru că anulează garanția criptografică că sistemul n-a fost modificat.
Cu alte cuvinte, s-ar putea implementa L1 pe un „Linux” - dar ar trebui să fie un Linux blocat, cu boot semnat și fără root pentru utilizator. Practic ChromeOS sau ceva similar, nu ce înțelegem de obicei prin Linux desktop. E un compromis pe care majoritatea comunității Linux l-ar respinge, pentru că anulează chiar motivul pentru care oamenii aleg Linux în primul rând.
Nu există o alternativă mai prietenoasă cu Linux?
S-ar putea crede că problema e specifică Widevine, dar nu e cazul. Există și alte sisteme DRM comerciale:
- PlayReady, al Microsoft, folosește aceeași structură de niveluri (SL1, SL2, SL3), certificate tot per dispozitiv, tot cu chei provizionate de producător în parteneriat cu Microsoft. Pe Linux e și mai puțin prezent decât Widevine.
- FairPlay, al Apple, folosit de Apple TV+ și alte servicii din ecosistemul Apple, funcționează doar pe hardware și program Apple - nu are nicio variantă pentru Linux.
- Marlin, un standard mai deschis dezvoltat de un consorțiu de companii, are adopție foarte limitată în streaming-ul comercial major.
Toate sistemele DRM serioase folosite comercial au același model: un singur proprietar central care certifică dispozitivele, emite chei hardware și controlează licențierea către servicii. Niciunul nu are un nivel echivalent L1 disponibil pentru Linux desktop generic, din exact aceleași motive discutate mai sus - fragmentarea Linux-ului, lipsa unui parteneriat hardware-vendor certificat și modelul deschis care nu poate garanta integritatea sistemului.
De fapt, majoritatea serviciilor mari nici măcar nu folosesc un singur sistem - SkyShowTime, ca și altele, folosește Widevine pentru Android/Chrome, FairPlay pentru iOS/Safari/Apple TV și PlayReady pentru Windows/Xbox, în funcție de platformă. Deci nu e o problemă specifică Widevine, ci una structurală a industriei DRM, pe care nicio alternativă n-o ocolește.
Ce poți face în practică
Dacă vrei totuși să vezi conținut de pe SkyShowTime fără să renunți la Linux ca sistem principal:
- Waydroid - un container Android care rulează pe Linux. Poți instala aplicația SkyShowTime pentru Android TV prin Play Store (după înregistrarea device ID-ului ca dispozitiv necertificat) și rulezi playback-ul prin aplicația Android, nu prin navigator.
- O mașină virtuală cu Windows - în interiorul ei, Chrome sau Edge au acces la Widevine L1 real, pentru că sistemul de operare din VM e cel certificat, nu Linux-ul gazdă.
- Chromecast - dai stream direct din telefon sau tabletă către televizor, ocolind complet problema.
- Un smart TV sau un stick Android TV/Fire TV - de departe cea mai simplă variantă, dacă ai deja unul.
Ce nu ajută: passthrough-ul de placă video către o mașină virtuală cu Linux invitat, sau orice combinație care ține tot în interiorul unui Linux cu root deschis. Problema nu e la nivelul plăcii video sau al HDCP-ului, ci la certificarea întregului stack software - iar asta nu se rezolvă prin hardware mai bun.
Concluzie
SkyShowTime nu funcționează pe Linux nu pentru că cineva „nu vrea” să facă un port, ci pentru că cere un nivel de certificare DRM incompatibil cu modelul deschis al Linux desktop. Soluția tehnică există și e dovedită de ChromeOS - dar presupune un sistem închis, cu boot verificat și fără control total pentru utilizator. Până când piața Linux desktop nu devine suficient de mare încât cineva să investească în așa ceva, singurele variante rămân ocolișurile: Waydroid, un VM cu Windows, sau pur și simplu un dispozitiv dedicat.