Proteggere il contenuto con la crittografia dinamica di Servizi multimediali

logo di servizi multimediali v3


Usare Servizi multimediali di Azure per proteggere i file multimediali dal momento in cui escono dal computer fino alle fasi di archiviazione, elaborazione e recapito. Con Servizi multimediali è possibile distribuire contenuti live e on demand crittografati dinamicamente con AES-128 (Advanced Encryption Standard) o con uno dei principali sistemi DRM (Digital Rights Management): Microsoft PlayReady, Google Widevine e Apple FairPlay. Servizi multimediali offre anche un servizio per la distribuzione di chiavi AES e licenze DRM (PlayReady, Widevine e FairPlay) ai client autorizzati. Se il contenuto viene crittografato con una chiave non crittografata AES e viene inviato tramite HTTPS, non è chiaro fino a quando non raggiunge il client.

Nota

Widevine non è disponibile nell'area GovCloud.

In Servizi multimediali v3 una chiave contenuto è associata a Streaming Locator (vedere questo esempio). Se si usa il servizio di distribuzione delle chiavi di Servizi multimediali, è possibile Servizi multimediali di Azure generare automaticamente la chiave contenuto. La chiave contenuto deve essere generata manualmente se si usa il proprio servizio di distribuzione delle chiavi o se è necessario gestire uno scenario a disponibilità elevata in cui è necessario avere la stessa chiave contenuto in due data center.

Quando un flusso viene richiesto da un lettore, Servizi multimediali usa la chiave specificata per crittografare dinamicamente i contenuti mediante la chiave non crittografata AES o la crittografia DRM. Per decrittografare il flusso, il lettore richiede la chiave dal servizio di distribuzione delle chiavi di Servizi multimediali o il servizio di distribuzione delle chiavi specificato. Per decidere se l'utente è autorizzato a ottenere la chiave, il servizio valuta i criteri della chiave contenuto specificati per la chiave.

È possibile usare l'API REST o una libreria client di Servizi multimediali per configurare i criteri di autorizzazione e autenticazione per le licenze e le chiavi.

L'immagine seguente illustra il flusso di lavoro per la protezione del contenuto di Servizi multimediali:

Flusso di lavoro per la protezione del contenuto di Servizi multimediali

* la crittografia dinamica supporta la chiave non crittografata AES-128, CBCS e CENC. Per informazioni dettagliate, vedere la matrice di supporto.

Questo articolo illustra i concetti e la terminologia che consentono di comprendere la protezione dei contenuti con Servizi multimediali.

Componenti principali di un sistema di protezione del contenuto

Per completare correttamente il sistema di protezione dei contenuti, è necessario comprendere appieno l'ambito del lavoro. Le sezioni seguenti offrono una panoramica di tre parti che è necessario implementare.

Nota

È consigliabile concentrarsi e testare completamente ogni parte nelle sezioni seguenti prima di passare alla parte successiva. Per testare il sistema di protezione del contenuto, usare gli strumenti specificati nelle sezioni.

Codice di Servizi multimediali

L'esempio DRM illustra come implementare un sistema multi-DRM con Servizi multimediali v3 usando .NET. Viene inoltre illustrato come usare il servizio di distribuzione delle chiavi/licenza di Servizi multimediali.

È possibile crittografare ogni asset con più tipi di crittografia (AES-128, PlayReady, Widevine, FairPlay). Per informazioni su ciò che è opportuno combinare, vedere Protocolli di streaming e tipi di crittografia.

