ID de clé et de clé (KID)

Chaque fichier multimédia protégé par PlayReady a un objet PlayReady (PRO), qui contient plusieurs informations dont PlayReady a besoin. Il se trouve dans l’en-tête de contenu du fichier qui, par exemple, peut également contenir des métadonnées pour les pistes vidéo et audio.

Dans chaque pro est un en-tête PlayReady, qui fournit à un client les informations nécessaires pour localiser ou acquérir une licence pour le contenu dans lequel il est stocké. L’en-tête PlayReady ressemble à ceci :


<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader" version="4.2.0.0">
  <DATA>
    <PROTECTINFO>
      <KIDS>
        <KID ALGID="AESCTR" CHECKSUM="xNvWVxoWk04=" VALUE="0IbHou/5s0yzM80yOkKEpQ=="></KID>
        <KID ALGID="AESCTR" CHECKSUM="GnKaQIRacPU=" VALUE="/qgG2xbs4k2SKCxx6bhWqw=="></KID>
      </KIDS>
    </PROTECTINFO>
  <LA_URL>https://test.playready.microsoft.com/service/rightsmanager.asmx</LA_URL>
  </DATA>
</WRMHEADER>

La partie qui nous intéresse est l’élément <KIDS> , qui contient un ou plusieurs <KID> éléments. Un KID (ID de clé) contient un identificateur global unique (GUID) que le client utilise pour demander au serveur une clé correspondante et un ALGID, qui est ensuite utilisé pour déchiffrer le fichier. Le KID est public, car il est contenu dans le PRO, mais la clé elle-même est un secret pour le service, et la relation entre la clé et KID est connue uniquement pour le service.

Générer une clé et chiffrer le contenu

Les clés de chiffrement de contenu dans les systèmes PlayReady sont des clés CTR AES-128 et AES-128 CBC. Le service qui chiffre le contenu génère un nouveau KID et une nouvelle clé de contenu. Le KID est inséré dans le pro, et les images vidéo et audio du contenu sont chiffrées avec la clé de contenu. L’image suivante montre comment une clé est générée, puis utilisée pour chiffrer le contenu.

 

PlayReady content encryption flow

 

Il existe deux façons de générer un KID et une clé, notamment :

  • À l’aide d’un système de gestion de clés (KMS), où le service génère de manière aléatoire chaque kid et chaque valeur de clé et les stocke, et peut simplement rechercher la valeur de clé qui correspond au KID fourni par le client.
  • Utilisation du mécanisme d’amorçage de la clé PlayReady . Avec ce mécanisme, le service détermine une valeur constante appelée valeur initiale de clé (valeur aléatoire de 30 octets) et, pour chaque élément de contenu qui nécessite une clé, génère un KID aléatoire. À l’aide du Kit de développement logiciel (SDK) serveur, vous pouvez générer une clé en fournissant les 128 bits de la clé, ou la valeur initiale de la clé et KID. La clé est déduite par un algorithme PlayReady spécifié ici.

Quelle que soit la façon dont vous générez la clé, vous devez être en mesure de vérifier qu’elle correspond au kid approprié, puis chiffrer le contenu.

Fournir une licence pour le contenu

Lorsqu’un client effectue une demande de licence, il envoie l’en-tête PlayReady du contenu à l’émetteur de licence. L’émetteur de licence extrait le KID et détermine la valeur de clé correspondante, à l’aide de l’une des méthodes décrites ci-dessus: s’il utilise le mécanisme d’amorçage de clé, il régénère simplement la clé en fonction du kid et de l’amorçage de clé. Ensuite, elle génère une licence incluant cette clé, qu’elle renvoie au client dans une réponse de licence.

Par exemple, supposons que vous disposez d’un fichier vidéo. Le packager pour ce contenu génère un KID 123aléatoire, qu’il insère dans l’en-tête PlayReady du fichier. Le packager génère également une valeur ABC de clé aléatoire pour qu’elle corresponde au KID 123et les stocke dans la KMS. Le packager demande au KMS de la clé correcte de chiffrer le fichier et chiffre le fichier avec la cléABC. Lorsque le client tente de lire le fichier, le client demande à l’émetteur de licence une licence qui correspond au KID 123. L’émetteur de licence recherche le KID dans le KMS et répond avec une licence incluant la cléABC, qui permet au client de déverrouiller le fichier et le client de le regarder.

Remarque

La licence envoyée par l’émetteur de licence au client (dans notre exemple, la licence contenant la clé ABC) est chiffrée ; un attaquant ne peut pas intercepter la valeur de la clé.

La clé utilisée pour protéger le fichier multimédia et la clé de la licence sont les mêmes ; Par conséquent, le packageur de contenu et l’émetteur de licence doivent être en mesure de récupérer ou de générer exactement la même clé pour un fichier multimédia spécifié. Pour ce faire, si vous utilisez une valeur initiale de clé pour générer des clés, vous devez la partager entre le package de contenu et l’émetteur de licence.

Partage de clés entre des fichiers ou des pistes

Tout comme une clé réelle peut déverrouiller plusieurs portes, il est techniquement possible d’utiliser une clé PlayReady pour déverrouiller plusieurs pistes dans un fichier, voire plusieurs fichiers dans une collection de ressources. Pendant le processus d’empaquetage, le packageur de contenu peut spécifier le même identificateur de clé pour plusieurs pistes ou plusieurs fichiers multimédias, et la même clé est utilisée pour tous.

Par exemple, avec une ressource vidéo multi-qualité avec des pistes vidéo 4K, HD et SD et plusieurs pistes audio, le chiffreur a la possibilité de définir une clé par piste ou une clé pour toutes les pistes.

Les clients ont besoin d’une licence pour chacune des clés qu’ils ont le droit de déchiffrer. Notez que la remise de plusieurs licences peut être effectuée par un serveur de licences dans une seule réponse de licence.

Dans une ressource unique avec plusieurs pistes, la décision entre une clé pour toutes les pistes ou une clé pour chaque piste est effectuée par le service gérant le contenu et en fonction des critères suivants :

  • Plus de clés apportent plus de complexité, mais vous permettent de spécifier au moment de la remise des licences ce qui suit le service souhaite permettre à un client particulier de déchiffrer.
  • Moins de clés est moins complexe, mais ne vous permet pas de spécifier au moment de la remise des licences ce qui suit le service souhaite permettre à un client particulier de déchiffrer.
  • Certains clients peuvent avoir la limitation qu’ils ne prennent pas en charge plusieurs clés pour une seule ressource.

Remarque

Bien que les clés PlayReady puissent déverrouiller plusieurs fichiers multimédias numériques, Microsoft est fortement contre cela. L’utilisation de clés uniques dans tous les fichiers offre une plus grande sécurité que la protection des fichiers avec la même clé.

Pile de licences dans une réponse de licence

Une réponse de licence unique peut également porter plusieurs licences et donc plusieurs clés pour déverrouiller plusieurs fichiers ou pistes dans une transaction. Cela est plus efficace que la création de plusieurs réponses pour plusieurs licences, car elle n’implique qu’une seule transaction. Cela peut être utile pour différents scénarios :

  • Un fichier multimédia est chiffré à l’aide de plusieurs clés. Par exemple, la piste vidéo est chiffrée à l’aide de Key1 et la piste audio est chiffrée à l’aide de Key2. Lorsqu’un client demande une licence pour KID1, le serveur de licences émet une réponse de licence, y compris des licences pour KID1 et KID2, afin que le client dispose de toutes les clés pour déchiffrer les pistes vidéo et audio du fichier.
  • Chaque chanson d’un album est chiffrée à l’aide d’une clé différente, mais un client a acquis les droits pour tous. Lorsque le client commence à lire la première chanson, le serveur de licences émet une réponse de licence incluant une licence pour chaque chanson de l’album, de sorte que le client dispose de toutes les clés nécessaires pour lire l’intégralité de l’album en toute transparence.
  • La clé d’une chaîne sur la télévision en direct devrait changer toutes les 24 heures. Au démarrage de la lecture, le serveur envoie une réponse de licence, y compris la licence pour la clé actuelle, mais également une licence avec la clé suivante. Ainsi, lorsque la clé change, le client aura déjà la clé suivante et la modification se produit en toute transparence.

Voir aussi

Spécification de l’en-tête PlayReady

Contenu d’empaquetage