View a markdown version of this page

SPEKE API v2.1 - Contratto di crittografia - Specifica API Elemental Secure Packager and Encoder Key Exchange

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

SPEKE API v2.1 - Contratto di crittografia

Il contratto di crittografia definisce quali chiavi di contenuto proteggono quali tracce all'interno di un determinato streamset, in base alle caratteristiche delle tracce.

L'utilizzo di più chiavi di contenuto per tracce diverse in uno streamset è una best practice del settore consigliata. Non è obbligatorio, ma consigliamo di utilizzare almeno due chiavi di contenuto diverse: una per le tracce audio e una per le tracce video. È possibile utilizzare un'unica chiave di contenuto per crittografare più tracce. Tuttavia, il crittografo deve segnalarlo esplicitamente nel documento CPIX che invia al fornitore della chiave. In generale, l'encoptor descrive sempre con precisione quante chiavi di contenuto sono necessarie e come vengono utilizzate per crittografare le varie tracce multimediali.

Principi

Puoi trovare il contratto di crittografia nella <cpix:ContentKeyUsageRuleList> sezione del documento CPIX. In questa sezione, ogni chiave di contenuto definita nella <cpix:ContentKeyList> sezione corrisponde a un <cpix:ContentKeyUsageRule> elemento specifico, che deve includere:

  • un ContentKeyUsageRule@intendedTrackType attributo che può fare riferimento a uno o più sottocomponenti, separati dal segno «+» se vengono utilizzati più sottocomponenti. Il valore di ContentKeyUsageRule@intendedTrackType deve essere univoco in un contratto di crittografia e non può essere utilizzato in più ContentKeyUsageRule elementi.

  • uno <cpix:AudioFilter> o più elementi <cpix:VideoFilter> secondari, a seconda del valore dell'ContentKeyUsageRule@intendedTrackTypeattributo.

Le regole che regolano questa relazione sono le seguenti:

  • Quando tutte le tracce audio e video dello streamset devono essere protette con una chiave di contenuto univoca, la stringa 'ALL' deve essere utilizzata come valore dell'ContentKeyUsageRule@intendedTrackTypeattributo. L'esempio 1 mostra un caso d'uso di questo tipo. In questa situazione, devono essere inclusi sia gli elementi a che quelli <cpix:VideoFilter /> secondari senza alcun attributo. <cpix:AudioFilter /> Qualsiasi altra combinazione di <cpix:AudioFilter> and/or <cpix:VideoFilter> elementi non è valida in questo particolare contesto.

  • Per tutti gli altri casi d'uso, il valore dell'ContentKeyUsageRule@intendedTrackTypeattributo può essere definito liberamente e il numero di <cpix:AudioFilter /> elementi <cpix:VideoFilter /> secondari deve corrispondere al numero di sottocomponenti aggregati tramite il segno «+». Gli esempi 2/3/4/5/6/7/9/10 illustrano questo requisito, quando un singolo sottocomponente è presente nel valore dell'attributo. ContentKeyUsageRule@intendedTrackType L'esempio 8 lo illustra quando vengono utilizzati più sottocomponenti. ContentKeyUsageRule@intendedTrackType="SD+HD"è descritto da due elementi <cpix:VideoFilter> secondari distinti con valori di attributo diversi. ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD"è descritto da tre elementi <cpix:VideoFilter> secondari distinti con valori di attributo diversi.

Filtri

CPIX definisce più elementi e attributi di filtro, ma SPEKE ne supporta solo un sottoinsieme. La tabella seguente riassume queste differenze:

Tipo di filtro CPIX Supporto generale per SPEKE Attributi di filtro supportati da SPEKE Attributi di filtro non supportati da SPEKE

<cpix : >VideoFilter

Sì

minPixels, maxPixels, hdr, minFPS, maxFPS (attributi opzionali)

wcg

<cpix : >AudioFilter

Sì

minChannels, maxChannels (attributi opzionali)

<cpix : >KeyPeriodFilter

Sì

periodID (attributo obbligatorio)

<cpix : >BitrateFilter

No

N/A

N/A

<cpix : >LabelFilter

No

N/A

N/A

Secondo le specifiche CPIX per VideoFilter, [minPixels, maxPixels] è un intervallo completo in entrambe le dimensioni, sebbene (minFPS, MaxFPS] sia incluso solo per la dimensione MaxFPS. Perché AudioFilter, [minChannels, MaxChannels] è un intervallo inclusivo in entrambe le dimensioni.

Situazioni problematiche

Vi sono situazioni in cui le informazioni fornite nel contratto di crittografia potrebbero essere parziali, ambigue o errate. In questi casi, è importante che il crittografo e il fornitore della chiave si comportino in modo appropriato e garantiscano un'adeguata protezione dei contenuti. La tabella seguente presenta il comportamento consigliato in queste situazioni:

In questa situazione L'azione di crittografia L'azione chiave del fornitore

Nessuna regola si applica a una o più tracce dello streamset (vedi l'esempio 3 di seguito)

L'encoptor dovrebbe esaminare la sua configurazione (esterna al payload CPIX) e verificare che le tracce interessate non richiedano la crittografia. Se non è quello previsto, l'encoptor dovrebbe generare un errore e interrompere l'elaborazione.

Non rilevante: il fornitore delle chiavi non è a conoscenza della struttura dello streamset.

Più regole si sovrappongono e suggeriscono più chiavi di contenuto per crittografare una traccia specifica

L'crittografo dovrebbe applicare l'ultimo valutato ContentKeyUsageRule con successo nell'ordine del documento.

Non pertinente: il fornitore delle chiavi non è a conoscenza della struttura dello streamset.

Il contratto di crittografia cambia in un singolo ciclo SPEKE request/response

Il crittografo deve sollevare un'eccezione e interrompere l'elaborazione, poiché il fornitore della chiave non è responsabile della definizione del contratto di crittografia.

Per evitare che questa situazione si verifichi in primo luogo, il fornitore della chiave non deve modificare un contratto di crittografia ricevuto nel payload CPIX della richiesta SPEKE.

Contratto di crittografia non valido: eccezione al vincolo di intendedTrackType/Filters cardinalità, filtri o attributi non supportati

Il criptatore deve sollevare un'eccezione, interrompere l'elaborazione e non inviare la richiesta SPEKE al fornitore della chiave, perché molto probabilmente ciò comporterebbe una protezione errata dei contenuti o lascerebbe alcune tracce non protette.

Il fornitore della chiave deve sollevare un'eccezione e restituire un errore di «Contratto di crittografia non valido».

Contratto di crittografia ben stipulato, ma in violazione dei vincoli relativi ai livelli di sicurezza del DRM: ad esempio, viene richiesta un'unica chiave di contenuto per proteggere sia le tracce audio che le tracce video UHD

Se il criptatore è a conoscenza dei vincoli dei livelli di sicurezza del DRM, dovrebbe sollevare un'eccezione, interrompere l'elaborazione e non inviare la richiesta SPEKE al fornitore della chiave, poiché molto probabilmente comporterebbe una protezione errata dei contenuti.

Il fornitore della chiave deve sollevare un'eccezione e restituire un errore «Contratto di crittografia CPIX richiesto non supportato».

Contratto di crittografia mancante

L'encoptor non deve inviare documenti CPIX che non contengano alcun elemento o elemento. VideoFilter AudioFilter

Il fornitore della chiave deve sollevare un'eccezione e restituire un errore «Contratto di crittografia CPIX mancante».

Esempi di contratti di crittografia

Esempio 1: una chiave di contenuto per tutte le tracce audio e video

<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>

Esempio 2: una chiave di contenuto per tutte le tracce video, una chiave di contenuto per tutte le tracce 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>

Esempio 3: una chiave di contenuto per tutte le tracce video, tracce audio non crittografate

<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>

Esempio 4: più chiavi di contenuto per diverse tracce video (SD/HD), una chiave di contenuto per tutte le tracce 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>

Esempio 5: più chiavi di contenuto per diverse tracce video (SD/HD/UHD), una chiave di contenuto per tutte le tracce 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>

Esempio 6: più chiavi di contenuto per diverse tracce video (SD/HD/UHD1/UHD2), una chiave di contenuto per tutte le tracce 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>

Esempio 7: più chiavi di contenuto per diverse tracce video (SD/HD1/HD2/UHD1/UHD2), una chiave di contenuto per tutte le tracce 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>

Esempio 8: più chiavi di contenuto per diverse tracce video (basate su più tipi di attributi), una chiave di contenuto per tutte le tracce 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="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>

Esempio 9: una chiave di contenuto per tutte le tracce video, più tasti di contenuto per le tracce audio stereo e multicanale

<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"/> <cpix:AudioFilter minChannels="3"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

Esempio 10: una chiave di contenuto per tutte le tracce video, più tasti di contenuto per lo stereo e due tipi di tracce audio multicanale

<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>