Qu’est-ce que le chiffrement DRM ?
Le chiffrement DRM transforme les médias encodés en données chiffrées qu’un lecteur ne peut déchiffrer qu’avec la clé de contenu correspondante. Un système de licences transmet cette clé et ses règles d’utilisation aux clients qu’il autorise.
Comment fonctionne le chiffrement DRM
Le chiffrement est appliqué par l’outil de conditionnement, après l’encodage. Avec Common Encryption (ISO/IEC 23001-7), utilisé par les flux MP4 fragmentés pour DASH et HLS, les échantillons chiffrés utilisent une clé AES de 128 bits selon l’un des quatre schémas de la norme ; les deux schémas autorisés par le format de flux du W3C pour Encrypted Media Extensions sont cenc (mode compteur) et cbcs (chaînage des blocs chiffrés, avec un motif qui ne chiffre qu’une partie de chaque échantillon vidéo). Un flux protégé peut aussi contenir des échantillons non chiffrés, par exemple une portion initiale en clair. Le média n’expose pas la clé de contenu en clair. Il contient un identifiant de clé, par défaut dans la boîte de chiffrement de piste (tenc). Pour demander une licence, le client d’un système DRM a besoin des données d’initialisation de ce système, dont l’emplacement dépend du format de diffusion. Pour DASH, le DASH-IF décrit un en-tête spécifique à chaque système de protection (pssh), présent dans le média, dans le manifeste sous forme d’élément cenc:pssh, ou dans les deux ; le manifeste indique aussi l’identifiant de clé sous la forme cenc:default_KID. Une liste de lecture HLS signale les clés dans des balises EXT-X-KEY, dont l’attribut URI précise comment obtenir la clé ; le contenu FairPlay doit utiliser le format de clé com.apple.streamingkeydelivery dans cette balise. Le lecteur transmet les données d’initialisation au module de déchiffrement de contenu de l’appareil, relaie la demande de licence du module au service de licences, puis renvoie la licence au module ; le déchiffrement s’effectue ensuite à l’intérieur du module. Les échantillons sont chiffrés une seule fois et seule la licence est émise pour chaque client ; chaque spectateur télécharge donc les mêmes segments chiffrés, qui peuvent être partagés et mis en cache comme des segments non chiffrés.
Points clés
cencoucbcs? Les deux schémas ne sont pas interchangeables, et un appareil doit prendre en charge celui utilisé pour conditionner le contenu. Le contenu FairPlay doit utiliser la méthode HLSSAMPLE-AES, que la RFC 8216 définit pour le MP4 fragmenté comme le schémacbcs, et la spécification de création de contenu d’Apple stipule queSAMPLE-AES-CTRne doit pas être utilisé sur les appareils Apple. La RFC 8216 ne définit aucune méthode en mode compteur, mais la documentation Media3 d’Android répertorie le HLS en MP4 fragmenté comme format pris en charge pour Widevine aveccencet, sur Android TV, pour PlayReady aveccenc. Cette même documentation indique la prise en charge de Widevine aveccencà partir d’Android 4.4, mais aveccbcsseulement à partir d’Android 7.1 (le tableau des plateformes de Widevine indique Android 7.x et versions ultérieures), et PlayReady a ajoutécbcsdans la version 4.0 du client, où sa prise en charge reste facultative. Une seule copie encbcspeut donc servir aux clients FairPlay, Widevine et PlayReady qui prennent en charge ce schéma, ce qu’un numéro de version PlayReady 4.0 ne garantit pas à lui seul, et les anciens clients Android ou PlayReady ont besoin d’une seconde copie encenc. Si vous conditionnez le contenu dans les deux schémas, Microsoft précise qu’un service ne doit pas chiffrer le même contenu dans les deux modes avec le même identifiant de clé et la même clé.- L’identifiant de clé est-il secret, et à quoi doit-il correspondre ? Non, c’est une étiquette. L’identifiant de clé est transmis sans chiffrement dans la boîte
tenc, dans les donnéespsshet dans les manifestes DASH, et indique au client et au service de licences quelle clé est nécessaire ; seule la clé elle-même est secrète et elle est transmise au sein d’une licence. Les identifiants doivent correspondre à tous les niveaux : le DASH-IF exige que la valeurcenc:default_KIDdu manifeste corresponde à celle de la boîtetenc, qu’il considère comme la source de vérité, et une licence qui fournit une clé sous un identifiant différent laisse les échantillons impossibles à déchiffrer, même si le flux se charge. - Une seule copie chiffrée fonctionne-t-elle avec plusieurs systèmes DRM ? Oui, pour les systèmes qui prennent en charge le schéma utilisé : Common Encryption permet à plusieurs systèmes de clés de déchiffrer les mêmes médias. Chaque système a néanmoins besoin de sa propre signalisation et d’un service de licences capable de renvoyer la même clé. Les outils de conditionnement génèrent cette signalisation pour chaque système ; Shaka Packager, par exemple, peut produire la signalisation Widevine, PlayReady et FairPlay pour un seul ensemble de clés. L’emplacement de la signalisation compte pour les navigateurs : le DASH-IF déconseille les boîtes
psshdans les segments d’initialisation, car chaque boîte traitée par un navigateur peut déclencher une nouvelle demande de licence, sauf si le lecteur détecte et bloque les doublons, et précise qu’inclure les donnéespsshdans le manifeste permet d’ajouter un système DRM sans modifier le contenu. - Quand la rotation des clés justifie-t-elle sa complexité ? Le DASH-IF décrit son objectif principal comme l’obligation d’obtenir périodiquement une nouvelle autorisation pour les contenus diffusés en direct en continu, par exemple aux changements de programme, et précise explicitement que le but n’est pas de renforcer le chiffrement. Dans Common Encryption, les identifiants de clé changeants sont signalés pour chaque échantillon au moyen de groupes d’échantillons
seig, éventuellement accompagnés de données de licence dans des boîtespsshà l’intérieur des fragments vidéo ; en HLS, chaque baliseEXT-X-KEYs’applique aux segments qui la suivent jusqu’à la prochaine balise ayant le mêmeKEYFORMATou jusqu’à la fin de la liste de lecture. La rotation nécessite une prise en charge par le lecteur (Media3 d’Android exige son mode multisession pour les flux à rotation de clés), des changements de clé alignés sur les limites des segments et des demandes de licence réparties dans le temps pour éviter que tous les clients ne les envoient au même instant. Le DASH-IF décrit une méthode de répartition qui en confie la responsabilité au système DRM : les clés actuelles et à venir sont annoncées dans les donnéespssh, et chaque client choisit un instant aléatoire pour demander sa licence.
Quand le chiffrement DRM est important
Configurez le chiffrement lors du conditionnement des flux destinés à une lecture contrôlée et protégez les clés séparément. Un identifiant de clé, un schéma ou une configuration de licence qui ne correspond pas rend illisibles des médias pourtant correctement encodés.
Références
- W3C : schéma de protection ISO Common Encryption pour le format de flux ISO Base Media File Format
- W3C : format des données d’initialisation « cenc » (boîtes pssh)
- Encrypted Media Extensions du W3C (schémas de chiffrement, identifiants de clé, modules de déchiffrement de contenu)
- Points d’interopérabilité DASH-IF v4.3, chapitre 7 : protection du contenu et sécurité (sections 7.3, 7.5 et 7.7)
- RFC 8216 (HTTP Live Streaming), section 4.3.2.4 : EXT-X-KEY
- Apple : spécification de création de contenu HLS pour les appareils Apple (exigences de protection du contenu)
- Microsoft PlayReady : modes de chiffrement du contenu (prise en charge de cenc et cbcs selon la version du client)
- Android Media3 ExoPlayer : gestion des droits numériques (prise en charge des schémas, rotation des clés)
- Présentation du DRM Google Widevine (schémas de chiffrement pris en charge par plateforme)
- Documentation de Shaka Packager : DRM (schémas et systèmes de protection)