Widevine: cos'è, DRM e livelli di sicurezza spiegati

Autore: IT Sectr Pubblicato: 2026-05-24 Tempo di lettura: 8 min

Widevine è una tecnologia DRM sviluppata da Google per proteggere i contenuti video dalla copia non autorizzata su dispositivi mobili, Smart TV e piattaforme web. La crittografia dei contenuti viene eseguita tramite il modulo CDM, supportato su 4 miliardi di dispositivi in tutto il mondo. La tecnologia Widevine garantisce la compatibilità con Android, iOS, Chrome e Smart TV, consentendo ai servizi di streaming di proteggere i contenuti premium su qualsiasi piattaforma.

Punti chiave

  • Widevine è una soluzione DRM di Google per proteggere video in applicazioni mobili e web.
  • Tre livelli di sicurezza: L1 (crittografia hardware), L2 (software), L3 (sicuro solo nel cloud).
  • CDM — Content Decryption Module, componente chiave per decifrare i contenuti.
  • La licenza è gestita tramite il server di licenze Google che emette chiavi per la decodifica.
  • La compatibilità con EME (Encrypted Media Extensions) consente di funzionare in qualsiasi browser.

Cos'è Widevine?

Widevine è una tecnologia DRM proprietaria acquisita da Google nel 2010 ed è diventata lo standard de facto per la protezione dei contenuti video nell'ecosistema Android. È utilizzata dai principali servizi di streaming, tra cui Netflix, Amazon Prime Video, Disney+ e Hulu, per prevenire la copia e distribuzione non autorizzata dei contenuti.

Widevine supporta la crittografia AES-128 CBC utilizzando chiavi di contenuto che vengono trasmesse solo ai dispositivi autorizzati tramite un canale di licenza sicuro. Il sistema fornisce protezione end-to-end dalla crittografia sul server alla decodifica sul dispositivo dell'utente.

Storia e sviluppo di Widevine

Widevine Technologies è stata fondata nel 1999 e inizialmente sviluppava soluzioni per la protezione dei contenuti sulle piattaforme televisive via cavo. Dopo essere stata acquisita da Google nel 2010, la tecnologia è stata adattata per le piattaforme mobili e integrata nel sistema operativo Android a partire dalla versione 4.4 KitKat. Dal 2015, Widevine è un componente obbligatorio della certificazione Google Mobile Services.

Nel 2018, Google ha presentato Widevine Modular DRM, che ha permesso ai produttori di dispositivi di implementare diversi livelli di protezione via hardware senza modificare il codice del sistema operativo. Oggi, Widevine Modular è supportato su oltre 4 miliardi di dispositivi ed è il meccanismo DRM principale su Android.

Architettura di Widevine

L'architettura di Widevine è composta da tre componenti chiave: il Content Decryption Module (CDM), il server di licenze e lo strumento di crittografia dei contenuti. Il CDM esegue la decifratura sul lato client e interagisce con il Trusted Execution Environment (TEE) hardware per l'archiviazione sicura delle chiavi.

Il server di licenze Google gestisce l'emissione delle chiavi in base alle politiche del fornitore di contenuti, che definiscono restrizioni su tempo, numero di dispositivi e qualità di riproduzione. Lo strumento di crittografia prepara il contenuto sul lato del fornitore, impacchettandolo in formato MPEG-DASH o HLS con crittografia CENC.

Come funziona Widevine DRM?

Il processo di protezione inizia nella fase di impacchettamento del contenuto, quando il file multimediale viene crittografato utilizzando una chiave di contenuto sul server del fornitore. Il flusso crittografato viene trasmesso al dispositivo dell'utente tramite CDN, dove il CDM richiede una licenza al server di licenze.

Il server di licenze verifica l'autenticità del dispositivo e il diritto di accesso al contenuto. Se la verifica ha successo, il server emette una licenza con una chiave che il CDM utilizza per la decifratura. La licenza può contenere restrizioni sul tempo di visione e sulla risoluzione.

Protocollo di scambio delle licenze

Lo scambio di licenze in Widevine è implementato tramite il protocollo EME (Encrypted Media Extensions) nei browser o tramite SDK su piattaforme mobili. La richiesta di licenza viene generata dal CDM e inviata al server di licenze tramite HTTPS, garantendo la protezione contro l'intercettazione delle chiavi in transito.

