Gestion des droits numériques en fonction du matériel
Cette rubrique fournit une vue d’ensemble de l’ajout de la gestion des droits numériques en fonction du matériel PlayReady à votre application plateforme Windows universelle (UWP).
Remarque
La gestion des droits numériques playReady basé sur le matériel est prise en charge sur une multitude d’appareils, y compris les appareils Windows et non-Windows tels que les téléviseurs, les téléphones et les tablettes. Pour qu’un appareil Windows puisse prendre en charge la gestion des droits numériques matériels PlayReady, il doit exécuter Windows 10 et disposer d’une configuration matérielle prise en charge.
De plus en plus, les fournisseurs de contenu se déplacent vers des protections basées sur le matériel pour accorder l’autorisation de lire du contenu à valeur élevée complète dans les applications. Une prise en charge robuste d’une implémentation matérielle du cœur de chiffrement a été ajoutée à PlayReady pour répondre à ce besoin. Cette prise en charge permet la lecture sécurisée du contenu haute définition (1080p) et ULTRA-haute définition (UDP) sur plusieurs plateformes d’appareils. Matériel de clé (y compris les clés privées, les clés de contenu et tout autre matériel de clé utilisé pour dériver ou déverrouiller ces clés), et les exemples vidéo compressés et non compressés déchiffrés sont protégés en tirant parti de la sécurité matérielle.
Implémentation de Windows TEE
Cette rubrique fournit une brève vue d’ensemble de la façon dont Windows 10 implémente l’environnement d’exécution approuvé (TEE).
Les détails de l’implémentation de Windows TEE ne sont pas inclus dans ce document. Toutefois, une brève discussion sur la différence entre le port TEE du kit de portage standard et le port Windows sera bénéfique. Windows implémente la couche proxy OEM et transfère les appels de fonctions PRITEE sérialisées vers un pilote en mode utilisateur dans le sous-système Windows Media Foundation. Cela sera finalement acheminé vers le pilote Windows TrEE (Trusted Execution Environment) ou le pilote graphique de l’OEM. Les détails de l’une de ces approches sont hors de portée pour ce document. Le diagramme suivant montre l’interaction générale des composants pour le port Windows. Si vous souhaitez développer une implémentation TEE Windows PlayReady, vous pouvez contacter WMLA@Microsoft.com.
Considérations relatives à l’utilisation de drm matériel
Cette rubrique fournit une brève liste d’éléments qui doivent être pris en compte lors du développement d’applications conçues pour utiliser la gestion des droits numériques matériels. Comme expliqué dans PlayReady DRM, avec PlayReady HWDRM pour Windows 10, toutes les protections de sortie sont appliquées à partir de l’implémentation de Windows TEE, ce qui a des conséquences sur les comportements de protection de sortie :
- Prise en charge du niveau de protection de sortie (OPL) pour la vidéo numérique non compressée 270 : PlayReady HWDRM pour Windows 10 ne prend pas en charge la résolution de panne et applique que HDCP est engagé. Nous recommandons que le contenu haute définition pour HWDRM ait une valeur OPL supérieure à 270 (bien qu’il ne soit pas obligatoire). En outre, nous vous recommandons de définir la restriction de type HDCP dans la licence (HDCP version 2.2 sur Windows 10).
- Contrairement à la gestion des droits numériques logiciels (SWDRM), les protections de sortie sont appliquées à tous les moniteurs en fonction du moniteur le moins compatible. Par exemple, si l’utilisateur dispose de deux moniteurs connectés où l’un des moniteurs prend en charge HDCP et l’autre ne le fait pas, la lecture échoue si la licence requiert HDCP même si le contenu est affiché uniquement sur le moniteur qui prend en charge HDCP. Dans la gestion des droits numériques des logiciels, le contenu est lu tant qu’il n’est rendu que sur le moniteur qui prend en charge HDCP.
- HWDRM n’est pas garanti être utilisé par le client et sécurisé, sauf si les conditions suivantes sont remplies par les clés de contenu et les licences :
- La licence utilisée pour la clé de contenu vidéo doit avoir une propriété de niveau de sécurité minimale de 3000.
- L’audio doit être chiffré sur une clé de contenu différente de la vidéo, et la licence utilisée pour l’audio doit avoir une propriété de niveau de sécurité minimale de 2000. Vous pouvez également laisser l’audio dans l’clair.
En outre, vous devez prendre en compte les éléments suivants lors de l’utilisation de HWDRM :
- Le processus multimédia protégé (PMP) n’est pas pris en charge.
- Windows Media Video (également appelé VC-1) n’est pas pris en charge (voir Remplacer la gestion des droits numériques matériels).
- Plusieurs unités de traitement graphique (GPU) ne sont pas prises en charge pour les licences persistantes.
Pour gérer des licences persistantes sur des machines avec plusieurs GPU, envisagez le scénario suivant :
- Un client achète une nouvelle machine avec une carte graphique intégrée.
- Le client utilise une application qui acquiert des licences persistantes lors de l’utilisation de DRM matériel.
- La licence persistante est désormais liée aux clés matérielles de cette carte graphique.
- Le client installe ensuite une nouvelle carte graphique.
- Toutes les licences du magasin de données haché (HDS) sont liées à la carte vidéo intégrée, mais le client souhaite maintenant lire du contenu protégé à l’aide de la carte graphique nouvellement installée.
Pour empêcher l’échec de la lecture, car les licences ne peuvent pas être déchiffrées par le matériel, PlayReady utilise un HDS distinct pour chaque carte graphique qu’il rencontre. Cela entraîne la tentative d’acquisition de licences par PlayReady pour un élément de contenu dans lequel PlayReady aurait normalement déjà une licence (autrement dit, dans le cas de la gestion des droits numériques des logiciels ou tout cas sans modification matérielle, PlayReady n’aurait pas besoin de reacquire une licence). Par conséquent, si l’application acquiert une licence persistante lors de l’utilisation de drm matériel, votre application doit être en mesure de gérer le cas où cette licence est effectivement « perdue » si l’utilisateur final installe (ou désinstalle) une carte graphique. Étant donné que ce n’est pas un scénario courant, vous pouvez décider de gérer les appels de support lorsque le contenu ne joue plus après une modification matérielle plutôt que de déterminer comment gérer une modification matérielle dans le code client/serveur.
Remplacer la gestion des droits numériques matériels
Cette section explique comment remplacer la gestion des droits numériques matériels (HWDRM) si le contenu à lire ne prend pas en charge la gestion des droits numériques matériels.
Par défaut, la gestion des droits numériques matériels est utilisée si le système le prend en charge. Toutefois, certains contenus ne sont pas pris en charge dans la gestion des droits numériques matériels. Voici un exemple de contenu Cocktail. Un autre exemple est tout contenu qui utilise un codec vidéo autre que H.264 et HEVC. Un autre exemple est le contenu HEVC, car certains drm matériels prennent en charge HEVC et certains ne le seront pas. Par conséquent, si vous souhaitez lire un élément de contenu et de gestion des droits numériques matériels ne le prend pas en charge sur le système en question, vous pouvez refuser la gestion des droits numériques matériels.
L’exemple suivant montre comment refuser la gestion des droits numériques matériels. Il vous suffit de le faire avant de basculer. En outre, assurez-vous que vous n’avez pas d’objet PlayReady en mémoire, sinon le comportement n’est pas défini.
var applicationData = Windows.Storage.ApplicationData.current;
var localSettings = applicationData.localSettings.createContainer("PlayReady", Windows.Storage.ApplicationDataCreateDisposition.always);
localSettings.values["SoftwareOverride"] = 1;
Pour revenir à la gestion des droits numériques matériels, définissez la valeur SoftwareOverride sur 0.
Pour chaque lecture multimédia, vous devez définir MediaProtectionManager sur :
mediaProtectionManager.properties["Windows.Media.Protection.UseSoftwareProtectionLayer"] = true;
La meilleure façon de savoir si vous êtes dans la gestion des droits numériques matériels ou des logiciels DRM consiste à examiner C :\Users\<username>\AppData\Local\Packages\<nom> d’application\LocalCache\PlayReady\*
- S’il existe un fichier mspr.hds, vous êtes dans la drm logicielle.
- Si vous avez un autre fichier *.hds, vous êtes dans la gestion des droits numériques matériels.
- Vous pouvez également supprimer l’intégralité du dossier PlayReady et réessayer votre test.
Détecter le type de gestion des droits numériques (DRM) matériel
Cette section explique comment détecter le type de drm matériel pris en charge sur le système.
Vous pouvez utiliser la méthode PlayReadyStatics.CheckSupportedHardware pour déterminer si le système prend en charge une fonctionnalité DRM matérielle spécifique. Par exemple :
bool isFeatureSupported = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.HEVC);
L’énumération PlayReadyHardwareDRMFeatures contient la liste valide des valeurs de fonctionnalités DRM matérielles qui peuvent être interrogées. Pour déterminer si la gestion des droits numériques matériels est prise en charge, utilisez le membre HardwareDRM dans la requête. Pour déterminer si le matériel prend en charge le codec HEVC (High Efficiency Video Coding)/H.265, utilisez le membre HEVC dans la requête.
Vous pouvez également utiliser la propriété PlayReadyStatics.PlayReadyCertificateSecurityLevel pour obtenir le niveau de sécurité du certificat client pour déterminer si la gestion des droits numériques matériels est prise en charge. Sauf si le niveau de sécurité du certificat retourné est supérieur ou égal à 3000, le client n’est pas individualisé ou approvisionné (auquel cas cette propriété retourne 0) ou la gestion des droits numériques matériels n’est pas utilisée (auquel cas cette propriété retourne une valeur inférieure à 3 000).
Détection de la prise en charge de la gestion des droits numériques AES128CBC matériel
À compter de Windows 10, version 1709, vous pouvez détecter la prise en charge de AES128CBC chiffrement matériel sur un appareil en appelant PlayReadyStatics.CheckSupportedHardware et en spécifiant la valeur d’énumération PlayReadyHardwareDRMFeatures.Aes128Cbc. Dans les versions précédentes de Windows 10, la spécification de cette valeur entraîne la levée d’une exception. Pour cette raison, vous devez vérifier la présence de la valeur d’énumération en appelant ApiInformation.IsApiContractPresent et en spécifiant la version 5 du contrat principal avant d’appeler CheckSupportedHardware.
bool supportsAes128Cbc = ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5);
if (supportsAes128Cbc)
{
supportsAes128Cbc = PlayReadyStatics.CheckSupportedHardware(PlayReadyHardwareDRMFeatures.Aes128Cbc);
}