Partager via


Horloges approuvées PlayReady

Une horloge approuvée PlayReady est un terme général pour une horloge utilisée pour appliquer des limitations temporelles définies sur le contenu protégé par PlayReady sur les clients PlayReady. Tout client qui implémente une horloge approuvée garantit qu’un client qui limite la lecture à une date et une heure de début, une date et une heure d’expiration, ou une date et une heure d’expiration après la première lecture ne peuvent pas être falsifiés à l’aide d’outils de piratage à un niveau défini dans les règles de robustesse pour les produits PlayReady.

Microsoft ne nécessite pas que les développeurs clients utilisent une horloge approuvée. Toutefois, les clients sans horloge approuvée ne sont pas autorisés à gérer les licences avec des stratégies basées sur le temps, y compris l’expiration. Étant donné que ce scénario est très courant dans le secteur (comme la location ou l’abonnement), Microsoft recommande d’implémenter une horloge approuvée PlayReady dans chaque client.

Les développeurs clients peuvent choisir parmi deux types d’horloges approuvées PlayReady dans leur conception. Ils vous permettent tous deux de gérer des licences avec des stratégies temporelles :

  • Horloge sécurisée PlayReady
  • Horloge anti-restauration PlayReady

Horloge sécurisée PlayReady

Une horloge sécurisée PlayReady est « une horloge en temps réel matérielle qui a été conçue pour résister à un accès non autorisé au niveau défini dans les règles de robustesse », comme défini dans le document Termes définis pour les règles de conformité et de robustesse pour les produits PlayReady.

Conformément aux exigences des règles de conformité pour les produits PlayReady, une horloge sécurisée PlayReady doit utiliser un service d’horloge sécurisée pour définir sa valeur. Microsoft exploite certains services PlayReady Secure Clock que les fabricants d’appareils peuvent utiliser à cet effet.

PlayReady Secure Clock

Heure du serveur de licences

À compter de PlayReady 4.5, le service d’horloge sécurisée peut être le serveur d’acquisition de licence lui-même où le Kit de développement logiciel (SDK) PlayReady Server fournit le temps pendant l’acquisition de licence.

Pour utiliser cette fonctionnalité, les exigences suivantes doivent être remplies :

  • Le serveur et le client (y compris TEE et REE) doivent utiliser PlayReady 4.5 ou version ultérieure.
  • Le serveur et les applications clientes doivent être conscients de la fonctionnalité.
  • Le client (dans TEE et REE) doit inclure la fonctionnalité Temps sécurisé au moment de la génération et implémenter les méthodes de OEM_TEE associées, comme indiqué dans les commentaires de code dans le Kit de portage d’appareil PlayReady.
  • L’application cliente doit uniquement communiquer avec les serveurs d’acquisition de licence qui prennent en charge et activer cette fonctionnalité OU doivent également être en mesure de communiquer avec un service d’horloge sécurisé externe.
  • Le serveur doit disposer d’un certificat d’heure du serveur de licences fourni par Microsoft.
  • Si plusieurs instances de serveur d’acquisition de licences sont utilisées à des fins d’extensibilité, les heures de leur système d’exploitation doivent être synchronisées entre elles.
  • Si des licences persistantes avec des restrictions temporelles ont été acquises avant l’activation de la fonctionnalité (par exemple, le client est mis à niveau à partir d’une version précédente de PlayReady vers PlayReady 4.5), le client et le serveur doivent activer la réacquisition de ces licences après l’utilisation de la fonctionnalité.

Un serveur active cette fonctionnalité comme suit :

  • Construisez une instance de la classe LicenseServerTimeCertificate avec le certificat d’heure du serveur de licences fourni par Microsoft et sa paire de clés correspondante.
  • Définissez la propriété LicenseServerTimeCertificate de la classe LicenseResponse sur cette instance. Remarque : La définition de cette propriété n’a aucun effet si le client ne prend pas en charge la fonctionnalité. Il n’est donc pas nécessaire de bifurquer votre code d’application en fonction de la prise en charge du client.
  • (Facultatif) Si la propriété LicenseServerTimeRequested de la classe LicenseAcquisitionChallenge retourne la valeur true, la réponse de licence peut éventuellement inclure aucune licence.
  • (Facultatif) Si la propriété En lecture seule de la classe PlayReadyHeader retourne la valeur false, le client a indiqué qu’aucune licence n’est demandée et que la logique de l’application serveur peut choisir d’agir sur ces informations. (Cela signifie que l’en-tête PlayReady v4.3.0.0 envoyé par le client a l’attribut facultatif supplémentaire LICENSEREQUESTED sur le nœud PROTECTINFO défini sur false.)

Un client active cette fonctionnalité comme suit :

  • Incluez (à la fois dans TEE et REE) la fonctionnalité de temps sécurisé au moment de la compilation/lien et implémentez les méthodes de OEM_TEE associées, comme indiqué dans les commentaires de code dans le Kit de portage PlayReady.
  • Quand une API PlayReady retourne DRM_E_SECURETIME_CLOCK_NOT_SET, effectuez l’acquisition de licence pour définir l’horloge sécurisée.
  • Quand une API PlayReady retourne DRM_E_LICENSESERVERTIME_MUST_REACQUIRE_LICENSE, effectuez l’acquisition de licence pour réacquire une licence persistante qui a été invalidée. Cela se produit uniquement si des licences persistantes avec des restrictions temporelles ont été acquises avant l’activation de la fonctionnalité (par exemple, le client a été mis à niveau à partir d’une version précédente de PlayReady vers PlayReady 4.5).
  • (Facultatif) Lorsque vous effectuez une acquisition de licence uniquement pour définir l’horloge sécurisée, l’application peut choisir d’utiliser un en-tête PlayReady v4.3.0.0 avec l’attribut facultatif supplémentaire LICENSEREQUESTED sur le nœud PROTECTINFO défini sur false pour indiquer qu’aucune licence n’est nécessaire. Pour plus d’informations, reportez-vous à la spécification de l’en-tête PlayReady.

Horloge anti-restauration PlayReady

Une horloge anti-restauration PlayReady est « une horloge en temps réel qui est régulièrement vérifiée par le produit final PlayReady à avoir avancé », comme défini dans le document Termes définis pour les règles de conformité et de robustesse pour les produits PlayReady

Conformément aux exigences des règles de conformité pour les produits PlayReady, une horloge anti-restauration PlayReady peut utiliser n’importe quelle source de temps pour définir sa valeur. L’approbation dans l’horloge est fournie par le mécanisme anti-restauration intégré au PK. L’utilisation d’un service PlayReady Secure Clock pour définir sa valeur est également autorisée. Microsoft exploite certains services PlayReady Secure Clock que les fabricants d’appareils peuvent utiliser à cet effet.

PlayReady Anti-rollback Clock