Il server elabora la richiesta e restituisce una licenza anch'essa crittografata che può essere decifrata solo dal CDM del dispositivo. Il binding hardware della chiave a un dispositivo specifico impedisce il suo trasferimento ad altre piattaforme.

Supporto degli standard di crittografia

Widevine utilizza gli standard Common Encryption (CENC) definiti in ISO/IEC 23001-7, garantendo la compatibilità con i formati MPEG-DASH e HLS. La crittografia AES-128 in modalità CTR o CBC viene utilizzata per proteggere i flussi multimediali.

Per la derivazione delle chiavi viene utilizzato HKDF (HMAC-based Key Derivation Function), che consente di generare chiavi uniche per ogni segmento di contenuto. Il supporto HLS in Widevine è stato aggiunto con la versione Modular 2.0, ampliando la compatibilità con le piattaforme Apple.

Esempio di richiesta di licenza su 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)
}

Livelli di sicurezza di Widevine: L1, L2, L3

Widevine definisce tre livelli di sicurezza che differiscono nel modo in cui vengono eseguite le operazioni crittografiche e viene elaborato il contenuto. Il livello L1 fornisce la massima protezione, L3 la minima e L2 occupa una posizione intermedia.

LivelloTipo di protezioneRequisiti del dispositivoRisoluzione massima
L1HardwareTEE a livello SoC4K Ultra HD
L2IbridaTEE per chiavi, software per video1080p
L3SoftwareSolo CDM software720p

Livello L1 — crittografia hardware

Il livello L1 richiede un Trusted Execution Environment (TEE) a livello hardware, dove vengono eseguite tutte le operazioni crittografiche. Le chiavi di contenuto non escono mai dal TEE, impedendone l'estrazione anche se il sistema operativo principale viene compromesso.

I dispositivi con certificazione L1 possono riprodurre contenuti in qualità 4K e HDR, poiché il flusso video decifrato viene inviato direttamente a un'uscita video protetta senza accesso da parte dei processi utente.

Livello L3 — crittografia software

Il livello L3 esegue tutte le operazioni crittografiche via software nel normale spazio utente. Questa è la modalità meno sicura, in cui le chiavi possono essere estratte dalla RAM del dispositivo.

Widevine L3 limita la qualità di riproduzione a 720p, rendendolo adatto per la visione su dispositivi di fascia bassa o browser desktop senza protezione hardware.

Verifica del livello di sicurezza su un dispositivo

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

Integrazione di Widevine nelle applicazioni mobili

L'integrazione di Widevine nelle applicazioni mobili viene eseguita tramite le API standard MediaDrm (Android) e AVContentKeySession (iOS). Nella maggior parte dei casi, lo sviluppatore non deve lavorare direttamente con DRM — le librerie dei lettori come ExoPlayer e AVPlayer gestiscono le licenze automaticamente.

Integrazione su Android

Su Android, Widevine viene integrato tramite la classe MediaDrm, che fornisce accesso diretto al CDM. Per le applicazioni di streaming, si consiglia di utilizzare ExoPlayer con il modulo DrmSessionManager, che gestisce automaticamente le richieste di licenza.

Durante l'inizializzazione del lettore, è necessario specificare l'UUID dello schema Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) e l'URL del server di licenze fornito dal fornitore di contenuti. ExoPlayer gestisce automaticamente il ciclo di richiesta e rinnovo delle licenze.

Configurazione di ExoPlayer per 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()

Integrazione con i lettori web

Sulle piattaforme web, Widevine funziona tramite Media Source Extensions (MSE) e Encrypted Media Extensions (EME). I browser basati su Chromium hanno Widevine CDM integrato e lo sviluppatore deve solo inizializzare una sessione EME con la configurazione corretta.

Per utilizzare Widevine in un browser, è necessario specificare un iniziatore di licenza con il tipo keySystem `com.widevine.alpha`. Dopo aver creato un'istanza di MediaKeys, il browser gestisce automaticamente le richieste di licenza.

Gestione degli errori di licenza

Durante l'integrazione di Widevine, è importante gestire correttamente gli errori di licenza che si verificano a causa di mancanza di diritti di accesso, scadenza dell'abbonamento o incompatibilità del dispositivo. L'errore TYPE_EXPIRED_LICENSE richiede l'aggiornamento della licenza tramite una nuova richiesta al server, mentre TYPE_OUTPUT_NOT_ALLOWED indica incompatibilità dell'uscita video con le politiche DRM.

