Widevine: vad är det, DRM och säkerhetsnivåer

Författare: IT Sectr Publicerad: 2026-05-24 Lästid: 8 min

Widevine — en DRM-teknik utvecklad av Google för att skydda videoinnehåll från obehörig kopiering på mobila enheter, Smart TV och webbplattformar. Kryptering av innehåll utförs via CDM-modulen, som stöds på 4 miljarder enheter världen över. Widevine-teknik säkerställer kompatibilitet med Android, iOS, Chrome och Smart TV, vilket gör att streamingtjänster kan skydda premiuminnehåll på alla plattformar.

Huvudpunkter

  • Widevine — DRM-lösning från Google för att skydda video i mobilappar och på webben.
  • Tre nivåer av säkerhet: L1 (hårdvarukryptering), L2 (programvara), L3 (endast säker i molnet).
  • CDM — Content Decryption Module, nyckelkomponenten för att dekryptera innehåll.
  • Licensiering hanteras via Googles licensserver som utfärdar nycklar för avkodning.
  • Kompatibilitet med EME (Encrypted Media Extensions) möjliggör arbete i alla webbläsare.

Vad är Widevine?

Widevine — en proprietär DRM-teknik som förvärvades av Google 2010 och blev de facto-standard för skydd av videoinnehåll i Android-ekosystemet. Den används av de största streamingtjänsterna, inklusive Netflix, Amazon Prime Video, Disney+ och Hulu, för att förhindra obehörig kopiering och spridning av innehåll.

Widevine stöder kryptering enligt AES-128 CBC-standarden med hjälp av innehållsnycklar som endast överförs till auktoriserade enheter via en säker licensieringskanal. Systemet ger end-to-end-skydd från krypteringsögonblicket på servern till avkodning på användarens enhet.

Widevines historia och utveckling

Företaget Widevine Technologies grundades 1999 och utvecklade ursprungligen lösningar för innehållsskydd på kabel-TV-plattformar. Efter förvärvet av Google 2010 anpassades tekniken för mobila plattformar och integrerades i operativsystemet Android från och med version 4.4 KitKat. Från 2015 blev Widevine en obligatorisk komponent i Google Mobile Services-certifiering.

2018 introducerade Google Widevine Modular DRM, som gjorde det möjligt för enhetstillverkare att implementera olika skyddsnivåer i hårdvara utan att ändra operativsystemets kod. Idag stöds Widevine Modular på över 4 miljarder enheter och är den huvudsakliga DRM-mekanismen på Android.

Widevines arkitektur

Widevines arkitektur består av tre nyckelkomponenter: Content Decryption Module (CDM), licensserver och verktyg för innehållskryptering. CDM utför dekryptering på klientsidan och samverkar med hårdvarans Trusted Execution Environment (TEE) för säker lagring av nycklar.

Googles licensserver hanterar utfärdandet av nycklar baserat på innehållsleverantörens policyer, som definierar tidsbegränsningar, antal enheter och uppspelningskvalitet. Krypteringsverktyget förbereder innehåll på leverantörens sida och paketerar det i MPEG-DASH- eller HLS-format med CENC-kryptering.

Hur fungerar Widevine DRM?

Skyddsprocessen börjar med paketeringsfasen, när mediafilen krypteras med innehållsnyckeln på leverantörens server. Den krypterade strömmen överförs till användarens enhet via CDN, där CDM begär en licens från licensservern.

Licensservern verifierar enhetens autenticitet och rätten att komma åt innehållet. Om verifieringen lyckas utfärdar servern en licens med nyckeln som CDM använder för dekryptering. Licensen kan innehålla begränsningar för visningstid och upplösning.

Licensutbytesprotokoll

Licensutbyte i Widevine implementeras via EME-protokollet (Encrypted Media Extensions) i webbläsare eller via SDK på mobila plattformar. Licensbegäran genereras av CDM och skickas till licensservern via HTTPS, vilket säkerställer skydd mot avlyssning av nycklar under transport.

