Widevine — o tehnologie DRM dezvoltată de Google pentru protejarea conținutului video împotriva copierii neautorizate pe dispozitive mobile, Smart TV și platforme web. Criptarea conținutului se realizează prin modulul CDM, care este suportat pe 4 miliarde de dispozitive din întreaga lume. Tehnologia Widevine asigură compatibilitatea cu Android, iOS, Chrome și Smart TV, permițând serviciilor de streaming să protejeze conținutul premium pe orice platformă.
Principalele puncte
Widevine — o tehnologie DRM proprietară achiziționată de Google în 2010, care a devenit standardul de facto pentru protecția conținutului video în ecosistemul Android. Este folosită de cele mai mari servicii de streaming, inclusiv Netflix, Amazon Prime Video, Disney+ și Hulu, pentru a preveni copierea și distribuirea neautorizată a conținutului.
Widevine suportă criptarea conform standardului AES-128 CBC folosind chei de conținut care sunt transmise doar dispozitivelor autorizate printr-un canal de licențiere securizat. Sistemul asigură protecție end-to-end de la momentul criptării pe server până la decodificarea pe dispozitivul utilizatorului.
Compania Widevine Technologies a fost fondată în 1999 și inițial dezvolta soluții pentru protecția conținutului pe platforme de televiziune prin cablu. După achiziționarea de către Google în 2010, tehnologia a fost adaptată pentru platforme mobile și integrată în sistemul de operare Android începând cu versiunea 4.4 KitKat. Din 2015, Widevine a devenit o componentă obligatorie a certificării Google Mobile Services.
În 2018, Google a introdus Widevine Modular DRM, care a permis producătorilor de dispozitive să implementeze diferite niveluri de protecție hardware fără a modifica codul sistemului de operare. Astăzi, Widevine Modular este suportat pe peste 4 miliarde de dispozitive și este principalul mecanism DRM pe Android.
Arhitectura Widevine constă din trei componente cheie: Content Decryption Module (CDM), serverul de licențe și instrumentul de criptare a conținutului. CDM execută decriptarea pe partea clientului și interacționează cu Trusted Execution Environment (TEE) hardware pentru stocarea securizată a cheilor.
Serverul de licențe Google gestionează emiterea cheilor pe baza politicilor furnizorului de conținut, care definesc limitări de timp, număr de dispozitive și calitate a redării. Instrumentul de criptare pregătește conținutul pe partea furnizorului, împachetându-l în format MPEG-DASH sau HLS cu criptare CENC.
Procesul de protecție începe cu etapa de împachetare a conținutului, când fișierul media este criptat folosind cheia de conținut pe serverul furnizorului. Fluxul criptat este transmis pe dispozitivul utilizatorului prin CDN, unde CDM solicită o licență de la serverul de licențe.
Serverul de licențe verifică autenticitatea dispozitivului și dreptul de acces la conținut. Dacă verificarea are succes, serverul emite o licență cu cheia pe care CDM o folosește pentru decriptare. Licența poate conține limitări privind timpul de vizionare și rezoluția.
Schimbul de licențe în Widevine este implementat prin protocolul EME (Encrypted Media Extensions) în browsere sau prin SDK pe platforme mobile. Solicitarea de licență este generată de CDM și trimisă la serverul de licențe prin HTTPS, asigurând protecția împotriva interceptării cheilor în tranzit.
Serverul procesează solicitarea și returnează o licență care este, de asemenea, criptată și poate fi decriptată doar de CDM-ul dispozitivului. Legarea hardware a cheii de un anumit dispozitiv previne transferul acesteia pe alte platforme.
Widevine utilizează standardele Common Encryption (CENC) definite în ISO/IEC 23001-7, asigurând compatibilitatea cu formatele MPEG-DASH și HLS. Criptarea AES-128 în modul CTR sau CBC este aplicată pentru protejarea fluxurilor media.
Pentru derivarea cheilor se utilizează HKDF (HMAC-based Key Derivation Function), care permite generarea de chei unice pentru fiecare segment de conținut. Suportul pentru HLS în Widevine a fost adăugat începând cu versiunea Modular 2.0, extinzând compatibilitatea cu platformele Apple.
@Throws
fun requestLicense(): ByteArray {
val drmSessionManager = mediaDrm.createSession(
sessionId,
List("keyRequestType", "init")
)
val request = mediaDrm.getKeyRequest(
sessionId,
schemeData.get("mimeType"),
KeyType.STREAMING,
mutableMapOf()
)
return licenseService.acquire(request.data)
}
Widevine definește trei niveluri de securitate care diferă prin modul de execuție a operațiilor criptografice și procesare a conținutului. Nivelul L1 asigură protecție maximă, L3 — minimă, L2 ocupă o poziție intermediară.
| Nivel | Tip de protecție | Cerințe dispozitiv | Rezoluție maximă |
|---|---|---|---|
| L1 | Hardware | TEE la nivel de SoC | 4K Ultra HD |
| L2 | Hibrid | TEE pentru chei, software pentru video | 1080p |
| L3 | Software | Doar CDM software | 720p |
Nivelul L1 necesită prezența Trusted Execution Environment (TEE) la nivel hardware, unde sunt executate toate operațiile criptografice. Cheile de conținut nu părăsesc niciodată TEE, ceea ce exclude extragerea lor chiar și în cazul compromiterii sistemului de operare principal.
Dispozitivele cu certificare L1 pot reda conținut în calitate 4K și HDR, deoarece fluxul video decriptat este transmis direct la ieșirea video protejată fără acces din partea proceselor utilizatorului.
Nivelul L3 execută toate operațiile criptografice software în spațiul obișnuit al utilizatorului. Este cel mai puțin sigur mod, în care cheile pot fi extrase din memoria RAM a dispozitivului.
Widevine L3 limitează calitatea redării la 720p, făcându-l potrivit pentru vizionare pe dispozitive entry-level sau browsere desktop fără protecție hardware.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Integrarea Widevine în aplicații mobile se realizează prin API-uri standard MediaDrm (Android) și AVContentKeySession (iOS). În majoritatea cazurilor, dezvoltatorul nu trebuie să lucreze direct cu DRM — bibliotecile de redare precum ExoPlayer și AVPlayer gestionează licențierea automat.
Pe Android, Widevine se integrează prin clasa MediaDrm, care oferă acces direct la CDM. Pentru aplicații de streaming, se recomandă utilizarea ExoPlayer cu modulul DrmSessionManager, care gestionează automat solicitările de licență.
La inițializarea playerului, trebuie specificat UUID-ul schemei Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) și URL-ul serverului de licențe furnizat de furnizorul de conținut. ExoPlayer gestionează automat ciclul de solicitare și reînnoire a licențelor.
val drmLicenseUrl = "https://license.service.com/wv"
val mediaItem = MediaItem.Builder()
.setUri(Uri.parse(streamUrl))
.setDrmKeyRequestUrl(drmLicenseUrl)
.setDrmKeyRequestHeaders(
mapOf("Authorization" to token)
)
.build()
val exoPlayer = ExoPlayer.Builder(context)
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
Pe platformele web, Widevine funcționează prin Media Source Extensions (MSE) și Encrypted Media Extensions (EME). Browserele bazate pe Chromium suportă Widevine CDM încorporat, iar dezvoltatorul trebuie doar să inițializeze o sesiune EME cu configurația corectă.
Pentru a lucra cu Widevine în browser, trebuie specificat inițiatorul de licență cu tipul keySystem `com.widevine.alpha`. După crearea instanței MediaKeys, browserul gestionează automat solicitările de licență.
La integrarea Widevine, este importantă gestionarea corectă a erorilor de licențiere care apar la lipsa drepturilor de acces, expirarea abonamentului sau incompatibilitatea dispozitivului. Eroarea TYPE_EXPIRED_LICENSE necesită reînnoirea licenței printr-o solicitare repetată la server, iar TYPE_OUTPUT_NOT_ALLOWED indică incompatibilitatea ieșirii video cu politicile DRM.
Se recomandă implementarea unui mecanism de reîncercare cu întârziere exponențială pentru erori temporare de rețea și afișarea unui mesaj inteligibil utilizatorului la refuzuri permanente de licențiere. Înregistrarea erorilor sesiunilor DRM ajută furnizorii de conținut să identifice problemele cu dispozitivele și să optimizeze politicile.
Widevine concurează cu FairPlay de la Apple și PlayReady de la Microsoft, formând cele trei soluții DRM principale pe piața platformelor mobile. Fiecare tehnologie are avantajele și limitările sale legate de ecosistemul platformei.
| Caracteristică | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Dezvoltator | Apple | Microsoft | |
| Platforma principală | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Nivel maxim | L1 (4K) | Echivalent L1 (4K) | SL3000 (4K) |
| Protecție hardware | TEE | Secure Enclave | TPM + TEE |
Alegerea DRM depinde de platformele țintă ale aplicației. Pentru proiecte Android-first, Widevine este alegerea naturală, deoarece este preinstalat pe toate dispozitivele certificate cu Google Mobile Services și nu necesită taxă de licență suplimentară.
Pentru proiecte cross-platform, este adesea utilizată abordarea multi-DRM cu agregatori de licențe precum Axinom, EZDRM și Vualto, care oferă un API unificat pentru lucrul cu toate cele trei sisteme DRM. Aceasta reduce complexitatea integrării și centralizează gestionarea licențelor.
Întrebări frecvente
Widevine — o tehnologie DRM de la Google, destinată protejării conținutului video digital împotriva copierii neautorizate. Este folosită de serviciile de streaming pentru criptarea video și gestionarea accesului la acesta printr-un sistem de licențiere.
Widevine suportă trei niveluri de securitate: L1 cu criptare hardware în TEE, L2 cu abordare hibridă și L3 cu implementare complet software. L1 permite redarea conținutului în 4K, L3 este limitat la calitate 720p.
Nivelul Widevine pe Android poate fi verificat prin clasa MediaDrm, solicitând proprietatea securityLevel. Pentru aceasta se creează o instanță MediaDrm cu UUID-ul Widevine și se apelează getPropertyString, sau se folosesc aplicații terțe precum DRM Info.
Widevine a fost dezvoltat de Google pentru Android și Chrome, iar FairPlay — pentru iOS, tvOS și Safari. Ambele suportă criptare hardware și 4K, dar Widevine este mai răspândit pe dispozitivele Android, iar FairPlay este standardul de facto în ecosistemul Apple.
Pentru utilizarea Widevine într-o aplicație mobilă nu este necesară o licență separată — tehnologia este încorporată în dispozitivele Android certificate și Chrome. Taxa se percepe doar de la furnizorii de conținut pentru utilizarea serverului de licențe.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și