Si raccomanda di implementare un meccanismo di ripetizione con backoff esponenziale per errori di rete temporanei e mostrare all'utente un messaggio chiaro per guasti permanenti di licenza. La registrazione degli errori delle sessioni DRM aiuta i fornitori di contenuti a identificare problemi con i dispositivi e ottimizzare le politiche.

Widevine e DRM alternativi

Widevine compete con FairPlay di Apple e PlayReady di Microsoft, formando le tre principali soluzioni DRM sul mercato delle piattaforme mobili. Ogni tecnologia ha i propri vantaggi e limitazioni legati all'ecosistema della piattaforma.

Confronto delle soluzioni DRM

CaratteristicaWidevineFairPlayPlayReady
SviluppatoreGoogleAppleMicrosoft
Piattaforma principaleAndroid, ChromeiOS, tvOS, SafariWindows, Xbox, UWP
Livello massimoL1 (4K)Equivalente a L1 (4K)SL3000 (4K)
Protezione hardwareTEESecure EnclaveTPM + TEE

Scelta del DRM per un progetto

La scelta del DRM dipende dalle piattaforme target dell'applicazione. Per i progetti incentrati su Android, Widevine è la scelta naturale poiché è preinstallato su tutti i dispositivi certificati con Google Mobile Services e non richiede costi di licenza aggiuntivi.

Per i progetti multipiattaforma, viene spesso utilizzato un approccio multi-DRM con aggregatori di licenze come Axinom, EZDRM e Vualto, che forniscono un'API unificata per lavorare con tutti e tre i sistemi DRM. Ciò riduce la complessità dell'integrazione e centralizza la gestione delle licenze.

Domande frequenti

Cos'è Widevine DRM?

Widevine è una tecnologia DRM di Google progettata per proteggere i contenuti video digitali dalla copia non autorizzata. Viene utilizzata dai servizi di streaming per crittografare i video e gestire l'accesso tramite un sistema di licenze.

Quali livelli di sicurezza ha Widevine?

Widevine supporta tre livelli di sicurezza: L1 con crittografia hardware in TEE, L2 con approccio ibrido e L3 con implementazione interamente software. L1 consente la riproduzione di contenuti in 4K, L3 è limitato alla qualità 720p.

Come verificare il livello Widevine su Android?

Puoi verificare il livello Widevine su Android tramite la classe MediaDrm richiedendo la proprietà securityLevel. Per farlo, crea un'istanza MediaDrm con l'UUID Widevine e chiama getPropertyString, oppure usa app di terze parti come DRM Info.

In cosa si differenzia Widevine da FairPlay?

Widevine è sviluppato da Google per Android e Chrome, mentre FairPlay è per iOS, tvOS e Safari. Entrambi supportano la crittografia hardware e il 4K, ma Widevine è più diffuso sui dispositivi Android, mentre FairPlay è lo standard de facto nell'ecosistema Apple.

È necessaria una licenza per utilizzare Widevine?

Per utilizzare Widevine in un'applicazione mobile, non è necessaria una licenza separata — la tecnologia è integrata nei dispositivi Android certificati e in Chrome. Le commissioni vengono addebitate solo ai fornitori di contenuti per l'utilizzo del server di licenze.

Riepilogo

  • Widevine è il principale meccanismo DRM su Android, che fornisce protezione dei contenuti video tramite crittografia hardware o software.
  • I tre livelli di sicurezza L1, L2, L3 determinano la qualità massima di riproduzione e il grado di protezione delle chiavi.
  • CDM (Content Decryption Module) esegue la decifratura dei contenuti sul lato client utilizzando le chiavi di licenza.
  • L'integrazione viene eseguita tramite ExoPlayer, MediaDrm su Android ed EME sulle piattaforme web.
  • Per iOS è richiesto FairPlay, rendendo necessario un approccio multi-DRM per i progetti multipiattaforma.
  • Widevine Modular supporta la crittografia CENC ed è compatibile con i formati MPEG-DASH e HLS.
  • Il server di licenze Google gestisce l'accesso ai contenuti in base alle politiche definite dal fornitore di contenuti.

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche