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.
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.
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).
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.
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 |