API SPEKE v2 - Contrat de chiffrement - Spécification d'API Secure Packager and Encoder Key Exchange

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

API SPEKE v2 - Contrat de chiffrement

Le contrat de chiffrement définit les clés de contenu qui protègent les pistes à l'intérieur d'un flux donné, en fonction des caractéristiques des pistes.

L'utilisation de plusieurs clés de contenu pour différentes pistes dans un streaming, bien qu'elle soit recommandée dans le secteur, n'est pas obligatoire, mais recommandée : au moins deux touches de contenu différentes, une pour les pistes audio et une pour les pistes vidéo. L'utilisation d'une clé de contenu unique pour chiffrer plusieurs pistes est possible, mais elle doit être explicitement signalée dans le document CPIX envoyé par le chiffreur au fournisseur de clés. De manière générale, le chiffreur décrit toujours avec précision le nombre de clés de contenu nécessaires et la manière dont elles sont exploitées pour chiffrer les différentes pistes multimédia.

Principes

Le contrat de chiffrement se trouve dans le<cpix:ContentKeyUsageRuleList>du document CPIX. Dans cette section, chaque clé de contenu définie dans le<cpix:ContentKeyList>correspond à une section spécifique<cpix:ContentKeyUsageRule>, qui doit comprendre :

  • unContentKeyUsageRule@intendedTrackTypequi peut référencer un ou plusieurs sous-composants, séparés par le signe « + » si plusieurs sous-composants sont utilisés. PourContentKeyUsageRule@intendedTrackTypedoit être unique dans un contrat de chiffrement et ne peut pas être utilisé dans plusieursContentKeyUsageRuleéléments.

  • un ou plusieurs<cpix:AudioFilter>ou<cpix:VideoFilter>élément enfant, en fonction de la valeur deContentKeyUsageRule@intendedTrackTypeAttribut.

Les règles régissant cette relation sont les suivantes :

  • Lorsque toutes les pistes audio et vidéo du streaming doivent être protégées par une clé de contenu unique, la chaîne'ALL'doit être utilisé commeContentKeyUsageRule@intendedTrackTypevaleur d'attribut. L'exemple 1 montre un tel cas d'utilisation. Dans cette situation, les deux<cpix:AudioFilter />et un<cpix:VideoFilter />les éléments enfants sans attribut doivent être inclus. Toute autre combinaison de<cpix:AudioFilter>et/ou<cpix:VideoFilter>éléments n'est pas valide dans ce contexte particulier.

  • Pour tous les autres cas d'utilisation, la valeur duContentKeyUsageRule@intendedTrackTypepeut être librement défini et le nombre de<cpix:AudioFilter />et un<cpix:VideoFilter />les éléments enfants doivent correspondre au nombre de sous-composants agrégés par le signe « + ». Les exemples 2/3/4/5/6/7/9/10 illustrent cette exigence, lorsqu'un seul sous-composant est présent dans leContentKeyUsageRule@intendedTrackTypevaleur d'attribut. L'exemple 8 illustre le cas où plusieurs sous-composants sont utilisés :ContentKeyUsageRule@intendedTrackType="SD+HD"est décrit par deux distincts<cpix:VideoFilter>les éléments enfants avec des valeurs d'attributs différentes, etContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"est décrit par trois distincts<cpix:VideoFilter>éléments enfants avec des valeurs d'attributs différentes.

Filtres

CPIX définit plusieurs éléments et attributs de filtrage, mais SPEKE ne prend en charge qu'un sous-ensemble de celui-ci. Le tableau suivant résume ces différences :

Type de filtre CPIX Prise en charge globale de SPEKE Attributs de filtre pris en charge par SPEKE Attributs de filtre non pris en charge par SPEKE

<cpix:VideoFilter>

Oui

MinPixels, MaxPixels, hdr, MinFPS, MaxFPS (attributs facultatifs)

wcg

<cpix:AudioFilter>

Oui

MinChannels, MaxChannels (attributs facultatifs)

<cpix:KeyPeriodFilter>

Oui

PerioID (attribut obligatoire)

<cpix:BitrateFilter>