Servern bearbetar begäran och returnerar en licens som också är krypterad och endast kan dekrypteras av enhetens CDM. Hårdvarubindning av nyckeln till en specifik enhet förhindrar överföring till andra plattformar.

Stöd för krypteringsstandarder

Widevine använder Common Encryption (CENC)-standarder definierade i ISO/IEC 23001-7, vilket säkerställer kompatibilitet med MPEG-DASH- och HLS-format. AES-128-kryptering i CTR- eller CBC-läge tillämpas för att skydda mediaströmmar.

För nyckelderivering används HKDF (HMAC-based Key Derivation Function), vilket möjliggör generering av unika nycklar för varje segment av innehåll. HLS-stöd i Widevine lades till från version Modular 2.0, vilket utökade kompatibiliteten med Apple-plattformar.

Exempel på licensbegäran på Android

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

Widevine säkerhetsnivåer: L1, L2, L3

Widevine definierar tre säkerhetsnivåer som skiljer sig åt i hur kryptografiska operationer utförs och innehåll bearbetas. Nivå L1 ger maximalt skydd, L3 — minimalt, L2 intar en mellanposition.

NivåTyp av skyddEnhetskravMaximal upplösning
L1HårdvaraTEE på SoC-nivå4K Ultra HD
L2HybridTEE för nycklar, programvara för video1080p
L3ProgramvaraEndast programvaru-CDM720p

Nivå L1 — hårdvarukryptering

Nivå L1 kräver närvaro av Trusted Execution Environment (TEE) på hårdvarunivå, där alla kryptografiska operationer utförs. Innehållsnycklar lämnar aldrig TEE, vilket utesluter att de kan extraheras även om det primära operativsystemet komprometteras.

Enheter med L1-certifiering kan spela upp innehåll i 4K-kvalitet och HDR, eftersom den dekrypterade videoströmmen skickas direkt till den skyddade videoutgången utan åtkomst från användarprocesser.

Nivå L3 — programvarukryptering

Nivå L3 utför alla kryptografiska operationer i programvara i det vanliga användarutrymmet. Detta är det minst säkra läget, där nycklar kan extraheras från enhetens RAM-minne.

Widevine L3 begränsar uppspelningskvaliteten till 720p, vilket gör det lämpligt för visning på enheter på instegsnivå eller stationära webbläsare utan hårdvaruskydd.

Kontroll av säkerhetsnivå på enheten

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

Integrering av Widevine i mobilappar

Integrering av Widevine i mobilappar sker via standard-API:er MediaDrm (Android) och AVContentKeySession (iOS). I de flesta fall behöver utvecklaren inte arbeta direkt med DRM — spelarbibliotek som ExoPlayer och AVPlayer hanterar licensiering automatiskt.

Integrering på Android

På Android integreras Widevine via klassen MediaDrm som ger direkt åtkomst till CDM. För streaming-appar rekommenderas att använda ExoPlayer med DrmSessionManager-modulen, som automatiskt hanterar licensbegäranden.

Vid initialisering av spelaren måste UUID för Widevine-schemat (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) och URL:en till licensservern som tillhandahålls av innehållsleverantören anges. ExoPlayer hanterar automatiskt cykeln för licensbegäran och förnyelse.

Konfigurera ExoPlayer för 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()

Integrering med webbspelare

På webbplattformar fungerar Widevine via Media Source Extensions (MSE) och Encrypted Media Extensions (EME). Webbläsare baserade på Chromium har inbyggt stöd för Widevine CDM, och utvecklaren behöver bara initiera en EME-session med rätt konfiguration.

För att arbeta med Widevine i en webbläsare måste licensinitieraren med keySystem-typ `com.widevine.alpha` anges. Efter att en MediaKeys-instans skapats hanterar webbläsaren automatiskt licensbegäranden.

Hantering av licensieringsfel

Vid integrering av Widevine är det viktigt att korrekt hantera licensieringsfel som uppstår vid brist på åtkomsträttigheter, utgången prenumeration eller enhetsinkompatibilitet. Felet TYPE_EXPIRED_LICENSE kräver förnyelse av licensen via en ny begäran till servern, och TYPE_OUTPUT_NOT_ALLOWED indikerar inkompatibilitet mellan videoutgången och DRM-policyer.

