Widevine: co to jest, DRM i poziomy bezpieczeństwa

Autor: IT Sectr Opublikowano: 2026-05-24 Czas czytania: 8 min

Widevine — to technologia DRM opracowana przez Google do ochrony treści wideo przed nieautoryzowanym kopiowaniem na urządzeniach mobilnych, Smart TV i platformach internetowych. Szyfrowanie treści odbywa się za pomocą modułu CDM, który jest obsługiwany na 4 miliardach urządzeń na całym świecie. Technologia Widevine zapewnia kompatybilność z Androidem, iOS, Chrome i Smart TV, umożliwiając serwisom streamingowym ochronę premium treści na dowolnych platformach.

Najważniejsze

  • Widevine — rozwiązanie DRM od Google do ochrony wideo w aplikacjach mobilnych i internecie.
  • Trzy poziomy bezpieczeństwa: L1 (szyfrowanie sprzętowe), L2 (programowe), L3 (bezpieczne tylko w chmurze).
  • CDM — Content Decryption Module, kluczowy komponent do deszyfrowania treści.
  • Licencjonowanie zarządzane przez serwer licencji Google, wydający klucze do dekodowania.
  • Zgodność z EME (Encrypted Media Extensions) umożliwia działanie w dowolnej przeglądarce.

Co to jest Widevine?

Widevine — to zastrzeżona technologia DRM zakupiona przez Google w 2010 roku, która stała się standardem de facto w ochronie treści wideo w ekosystemie Androida. Jest używana przez największe serwisy streamingowe, w tym Netflix, Amazon Prime Video, Disney+ i Hulu, w celu zapobiegania nieautoryzowanemu kopiowaniu i rozpowszechnianiu treści.

Widevine obsługuje szyfrowanie zgodnie ze standardem AES-128 CBC przy użyciu kluczy treści, które są przesyłane tylko do autoryzowanych urządzeń za pośrednictwem bezpiecznego kanału licencjonowania. System zapewnia kompleksową ochronę od momentu szyfrowania na serwerze do dekodowania na urządzeniu użytkownika.

Historia i rozwój Widevine

Firma Widevine Technologies została założona w 1999 roku i początkowo opracowywała rozwiązania do ochrony treści na platformach telewizji kablowej. Po przejęciu przez Google w 2010 roku technologia została dostosowana do platform mobilnych i zintegrowana z systemem Android od wersji 4.4 KitKat. Od 2015 roku Widevine stał się obowiązkowym komponentem certyfikacji Google Mobile Services.

W 2018 roku Google wprowadziło Widevine Modular DRM, który umożliwił producentom urządzeń implementację różnych poziomów ochrony sprzętowo bez zmiany kodu systemu operacyjnego. Obecnie Widevine Modular jest obsługiwany na ponad 4 miliardach urządzeń i jest głównym mechanizmem DRM na Androidzie.

Architektura Widevine

Architektura Widevine składa się z trzech kluczowych komponentów: Content Decryption Module (CDM), serwera licencji i narzędzia do szyfrowania treści. CDM wykonuje deszyfrowanie po stronie klienta i współpracuje ze sprzętowym Trusted Execution Environment (TEE) w celu bezpiecznego przechowywania kluczy.

Serwer licencji Google zarządza wydawaniem kluczy na podstawie polityk dostawcy treści, które określają ograniczenia czasowe, liczbę urządzeń i jakość odtwarzania. Narzędzie szyfrujące przygotowuje treści po stronie dostawcy, pakując je w formacie MPEG-DASH lub HLS z szyfrowaniem CENC.

Jak działa Widevine DRM?

Proces ochrony rozpoczyna się od etapu pakowania treści, gdy plik multimedialny jest szyfrowany przy użyciu klucza treści na serwerze dostawcy. Zaszyfrowany strumień jest przesyłany na urządzenie użytkownika przez CDN, gdzie CDM żąda licencji od serwera licencji.

Serwer licencji sprawdza autentyczność urządzenia i prawo dostępu do treści. Jeśli weryfikacja przebiegnie pomyślnie, serwer wydaje licencję z kluczem, którego CDM używa do deszyfrowania. Licencja może zawierać ograniczenia dotyczące czasu oglądania i rozdzielczości.

Protokół wymiany licencji

Wymiana licencji w Widevine jest realizowana za pomocą protokołu EME (Encrypted Media Extensions) w przeglądarkach lub przez SDK na platformach mobilnych. Żądanie licencji jest generowane przez CDM i wysyłane na serwer licencji przez HTTPS, co zapewnia ochronę przed przechwyceniem kluczy podczas transmisji.

Serwer przetwarza żądanie i zwraca licencję, która jest również zaszyfrowana i może być odszyfrowana tylko przez CDM urządzenia. Wiązanie sprzętowe klucza z konkretnym urządzeniem zapobiega jego przeniesieniu na inne platformy.

Obsługa standardów szyfrowania

Widevine używa standardów Common Encryption (CENC) zdefiniowanych w ISO/IEC 23001-7, co zapewnia zgodność z formatami MPEG-DASH i HLS. Szyfrowanie AES-128 w trybie CTR lub CBC jest stosowane do ochrony strumieni multimedialnych.

Do wyprowadzania kluczy używana jest funkcja HKDF (HMAC-based Key Derivation Function), która umożliwia generowanie unikalnych kluczy dla każdego segmentu treści. Obsługa HLS w Widevine została dodana od wersji Modular 2.0, co rozszerzyło zgodność z platformami Apple.

Przykład żądania licencji na Androidzie

kotlin
@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)
}

Poziomy bezpieczeństwa Widevine: L1, L2, L3

Widevine definiuje trzy poziomy bezpieczeństwa, które różnią się sposobem wykonywania operacji kryptograficznych i przetwarzania treści. Poziom L1 zapewnia maksymalną ochronę, L3 — minimalną, L2 zajmuje pozycję pośrednią.

PoziomRodzaj ochronyWymagania sprzętoweMaksymalna rozdzielczość
L1SprzętowaTEE na poziomie SoC4K Ultra HD
L2HybrydowaTEE dla kluczy, soft dla wideo1080p
L3ProgramowaTylko programowy CDM720p

Poziom L1 — szyfrowanie sprzętowe

Poziom L1 wymaga obecności Trusted Execution Environment (TEE) na poziomie sprzętowym, gdzie wykonywane są wszystkie operacje kryptograficzne. Klucze treści nigdy nie opuszczają TEE, co wyklucza ich wydobycie nawet przy kompromitacji głównego systemu operacyjnego.

Urządzenia z certyfikacją L1 mogą odtwarzać treści w jakości 4K i HDR, ponieważ odszyfrowany strumień wideo jest przesyłany bezpośrednio do zabezpieczonego wyjścia wideo bez dostępu ze strony procesów użytkownika.

Poziom L3 — szyfrowanie programowe

Poziom L3 wykonuje wszystkie operacje kryptograficzne programowo w zwykłej przestrzeni użytkownika. Jest to najmniej bezpieczny tryb, w którym klucze mogą być wydobyte z pamięci RAM urządzenia.

Widevine L3 ogranicza jakość odtwarzania do 720p, co czyni go odpowiednim do oglądania na starszych urządzeniach lub przeglądarkach desktopowych bez ochrony sprzętowej.

Sprawdzanie poziomu bezpieczeństwa na urządzeniu

kotlin
fun getSecurityLevel(): String {
    val mediaDrm = MediaDrm(UUID.fromString(
        "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
    ))
    val level = mediaDrm.getPropertyString(
        "securityLevel"
    )
    return level.ifEmpty { "L3" }
}

Integracja Widevine w aplikacjach mobilnych

Integracja Widevine w aplikacjach mobilnych odbywa się za pomocą standardowych API MediaDrm (Android) i AVContentKeySession (iOS). W większości przypadków programista nie musi bezpośrednio pracować z DRM — biblioteki odtwarzaczy, takie jak ExoPlayer i AVPlayer, obsługują licencjonowanie automatycznie.

Integracja na Androidzie

Na Androidzie Widevine integruje się za pomocą klasy MediaDrm, która zapewnia bezpośredni dostęp do CDM. W przypadku aplikacji streamingowych zaleca się używanie ExoPlayera z modułem DrmSessionManager, który automatycznie zarządza żądaniami licencji.

Podczas inicjalizacji odtwarzacza należy podać UUID schematu Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) oraz URL serwera licencji dostarczonego przez dostawcę treści. ExoPlayer samodzielnie obsługuje cykl żądania i odświeżania licencji.

Konfiguracja ExoPlayera dla Widevine

kotlin
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()

Integracja z odtwarzaczami internetowymi

Na platformach internetowych Widevine działa za pośrednictwem Media Source Extensions (MSE) i Encrypted Media Extensions (EME). Przeglądarki oparte na Chromium obsługują Widevine CDM wbudowany, a programista musi jedynie zainicjalizować sesję EME z odpowiednią konfiguracją.

Aby korzystać z Widevine w przeglądarce, należy określić inicjator licencji z typem keySystem `com.widevine.alpha`. Po utworzeniu instancji MediaKeys przeglądarka automatycznie obsługuje żądania licencji.

Obsługa błędów licencjonowania

Podczas integracji Widevine ważne jest prawidłowe obsługiwanie błędów licencjonowania, które występują przy braku uprawnień dostępu, wygaśnięciu subskrypcji lub niekompatybilności urządzenia. Błąd TYPE_EXPIRED_LICENSE wymaga odnowienia licencji poprzez ponowne żądanie do serwera, a TYPE_OUTPUT_NOT_ALLOWED wskazuje na niezgodność wyjścia wideo z politykami DRM.