Non

N/A

N/A

<cpix:LabelFilter>

Non

N/A

N/A

Conformément à la spécification CPIX pour VideoFilter, [MinPixels, MaxPixels] est une plage tout compris dans les deux dimensions, tandis que (MinFPS, MaxFPS] n'est inclusif que pour la dimension MaxFPS. Pour AudioFilter, [MinChannels, MaxChannels] est une plage inclusive dans les deux dimensions.

Situations problématiques

Dans certains cas, les informations fournies dans le contrat de chiffrement peuvent être partielles, ambiguës ou erronées. Dans ces cas, il est important que le chiffreur et le fournisseur de clés se comportent correctement et garantissent une protection adéquate du contenu. Le tableau suivant présente le comportement recommandé dans ces situations :

Dans cette situation Le chiffreur devrait/doit... Le fournisseur de clés devrait ou doit...

Aucune règle ne s'applique à une ou plusieurs pistes du streaming (voir l'exemple 3 ci-dessous)

Le chiffreur doit examiner sa configuration (externe à la charge utile CPIX) et vérifier que les pistes concernées ne nécessitent pas de chiffrement. Si ce n'est pas le cas, le chiffreur doit déclencher une erreur et arrêter le traitement.

Non pertinent : le fournisseur de clés ne connaît pas la structure Streamset.

Plusieurs règles se chevauchent et suggèrent plusieurs clés de contenu pour chiffrer une piste spécifique

Le chiffreur doit appliquer le dernier ContentKeyUsageRule évalué avec succès dans l'ordre du document.

Non pertinent : le fournisseur de clés ne connaît pas la structure Streamset.

Le contrat de chiffrement change dans un seul cycle de demande/réponse SPEKE

Le chiffreur doit déclencher une exception et arrêter le traitement, car le fournisseur de clés n'est pas responsable de la définition du contrat de chiffrement.

Pour éviter que cette situation ne se produise en premier lieu, le fournisseur de clés ne doit pas modifier un contrat de chiffrement reçu dans la charge utile CPIX de la demande SPEKE.

Contrat de chiffrement mal formé : exception de contrainte de cardinalité intendedTrackType/Filters, filtres ou attributs non pris en charge

Le chiffreur doit déclencher une exception, arrêter le traitement et ne pas envoyer la demande SPEKE au fournisseur de clés, car cela entraînerait probablement une protection erronée du contenu ou laisserait certaines pistes non protégées.

Le fournisseur de clés doit déclencher une exception et renvoyer une erreur de « contrat de chiffrement mal formé ».

Contrat de chiffrement bien formé, mais en violation des contraintes liées aux niveaux de sécurité DRM : par exemple, une seule clé de contenu est demandée pour protéger les pistes audio et les pistes vidéo UHD

Si le chiffreur a connaissance des contraintes liées aux niveaux de sécurité DRM, il doit déclencher une exception, arrêter le traitement et ne pas envoyer la demande SPEKE au fournisseur de clés, car cela entraînerait probablement une protection erronée du contenu.

Le fournisseur de clés déclenche une exception et renvoie une erreur « Contrat de chiffrement CPIX demandé non pris en charge ».

Contrat de chiffrement absent

Le chiffreur ne doit pas envoyer de documents CPIX qui ne contiennent aucun VideoFilter ou AudioFilter élément.

Le fournisseur de clés doit déclencher une exception et renvoyer une erreur « Contrat de chiffrement CPIX manquant ».

Exemples de contrats de chiffrement

Exemple 1 : une touche de contenu pour toutes les pistes audio et vidéo

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="ALL"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 2 : une clé de contenu pour toutes les pistes vidéo, une touche de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 3 : une clé de contenu pour toutes les pistes vidéo, pistes audio non chiffrées