Det rekommenderas att implementera en mekanism för återförsök med exponentiell fördröjning för tillfälliga nätverksfel och visa ett begripligt meddelande för användaren vid permanenta licensieringsavslag. Fel loggning av DRM-sessioner hjälper innehållsleverantörer att identifiera problem med enheter och optimera policyer.

Widevine och alternativa DRM

Widevine konkurrerar med FairPlay från Apple och PlayReady från Microsoft, och utgör de tre huvudsakliga DRM-lösningarna på marknaden för mobila plattformar. Varje teknik har sina fördelar och begränsningar relaterade till plattformens ekosystem.

Jämförelse av DRM-lösningar

EgenskapWidevineFairPlayPlayReady
UtvecklareGoogleAppleMicrosoft
HuvudplattformAndroid, ChromeiOS, tvOS, SafariWindows, Xbox, UWP
Maximal nivåL1 (4K)Motsvarande L1 (4K)SL3000 (4K)
HårdvaruskyddTEESecure EnclaveTPM + TEE

Välja DRM för projektet

Valet av DRM beror på appens målplattformar. För Android-first-projekt är Widevine det naturliga valet eftersom det är förinstallerat på alla certifierade enheter med Google Mobile Services och inte kräver någon extra licensavgift.

För plattformsoberoende projekt används ofta en multi-DRM-metod med licensaggregatorer som Axinom, EZDRM och Vualto, som tillhandahåller ett enhetligt API för arbete med alla tre DRM-system. Detta minskar integrationskomplexiteten och centraliserar licenshanteringen.

Vanliga frågor

Vad är Widevine DRM?

Widevine — en DRM-teknik från Google, utformad för att skydda digitalt videoinnehåll från obehörig kopiering. Den används av streamingtjänster för att kryptera video och hantera åtkomst till den via ett licenssystem.

Vilka säkerhetsnivåer av Widevine finns?

Widevine stöder tre nivåer av säkerhet: L1 med hårdvarukryptering i TEE, L2 med hybridmetod och L3 med helt programvaruimplementering. L1 möjliggör uppspelning av innehåll i 4K, L3 är begränsad till 720p-kvalitet.

Hur kontrollerar man Widevine-nivån på Android?

Widevine-nivån på Android kan kontrolleras via klassen MediaDrm genom att begära egenskapen securityLevel. För detta skapas en MediaDrm-instans med Widevines UUID och getPropertyString anropas, eller så används tredjepartsappar som DRM Info.

Vad skiljer Widevine från FairPlay?

Widevine utvecklades av Google för Android och Chrome, medan FairPlay utvecklades för iOS, tvOS och Safari. Båda stöder hårdvarukryptering och 4K, men Widevine är mer utbrett på Android-enheter, medan FairPlay är de facto-standard i Apples ekosystem.

Krävs en licens för att använda Widevine?

För att använda Widevine i en mobilapp krävs ingen separat licens — tekniken är inbyggd i certifierade Android-enheter och Chrome. Avgift tas endast ut från innehållsleverantörer för användning av licensservern.

Sammanfattning

  • Widevine — den huvudsakliga DRM-mekanismen på Android som skyddar videoinnehåll via hårdvaru- eller programvarukryptering.
  • Tre nivåer L1, L2, L3 av säkerhet bestämmer maximal uppspelningskvalitet och grad av nyckelskydd.
  • CDM (Content Decryption Module) utför dekryptering av innehåll på klientsidan med hjälp av licensnycklar.
  • Integration sker via ExoPlayer, MediaDrm på Android och EME på webbplattformar.
  • För iOS krävs FairPlay, vilket gör multi-DRM-metoden nödvändig för plattformsoberoende projekt.
  • Widevine Modular stöder CENC-kryptering och är kompatibel med MPEG-DASH- och HLS-format.
  • Googles licensserver hanterar åtkomst till innehåll baserat på policyer som fastställts av innehållsleverantören.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också