SPEKEAPIv2 - Contratto di crittografia - Specifiche per lo scambio di chiavi Secure Packager ed Encoder API

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

SPEKEAPIv2 - 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 diverse tracce in uno streamset, nonostante sia una best practice consigliata del settore, non è obbligatorio, ma consigliato: almeno due chiavi di contenuto diverse, una per le tracce audio e una per le tracce video. L'utilizzo di un'unica chiave di contenuto per crittografare più tracce è possibile, ma deve essere segnalato esplicitamente nel CPIX documento inviato dal criptatore al fornitore delle chiavi. In generale, il criptatore descrive sempre con precisione quante chiavi di contenuto sono necessarie e come vengono sfruttate per crittografare le varie tracce multimediali.

Principi

Il contratto di crittografia si trova nella <cpix:ContentKeyUsageRuleList> sezione del CPIX documento. 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 unico in un contratto di crittografia e non può essere utilizzato in più ContentKeyUsageRule elementi.

  • uno o più elementi <cpix:AudioFilter> o <cpix:VideoFilter> un elemento secondario, 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, è 'ALL' necessario utilizzare la stringa 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 gli elementi <cpix:VideoFilter /> secondari senza alcun attributo. <cpix:AudioFilter /> Qualsiasi altra combinazione di <cpix:AudioFilter> e/o <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 elementi <cpix:VideoFilter /> secondari <cpix:AudioFilter /> e uno devono corrispondere al numero di sottocomponenti aggregati tramite il segno '+'. Gli esempi 2/3/4/5/6/7/9/10 illustrano questo requisito, quando nel valore dell'attributo è presente un singolo sottocomponente. ContentKeyUsageRule@intendedTrackType L'esempio 8 lo illustra quando vengono utilizzati più sottocomponenti: ContentKeyUsageRule@intendedTrackType="SD+HD" è descritto da due elementi figlio distinti con valori di attributi diversi ed ContentKeyUsageRule@intendedTrackType="HDR+HFR+UHD" è descritto da tre elementi <cpix:VideoFilter> figlio distinti con valori di attributi diversi. <cpix:VideoFilter>

Filtri

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

CPIXtipo di filtro SPEKESupporto generale Attributi di filtro supportati da SPEKE Attributi di filtro non supportati da SPEKE

<cpix : >VideoFilter

minPixels, hdrmaxPixels, (attributi opzionaliminFps) maxFps

wcg

<cpix : >AudioFilter

minChannels, maxChannels (attributi opzionali)

<cpix : >KeyPeriodFilter

periodId (attributo obbligatorio)

<cpix : >BitrateFilter

No

N/D

N/D

<cpix : >LabelFilter

No

N/D

N/D

Secondo le CPIX specifiche di VideoFilter, [minPixels,maxPixels] è un intervallo completo in entrambe le dimensioni, mentre (minFps,maxFps] è 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 criptatore 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 Il criptatore dovrebbe/deve... Il fornitore delle chiavi dovrebbe/deve...

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

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

Non rilevante: il fornitore delle chiavi non conosce la struttura dello streamset.

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

Il criptatore deve applicare l'ultima valuta valutata ContentKeyUsageRule con successo nell'ordine del documento.

Non pertinente: il fornitore di chiavi non conosce la struttura dello streamset.

Il contratto di crittografia cambia in un singolo ciclo di SPEKE richiesta/risposta

L'encryptor deve sollevare un'eccezione e interrompere l'elaborazione, in quanto 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 CPIX payload della richiesta. SPEKE

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

Il sistema di crittografia deve sollevare un'eccezione, interrompere l'elaborazione e non inviare la SPEKE richiesta al fornitore della chiave, poiché molto probabilmente provocherebbe una protezione errata dei contenuti o lascerebbe alcune tracce non protette.

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

Contratto di crittografia ben strutturato, ma che viola i vincoli dei livelli di DRM sicurezza: ad esempio, viene richiesta un'unica chiave di contenuto per proteggere sia le tracce audio che le tracce video UHD

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

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

Contratto di crittografia mancante

Il criptatore non deve inviare CPIX documenti che non contengano alcun elemento VideoFilter or AudioFilter .

Il fornitore della chiave deve sollevare un'eccezione e restituire l'errore «Contratto di CPIX crittografia 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///HD1HD2UHD1/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="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>

Esempio 9: una chiave di contenuto per tutte le tracce video, più chiavi 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"/> <AudioFilter minChannels="3"/> </cpix:ContentKeyUsageRule> </cpix:ContentKeyUsageRuleList>

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