<cpix:ContentKeyUsageRuleList> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 4 : plusieurs touches de contenu pour différentes pistes vidéo (SD/HD), une touche de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 5 : plusieurs touches de contenu pour différentes pistes vidéo (SD/HD/UHD), une touche de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD video tracks (more than 1920x1080) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 6 : plusieurs touches de contenu pour différentes pistes vidéo (SD/HD/UHD1/UHD2), une touche de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD video tracks (more than 1024x576, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" maxPixels="8847360" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD2 video tracks (more than 4096x2160) --> <cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="8847361" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 7 : plusieurs touches de contenu pour différentes pistes vidéo (SD/HD1/HD2/UHD1/UHD2), une touche de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD video tracks (up to 1024x576) --> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="589824" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD1 video tracks (more than 1024x576, up to 1280x720) --> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="589825" maxPixels="921600" /> </cpix:ContentKeyUsageRule> <!-- Rule for HD2 video tracks (more than 1280x720, up to 1920x1080) --> <cpix:ContentKeyUsageRule kid="cda406d8-9d87-4f76-92da-31110e756176" intendedTrackType="HD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="921601" maxPixels="2073600" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD1 video tracks (more than 1920x1080, up to 4096x2160) --> <cpix:ContentKeyUsageRule kid="75c6fa78-8b5d-6d75-9653-26f41b78d1a3" intendedTrackType="UHD1"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="2073601" maxPixels="8847360" /> </cpix:ContentKeyUsageRule> <!-- Rule for UHD2 video tracks (more than 4096x2160) --> <cpix:ContentKeyUsageRule kid="63d2ec36-6b7c-9f34-4546-97d01f36f7c5" intendedTrackType="UHD2"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter minPixels="8847361" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks --> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 8 : plusieurs clés de contenu pour différentes pistes vidéo (basées sur plusieurs types d'attributs), une clé de contenu pour toutes les pistes audio

<cpix:ContentKeyUsageRuleList> <!-- Rule for SD and HD video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="SD+HD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter maxPixels="442368" maxFps="30" hdr="false"/> <cpix:VideoFilter minPixels="442369" maxPixels="2073600" maxFps="30" hdr="false"/> </cpix:ContentKeyUsageRule> <!-- Rule for HDR, HFR and UHD video tracks--> <cpix:ContentKeyUsageRule kid="37e3de05-9a3b-4c69-8970-63c17a95e0b7" intendedTrackType="HDR+HFR+UHD"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter hdr="true" /> <cpix:VideoFilter minFps="30" /> <cpix:VideoFilter minPixels="20736001" /> </cpix:ContentKeyUsageRule> <!-- Rule for all audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter /> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 9 : une touche de contenu pour toutes les pistes vidéo, plusieurs touches de contenu pour les pistes audio stéréo et multicanal

<cpix:ContentKeyUsageRuleList> <!-- Rule for video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <!-- Rule for stereo audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter maxChannels="2"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks--> <cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <AudioFilter minChannels="3"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Exemple 10 : une touche de contenu pour toutes les pistes vidéo, plusieurs touches de contenu pour la chaîne stéréo et deux types de pistes audio multicanaux

<cpix:ContentKeyUsageRuleList> <!-- Rule for video tracks--> <cpix:ContentKeyUsageRule kid="98ee5596-cd3e-a20d-163a-e382420c6eff" intendedTrackType="VIDEO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:VideoFilter /> </cpix:ContentKeyUsageRule> <!-- Rule for stereo audio tracks--> <cpix:ContentKeyUsageRule kid="53abdba2-f210-43cb-bc90-f18f9a890a02" intendedTrackType="STEREO_AUDIO"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter maxChannels="2"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks (3 to 6 channels)--> <cpix:ContentKeyUsageRule kid="7ae8e96f-309e-42c3-a510-24023d923373" intendedTrackType="MULTICHANNEL_AUDIO_3_6"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter minChannels="3" maxChannels="6"/> </cpix:ContentKeyUsageRule> <!-- Rule for multichannel audio tracks (7 channels and more)--> <cpix:ContentKeyUsageRule kid="81eb3761-55ff-4d22-a31d-94f01bbfd8ba" intendedTrackType="MULTICHANNEL_AUDIO_7"> <cpix:KeyPeriodFilter periodId="keyPeriod_0909829f-40ff-4625-90fa-75da3e53278f"/> <cpix:AudioFilter minChannels="7"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>