Zaleca się implementację mechanizmu ponownych prób z wykładniczym opóźnieniem w przypadku tymczasowych błędów sieciowych oraz wyświetlanie użytkownikowi zrozumiałego komunikatu przy stałych odmowach licencjonowania. Logowanie błędów sesji DRM pomaga dostawcom treści identyfikować problemy z urządzeniami i optymalizować polityki.

Widevine i alternatywne DRM

Widevine konkuruje z FairPlay od Apple i PlayReady od Microsoftu, tworząc trzy główne rozwiązania DRM na rynku platform mobilnych. Każda technologia ma swoje zalety i ograniczenia związane z ekosystemem platformy.

Porównanie rozwiązań DRM

CechaWidevineFairPlayPlayReady
ProducentGoogleAppleMicrosoft
Główna platformaAndroid, ChromeiOS, tvOS, SafariWindows, Xbox, UWP
Maksymalny poziomL1 (4K)Odpowiednik L1 (4K)SL3000 (4K)
Ochrona sprzętowaTEESecure EnclaveTPM + TEE

Wybór DRM dla projektu

Wybór DRM zależy od docelowych platform aplikacji. Dla projektów Android-first Widevine jest naturalnym wyborem, ponieważ jest preinstalowany na wszystkich certyfikowanych urządzeniach z Google Mobile Services i nie wymaga dodatkowej opłaty licencyjnej.

W przypadku projektów wieloplatformowych często stosuje się podejście multi-DRM z wykorzystaniem agregatorów licencji, takich jak Axinom, EZDRM i Vualto, które zapewniają jednolite API do pracy ze wszystkimi trzema systemami DRM. Zmniejsza to złożoność integracji i centralizuje zarządzanie licencjami.

Często zadawane pytania

Co to jest Widevine DRM?

Widevine — to technologia DRM od Google, przeznaczona do ochrony cyfrowych treści wideo przed nieautoryzowanym kopiowaniem. Jest używana przez serwisy streamingowe do szyfrowania wideo i zarządzania dostępem do niego za pomocą systemu licencjonowania.

Jakie poziomy bezpieczeństwa Widevine istnieją?

Widevine obsługuje trzy poziomy bezpieczeństwa: L1 ze sprzętowym szyfrowaniem w TEE, L2 z podejściem hybrydowym i L3 z w pełni programową realizacją. L1 umożliwia odtwarzanie treści w 4K, L3 jest ograniczone do jakości 720p.

Jak sprawdzić poziom Widevine na Androidzie?

Poziom Widevine na Androidzie można sprawdzić za pomocą klasy MediaDrm, odczytując właściwość securityLevel. W tym celu tworzy się instancję MediaDrm z UUID Widevine i wywołuje getPropertyString, lub korzysta się z aplikacji zewnętrznych takich jak DRM Info.

Czym Widevine różni się od FairPlay?

Widevine został opracowany przez Google dla Androida i Chrome, a FairPlay — dla iOS, tvOS i Safari. Oba obsługują sprzętowe szyfrowanie i 4K, ale Widevine jest szerzej rozpowszechniony na urządzeniach z Androidem, a FairPlay jest standardem de facto w ekosystemie Apple.

Czy potrzebna jest licencja na używanie Widevine?

Do używania Widevine w aplikacji mobilnej osobna licencja nie jest wymagana — technologia jest wbudowana w certyfikowane urządzenia z Androidem i Chrome. Opłata jest pobierana tylko od dostawców treści za korzystanie z serwera licencji.

Podsumowanie

  • Widevine — główny mechanizm DRM na Androidzie, zapewniający ochronę treści wideo poprzez szyfrowanie sprzętowe lub programowe.
  • Trzy poziomy bezpieczeństwa L1, L2, L3 określają maksymalną jakość odtwarzania i stopień ochrony kluczy.
  • CDM (Content Decryption Module) wykonuje deszyfrowanie treści po stronie klienta przy użyciu kluczy licencyjnych.
  • Integracja odbywa się przez ExoPlayer, MediaDrm na Androidzie i EME na platformach internetowych.
  • Dla iOS wymagany jest FairPlay, co sprawia, że podejście multi-DRM jest niezbędne w projektach wieloplatformowych.
  • Widevine Modular obsługuje szyfrowanie CENC i jest kompatybilny z formatami MPEG-DASH i HLS.
  • Serwer licencji Google zarządza dostępem do treści na podstawie polityk określonych przez dostawcę treści.

Opracujemy aplikację mobilną pod klucz

IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.

Omów projekt

Przeczytaj również