L'esempio illustra come:

  1. Creare e configurare criteri di chiave contenuto.

    È possibile creare criteri di chiave contenuto per configurare il modo in cui la chiave content key (che fornisce l'accesso sicuro agli asset) viene recapitata ai client finali:

    • Definire l'autorizzazione per il recapito delle licenze. Specificare la logica del controllo di autorizzazione in base alle attestazioni in token JSON Web (JWT).

    • Configurare le licenze PlayReady, Widevinee/o FairPlay. I modelli consentono di configurare diritti e autorizzazioni per ognuna delle macchine virtuali di ripristino di emergenza.

      ContentKeyPolicyPlayReadyConfiguration playReadyConfig = ConfigurePlayReadyLicenseTemplate();
      ContentKeyPolicyWidevineConfiguration widevineConfig = ConfigureWidevineLicenseTempate();
      ContentKeyPolicyFairPlayConfiguration fairPlayConfig = ConfigureFairPlayPolicyOptions();
      
  2. Creare un localizzatore di streaming configurato per trasmettere in streaming l'asset crittografato.

    Il localizzatore di streaming deve essere associato a un criterio di streaming. Nell'esempio viene impostato StreamingLocator.StreamingPolicyName il criterio "Predefined_MultiDrmCencStreaming".

    Vengono applicate le crittografia PlayReady e Widevine e la chiave viene recapitata al client di riproduzione in base alle licenze DRM configurate. Se si vuole anche crittografare il flusso con CBCS (FairPlay), usare il criterio "Predefined_MultiDrmStreaming".

    Il localizzatore di streaming è associato anche ai criteri della chiave contenuto definiti.

  3. Creare un token di test.

    Il GetTokenAsync metodo illustra come creare un token di test.

  4. Compilare l'URL di streaming.

    Il GetDASHStreamingUrlAsync metodo mostra come compilare l'URL di streaming. In questo caso, l'URL esegue lo streaming del contenuto DASH.

Lettore con un client AES o DRM

Un'app lettore video basata su un SDK per lettori, nativa o basata su browser, deve soddisfare i requisiti seguenti:

  • L'SDK del lettore supporta i client DRM necessari.
  • L'SDK del lettore supporta i protocolli di streaming necessari: Smooth, DASH e/o HTTP Live Streaming (HLS).
  • L'SDK del lettore può gestire il passaggio di un token JWT in una richiesta di acquisizione della licenza.

È possibile creare un lettore usando l'API di Azure Media Player. Usare l'API ProtectionInfo di Azure Media Player per specificare la tecnologia DRM da usare in varie piattaforme DRM.

Per testare il contenuto crittografato con AES o CENC (Widevine e/o PlayReady), è possibile usare Azure Media Player. Assicurarsi di selezionare Opzioni avanzate e controllare le opzioni di crittografia.

Se si vuole testare il contenuto crittografato di FairPlay, usare questo lettore di test. Il lettore supporta drMs Widevine, PlayReady e FairPlay, insieme alla crittografia della chiave non crittografata AES-128.

Scegliere il browser giusto per testare diversi DRM:

  • Chrome, Opera o Firefox per Widevine.
  • Microsoft Edge o Internet Explorer 11 per PlayReady.
  • Safari in macOS per FairPlay.

Servizio token di sicurezza

Un servizio token di sicurezza emissa JWT come token di accesso per l'accesso alle risorse back-end. È possibile usare il Servizi multimediali di Azure di distribuzione di licenze/chiavi come risorsa back-end. Un servizio token di sicurezza deve definire gli elementi seguenti:

  • Autorità emittente e destinatari (o ambito).
  • Attestazioni, che dipendono dai requisiti aziendali nella protezione del contenuto.
  • Verifica simmetrica o asimmetrica per la verifica della firma.
  • Supporto del rollover delle chiavi (se necessario).

È possibile usare questo strumento del servizio token di sicurezza per testare il servizio token di sicurezza. Supporta tutti e tre i tipi di chiavi di verifica: simmetrica, asimmetrica o Azure Active Directory (Azure AD) con rollover delle chiavi.

Protocolli di streaming e tipi di crittografia

È possibile usare Servizi multimediali per distribuire i contenuti crittografati dinamicamente con chiave non crittografata AES o con crittografia DRM mediante PlayReady, Widevine o FairPlay. Attualmente è possibile crittografare i formati HLS, MPEG DASH e Smooth Streaming. Ogni protocollo supporta i metodi di crittografia seguenti.

HLS

Il protocollo HLS supporta i formati di contenitore e gli schemi di crittografia seguenti:

Formato del contenitore Schema di crittografia Esempio di URL
Tutti AES https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=m3u8-aapl,encryption=cbc)
MPG2-TS CBCS (FairPlay) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=m3u8-aapl,encryption=cbcs-aapl)
CMAF(fmp4) CBCS (FairPlay) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=m3u8-cmaf,encryption=cbcs-aapl)
MPG2-TS CENC (PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=m3u8-aapl,encryption=cenc)
CMAF(fmp4) CENC (PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=m3u8-cmaf,encryption=cenc)

HLS/CMAF + FairPlay (incluso HEVC/H.265) è supportato nei dispositivi seguenti:

  • iOS 11 o versione successiva.
  • iPhone 8 o versione successiva.
  • macOS High Sierra con CPU Intel di 7a generazione.

MPEG-DASH

Il protocollo MPEG-DASH supporta i formati di contenitore e gli schemi di crittografia seguenti:

Formato del contenitore Schema di crittografia Esempi di URL
Tutti AES https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=mpd-time-csf,encryption=cbc)
CSF(fmp4) CENC (Widevine + PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=mpd-time-csf,encryption=cenc)
CMAF(fmp4) CENC (Widevine + PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(format=mpd-time-cmaf,encryption=cenc)

Smooth Streaming

Il Smooth Streaming supporta i formati di contenitore e gli schemi di crittografia seguenti.

Protocollo Formato del contenitore Schema di crittografia
fMP4 AES https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(encryption=cbc)
fMP4 CENC (PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(encryption=cenc)
fMP4 PIFF 1.1 (PlayReady) https://amsv3account-usw22.streaming.media.azure.net/00000000-0000-0000-0000-000000000000/ignite.ism/manifest(encryption=piff)

Nota

Il supporto PIFF 1.1 viene fornito come soluzione compatibile con le versioni precedenti per Smart TV (Samsung, LG) che ha implementato la prima versione "Silverlight" di crittografia comune. È consigliabile usare solo il formato PIFF, dove necessario per il supporto di smart TV Samsung o LG fornite tra il 2009 e il 2015 che supportano la versione PIFF 1.1 della crittografia PlayReady.

Browser

I browser comuni supportano i client DRM seguenti:

Browser Crittografia
Chrome Widevine
Microsoft Edge, Internet Explorer 11 PlayReady
Firefox Widevine
Opera Widevine
Safari FairPlay

Controllo dell'accesso al contenuto

È possibile controllare chi ha accesso ai propri contenuti configurando i criteri di chiave simmetrica. Servizi multimediali supporta più modalità di autenticazione degli utenti che richiedono le chiavi. Il client (lettore) deve soddisfare i criteri prima che la chiave possa essere distribuita al client stesso. I criteri di chiave simmetrica possono avere restrizioni open o token.

È possibile usare criteri di chiave contenuto con restrizioni aperte quando si vuole rilasciare la licenza a chiunque senza autorizzazione. Ad esempio, se i ricavi sono basati su annunci e non su sottoscrizione.

Con criteri di chiave contenuto con restrizioni di token, la chiave contenuto viene inviata solo a un client che presenta un token JWT valido o un semplice token Web (SWT) nella richiesta di licenza/chiave. Questo token deve essere emesso da un servizio token di sicurezza.

È possibile usare Azure AD come servizio token di sicurezza o distribuire un servizio token di sicurezza personalizzato. Il servizio token di sicurezza deve essere configurato in modo da creare un token firmato con la chiave specificata e rilasciare le attestazioni specificate nella configurazione della restrizione token. Il servizio di distribuzione delle licenze/chiavi di Servizi multimediali restituisce la licenza o la chiave richiesta al client se esistono entrambe queste condizioni:

  • Il token è valido.
  • Le attestazioni nel token corrispondono a quelle configurate per la licenza o la chiave.

Quando si configurano i criteri di restrizione del token, è necessario specificare i parametri primary verification key, issuer e audience. Il parametro primary verification key include la chiave usata per firmare il token. Il parametro issuer è il servizio token di sicurezza che rilascia il token. Il gruppo di destinatari, talvolta denominato ambito, descrive la finalità del token o della risorsa a cui il token autorizza l'accesso. Il servizio di distribuzione di licenze/chiavi di Servizi multimediali convalida che questi valori nel token corrispondano ai valori nel modello.

Prevenzione della riproduzione di token

La funzionalità Protezione riproduzione token consente ai clienti di Servizi multimediali di impostare un limite per il numero di volte in cui è possibile usare lo stesso token per richiedere una chiave o una licenza. Il cliente può aggiungere un'attestazione di tipo nel token, dove il valore è il numero di volte in cui il token può essere usato per acquisire una urn:microsoft:azure:mediaservices:maxuses licenza o una chiave. Tutte le richieste successive con lo stesso token per il recapito delle chiavi restituiranno una risposta non autorizzata. Vedere come aggiungere l'attestazione nell'esempio DRM.

Considerazioni

  • I clienti devono avere il controllo sulla generazione di token. L'attestazione deve essere inserita nel token stesso.
  • Quando si usa questa funzionalità, le richieste con token la cui scadenza è a più di un'ora dal momento in cui la richiesta viene ricevuta vengono rifiutate con una risposta non autorizzata.
  • I token vengono identificati in modo univoco in base alla relativa firma. Qualsiasi modifica al payload (ad esempio, l'aggiornamento all'ora di scadenza o all'attestazione) modifica la firma del token e verrà conteggiato come nuovo token che il recapito delle chiavi non ha mai visto prima.
  • La riproduzione non riesce se il token ha superato maxuses il valore impostato dal cliente.
  • Questa funzionalità può essere usata per tutto il contenuto protetto esistente (è necessario modificare solo il token rilasciato).
  • Questa funzionalità funziona sia con JWT che con SWT.

Uso di un servizio token di sicurezza personalizzato

Un cliente può scegliere di usare un servizio token di sicurezza personalizzato per fornire i token. I motivi includono:

  • Il provider di identità (IDP) usato dal cliente non supporta il servizio token di sicurezza. In questo caso, può essere opportuno usare un servizio token di sicurezza personalizzato.

  • Il cliente può avere bisogno di un controllo più flessibile o più rigido nell'integrazione del servizio token di sicurezza con il sistema di fatturazione sottoscrittore del cliente.

    Ad esempio, un operatore del servizio OTT può offrire più pacchetti sottoscrittori, ad esempio Premium, Basic e Sport. L'operatore può associare le attestazioni in un token al pacchetto di un sottoscrittore in modo che siano disponibili solo i contenuti del pacchetto corretto. In questo caso, un servizio token di sicurezza personalizzato fornisce la flessibilità e il controllo necessari.

  • Per includere attestazioni personalizzate nel token da selezionare tra i diversi ContentKeyPolicyOptions con parametri di licenza DRM diversi (una licenza di sottoscrizione e una licenza di noleggio).

  • Per includere un'attestazione che rappresenta l'identificatore di chiave del contenuto della chiave a cui il token concede l'accesso.

Quando si usa un servizio token di sicurezza personalizzato, è necessario apportare due modifiche:

  • Quando si configura un servizio di distribuzione delle licenze per un asset, è necessario specificare la chiave di sicurezza usata per la verifica dal servizio token di sicurezza personalizzato invece della chiave corrente di Azure AD.
  • Quando viene generato un token JTW, viene specificata una chiave di sicurezza invece della chiave privata del certificato X509 corrente in Azure AD.

Esistono due tipi di chiavi di sicurezza:

  • Chiave simmetrica: la stessa chiave viene usata per generare e verificare un token JWT.
  • Chiave asimmetrica: un coppia di chiavi pubblica-privata in un certificato X509 viene usata con una chiave privata per la crittografia/generazione di un token JWT e con la chiave pubblica per la verifica del token.

Se si usa .NET Framework/C# come piattaforma di sviluppo, il certificato X509 usato per la chiave di sicurezza asimmetrica deve avere una lunghezza della chiave pari almeno a 2048 bit. Questa lunghezza della chiave è un requisito della classe System.IdentityModel.Tokens.X509AsymmetricSecurityKey in .NET Framework. In caso contrario, viene generata l'eccezione seguente: IDX10630: 'System.IdentityModel.Tokens.X509AsymmetricSecurityKey' per la firma non può essere inferiore ai bit '2048'.

Chiave personalizzata e URL di acquisizione della licenza

Usare i modelli seguenti se si vuole specificare un servizio di distribuzione di licenze/chiavi diverso (non Servizi multimediali). I due campi sostituibili nei modelli sono disponibili in modo che sia possibile condividere i criteri di streaming tra più asset anziché creare criteri di streaming per ogni asset.

  • EnvelopeEncryption.CustomKeyAcquisitionUrlTemplate: modello per l'URL del servizio personalizzato che recapita le chiavi ai lettori degli utenti finali. Non è necessario quando si usa il Servizi multimediali di Azure per l'emissione delle chiavi.

    Il modello supporta token sostituibili che il servizio aggiornerà in fase di esecuzione con il valore specifico della richiesta. I valori del token attualmente supportati sono:

    • {AlternativeMediaId}, che viene sostituito con il valore di StreamingLocatorId.AlternativeMediaId.
    • {ContentKeyId}, che viene sostituito con il valore dell'identificatore della chiave richiesta.
  • StreamingPolicyPlayReadyConfiguration.CustomLicenseAcquisitionUrlTemplate: modello per l'URL del servizio personalizzato che recapita le licenze ai lettori degli utenti finali. Non è necessario quando si usa il Servizi multimediali di Azure per l'emissione di licenze.

    Il modello supporta token sostituibili che il servizio aggiornerà in fase di esecuzione con il valore specifico della richiesta. I valori del token attualmente supportati sono:

    • {AlternativeMediaId}, che viene sostituito con il valore di StreamingLocatorId.AlternativeMediaId.
    • {ContentKeyId}, che viene sostituito con il valore dell'identificatore della chiave richiesta.
  • StreamingPolicyWidevineConfiguration.CustomLicenseAcquisitionUrlTemplate: uguale al modello precedente, solo per Widevine.

  • StreamingPolicyFairPlayConfiguration.CustomLicenseAcquisitionUrlTemplate: uguale al modello precedente, solo per FairPlay.

Ad esempio:

streamingPolicy.EnvelopEncryption.customKeyAcquisitionUrlTemplate = "https://mykeyserver.hostname.com/envelopekey/{AlternativeMediaId}/{ContentKeyId}";

ContentKeyId ha un valore della chiave richiesta. È possibile usare AlternativeMediaId se si vuole eseguire il mapping della richiesta a un'entità sul lato dell'utente. Ad esempio, AlternativeMediaId può essere usato per cercare le autorizzazioni.

Per esempi REST che usano URL di acquisizione di licenze/chiavi personalizzati, vedere Criteri di streaming - Creare.

Nota

Widevine è un servizio fornito da Google Inc. e soggetto alle condizioni per l'utilizzo e all'informativa sulla privacy di Google Inc.

Risolvere problemi

Se viene visualizzato MPE_ENC_ENCRYPTION_NOT_SET_IN_DELIVERY_POLICY l'errore, assicurarsi di specificare i criteri di streaming appropriati.

Se si verificano errori che terminano con _NOT_SPECIFIED_IN_URL , assicurarsi di specificare il formato di crittografia nell'URL. Un esempio è …/manifest(format=m3u8-cmaf,encryption=cbcs-aapl). Vedere Protocolli di streaming e tipi di crittografia.

Porre domande, fornire feedback, ottenere aggiornamenti

Consultare l'articolo Community di Servizi multimediali di Azure per esaminare i diversi modi in cui è possibile porre domande, fornire feedback e ottenere aggiornamenti su Servizi multimediali.