Widevine ist eine von Google entwickelte DRM-Technologie zum Schutz von Videoinhalten vor unbefugtem Kopieren auf mobilen Geräten, Smart-TVs und Webplattformen. Die Inhaltsverschlüsselung erfolgt über das CDM-Modul, das auf 4 Milliarden Geräten weltweit unterstützt wird. Die Widevine-Technologie gewährleistet Kompatibilität mit Android, iOS, Chrome und Smart-TV und ermöglicht es Streaming-Diensten, Premium-Inhalte auf jeder Plattform zu schützen.
Wichtige Punkte
Widevine ist eine proprietäre DRM-Technologie, die 2010 von Google übernommen wurde und zum De-facto-Standard für den Schutz von Videoinhalten im Android-Ökosystem geworden ist. Sie wird von großen Streaming-Diensten wie Netflix, Amazon Prime Video, Disney+ und Hulu verwendet, um das unbefugte Kopieren und Verbreiten von Inhalten zu verhindern.
Widevine unterstützt AES-128-CBC-Verschlüsselung mit Inhaltsschlüsseln, die nur an autorisierte Geräte über einen sicheren Lizenzkanal übertragen werden. Das System bietet End-to-End-Schutz von der Verschlüsselung auf dem Server bis zur Decodierung auf dem Gerät des Benutzers.
Widevine Technologies wurde 1999 gegründet und entwickelte ursprünglich Lösungen zum Schutz von Inhalten auf Kabelfernsehplattformen. Nach der Übernahme durch Google im Jahr 2010 wurde die Technologie für mobile Plattformen angepasst und ab Version 4.4 KitKat in das Android-Betriebssystem integriert. Seit 2015 ist Widevine ein Pflichtbestandteil der Google Mobile Services-Zertifizierung.
2018 führte Google Widevine Modular DRM ein, das es Geräteherstellern ermöglichte, verschiedene Schutzstufen hardwaremäßig zu implementieren, ohne den Betriebssystemcode zu ändern. Heute wird Widevine Modular auf über 4 Milliarden Geräten unterstützt und ist der primäre DRM-Mechanismus auf Android.
Die Widevine-Architektur besteht aus drei Schlüsselkomponenten: dem Content Decryption Module (CDM), dem Lizenzserver und dem Inhaltsverschlüsselungstool. CDM führt die Entschlüsselung auf der Client-Seite durch und interagiert mit der hardwarebasierten Trusted Execution Environment (TEE) zur sicheren Schlüsselspeicherung.
Der Google-Lizenzserver verwaltet die Schlüsselausgabe auf der Grundlage der Richtlinien des Inhaltsanbieters, die Einschränkungen hinsichtlich Zeit, Anzahl der Geräte und Wiedergabequalität festlegen. Das Verschlüsselungstool bereitet die Inhalte auf der Seite des Anbieters auf und verpackt sie im MPEG-DASH- oder HLS-Format mit CENC-Verschlüsselung.
Der Schutzprozess beginnt mit der Inhaltsverpackung, bei der die Mediendatei mit einem Inhaltsschlüssel auf dem Server des Anbieters verschlüsselt wird. Der verschlüsselte Stream wird über CDN an das Gerät des Benutzers übertragen, wo das CDM eine Lizenz vom Lizenzserver anfordert.
Der Lizenzserver überprüft die Authentizität des Geräts und das Zugriffsrecht auf den Inhalt. Wenn die Prüfung erfolgreich ist, stellt der Server eine Lizenz mit einem Schlüssel aus, den das CDM zur Entschlüsselung verwendet. Die Lizenz kann Einschränkungen hinsichtlich Betrachtungszeit und Auflösung enthalten.
Der Lizenzaustausch bei Widevine wird über das EME-Protokoll (Encrypted Media Extensions) in Browsern oder über SDK auf mobilen Plattformen implementiert. Die Lizenzanforderung wird vom CDM generiert und über HTTPS an den Lizenzserver gesendet, was Schutz vor Schlüsselabfang während der Übertragung bietet.
Der Server verarbeitet die Anfrage und gibt eine Lizenz zurück, die ebenfalls verschlüsselt ist und nur vom CDM des Geräts entschlüsselt werden kann. Die hardwaremäßige Bindung des Schlüssels an ein bestimmtes Gerät verhindert dessen Übertragung auf andere Plattformen.
Widevine verwendet die in ISO/IEC 23001-7 definierten Common Encryption (CENC)-Standards und gewährleistet so die Kompatibilität mit MPEG-DASH- und HLS-Formaten. AES-128-Verschlüsselung im CTR- oder CBC-Modus wird zum Schutz von Medienströmen verwendet.
Zur Schlüsselableitung wird HKDF (HMAC-based Key Derivation Function) verwendet, was die Generierung eindeutiger Schlüssel für jedes Inhaltssegment ermöglicht. Die HLS-Unterstützung in Widevine wurde mit Modular Version 2.0 hinzugefügt, was die Kompatibilität mit Apple-Plattformen erweiterte.
@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 definiert drei Sicherheitsstufen, die sich in der Art und Weise unterscheiden, wie kryptografische Operationen durchgeführt und Inhalte verarbeitet werden. Stufe L1 bietet maximalen Schutz, L3 minimalen Schutz, und L2 nimmt eine Zwischenstellung ein.
| Stufe | Schutzart | Geräteanforderungen | Maximale Auflösung |
|---|---|---|---|
| L1 | Hardware | TEE auf SoC-Ebene | 4K Ultra HD |
| L2 | Hybrid | TEE für Schlüssel, Software für Video | 1080p |
| L3 | Software | Nur Software-CDM | 720p |
Stufe L1 erfordert eine Trusted Execution Environment (TEE) auf Hardware-Ebene, in der alle kryptografischen Operationen durchgeführt werden. Inhaltsschlüssel verlassen niemals die TEE, was ihre Extraktion selbst bei Kompromittierung des Hauptbetriebssystems verhindert.
Geräte mit L1-Zertifizierung können Inhalte in 4K-Qualität und HDR wiedergeben, da der entschlüsselte Videostream direkt an einen geschützten Videoausgang gesendet wird, ohne Zugriff von Benutzerprozessen.
Stufe L3 führt alle kryptografischen Operationen softwaremäßig im normalen Benutzerbereich durch. Dies ist der am wenigsten sichere Modus, bei dem Schlüssel aus dem RAM des Geräts extrahiert werden können.
Widevine L3 begrenzt die Wiedergabequalität auf 720p, was es für die Anzeige auf Low-End-Geräten oder Desktop-Browsern ohne Hardware-Schutz geeignet macht.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Die Integration von Widevine in mobile Anwendungen erfolgt über die standardmäßigen MediaDrm (Android) und AVContentKeySession (iOS) APIs. In den meisten Fällen muss der Entwickler nicht direkt mit DRM arbeiten — Player-Bibliotheken wie ExoPlayer und AVPlayer übernehmen die Lizenzierung automatisch.
Auf Android wird Widevine über die Klasse MediaDrm integriert, die direkten Zugriff auf das CDM bietet. Für Streaming-Anwendungen wird die Verwendung von ExoPlayer mit dem DrmSessionManager-Modul empfohlen, das automatisch Lizenzanfragen verwaltet.
Bei der Initialisierung des Players müssen Sie die Widevine-Schema-UUID (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) und die Lizenzserver-URL angeben, die vom Inhaltsanbieter bereitgestellt wird. ExoPlayer übernimmt den Lizenzanforderungs- und Erneuerungszyklus automatisch.
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()
Auf Webplattformen funktioniert Widevine über Media Source Extensions (MSE) und Encrypted Media Extensions (EME). Chromium-basierte Browser haben Widevine CDM integriert, und der Entwickler muss nur eine EME-Sitzung mit der richtigen Konfiguration initialisieren.
Um Widevine in einem Browser zu verwenden, müssen Sie einen Lizenzinitiator mit dem keySystem-Typ `com.widevine.alpha` angeben. Nach dem Erstellen einer MediaKeys-Instanz übernimmt der Browser automatisch die Lizenzanfragen.
Bei der Integration von Widevine ist es wichtig, Lizenzierungsfehler korrekt zu behandeln, die aufgrund fehlender Zugriffsrechte, Ablauf des Abonnements oder Geräteinkompatibilität auftreten. Der Fehler TYPE_EXPIRED_LICENSE erfordert eine Aktualisierung der Lizenz durch erneute Anfrage an den Server, während TYPE_OUTPUT_NOT_ALLOWED auf eine Inkompatibilität des Videoausgangs mit den DRM-Richtlinien hinweist.
Es wird empfohlen, einen Wiederholungsmechanismus mit exponentiellem Backoff für temporäre Netzwerkfehler zu implementieren und dem Benutzer bei dauerhaften Lizenzierungsfehlern eine klare Nachricht anzuzeigen. Das Protokollieren von DRM-Sitzungsfehlern hilft Inhaltsanbietern, Geräteprobleme zu identifizieren und Richtlinien zu optimieren.
Widevine konkurriert mit FairPlay von Apple und PlayReady von Microsoft und bildet die drei wichtigsten DRM-Lösungen auf dem Markt für mobile Plattformen. Jede Technologie hat ihre eigenen Vor- und Nachteile, die mit dem Plattform-Ökosystem zusammenhängen.
| Eigenschaft | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Entwickler | Apple | Microsoft | |
| Primäre Plattform | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maximale Stufe | L1 (4K) | Äquivalent zu L1 (4K) | SL3000 (4K) |
| Hardware-Schutz | TEE | Secure Enclave | TPM + TEE |
Die DRM-Auswahl hängt von den Zielplattformen der Anwendung ab. Für Android-First-Projekte ist Widevine die natürliche Wahl, da es auf allen zertifizierten Geräten mit Google Mobile Services vorinstalliert ist und keine zusätzlichen Lizenzgebühren erfordert.
Für plattformübergreifende Projekte wird häufig ein Multi-DRM-Ansatz mit Lizenzaggregatoren wie Axinom, EZDRM und Vualto verwendet, die eine einheitliche API für die Arbeit mit allen drei DRM-Systemen bereitstellen. Dies reduziert die Integrationskomplexität und zentralisiert die Lizenzverwaltung.
Häufig gestellte Fragen
Widevine ist eine Google DRM-Technologie zum Schutz digitaler Videoinhalte vor unbefugtem Kopieren. Sie wird von Streaming-Diensten verwendet, um Videos zu verschlüsseln und den Zugriff über ein Lizenzsystem zu verwalten.
Widevine unterstützt drei Sicherheitsstufen: L1 mit Hardware-Verschlüsselung in TEE, L2 mit einem hybriden Ansatz und L3 mit vollständiger Software-Implementierung. L1 ermöglicht die Wiedergabe von 4K-Inhalten, L3 ist auf 720p-Qualität begrenzt.
Sie können die Widevine-Stufe auf Android über die Klasse MediaDrm überprüfen, indem Sie die Eigenschaft securityLevel abfragen. Erstellen Sie dazu eine MediaDrm-Instanz mit der Widevine-UUID und rufen Sie getPropertyString auf, oder verwenden Sie Drittanbieter-Apps wie DRM Info.
Widevine wurde von Google für Android und Chrome entwickelt, während FairPlay für iOS, tvOS und Safari ist. Beide unterstützen Hardware-Verschlüsselung und 4K, aber Widevine ist auf Android-Geräten weiter verbreitet, während FairPlay der De-facto-Standard im Apple-Ökosystem ist.
Für die Nutzung von Widevine in einer mobilen Anwendung ist keine separate Lizenz erforderlich — die Technologie ist in zertifizierte Android-Geräte und Chrome integriert. Gebühren werden nur von Inhaltsanbietern für die Nutzung des Lizenzservers erhoben.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch