Hardware DRM

Questo argomento offre una panoramica su come aggiungere DRM (Digital Rights Management) basato su PlayReady all'app piattaforma UWP (Universal Windows Platform) (UWP).

Nota

La tecnologia DRM PlayReady basata su hardware è supportata in numerosi dispositivi, inclusi dispositivi Windows e non Windows, ad esempio TV, telefoni e tablet. Affinché un dispositivo Windows supporti la tecnologia DRM Hardware PlayReady, deve eseguire Windows 10 e avere una configurazione hardware supportata.

Sempre più spesso, i provider di contenuti stanno passando a protezioni basate su hardware per concedere l'autorizzazione per riprodurre contenuti di valore elevato completi nelle app. Il supporto affidabile per un'implementazione hardware del core crittografico è stato aggiunto a PlayReady per soddisfare questa esigenza. Questo supporto consente la riproduzione sicura di contenuto UHD (High Definition) (1080p) e ultra-high definition (UHD) su più piattaforme per dispositivi. Il materiale della chiave (incluse chiavi private, chiavi simmetriche e qualsiasi altro materiale della chiave usato per derivare o sbloccare le chiavi) e gli esempi video compressi e non compressi decrittografati sono protetti sfruttando la sicurezza hardware.

Implementazione di Windows TEE

Questo argomento fornisce una breve panoramica del modo in cui Windows 10 implementa l'ambiente di esecuzione attendibile (TEE).

I dettagli dell'implementazione di Windows TEE non rientrano nell'ambito di questo documento. Tuttavia, una breve descrizione della differenza tra la porta TEE standard del kit di conversione e la porta di Windows sarà utile. Windows implementa il livello proxy OEM e trasferisce le funzioni PRITEE serializzate chiamate a un driver in modalità utente nel sottosistema Windows Media Foundation. Questo verrà instradato al driver Windows TrEE (Trusted Execution Environment) o al driver di grafica dell'OEM. I dettagli di uno di questi approcci non rientrano nell'ambito di questo documento. Il diagramma seguente illustra l'interazione generale dei componenti per la porta di Windows. Per sviluppare un'implementazione di Windows PlayReady TEE, è possibile contattare WMLA@Microsoft.com.

Diagramma dei componenti di windows tee

Considerazioni sull'uso di DRM hardware

In questo argomento viene fornito un breve elenco di elementi da considerare durante lo sviluppo di app progettate per l'uso della tecnologia DRM hardware. Come spiegato in PlayReady DRM, con PlayReady HWDRM per Windows 10, tutte le protezioni di output vengono applicate dall'implementazione di Windows TEE, con alcune conseguenze sui comportamenti di protezione dell'output:

  • Supporto per il livello di protezione dell'output (OPL) per il video digitale non compresso 270: PlayReady HWDRM per Windows 10 non supporta la risoluzione inattiva e impone che HDCP sia attivato. È consigliabile che il contenuto ad alta definizione per HWDRM abbia un OPL maggiore di 270 (anche se non è obbligatorio). È inoltre consigliabile impostare la restrizione del tipo HDCP nella licenza (HDCP versione 2.2 in Windows 10).
  • A differenza di DRM software (SWDRM), le protezioni di output vengono applicate a tutti i monitor in base al monitor meno idoneo. Ad esempio, se l'utente dispone di due monitor connessi in cui uno dei monitor supporta HDCP e l'altro no, la riproduzione avrà esito negativo se la licenza richiede HDCP anche se il rendering del contenuto viene eseguito solo sul monitor che supporta HDCP. In DRM software, il contenuto viene riprodotto finché viene eseguito il rendering solo sul monitor che supporta HDCP.
  • HWDRM non è garantito che venga usato dal client e sicuro, a meno che le condizioni seguenti non siano soddisfatte dalle chiavi e dalle licenze di contenuto:
    • La licenza usata per la chiave simmetrica video deve avere una proprietà livello di sicurezza minima pari a 3000.
    • L'audio deve essere crittografato in una chiave simmetrica diversa rispetto al video e la licenza usata per l'audio deve avere una proprietà livello di sicurezza minima 2000. In alternativa, l'audio potrebbe essere lasciato in chiaro.

Inoltre, quando si usa HWDRM, è necessario prendere in considerazione gli elementi seguenti:

  • Il processo di supporto protetto (PMP) non è supportato.
  • Windows Media Video (noto anche come VC-1) non è supportato (vedere Eseguire l'override di DRM hardware).
  • Più unità di elaborazione grafica (GPU) non sono supportate per le licenze persistenti.

Per gestire le licenze persistenti nei computer con più GPU, considerare lo scenario seguente:

  1. Un cliente acquista un nuovo computer con una scheda grafica integrata.
  2. Il cliente usa un'app che acquisisce licenze permanenti durante l'uso di DRM hardware.
  3. La licenza permanente è ora associata alle chiavi hardware della scheda grafica.
  4. Il cliente installa quindi una nuova scheda grafica.
  5. Tutte le licenze nell'archivio dati con hash (HDS) sono associate alla scheda video integrata, ma il cliente vuole ora riprodurre contenuto protetto usando la scheda grafica appena installata.

Per impedire che la riproduzione abbia esito negativo perché le licenze non possono essere decrittografate dall'hardware, PlayReady usa un HDS separato per ogni scheda grafica rilevata. In questo modo PlayReady tenterà l'acquisizione delle licenze per una parte di contenuto in cui PlayReady normalmente avrebbe già una licenza (ovvero nel caso DRM software o in qualsiasi caso senza una modifica hardware, PlayReady non avrebbe bisogno di riacquisire una licenza). Pertanto, se l'app acquisisce una licenza permanente durante l'uso di DRM hardware, l'app deve essere in grado di gestire il caso in cui tale licenza venga effettivamente "persa" se l'utente finale installa (o disinstalla) una scheda grafica. Poiché questo non è uno scenario comune, è possibile decidere di gestire le chiamate di supporto quando il contenuto non viene più riprodotto dopo una modifica hardware anziché capire come gestire una modifica hardware nel codice client/server.

Eseguire l'override di DRM hardware

Questa sezione descrive come eseguire l'override di DRM hardware (HWDRM) se il contenuto da riprodurre non supporta la tecnologia DRM hardware.

Per impostazione predefinita, la tecnologia DRM hardware viene usata se il sistema la supporta. Tuttavia, alcuni contenuti non sono supportati in DRM hardware. Un esempio di questo è contenuto cocktail. Un altro esempio è qualsiasi contenuto che usa un codec video diverso da H.264 e HEVC. Un altro esempio è il contenuto HEVC, perché alcuni DRM hardware supporteranno HEVC e alcuni no. Pertanto, se si vuole riprodurre una parte di contenuto e DRM hardware non lo supporta nel sistema in questione, si potrebbe voler rifiutare esplicitamente la tecnologia DRM hardware.

L'esempio seguente illustra come rifiutare esplicitamente la tecnologia DRM hardware. È necessario eseguire questa operazione solo prima di passare. Assicurarsi inoltre di non avere alcun oggetto PlayReady in memoria. In caso contrario, il comportamento non è definito.

var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;

Per tornare alla tecnologia DRM hardware, impostare il valore SoftwareOverride su 0.

Per ogni riproduzione multimediale, è necessario impostare MediaProtectionManager su:

mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;

Il modo migliore per stabilire se si usa DRM hardware o DRM software consiste nell'esaminare C:\Users\<username>\AppData\Local\Packages\<application name>\LocalCache\PlayReady\*

  • Se è presente un file mspr.hds, ci si trova in DRM software.
  • Se si dispone di un altro file *.hds, si è in DRM hardware.
  • È possibile eliminare l'intera cartella PlayReady e ripetere anche il test.

Rilevare il tipo di DRM hardware

Questa sezione descrive come rilevare il tipo di DRM hardware supportato nel sistema.

È possibile usare il metodo PlayReadyStatics.CheckSupportedHardware per determinare se il sistema supporta una funzionalità DRM hardware specifica. Ad esempio:

bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);

L'enumerazione PlayReadyHardwareDRMFeatures contiene l'elenco valido dei valori delle funzionalità DRM hardware su cui è possibile eseguire query. Per determinare se la tecnologia DRM hardware è supportata, usare il membro HardwareDRM nella query. Per determinare se l'hardware supporta il codec HEVC (High Efficiency Video Coding)/H.265, usare il membro HEVC nella query.

È anche possibile usare la proprietà PlayReadyStatics.PlayReadyCertificateSecurityLevel per ottenere il livello di sicurezza del certificato client per determinare se la tecnologia DRM hardware è supportata. A meno che il livello di sicurezza del certificato restituito sia maggiore o uguale a 3000, il client non viene individualizzato o sottoposto a provisioning (nel qual caso questa proprietà restituisce 0) o la tecnologia DRM hardware non è in uso (nel qual caso questa proprietà restituisce un valore minore di 3000).

Rilevamento del supporto per DRM hardware AES128CBC

A partire da Windows 10 versione 1709, puoi rilevare il supporto per la crittografia hardware AES128CBC in un dispositivo chiamando PlayReadyStatics.CheckSupportedHardware e specificando il valore di enumerazione PlayReadyHardwareDRMFeatures.Aes128Cbc. Nelle versioni precedenti di Windows 10, specificando questo valore verrà generata un'eccezione. Per questo motivo, si deve verificare la presenza del valore di enumerazione chiamando ApiInformation.IsApiContractPresent e specificando la versione del contratto principale 5 prima di chiamare CheckSupportedHardware.

bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);

if (supportsAes128Cbc)
{
    supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}

Vedi anche