Partager via


Chiffrement de contenu PlayReady

Cette rubrique fournit une vue d’ensemble des algorithmes de chiffrement utilisés pour protéger le contenu dans l’écosystème PlayReady.

Remarque

Consultez glossaire pour connaître les termes et définitions de chiffrement.

Notions de base du chiffrement

Le chiffrement à clé symétrique est le type de chiffrement le plus simple. Avec le chiffrement à clé symétrique, la même clé est utilisée pour chiffrer le contenu et le déchiffrer. Les algorithmes de clé symétrique sont généralement petits et rapides. En règle générale, la majeure partie de toute tâche de chiffrement est gérée par une forme de chiffrement à clé symétrique.

En revanche, le chiffrement à clé publique utilise une clé publique publiée pour chiffrer et une clé privée différente, secrète, privée à déchiffrer. Ainsi, si l’utilisateur « A » donne à l’utilisateur « B » une clé publique, B peut chiffrer du contenu pour A sans aucune autre information. Quel que soit le mode de transmission du contenu, seul A pourra le lire. Les intercepteurs de contenu n’ont pas la clé privée (clé secrète) et ne peuvent pas déchiffrer le message. Étant donné que la clé publique est mise à la disposition ouverte, n’importe qui peut chiffrer pour A, mais seulement A peut déchiffrer. Le chiffrement à clé publique nécessite des algorithmes complexes de calcul.

Le chiffrement à courbe elliptique (ECC) est un algorithme de chiffrement à clé publique utilisé pour chiffrer et déchiffrer le contenu. Il s’agit d’une fonction complexe de calcul qui décrit une courbe elliptique. Les composants de cet algorithme sont partagés en tant que clé publique. D’autres composants, utilisés pour le déchiffrement, forment la clé privée.

Les codes d’authentification de message à clé (OMAC) sont un code d’authentification de message construit à partir d’un chiffrement de bloc. Il existe deux algorithmes OMAC, OMAC1 et OMAC2.

Les certificats sont utilisés pour garantir l’authenticité des entités qui ne sont pas approuvées. L’expéditeur d’un certificat signe son nom (identificateur d’appareil) à l’aide de sa clé privée. Le destinataire du certificat vérifie ensuite la signature du certificat avec la clé publique de l’expéditeur pour garantir l’identité de l’expéditeur. Étant donné que l’expéditeur est le seul propriétaire de la clé privée, il est difficile de créer une clé privée en fonction d’une clé publique, et le certificat ne sera pas vérifié correctement, sauf s’il est signé avec la clé privée ; dans ce cas, la source de données est supposée être correcte et la communication certifiée est sécurisée.

Algorithmes de chiffrement PlayReady

Algorithmes symétriques

Les modes de chiffrement AES suivants sont pris en charge :

  • Mode CTR AES 128 : les systèmes PlayReady peuvent protéger les fichiers et les flux dans lesquels les exemples sont chiffrés en totalité ou où seuls un modèle des exemples sont chiffrés, en mode CTR d’opération. Ceux-ci incluent les modes de chiffrement commun « cenc » (schéma de chiffrement commun) et « cens » (schéma de chiffrement commun utilisant un modèle d’octets non chiffrés/chiffrés), qui sont définis dans ISO/IEC 23001-7.

  • Mode CBC AES 128 : les systèmes PlayReady commençant par la version 4.0 peuvent protéger les fichiers et les flux qui sont entièrement ou partiellement chiffrés avec une clé de contenu AES 128, en mode d’opération CBC. Il s’agit notamment des modes de chiffrement commun « cbc1 » et « cbcs » tels que définis dans la norme ISO/IEC 23001-7 et tout autre format chiffré avec une clé de contenu AES 128 en mode CBC.

Remarque

Les systèmes PlayReady avec la version 1.X, 2.X et 3.X peuvent uniquement protéger les fichiers chiffrés en mode CTR (mode de chiffrement commun « cenc »). 'cens' n’est pas pris en charge. Les systèmes PlayReady avec la version 4.0 et les versions ultérieures peuvent protéger les fichiers chiffrés en mode CTR (modes de chiffrement commun « cenc ») et en mode CBC (modes de chiffrement commun « cbcs »). Les autres modes « cens » et « cbc1 » ne sont pas pris en charge.

Algorithmes ECC

Microsoft PlayReady systèmes utilisent ECC (chiffrement à courbe elliptique) pour chiffrer les clés de contenu et les messages de protocole de signature.

  • Algorithme ECC ElGamal : utilisé pour les clés de contenu chiffrées.
  • ECDSA (algorithme de signature numérique elliptique de courbe elliptique) : utilisé pour signer des messages, le cas échéant, dans les protocoles PlayReady.
  • NIST : Microsoft PlayReady systèmes utilisent des algorithmes NIST standard pour le chiffrement ECC le cas échéant et utilisent actuellement la courbe elliptique P-256.

Algorithmes de signature

Pour signer des licences, des clés temporaires ou des données, les systèmes PlayReady utilisent AES OMAC1, ce qui équivaut à CMAC (Code d’authentification de message basé sur le chiffrement) et est devenu une recommandation NIST en mai 2005. Les clés sont générées au hasard, mais les données sont hachées avec SHA256, puis le hachage est signé avec ECC256.

Considérations relatives au runtime et aux performances

Lorsque la lecture de contenu est déclenchée, le client PlayReady doit effectuer certaines étapes avant que la lecture initiale puisse commencer. Cela inclut la recherche d’une licence, la liaison ou l’interprétation de la licence, le déchiffrement de la clé de contenu et enfin la préparation au déchiffrement du contenu. La pile cliente PlayReady prend du temps pour lier une licence à un élément de contenu, et cette opération est requise avant de démarrer le déchiffrement et le rendu du contenu. Cela signifie que le temps de liaison d’une licence a un impact sur la première image lors du démarrage d’une lecture ou de l’écart entre les pistes. Le développeur client ainsi que le développeur d’applications peuvent envisager d’optimiser son code pour les problèmes d’exécution et de performances, afin de réduire le temps à la première image et d’autoriser la lecture sans espace.

Les conteneurs protégés utilisent le chiffrement de clé symétrique pour chiffrer la majeure partie du contenu. Toutefois, le chiffrement à clé publique est utilisé dans la licence. En effet, la licence contient la clé symétrique du contenu et le serveur utilise la clé publique du client pour chiffrer la clé symétrique du contenu.

Quand il est temps de déchiffrer le contenu, la clé privée du client est utilisée pour déchiffrer la clé symétrique à partir de la licence. Seul le client auquel la licence est liée peut extraire la clé symétrique.

Le déchiffrement de clé privée est plus gourmand en calcul que le déchiffrement symétrique ; Par conséquent, l’interprétation de la licence est gourmande en ressources de calcul. Une fois la licence correctement gérée, la clé symétrique est déchiffrée et le contenu peut être déchiffré à l’aide d’algorithmes petits et rapides.

Pour les applications ou les appareils qui sont limités par les ressources, le démarrage nécessite beaucoup de temps et de ressources. Une fois cette opération terminée, toutefois, les ressources sont libérées, le déchiffrement peut se poursuivre efficacement, et peu de cycles de processeur ou de ressources système sont nécessaires.