Widevine — een DRM-technologie ontwikkeld door Google om video-inhoud te beschermen tegen ongeautoriseerd kopiëren op mobiele apparaten, Smart TV's en webplatforms. Versleuteling van inhoud wordt uitgevoerd via de CDM-module, die wordt ondersteund op 4 miljard apparaten wereldwijd. Widevine-technologie zorgt voor compatibiliteit met Android, iOS, Chrome en Smart TV, waardoor streamingdiensten premium inhoud op elk platform kunnen beschermen.
Belangrijkste punten
Widevine — een propriëtaire DRM-technologie die in 2010 door Google is overgenomen en de de facto standaard is geworden voor de bescherming van video-inhoud in het Android-ecosysteem. Het wordt gebruikt door de grootste streamingdiensten, waaronder Netflix, Amazon Prime Video, Disney+ en Hulu, om ongeautoriseerd kopiëren en verspreiden van inhoud te voorkomen.
Widevine ondersteunt versleuteling volgens de AES-128 CBC-standaard met behulp van inhoudssleutels die alleen naar geautoriseerde apparaten worden verzonden via een beveiligd licentiekanaal. Het systeem zorgt voor end-to-end bescherming van het moment van versleuteling op de server tot decodering op het apparaat van de gebruiker.
Het bedrijf Widevine Technologies werd opgericht in 1999 en ontwikkelde oorspronkelijk oplossingen voor inhoudsbescherming op kabeltelevisieplatforms. Na de overname door Google in 2010 werd de technologie aangepast voor mobiele platforms en geïntegreerd in Android vanaf versie 4.4 KitKat. Sinds 2015 is Widevine een verplicht onderdeel van Google Mobile Services-certificering.
In 2018 introduceerde Google Widevine Modular DRM, waarmee apparaatfabrikanten verschillende beschermingsniveaus hardwarematig kunnen implementeren zonder de OS-code te wijzigen. Tegenwoordig wordt Widevine Modular ondersteund op meer dan 4 miljard apparaten en is het het belangrijkste DRM-mechanisme op Android.
De architectuur van Widevine bestaat uit drie belangrijke componenten: Content Decryption Module (CDM), licentieserver en gereedschap voor inhoudsversleuteling. CDM voert ontsleuteling aan de clientzijde uit en werkt samen met de hardwarematige Trusted Execution Environment (TEE) voor veilige opslag van sleutels.
De licentieserver van Google beheert het uitgeven van sleutels op basis van het beleid van de inhoudsaanbieder, dat beperkingen definieert voor tijd, aantal apparaten en afspeelkwaliteit. Het versleutelingsgereedschap bereidt inhoud aan de aanbiederzijde voor door het in MPEG-DASH- of HLS-formaat met CENC-versleuteling te verpakken.
Het beschermingsproces begint met de verpakkingsfase, wanneer het mediabestand wordt versleuteld met de inhoudssleutel op de server van de aanbieder. De versleutelde stream wordt via CDN naar het apparaat van de gebruiker gestuurd, waar CDM een licentie aanvraagt bij de licentieserver.
De licentieserver verifieert de authenticiteit van het apparaat en het recht op toegang tot de inhoud. Als de verificatie slaagt, geeft de server een licentie met de sleutel af die CDM gebruikt voor ontsleuteling. De licentie kan beperkingen bevatten voor kijktijd en resolutie.
Licentie-uitwisseling in Widevine wordt geïmplementeerd via het EME-protocol (Encrypted Media Extensions) in browsers of via SDK op mobiele platforms. Het licentieverzoek wordt gegenereerd door CDM en via HTTPS naar de licentieserver gestuurd, wat bescherming biedt tegen onderschepping van sleutels tijdens transport.
De server verwerkt het verzoek en retourneert een licentie die ook versleuteld is en alleen door de CDM van het apparaat kan worden ontsleuteld. Hardwarematige binding van de sleutel aan een specifiek apparaat voorkomt overdracht naar andere platforms.
Widevine gebruikt Common Encryption (CENC)-standaarden zoals gedefinieerd in ISO/IEC 23001-7, wat compatibiliteit met MPEG-DASH- en HLS-formaten garandeert. AES-128-versleuteling in CTR- of CBC-modus wordt toegepast voor de bescherming van mediastreams.
Voor sleutelafleiding wordt HKDF (HMAC-based Key Derivation Function) gebruikt, waarmee unieke sleutels voor elk segment van de inhoud kunnen worden gegenereerd. HLS-ondersteuning in Widevine is toegevoegd vanaf Modular 2.0, wat de compatibiliteit met Apple-platforms heeft uitgebreid.
@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 definieert drie beveiligingsniveaus die verschillen in de manier waarop cryptografische bewerkingen worden uitgevoerd en inhoud wordt verwerkt. Niveau L1 biedt maximale bescherming, L3 — minimale, L2 neemt een tussenpositie in.
| Niveau | Type bescherming | Apparaatvereisten | Maximale resolutie |
|---|---|---|---|
| L1 | Hardware | TEE op SoC-niveau | 4K Ultra HD |
| L2 | Hybride | TEE voor sleutels, software voor video | 1080p |
| L3 | Software | Alleen software-CDM | 720p |
Niveau L1 vereist de aanwezigheid van Trusted Execution Environment (TEE) op hardwareniveau, waar alle cryptografische bewerkingen worden uitgevoerd. Inhoudssleutels verlaten nooit de TEE, wat uitsluit dat ze kunnen worden uitgelezen, zelfs als het belangrijkste besturingssysteem wordt gecompromitteerd.
Apparaten met L1-certificering kunnen inhoud afspelen in 4K-kwaliteit en HDR, omdat de ontsleutelde videostream rechtstreeks naar de beveiligde video-uitgang wordt gestuurd zonder toegang van gebruikersprocessen.
Niveau L3 voert alle cryptografische bewerkingen softwarematig uit in de gewone gebruikersruimte. Dit is de minst veilige modus, waarbij sleutels uit het RAM van het apparaat kunnen worden uitgelezen.
Widevine L3 beperkt de afspeelkwaliteit tot 720p, waardoor het geschikt is om te bekijken op instapapparaten of desktopbrowsers zonder hardwarematige bescherming.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Integratie van Widevine in mobiele apps gebeurt via standaard API's MediaDrm (Android) en AVContentKeySession (iOS). In de meeste gevallen hoeft de ontwikkelaar niet direct met DRM te werken — bibliotheken van spelers zoals ExoPlayer en AVPlayer verzorgen de licentieverlening automatisch.
Op Android wordt Widevine geïntegreerd via de klasse MediaDrm, die directe toegang tot CDM biedt. Voor streaming-apps wordt aanbevolen ExoPlayer te gebruiken met de DrmSessionManager-module, die automatisch licentieverzoeken beheert.
Bij het initialiseren van de speler moet de UUID van het Widevine-schema (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) en de URL van de licentieserver van de inhoudsaanbieder worden opgegeven. ExoPlayer verwerkt automatisch de cyclus van licentieaanvragen en -vernieuwing.
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()
Op webplatforms werkt Widevine via Media Source Extensions (MSE) en Encrypted Media Extensions (EME). Browsers op basis van Chromium ondersteunen Widevine CDM ingebouwd, en de ontwikkelaar hoeft alleen een EME-sessie met de juiste configuratie te initialiseren.
Om met Widevine in een browser te werken, moet de licentie-initiator met keySystem-type `com.widevine.alpha` worden opgegeven. Na het maken van een MediaKeys-instantie verwerkt de browser automatisch licentieverzoeken.
Bij integratie van Widevine is het belangrijk om fouten bij licentieverlening correct af te handelen, die optreden bij gebrek aan toegangsrechten, verlopen abonnement of apparaatincompatibiliteit. Fout TYPE_EXPIRED_LICENSE vereist verlenging van de licentie via een nieuw verzoek aan de server, en TYPE_OUTPUT_NOT_ALLOWED duidt op incompatibiliteit van de video-uitgang met DRM-beleid.
Het wordt aanbevolen een herhalingsmechanisme met exponentiële vertraging te implementeren voor tijdelijke netwerkfouten en de gebruiker een begrijpelijk bericht te tonen bij permanente weigeringen van licentieverlening. Foutregistratie van DRM-sessies helpt inhoudsaanbieders problemen met apparaten te identificeren en beleid te optimaliseren.
Widevine concurreert met FairPlay van Apple en PlayReady van Microsoft, waarmee het de drie belangrijkste DRM-oplossingen op de mobiele platformmarkt vormt. Elke technologie heeft zijn voor- en nadelen gerelateerd aan het platformecosysteem.
| Kenmerk | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Ontwikkelaar | Apple | Microsoft | |
| Belangrijkste platform | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maximaal niveau | L1 (4K) | Equivalent L1 (4K) | SL3000 (4K) |
| Hardwarematige bescherming | TEE | Secure Enclave | TPM + TEE |
De keuze van DRM hangt af van de doelplatforms van de app. Voor Android-first projecten is Widevine de natuurlijke keuze, omdat het vooraf is geïnstalleerd op alle gecertificeerde apparaten met Google Mobile Services en geen extra licentiekosten vereist.
Voor cross-platform projecten wordt vaak een multi-DRM aanpak gebruikt met licentie-aggregators zoals Axinom, EZDRM en Vualto, die een uniforme API bieden voor het werken met alle drie DRM-systemen. Dit vermindert de integratiecomplexiteit en centraliseert het licentiemanagement.
Veelgestelde vragen
Widevine — een DRM-technologie van Google, ontworpen om digitale video-inhoud te beschermen tegen ongeautoriseerd kopiëren. Het wordt gebruikt door streamingdiensten om video te versleutelen en de toegang ertoe te beheren via een licentiesysteem.
Widevine ondersteunt drie niveaus van beveiliging: L1 met hardwarematige versleuteling in TEE, L2 met een hybride aanpak en L3 met volledig softwarematige implementatie. L1 maakt afspelen van inhoud in 4K mogelijk, L3 is beperkt tot 720p-kwaliteit.
Het Widevine-niveau op Android kan worden gecontroleerd via de klasse MediaDrm door de eigenschap securityLevel op te vragen. Hiervoor wordt een MediaDrm-instantie met de Widevine-UUID gemaakt en getPropertyString aangeroepen, of worden apps van derden zoals DRM Info gebruikt.
Widevine is ontwikkeld door Google voor Android en Chrome, en FairPlay voor iOS, tvOS en Safari. Beide ondersteunen hardwarematige versleuteling en 4K, maar Widevine is breder verspreid op Android-apparaten, terwijl FairPlay de de facto standaard is in het Apple-ecosysteem.
Voor het gebruik van Widevine in een mobiele app is geen aparte licentie nodig — de technologie is ingebouwd in gecertificeerde Android-apparaten en Chrome. Kosten worden alleen in rekening gebracht bij inhoudsaanbieders voor het gebruik van de licentieserver.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook