Partager via


Nouveautés de PlayReady version 4.5

Cette page contient une vue d’ensemble des modifications les plus importantes entre PlayReady version 4.4 et PlayReady version 4.5.

Modifications générales dans PlayReady version 4.5

Défier le chiffrement avec le certificat de déploiement de serveur PlayReady

Dans les versions précédentes de PlayReady, l’acquisition de licences et d’autres défis du client sont toujours chiffrés avec une clé publique fixe. À compter de PlayReady 4.5, un client codé pour communiquer uniquement avec un serveur de prise en charge peut plutôt chiffrer les problèmes liés au certificat de déploiement playReady Server émis au titulaire de licence du serveur par Microsoft. Le Kit de développement logiciel (SDK) PlayReady Server déchiffre ensuite le défi avec la clé privée correspondante, passé à celle-ci par l’application sdk PlayReady Server, au lieu d’une clé privée fixe.

Heure du serveur de licences

Dans les versions précédentes de PlayReady, l’utilisation de la fonctionnalité Temps sécurisé nécessite généralement que l’application cliente parle à un serveur de temps sécurisé distinct pour obtenir l’heure utilisée pour définir son horloge locale. À compter de PlayReady 4.5, un client codé pour communiquer uniquement avec un serveur de prise en charge peut plutôt utiliser un temps fourni par le SDK PlayReady Server lors de l’acquisition de licence. Pour plus d’informations, consultez PlayReady Trusted Clocks.

Exchange de clé

À l’aide du protocole d’acquisition de licence, un client et un serveur PlayReady peuvent désormais échanger des clés arbitraires qui peuvent être utilisées pour chiffrer, déchiffrer, signer et vérifier des données arbitraires fournies par l’application où les clés elles-mêmes sont protégées à l’aide de PlayReady. Lorsque le client est SL3000, les clés elles-mêmes sont protégées par l’environnement d’exécution approuvé. Pour plus d’informations, consultez PlayReady Key Exchange.

Stratégie de filigrane

La fonctionnalité a été ajoutée pour simplifier l’utilisation de la restriction de sortie vidéo numérique explicite de signalisation de filigrane, telle que définie par les règles de conformité PlayReady.

Modifications apportées au Kit de développement logiciel (SDK) PlayReady Server version 4.5

Modifications générales du serveur

Les licences de clé Exchange peuvent être utilisées pour fournir des clés arbitraires à un client lors de l’acquisition de licences.

Si elle est fournie par le client, les technologies de filigrane prises en charge sont exposées à l’application sdk PlayReady Server. Cela simplifie l’utilisation de la restriction de sortie de vidéo numérique explicite de signalisation de signalisation, telle que définie par les règles de conformité PlayReady.

Modifications apportées à la documentation de l’API serveur

La documentation de l’API serveur pour la version .NET Standard du Kit de développement logiciel (SDK) PlayReady Server a été créée et publiée. Microsoft recommande de migrer vers le Kit de développement logiciel (SDK) .NET Standard.

La documentation de l’API de serveur dans le fichier PlayReady.chm inclus dans le Pack de documentation PlayReady s’applique uniquement à la version héritée du Kit de développement logiciel (SDK) PlayReady Server. Cette documentation est désormais considérée comme déconseillée, n’a pas été mise à jour depuis PlayReady 4.0 et ne recevra pas de mises à jour ultérieures.

La plupart des API des deux kits SDK sont identiques, de sorte que la documentation .NET Standard doit être suffisante pour la plupart des besoins. Toutefois, il existe quelques différences significatives dans lesquelles les classes, les interfaces et les méthodes diffèrent.

Voici les différences générales entre les deux kits SDK.

  1. Le Kit de développement logiciel (SDK) .NET Standard utilise des interfaces dans de nombreux endroits où le Kit de développement logiciel (SDK) .NET Framework utilise des classes.

  2. Les interfaces de gestionnaire du Kit de développement logiciel (SDK) .NET Standard implémentées par l’application utilisent des méthodes asynchrones où le SDK .NET Framework utilise des méthodes synchrones. Par conséquent, les noms d’API d’interface du kit sdk .Net Standard se terminent par le mot « Async » et retournent une classe> Task<au lieu de simplement classe (où la classe est spécifique à la méthode d’interface de gestionnaire).

  3. Le Kit de développement logiciel (SDK) .NET Standard est agnostique. Par conséquent, aucun contexte HTTP n’est directement fourni à l’application. Lorsque vous utilisez ASP.NET Core, reportez-vous à la documentation ASP.NET Core, en particulier l’interface IHttpContextAccessor.

  4. Le Kit de développement logiciel (SDK) .NET Standard ne prend pas en charge le protocole de contenu d’empaquetage (par exemple, IPackagingDataAcquisitionHandler n’existe pas). Cette fonctionnalité sera restaurée dans PlayReady 4.6.

Voici une liste complète des différences spécifiques à partir de PlayReady 4.5. Cette liste n’inclut pas les fonctionnalités qui existent uniquement dans le Kit de développement logiciel (SDK) .NET Standard et ne répertorient pas toutes les classes d’empaquetage supprimées qui seront restaurées.

 

Classe ou interface .NET Framework Équivalent .NET Standard Différences
Classe ProtocolChallengeContext Interface IProtocolChallengeContext La propriété Requête HttpRequest existe uniquement dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
Classe ProtocolChallenge Interface IProtocolChallenge Aucun.
Interface IDeleteLicenseHandler Identique ProcessDeleteLicenseDataAsync est synchrone dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
DeleteLicenseDataChallenge, classe Interface IDeleteLicenseDataChallenge Aucun.
Interface IDomainHandler Identique HandleJoinDomainAsync et HandleLeaveDomainAsync sont synchrones dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
JoinDomainChallenge, classe Interfaces IDomainChallenge et IJoinDomainChallenge La méthode Static JoinDomainChallenge.GenerateDomainKeyPair n’existe pas dans le Kit de développement logiciel (SDK) .NET Standard. La perte de cette fonctionnalité est un bogue qui sera résolu dans PlayReady 4.6 en l’ajoutant en tant que méthode statique à DomainCertificateBuilder.
LeaveDomainChallenge, classe Interface ILeaveDomainChallenge Aucun.
Interface ILicenseAcknowledgementHandler Identique HandleLicenseAcknowledgementAsync est synchrone dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
LicenseAcknowledgementChallenge, classe Interface ILicenseAcknowledgementChallenge Aucun.
Interface ILicenseAcquisitionHandler Identique HandleLicenseAcquisitionAsync est synchrone dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
Classe LicenseChallenge Interface ILicenseChallenge Aucun.
Interface IMeteringHandler Identique GetMeteringCertificateAsync et ProcessMeteringDataAsync sont synchrones dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
Classe MeteringCertificateChallenge Interface IMeteringCertificateChallenge Aucun.
ProcessMeteringDataChallenge, classe Interface IProcessMeteringDataChallenge Aucun.
Interface ISecureStopHandler Identique ProcessSecureStopDataAsync est synchrone dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
SecureStopDataChallenge, classe Interface ISecureStopDataChallenge La surcharge de méthode GetSecureStopData qui prend un gestionnaire ISecureStop2 existe uniquement dans le KIT SDK .NET Framework. Le Kit de développement logiciel (SDK) .NET Standard charge plutôt ce gestionnaire comme n’importe quel autre.
Interface ISecureStopHandler2 Identique GetSecureStop2AESKeyAsync est synchrone dans le Kit de développement logiciel (SDK) .NET Framework, comme indiqué ci-dessus.
Classe PlayReadyServerAuthorization Identique Les méthodes de la classe sont statiques dans le Kit de développement logiciel (SDK) .NET Framework et dans l’instance du Kit de développement logiciel (SDK) .NET Standard.

Modifications apportées à l’API serveur

Il s’agit simplement d’une vue d’ensemble. Pour plus d’informations, consultez la documentation de l’API serveur .

La méthode LicenseResponse.GetLicenses retourne désormais un tableau vide au lieu de null lorsqu’aucune licence n’a été ajoutée.

Les classes et les énumérations suivantes ont été ajoutées.

  • Classe AdvancedLicense (abstraite, hérite de License) - un sous-ensemble de propriétés et méthodes existantes de MediaLicense ont été déplacées dans cette classe, et MediaLicense hérite désormais de AbstractLicense. Aucune modification d’application n’est requise pour utiliser MediaLicense.
  • Classe KeyExchangeLicense (hérite d’AdvancedLicense) : utilisée pour créer des licences qui fournissent des clés arbitraires à un client lors de l’acquisition de licences.
  • Classe KeyExchangeRight (hérite de Right) : utilisée pour spécifier la clé et son utilisation autorisée dans une licence KeyExchange.
  • Énumération KeyExchangeAlgorithm : utilisée pour spécifier l’utilisation autorisée d’une clé dans une licence KeyExchange.
  • Classe WatermarkVendor : utilisée pour exposer les technologies de filigrane prises en charge du client à l’application.
  • Classe LicenseServerTimeCertificate utilisée pour contenir le certificat pour signer l’heure du serveur de licence retournée dans la réponse d’acquisition de licence.

