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.
SPEKE API v2 - Contrat de cryptage
Le contrat de chiffrement définit quelles clés de contenu protègent quelles pistes d'un flux donné, en fonction des caractéristiques des pistes.
L'utilisation de plusieurs touches de contenu pour différentes pistes d'un stream, bien qu'il s'agisse d'une bonne pratique du secteur, n'est pas obligatoire, mais recommandée : au moins deux touches de contenu différentes, une pour les pistes audio et l'autre pour les pistes vidéo. L'utilisation d'une seule clé de contenu pour crypter plusieurs pistes est possible, mais elle doit être explicitement signalée dans le document CPIX envoyé par le crypteur au fournisseur de clés. D'une manière générale, le chiffreur décrit toujours avec précision le nombre de clés de contenu requises et la manière dont elles sont utilisées pour crypter les différentes pistes multimédia.
Principes
Le contrat de cryptage se trouve dans la<cpix:ContentKeyUsageRuleList>
section du document CPIX. Dans cette section, chaque clé de contenu définie dans la<cpix:ContentKeyList>
section correspond à un<cpix:ContentKeyUsageRule>
élément spécifique, qui doit inclure :
-
un
ContentKeyUsageRule@intendedTrackType
attribut qui peut faire référence à un ou plusieurs sous-composants, séparés par le signe « + » si plusieurs sous-composants sont utilisés. La valeur deContentKeyUsageRule@intendedTrackType
doit être unique dans un contrat de cryptage et ne peut pas être utilisée dans plusieursContentKeyUsageRule
éléments. -
un ou plusieurs éléments
<cpix:AudioFilter>
ou un élément<cpix:VideoFilter>
enfant, en fonction de la valeur deContentKeyUsageRule@intendedTrackType
l'attribut.
Les règles qui régissent cette relation sont les suivantes :
-
Lorsque toutes les pistes audio et vidéo du streamset doivent être protégées par une clé de contenu unique, la chaîne
'ALL'
doit être utilisée comme valeurContentKeyUsageRule@intendedTrackType
d'attribut. L'exemple 1 montre un tel cas d'utilisation. Dans ce cas, les éléments a<cpix:AudioFilter />
et les éléments<cpix:VideoFilter />
enfants sans aucun attribut doivent être inclus. Toute autre combinaison<cpix:AudioFilter>
et/ou d'<cpix:VideoFilter>
éléments n'est pas valide dans ce contexte particulier. -
Pour tous les autres cas d'utilisation, la valeur de l'
ContentKeyUsageRule@intendedTrackType
attribut peut être définie librement, et le nombre d'éléments<cpix:AudioFilter />
et<cpix:VideoFilter />
d'un sous-élément doit 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 la valeur deContentKeyUsageRule@intendedTrackType
l'attribut. L'exemple 8 l'illustre lorsque plusieurs sous-composants sont utilisés : ilContentKeyUsageRule@intendedTrackType="SD+HD"
est décrit par deux éléments<cpix:VideoFilter>
enfants distincts avec des valeurs d'attributs différentes etContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"
est décrit par trois éléments<cpix:VideoFilter>
enfants distincts avec des valeurs d'attributs différentes.
Filtres
CPIX définit plusieurs éléments et attributs de filtrage, mais SPEKE n'en prend en charge qu'un sous-ensemble. Le tableau suivant récapitule ces différences :
Type de filtre CPIX | Support général de SPEKE | Attributs de filtre pris en charge par SPEKE | Attributs de filtre non pris en charge par SPEKE |
---|---|---|---|
<pix :VideoFilter > |
Oui |
MinPixels, MaxPixels, hdr, minFps, MaxFps (attributs facultatifs) |
wcg |
<pix :AudioFilter > |
Oui |
MinChannels, MaxChannels (attributs facultatifs) |
|
<pix :KeyPeriodFilter > |
Oui |
PerioDid (attribut obligatoire) |
|
<pix :BitrateFilter > |
Non |
N/A |
N/A |
<pix :LabelFilter > |
Non |
N/A |
N/A |
Conformément à la spécification CPIX pour VideoFilter, [MinPixels, MaxPixels] est une plage complète dans les deux dimensions, tandis que (MinFPS, MaxFPS] inclut uniquement la dimension MaxFPS. Car AudioFilter [MinChannels, MaxChannels] est une plage inclusive dans les deux dimensions.
Situations de problèmes
Dans certaines situations, les informations fournies dans le contrat de cryptage peuvent être partielles, ambiguës ou erronées. Dans ces cas, il est important que le crypteur et le fournisseur de clés se comportent de manière appropriée et garantissent une protection adéquate du contenu. Le tableau suivant présente le comportement recommandé dans ces situations :
Dans cette situation | Le crypteur doit/doit... | Le fournisseur clé doit/doit... |
---|---|---|
Aucune règle ne s'applique à une ou plusieurs pistes du streamset (voir l'exemple 3 ci-dessous) |
Le crypteur doit examiner sa configuration (externe à la charge utile CPIX) et vérifier que les pistes concernées ne nécessitent pas de cryptage. Si ce n'est pas le cas, le chiffreur devrait générer une erreur et arrêter le traitement. |
Non pertinent : le fournisseur de clés ne connaît pas la structure du stream. |
Plusieurs règles se chevauchent et suggèrent plusieurs clés de contenu pour crypter une piste spécifique |
Le chiffreur doit appliquer la dernière évaluation ContentKeyUsageRule réussie dans l'ordre du document. |
Non pertinent : le fournisseur de clés ne connaît pas la structure du stream. |
Le contrat de cryptage change en un seul cycle de demande/réponse SPEKE |
Le crypteur 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 cryptage. |
Pour éviter que cette situation ne se produise, le fournisseur de clés ne doit pas modifier un contrat de cryptage reçu dans la charge utile CPIX de la requête SPEKE. |
Contrat de chiffrement mal formé : intendedTrackType /Filtres, exception de contrainte de cardinalité, filtres ou attributs non pris en charge |
Le crypteur 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 très 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 type « contrat de chiffrement mal formé ». |
Contrat de cryptage bien conçu, mais en violation des contraintes liées aux niveaux de sécurité des DRM : à titre d'exemple, une clé de contenu unique est demandée pour protéger à la fois les pistes audio et les pistes vidéo UHD |
Si le crypteur a connaissance des contraintes liées aux niveaux de sécurité DRM, il doit générer une exception, arrêter le traitement et ne pas envoyer la requête SPEKE au fournisseur de clés, car cela entraînerait très probablement une protection du contenu erronée. |
Le fournisseur de clés doit déclencher une exception et renvoyer une erreur « Le contrat de cryptage CPIX demandé n'est pas pris en charge ». |
Contrat de chiffrement manquant |
Le crypteur ne doit pas envoyer de documents CPIX qui ne contiennent aucun VideoFilter AudioFilter élément. |
Le fournisseur de clés doit déclencher une exception et renvoyer une erreur « Contrat de cryptage CPIX manquant ». |
Exemples de contrats de chiffrement
Exemple 1 : une clé 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 clé 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 crypté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 clé 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 clé 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 clé 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 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--> <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 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>