Les éléments suivants ont été ajoutés à des classes individuelles.

  • La classe PlayReadyHeader expose si l’en-tête indique la prise en charge des clés par flux et si elle demande explicitement une licence ou non.
  • L’énumération ContentKeyType ajoute la valeur KeyExchange.
  • La classe Certificate ajoute des propriétés de tableau d’octets exposant la clé publique de synthèse et d’émetteur du certificat.
  • La classe Licence ajoute une propriété guid exposant l’ID unique de la licence et une propriété IEnumerable<Right> pour retourner les droits ajoutés à la licence.
  • L’énumération LicenseChallengeTeeAPIs ajoute des valeurs pour toutes les nouvelles API TEE PK 4.5.
  • L’énumération LicenseChallengeReeFeatures ajoute des valeurs pour LicenseServerTime et KeyExchange.
  • La classe LicenseChallenge ajoute la liste des clés KeyExchangeAlgorithms prises en charge par le client, le WatermarkVendors prend en charge, les versions PK de LA TEE et REE du client (qui peuvent ou non être identiques) et indique si le client requiert le LicenseServerTime actuel.
  • La classe LicenseResponse ajoute une propriété LicenseServerTimeCertificate pour définir le certificat utilisé pour signer l’heure du serveur de licence retournée dans la réponse d’acquisition de licence.
  • La classe ExplicitOutputRestrictionsConstants ajoute des constantes pour Watermark et InternalScreenOnly. Pour plus d’informations sur ces guid, consultez les règles de conformité PlayReady.

Modifications apportées au Kit de portage d’appareils PlayReady version 4.5

Modifications générales du Kit de portage d’appareil

  • L’ensemble du Kit de portage d’appareils PlayReady a été mis à jour vers le langage d’annotation de code source (SAL) 2.0 de Microsoft.
  • Certains chemins de code non pris en charge utilisés uniquement dans les implémentations internes de Microsoft ont été supprimés pour éliminer la confusion et réduire les temps de compilation et les tailles binaires. D’autres améliorations dans ce domaine devraient être incluses dans les versions futures.
  • Lorsqu’il est pris en charge par le compilateur sous-jacent et l’architecture de machine, les types entiers 128 bits natifs peuvent désormais être utilisés pour accélérer l’implémentation par défaut d’ECC256.
  • Une implémentation par défaut de l’algorithme HMAC SHA256 a été ajoutée.

Modifications de l’API du Kit de portage d’appareil

Il s’agit simplement d’une vue d’ensemble. Pour plus d’informations, reportez-vous à la documentation de l’API fournie dans les commentaires de code associés dans le Kit de portage d’appareils PlayReady .

DRM_CDMI_SetServercertificate est désormais autorisé à être appelé avec un certificat de déploiement playReady Server pour l’acquisition de licences de chiffrement de confidentialité et d’autres défis du client. La fonction se transfère vers Drm_AppContext_SetProperty dans ce scénario. L’utilisation existante reste la même.

Les fonctions publiques suivantes ont été ajoutées :

  • Drm_AppContext_SetProperty
  • Drm_KeyExchange_Prepare
  • Drm_KeyExchange_Perform
  • Drm_KeyExchange_Close

Les structures suivantes ont été ajoutées :

  • DRM_DGP_REE_FEATURE_LIST_4_5
  • DRM_DGP_TEE_API_LIST_4_5

Les API TEE suivantes ont été ajoutées :

  • DRM_TEE_BASE_GetSystemTime2
  • DRM_TEE_LICPREP_PackageKey2
  • DRM_TEE_LICENSESERVERTIME_ProcessResponseData
  • DRM_TEE_DECRYPT_PrepareToDecrypt2
  • DRM_TEE_LICGEN_CompleteLicense2
  • DRM_TEE_KEYEXCHANGE_Prepare
  • DRM_TEE_KEYEXCHANGE_Perform

Les API TEE OEM suivantes ont été ajoutées :

  • OEM_TEE_BASE_ECC256_SetKey
  • OEM_TEE_CRYPTO_SHA256_HMAC_VerifyMAC
  • OEM_TEE_CRYPTO_SHA256_HMAC_CreateMAC
  • OEM_TEE_PERSISTENTSTORAGE_Read
  • OEM_TEE_PERSISTENTSTORAGE_Write
  • OEM_TEE_GetSupportedWatermarkVendors

Les API TEE OEM suivantes ont été renommées sans modifications fonctionnelles :

Ancien nom Nouveau nom
OEM_TEE_DECRYPT_UnshuffleScalableContentKeys OEM_TEE_BASE_UnshuffleScalableContentKeys
OEM_TEE_DECRYPT_CalculateContentKeyPrimeWithAES128Key OEM_TEE_BASE_CalculateContentKeyPrimeWithAES128Key
OEM_TEE_DECRYPT_DeriveScalableKeyWithAES128Key OEM_TEE_BASE_DeriveScalableKeyWithAES128Key
OEM_TEE_DECRYPT_InitUplinkXKey OEM_TEE_BASE_InitUplinkXKey
OEM_TEE_DECRYPT_UpdateUplinkXKey OEM_TEE_BASE_UpdateUplinkXKey
OEM_TEE_DECRYPT_DecryptContentKeysWithDerivedKeys OEM_TEE_BASE_DecryptContentKeysWithDerivedKeys
OEM_TEE_DECRYPT_EnforcePolicy OEM_TEE_POLICY_Enforce