Share via


Protezione del contenuto DASH con Microsoft PlayReady

Implementazione della protezione del contenuto per profili live e on demand di Dynamic Adaptive Streaming su HTTP (ISO/IEC 23009-1) tramite Common Encryption (ISO/IEC 23001-7) e Microsoft PlayReady.

Versione corrente

La versione corrente è la 1.3 pubblicata il 15 febbraio 2018

Per altre informazioni, fare riferimento alla cronologia delle modifiche .

Contenuto

I profili ISO/IEC 23009-1 ISO Base Media File Format on demand e Live DASH possono essere usati con la specifica ISO/IEC 23001-7, "Common Encryption in ISO base media file format files". Microsoft PlayReady supporta sia ISO/IEC 23001-7 che ISO/IEC 23009-1. Questa specifica illustra in dettaglio come creare un file di descrizione della presentazione multimediale ISO/IEC 23009-1 segnalando l'uso di Microsoft PlayReady per le rappresentazioni multimediali ISO/IEC 14496-12 per scenari di streaming adattivi live e on demand.

Note legali

© Microsoft Corporation 2018. Tutti i diritti sono riservati. Questo documento viene fornito "così come è". Le informazioni contenute in questo documento, inclusi URL e altri riferimenti a siti Web Internet, possono cambiare senza preavviso. L'utente accetta di usarle a proprio rischio.

Il presente documento non implica la concessione di alcun diritto di proprietà intellettuale in relazione ai prodotti Microsoft. Sono consentiti la copia e l'uso del presente documento a fini di riferimento interno. Non è possibile rimuovere alcuna notifica da questo documento.

Contents

Sezione Titolo
1 Introduzione
1,1 Ambito
1,2 Convenzioni
1.3 Terminologia, abbreviazioni e acronimi
1.4 Riferimenti
1.5 Cronologia modifiche
2 Schema di protezione del contenuto DASH PlayReady
2.1 Elementi del descrittore DASH ContentProtection
2,2 Requisiti e Consigli di implementazione
3 Esempio di descrizione presentazione multimediale
3.1 Correggere PRO nel segmento di inizializzazione o nel contenuto multimediale
3.2 Inclusione di un oggetto PlayReady in MPD

Tabelle

Tabella Titolo
Tabella 1 Casella di crittografia traccia
Tabella 2 Esempio di rappresentazione KID

1. Introduzione

Lo streaming adattivo dinamico di MPEG sullo standard HTTP [DASH] specifica i formati per la distribuzione di contenuti multimediali dai server HTTP ai client HTTP. In DASH la presentazione del contenuto multimediale è descritta da un file MPD (Media Presentation Description). Il MPD fornisce identificatori di risorsa per segmenti insieme al contesto per queste risorse all'interno di una presentazione multimediale.

In DASH una presentazione multimediale è costituita da una sequenza temporale di periodi ([DASH], sezione 5.3.2). All'interno di un periodo, il contenuto multimediale viene organizzato in un set di versioni con codifica intercambiabile denominate Set di adattamento ([DASH], sezione 5.3.3). Ogni set di adattamento è costituito da rappresentazioni ([DASH], sezione 5.3.5), ovvero versioni con codifica finale dei componenti del contenuto multimediale.

Un elemento ContentProtection Descriptor può essere associato a un set di adattamento o a una rappresentazione, per indicare lo schema di crittografia e uno o più elementi del descrittore ContentProtection possono essere aggiunti per abilitare l'acquisizione delle licenze DRM ([DASH], sezione 5.8.4.1).

1.1 Ambito

Come usare Microsoft PlayReady come schema di protezione del contenuto in un file ISO/IEC 23009-1 DASH Media Presentation Description.

1.2 Convenzioni

Le parole chiave "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY" e "OPTIONAL" in questo documento devono essere interpretate come descritto in [RFC2119]. Cioè:

  • "MUST", "REQUIRED" e "SHALL" indicano che la definizione è un requisito assoluto della specifica.

  • "MUST NOT" e "SHALL NOT" indicano che la definizione è un divieto assoluto della specifica.

  • "SHOULD" e "RECOMMENDED" indicano che potrebbero esserci motivi validi per ignorare un particolare elemento, ma le implicazioni complete devono essere comprese e valutate attentamente prima di scegliere un corso diverso.

  • "SHOULD NOT" e "NOT RECOMMENDED" indicano che potrebbero esserci motivi validi quando il comportamento specifico è accettabile, ma le implicazioni complete devono essere comprese e il caso deve essere valutato attentamente prima di implementare qualsiasi comportamento descritto con questa etichetta.

  • "MAY" e "OPTIONAL" significa che l'elemento è veramente facoltativo.

Torna all'inizio

1.3 Terminologia, abbreviazioni e acronimi

1.3.1 Terminologia

Termine Descrizione
Set di adattamento In DASH, un set di versioni codificate intercambiabili di uno o più componenti di contenuto multimediale.
Protezione del contenuto (CP) Processo di protezione di una risorsa protetta successiva al recapito a un dispositivo client.
Licenza incorporata Una licenza archiviata nell'oggetto PlayReady (PRO).
Archivio licenze incorporate (ELS) Record nell'oggetto PlayReady (PRO) per l'archiviazione delle licenze incorporate.
Identificatore univoco globale (GUID) Numero di riferimento univoco, rappresentato come trattino separato da una stringa esadecimale di 32 caratteri e in genere archiviata come intero a 128 bit.
Segmento di inizializzazione Un segmento DASH contenente i metadati necessari per presentare i flussi multimediali incapsulati nei segmenti multimediali; nel caso di ISO Media, un'intestazione di file.
Identificatore di chiave (KID) UUID che identifica in modo univoco una chiave che protegge contenuto, licenze o altre informazioni riservate; nel caso di PlayReady, archiviato come GUID.
Rotazione delle chiavi Modifiche periodiche alla chiave di crittografia associata ai supporti. In genere questo significa
Licenza foglia Una licenza la cui chiave simmetrica viene crittografata usando una chiave simmetrica in una licenza radice.
Licenza Struttura dei dati PlayReady che include criteri e una chiave simmetrica crittografata.
URL acquisizione licenze (LAURL) URL del servizio Web PlayReady di acquisizione delle licenze.
Catena di licenze Una catena di licenze è costituita da una licenza radice e da una licenza foglia. Una licenza foglia può avere più licenze radice e una licenza radice può avere più licenze foglia. Esiste una catena di licenze per ogni coppia.
Profilo live Profilo live in formato file multimediale ISO Base (vedere la sezione 8.4 di [DASH]). Il profilo live è ottimizzato per la codifica live, in cui ogni segmento di film può essere richiesto immediatamente dopo la codifica usando un URL generato dal modello.
Presentazione multimediale Raccolta di metadati e dati multimediali che possono essere scaricati e sottoposti a rendering come presentazione multimediale, come definito in ISO/IEC 23009-1.
Descrizione presentazione multimediale (MPD) Descrizione formale del documento XML di una presentazione multimediale definita in ISO/IEC 23009-1.
Segmento multimediale Un segmento DASH conforme a un formato multimediale e consente la riproduzione, magari combinata con altri segmenti multimediali e/o un segmento di inizializzazione.
Box film ('moov') In Formato file multimediale di base ISO, la casella le cui caselle secondarie definiscono i metadati per una presentazione multimediale [ISOBFF].
Casella Frammento film ('moof') In formato file multimediale DI BASE ISO, la casella Frammento filmato estende la presentazione multimediale nel tempo [ISOBFF], ed è contenuta in un segmento multimediale DASH.
Profilo on demand Il formato di file multimediale ISO Base su richiesta (vedere la sezione 8.3 di [DASH]). Il profilo On Demand offre il supporto di base per il contenuto on demand. Ogni rappresentazione viene fornita come singolo segmento, i sottosegmenti vengono allineati tra le rappresentazioni di un set di adattamento e i sottosegmenti iniziano con un punto di accesso di flusso corrispondente a un segmento di film.
Periodo Intervallo di una presentazione multimediale.
Oggetto PlayReady (PRO) Oggetto binario contenente un numero variabile di record, inclusi facoltativamente i record PRH e ELS. Questi record contengono informazioni relative alle licenze e all'acquisizione di licenze (vedere [PRO]).
Casella Intestazione specifica del sistema protezione ('pssh') Nel formato del file multimediale di base ISO la casella Intestazione specifica del sistema di protezione contiene i metadati necessari per un sistema specifico di protezione del contenuto per acquisire una licenza e decrittografare il contenuto multimediale [ISOBFF].
Rappresentazione Una delle opzioni alternative del componente contenuto multimediale durante un periodo definito, ad esempio un file ISO Media. Viene descritto da un elemento MPD Representation ([DASH], sezione 5.3.5).
Intestazione PlayReady (PRH) Un record nell'oggetto PlayReady (PRO) contenente i metadati necessari per decrittografare il contenuto multimediale, inclusi uno o più ID chiave e URL di acquisizione delle licenze (vedere [PRH]).
Licenza radice Licenza la cui chiave simmetrica viene usata per crittografare una chiave simmetrica in una licenza foglia
Segment In DASH un elemento in un MPD che fa riferimento a una risorsa multimediale con un URL HTTP e un intervallo di byte facoltativo.
Indice segmento Mapping dell'indice dell'intervallo di tempo a byte all'interno di un segmento multimediale separato da MPD, definito come casella "sidx" del supporto ISO.
Punto di accesso al flusso (SAP) Posizione in una rappresentazione che consente la riproduzione del segmento multimediale utilizzando solo i dati di rappresentazione da tale posizione in avanti.
Sottosegment In DASH si tratta di un'unità all'interno di un segmento multimediale indicizzato da un indice segmento. Un segmento di film viene indirizzato come subsegment in DASH On Demand Profile, ma un segmento in DASH Live Profile.
Casella Track Encryption (Traccia crittografia) In Formato file multimediale di base ISO la casella Crittografia traccia ('tenc') descrive i parametri di crittografia predefiniti per una traccia [CENC], [ISOBFF].
UUID Identificatore matematicamente univoco rappresentato come numero o stringa come specificato in [X.667]
Video su richiesta (VOD) Sistema che consente all'utente finale di selezionare e guardare il contenuto video su richiesta. Sia DASH Live Profile che DASH On Demand Profile possono essere usati per la presentazione VOD.

1.3.2 Abbreviazioni e acronimi

Abbr. Significato
CP Protezione del contenuto
DASH Streaming adattivo dinamico su HTTP
ELS Archivio licenze incorporate
GUID Identificatore univoco globale
RAGAZZO Identificatore di chiave
LAURL URL di acquisizione della licenza
MPD Descrizione presentazione multimediale
PRH Intestazione PlayReady
PRO Oggetto PlayReady
SAP Punto di accesso al flusso
UUID Identificatore univoco universale
VOD Video su richiesta

1.4 Riferimenti

1.4.1 Riferimenti normativi

Codice Riferimento normativo
[CENC] ISO/IEC FDIS 23001-7:2016 "Information technology – MPEG systems technologies – Part 7: Common encryption in ISO base media file format files", https://www.iso.org/standard/68042.html
[DASH] ISO/IEC 23009-1:2014, Seconda edizione, "Information technology — Dynamic adaptive streaming over HTTP (DASH) — Part 1: Media presentation description and segment formats",http://standards.iso.org/ittf/PubliclyAvailableStandards/c065274_ISO_IEC_23009-1_2014.zip
[EME] "Encrypted Media Extensions", Raccomandazione W3C 18 settembre 2017https://www.w3.org/TR/encrypted-media/
[PRH] "intestazione Microsoft PlayReady, vedere Specifica dell'intestazione PlayReady
[PRO] "Microsoft PlayReady Oggetto, vedere Specifica dell'intestazione PlayReady
[RFC2119] " Parole chiave per l'uso nelle RFC per indicare i livelli di requisito ", S. Bradner, marzo 1997, http://www.ietf.org/rfc/rfc2119
[RFC3629] "UTF-8, un formato di trasformazione iso 10646", F. Yergeau, novembre 2003, http://tools.ietf.org/html/rfc3629
[RFC4122] "A Universally Unique IDentifier (UUID) URN Namespace", P. Leach, M. Mealling, R. Indubbiamente, Luglio 2005,http://www.ietf.org/rfc/rfc4122.txt
[X.667] "Information technology – Open Systems Interconnect – Procedures for the operation of OSI Registration Authority: Generation and registration of Universally Unique Identifiers (UUID) and their use asN.1 object identifier components" Series X ITU-T Recommendationhttp://www.itu.int/rec/T-REC-X.667-201210-I/en

1.4.2 Riferimenti informativi

Codice Informazioni di riferimento
[CPSID] Forum del settore DASH, "Identificatori specifici del sistema di protezione",http://dashif.org/identifiers/content_protection/
[DASHIF] Forum del settore DASH, "Linee guida per l'implementazione: punti di interoperabilità DASH-IF", 07 settembre 2017, versione 4.1,https://dashif.org/docs/DASH-IF-IOP-v4.3.pdf
[ISOBFF] ISO/IEC 14496-12, Fourth Edition (correzione versione 2012-09-15), "Information technology – Coding of audio-visual objects – Part 12: ISO Base Media File Format",http://standards.iso.org/ittf/PubliclyAvailableStandards/c061988_ISO_IEC_14496-12_2012.zip

Torna all'inizio

1.5 Cronologia modifiche

Versione Data Dettagli
Versione 1.3 15 febbraio 2018 Chiarire il supporto per vettori di inizializzazione a 16 byte (IV a 16 byte).
Versione 1.2 8 ottobre 2014 1) Modifiche per CENC 2nd edition
2) Modifiche relative agli elementi del descrittore DASH MPD ContentProtection
3) Modifiche nella terminologia per l'aggiunta e i chiarimenti dei termini
4) Modifiche ai riferimenti normativi e informativi per fare riferimento alla versione più recente
5) Chiarire la rappresentazione kid e l'endianness nelle caselle ISOBFF, PRO e PlayReady.
Versione 1.1 18 febbraio 2013 Chiarire la rappresentazione SystemID playReady.
Il SystemID PlayReady è 9a04f079-9840-4286-ab92-e65be0885f95.
Rappresentazione big endian = {0x9A, 0x04, 0xF0, 0x79, 0x98, 0x40, 0x42, 0x86, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}.
Rappresentazione endian piccola = {0x79, 0xF0, 0x04, 0x9A, 0x40, 0x98, 0x86, 0x42, 0xAB, 0x92, 0xE6, 0x5B, 0xE0, 0x88, 0x5F, 0x95}.
Versione 1.0 17 luglio 2012 Versione iniziale



2. Schema di protezione del contenuto DASH PlayReady

Microsoft PlayReady supporta i nuovi standard ISO/IEC 23009-1 [DASH] e ISO/IEC 23001-7 [CENC]. Questa specifica illustra in dettaglio come creare un file DASH Media Presentation Description segnalando l'uso di Microsoft PlayReady per le rappresentazioni multimediali isobase media format, sia per gli scenari di streaming adattivi on demand ([DASH], sezione 8.3) sia per gli scenari di streaming adattivi ([DASH], sezione 8.4).

I quattro scenari che sono l'obiettivo di questa specifica sono VOD o presentazioni live di contenuti multimediali:

  1. crittografato con una singola chiave

  2. dove alcuni contenuti sono crittografati e alcuni contenuti sono in chiaro

  3. con rotazione delle chiavi senza licenze foglia incorporate

  4. con rotazione delle chiavi con licenze foglia incorporate

2.1 Elementi del descrittore DASH ContentProtection

DASH definisce due tipi di elementi del descrittore ContentProtection per i supporti ISO ([DASH] sezioni 5.3.7.2-Table 9, 5.8.5.2 e 5.8.4.1):

  1. Con @schemeIdUri=”urn:mpeg:dash:mp4protection:2011” @value=”<scheme>”
  2. Con @schemeIdUri=”urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” @value=”DRMNAME version”

Il primo tipo di descrittore indica il codice di quattro caratteri ("4CC") dello schema di crittografia contenuto nella casella informazioni sullo schema di protezione ('schi') in ogni traccia ISO Media crittografata. Questo tipo di descrittore DEVE essere sempre presente in modo che i giocatori siano consapevoli che il contenuto è crittografato e può determinare se è in grado di decrittografare lo schema di crittografia prima di tentare di scaricarlo e riprodurlo.

Il secondo tipo di descrittore indica la stringa UUID per un sistema DRM specifico in grado di fornire una licenza e una chiave di decrittografia per il set di adattamento associato. Le specifiche dell'applicazione, ad esempio quelle del DASH Industry Forum, DELE e DECE vincolano tutte le rappresentazioni in un set di adattamento per condividere le stesse chiavi e le stesse licenze per abilitare il cambio adattivo facile, che viene eseguito limitando i descrittori ContentProtection dal livello rappresentazione del MPD. La stringa UUID è uguale al campo SystemID specificato da ISO Media Protection System Specific Information Box ('pssh') che PUÒ essere presente nel Movie Box ('moov') di un file o un segmento di inizializzazione DASH.

Nota La casella "pssh" include un SystemID, un UUID [X.667] che identifica in modo univoco il sistema di protezione del contenuto. Il SystemID PlayReady è 9a04f079-9840-4286-ab92-e65be0885f95.

I valori SystemID per i sistemi DRM vengono registrati in: https://dashif.org/identifiers/content_protection/

Ogni elemento AdaptationSet PUÒ elencare più descrittori DRM per indicare che le licenze sono disponibili per più sistemi DRM. Ogni sistema DRM può specificare elementi e attributi nel proprio spazio dei nomi e renderli facoltativi o necessari nei descrittori usando il relativo SystemID.

La seconda edizione di Common Encryption ([CENC] sezione 11) specifica un elemento cenc:pssh facoltativo che può essere usato da tutti i descrittori drm ContentProtection per migliorare l'interoperabilità. Specifica anche un attributo cenc:default_KID consigliato per l'inclusione nel descrittore mp4protection per identificare la licenza richiesta in un'unica posizione per tutti i sistemi. L'elemento cenc:pssh contiene una struttura di caselle "pssh" completa, quindi viene elaborata in modo identico dall'API EME (Encrypted Media Extension) nei Web browser [EME].

I sistemi DRM possono fornire informazioni sull'acquisizione delle licenze in:

  1. Elemento cenc:pssh in un descrittore ContentProtection nel MPD
  2. Casella "pssh" nella casella "moov" di un file o segmento di inizializzazione
  3. Entrambi gli elementi precedenti (in questo caso, l'elemento cenc:pssh ha la precedenza)

A seconda del flusso di lavoro, può essere più efficiente incorporare le informazioni sull'acquisizione delle licenze in una casella "pssh" in ogni file di un set di adattamento durante la codifica o la creazione di pacchetti; o può essere più efficiente incorporare un elemento cenc:pssh in un MPD al momento dell'offerta di una presentazione di streaming. Per lo streaming live, è preferibile usare cenc:pssh nel MPD per abilitare l'acquisizione anticipata delle licenze, anziché attivare molte richieste di licenza simultanee al momento della prima casella Segmento di inizializzazione e 'pssh' viene recapitata contemporaneamente a milioni di visualizzatori. Le informazioni sull'acquisizione delle licenze in MPD consentono a diversi servizi di streaming di usare server licenze diversi, modificarli nel tempo e così via, senza creare e gestire file multimediali separati.

Nel caso di PlayReady, un oggetto PlayReady (PRO) [PRO] può essere contenuto in un elemento cenc:pssh, un elemento mspr:pro o una casella "pssh" per abilitare l'acquisizione delle licenze. L'elemento mspr:pro è definito da Microsoft PlayReady e include solo le informazioni PRO [PRO], non la struttura box inclusa in "pssh" e cenc:pssh. L'inclusione di mspr:pro e cenc:pssh consentirà ai vecchi giocatori di includere un giocatore basato su Silverlight e nuovi giocatori, tra cui pagine Web che usano script per riprodurre presentazioni DASH protette nei browser HTML5.

Nota In questa specifica 'mspr' è 'urn:microsoft:playready', definito da xmlns:mspr="urn:microsoft:playready".

Torna all'inizio

2.1.1 Correggere PRO nel segmento di inizializzazione o contenuto multimediale

Se è presente un segmento di inizializzazione contenente il PRO corretto o se il contenuto multimediale include una casella "pssh" PlayReady con il pro corretto, l'elemento descrittore ContentProtection seguente con l'identificatore specifico del sistema PlayReady Content Protection [CPSID] DEVE essere usato in un elemento AdaptationSet in un MPD per indicare la disponibilità di una licenza PlayReady:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>

PlayReady supporta lo standard CeNC (Common Encryption). Quando i metadati di acquisizione della licenza vengono archiviati nel segmento di inizializzazione o nel contenuto multimediale 'pssh', l'elemento Delscriptor PlayReady ContentProtection DOVREBBE essere presente.

L'elemento descrittore ContentProtection seguente deve essere presente in ogni set di adattamento protetto e una singola istanza indica lo schema di crittografia per tutti i drM che supportano lo schema "cenc".

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc"/>

2.1.2 Inclusione di un oggetto PlayReady nel MPD

Esistono più situazioni in cui potrebbe essere necessario includere l'oggetto PlayReady [PRO] nell'elemento Descrittore PlayReady ContentProtection. Ad esempio:

  • Presentazione in cui la casella "pssh" PlayReady è assente

  • È necessario eseguire l'override di una presentazione in cui il pro trovato nella casella "pssh" PlayReady

Per identificare PlayReady come schema di protezione del contenuto e includere PRO nell'elemento ContentProtection Descriptor, è consigliabile usare sia la sintassi cenc:pssh in base a [CENC] che alla sintassi mspr:pro per la compatibilità con le versioni precedenti come indicato di seguito:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
  	<cenc:pssh>
          <!-- *base64-encoded PlayReady ‘pssh’ complete box* -->
  	</cenc:pssh>
  	<mspr:pro>
          <!-- *base64-encoded PlayReady Object* -->
    </mspr:pro>
</ContentProtection>

La regola seguente DEVE essere seguita quando si include una casella "pssh" PlayReady e un PRO nell'elemento Descrittore Di protezione del contenuto PlayReady:

  • Se cenc:pssh o mspr:pro è incluso nell'elemento descrittore PlayReady ContentProtection:

    • Se un pro è incluso in una casella di intestazione specifica del sistema di protezione ('pssh') nel contenuto multimediale , un valore stringa con codifica KID64 (valore di tag KID di [PRO]) in un pro incluso sia in cenc:pssh che mspr:pro DEVE essere equivalente al valore stringa con codifica KID 64 in tale PRO incluso nella casella "pssh".

    • Se è presente un segmento di inizializzazione per la rappresentazione che contiene un elemento PlayReady 'pssh', un valore stringa con codifica KID 64 in un pro incluso sia in cenc:pssh che mspr:pro per tale rappresentazione deve essere equivalente al valore stringa con codifica KID 64 in tale PRO incluso nella casella "pssh" del segmento di inizializzazione. Si noti che un segmento di inizializzazione può essere una copia dell'intestazione file di un file di contenuto multimediale archiviato contenuto contenuto in un corpo della risposta HTTP, ma può anche essere generato dinamicamente e mai archiviato come file.

  • Se il contenuto multimediale contiene una casella "pssh" PlayReady con un PRO contenente una laURL e che LAURL differisce da LAURL nell'elemento PRO incluso nell'elemento ContentProtection Descriptor, l'elemento ContentProtection Descriptor LAURL avrà la precedenza.

Torna all'inizio

2.1.3 Inclusione dei campi casella di crittografia traccia nel MPD

Common Encryption indica la chiave usata per crittografare ogni campione multimediale (o non usato) con identificatori di chiave (KID) in ogni segmento di film. Alcune informazioni, ad esempio il default_KID in Track Encryption Box ('tenc') sono utili per segnalare nel MPD per determinare quale licenza è necessaria.

Potrebbero essere presenti periodi di presentazione multimediale non crittografati, seguiti da Periodi crittografati. I file multimediali e i flussi possono includere sezioni crittografate e non crittografate. Inoltre, l'identificatore di chiave (KID) può cambiare da Periodo a Periodo o da sezione a sezione. Le modifiche principali nelle sezioni di una traccia vengono segnalate usando il gruppo di esempio ISO Media e le caselle di descrizione del gruppo di esempio in ogni segmento di film. Vedere [CENC] per altre informazioni sui gruppi di esempio e sull'accesso a Vettori di inizializzazione e intervalli di crittografia subsample usando caselle "saio" e "saiz" che puntano a Informazioni ausiliarie di esempio.

Le impostazioni predefinite per le informazioni di Common Encryption sono codificate nella casella Track Encryption di ogni traccia ('tenc') (vedere [ISOBFF] e [CENC]) archiviata in una track box ('trak') in un'intestazione di file ISO e in un segmento di inizializzazione. L'identificatore di chiave predefinito (KID) nel campo Track Encryption Box (default_KID) DEVE essere comunicato anche nell'elemento ContentProtection Descriptor associato al set di adattamento della presentazione multimediale. Il cenc:default_KID può essere usato per identificare una licenza in grado di decrittografare i segmenti multimediali a cui fa riferimento l'elemento AdaptationSet padre.

Per includere l'identificatore di chiave predefinito (KID) nell'elemento descrittore Common Encryption ContentProtection, usare l'attributo cenc:default_KID seguente specificato in [CENC]:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>

Il campo default_KID in "tenc" è una matrice big endian di 16 byte ed è definito in precedenza per essere archiviato nell'attributo cenc:default_KID nell'elemento descrittore Common Encryption ContentProtection come stringa UUID.

Quando un elemento descrittore ContentProtection fa riferimento a diverse tracce e questi usano identificatori di chiave predefiniti diversi in caselle "tenc", l'attributo cenc:default_KID deve archiviare un elenco delimitato da spazi di tali valori default_KID diversi.

Anche l'attributo cenc:default_KID PUÒ essere contenuto nell'elemento Descrittore PlayReady ContentProtection.

La tabella 1 seguente elenca i campi specificati in ISO Media Track Encryption Box ('tenc') (vedere la sezione 9.2, [CENC]). Gli elementi seguenti della tabella 1 , dove sono definiti nello spazio dei nomi "mspr" per la prima edizione di Common Encryption (mspr:IsEncrypted, mspr:IV_size e mspr:kid), ma sono deprecati e sostituiti funzionalmente da cenc:default_KID specificati nella seconda edizione di Common Encryption [CENC]. I campi IV_size e IsEncrypted in Track Encryption Box ('tenc') vengono usati durante la decrittografia, ma non sono necessari negli elementi del descrittore MPD ContentProtection.

Nota Il valore KID in mspr:kid è un'interpretazione little endian con codifica base64 della matrice di byte "tenc" default_KID definita per archiviare un UUID big endian. Tutti i campi di Track Encryption Box possono essere copiati nel MPD, ma solo default_KID è necessario esporre per l'acquisizione delle licenze.

Tabella 1: tenere traccia dei campi casella di crittografia

elemento Default Descrizione
default_IsEncrypted 1 Flag che indica lo stato di crittografia degli esempi nel gruppo di esempio. I valori consentiti sono 0 (non crittografati) e 1 (crittografati).
default_IV_size 8 Dimensione in byte del campo Vettore di inizializzazione (IV).
- PlayReady versione 1, 2, 3 supportano 0 e 8.
- PlayReady versione 4 e versioni successive supportano 0, 8 e 16.
Se default_IsEncrypted =1, default_IV_size NON DEVE essere impostato su 0.

Poiché non tutti i giocatori abilitati per PlayReady supportano vettori di inizializzazione di 16 byte, è consigliabile usare solo un default_IV_size di 8 per contenuti crittografati, se il servizio deve raggiungere i giocatori PlayReady versione 1/2/3.
default_KID Nessuno Identificatore di chiave a 16 byte (128 bit) che identifica in modo univoco la chiave necessaria per decrittografare gli esempi associati. L'identificatore di chiave viene considerato come UUID in base a [CENC]
Si noti che, a differenza di KID nell'intestazione PlayReady [PRH], 'tenc' default_KID viene archiviato come matrice di 16 byte contenente un byte big endian ordinato, intero a 128 bit equivalente a binario (sezione 6.2) e numero (sezione 6.3) rappresentazioni UUID specificate in [X.667].

Nota: Il formato del default_KID in Track Encryption Box è diverso dal formato del valore KID incorporato in PRO in cenc:pssh, mspr:pro e mspr:kid. Per informazioni dettagliate, vedere la sezione 2.2.5, [CENC]e [PRO].

Per identificare PlayReady come schema di protezione del contenuto e includere i campi Track Encryption Box nel MPD, usare la sintassi seguente:

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
  <mspr:IsEncrypted>1</mspr:IsEncrypted>
  <mspr:IV_size>8</mspr:IV_size>
  <mspr:kid>2ptZlGAMKtD5bfEnJXgJeA==</mspr:kid>
</ContentProtection>

Quando si include l'attributo cenc:default_KID nell'elemento Descrittore Common Encryption ContentProtection e nei campi Track Encryption Box nell'elemento Descrittore di crittografia comune, è necessario seguire le regole seguenti nell'elemento Descrittore di playReady ContentProtection:

  • La stringa KID nell'attributo cenc:default_KID nell'elemento Common Encryption ContentProtection Descriptor DEVE essere equivalente all'UUID default_KID nella casella Track Encryption per tale traccia.

  • Il valore mspr:IsEncrypted, mspr:IV_size e/o mspr:kid nell'elemento PlayReady ContentProtection Descriptor DEVE essere equivalente a quelli trovati nei campi default_IsEncrypted, default_IV_size o default_KID nella casella Track Encryption per tale traccia.

  • Se mspr:pro e cenc:pssh è incluso nell'elemento descrittore PlayReady ContentProtection (vedere la sezione 2.1.2) con i campi Track Encryption Box:

    • Il KID incorporato in PRO negli elementi mspr:pro e cenc:pssh DEVE essere equivalente alla default_KID nella casella Di crittografia traccia di tale traccia.

    • Kid nell'attributo cenc:default_KID nell'elemento Common Encryption ContentProtection Descriptor e nel valore mspr:kid nell'elemento Descrittore PlayReady ContentProtectionShall equivale al default_KID nella casella Track Encryption di tale traccia.

Nota Si noti che default_KID in Track Encryption Box viene interpretato come un UUID binario o numerico archiviato come matrice di byte big endian a 16 byte, come stringa sillabata UUID in cenc:default_KID e come stringa base64 codificata da rappresentazione GUID di byte little endian in PRO e mspr:kid; ma tutti devono essere rappresentazioni alternative dello stesso UUID. Vedere la sezione 2.2.5.

Torna all'inizio

2.2 Implementazione Consigli e requisiti

L'oggetto PlayReady (PRO) [PRO] può essere incluso nella casella intestazione specifica del sistema di protezione multimediale codificata ('pssh') [ISOBFF], il segmento di inizializzazione o codificato nel MPD stesso.

Una casella "pssh" può essere inserita nella casella Movie ('moov') o nella casella Frammento di film ('moof'). Ad esempio, una casella "pssh" può essere inserita nella casella "moov" per abilitare l'uso di Segmenti di inizializzazione ([DASH], sezione 5.3.9.5.2). Una casella "pssh" può essere inserita in ogni casella "moof" per comunicare le licenze foglia indicizzate da KID per la rotazione delle chiavi.

Il gruppo di esempio e le informazioni ausiliarie di esempio devono essere archiviate all'interno di qualsiasi segmento di film che vi fa riferimento. Una casella di descrizione gruppo di esempio ('sgdp') deve essere presente in ogni casella 'moof' quando è presente una casella da campione a gruppo ('sbgp'). Casella di offset delle informazioni ausiliarie di esempio ('saio') e casella di dimensioni ausiliarie di esempio ('saiz') devono essere presenti in ogni segmento di film di ogni traccia contenente una casella di crittografia traccia ('tenc'), con puntatori validi a Informazioni ausiliarie di esempio.

2.2.1 Generale

L'elemento Descrittore PlayReady ContentProtection può essere associato a Adaptation Sets o alle relative rappresentazioni, ma per il cambio e la conformità a velocità in bit adattiva senza problemi con le specifiche dell'applicazione DASH, l'elemento PlayReady ContentProtection Descriptor deve essere contenuto in un elemento AdaptationSet anziché in elementi Representation. Ciò garantisce che sia possibile usare una singola licenza e una configurazione decrittografia per tutti i segmenti in un set di adattamento.

È CONSIGLIABILe includere il descrittore ContentProtection PlayReady e REQUIRED per includere il descrittore DASH MP4 ContentProtection con il valore "cenc" nel MPD.

In questo modo, i drms che supportano "cenc" e dispongono di informazioni sull'acquisizione delle licenze in un'applicazione o in MPD o in un "pssh" nel segmento di inizializzazione per identificare che il contenuto è Common Encrypted, identificare la licenza necessaria (usando default_KID), acquisire una licenza e decrittografare il supporto.

È CONSIGLIABILe includere l'attributo @value con nome e versione "MSPR 2.0" oltre all'UUID nel descrittore ContentProtection PlayReady per il riconoscimento umano. Ad esempio:

<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="da9b5994-600c-2ad0-f96d-f12725780978"/>

<ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”/>

2.2.2 Precedenza della posizione PRO

Quando un'applicazione client trova un pro nel MPD, ha la precedenza su un PRO contenuto nel segmento di inizializzazione (vedere requisiti aggiuntivi di Segmento di inizializzazione PRO nella versione 2.2.3).

Quando un'applicazione client trova un pro nel MPD, l'intestazione Rights Management contenuta in tale PRO avrà la precedenza sulla Rights Management Intestazione in un PRO contenuto contenuto in una casella "pssh" nella casella "moov" del contenuto multimediale.

Quando un'applicazione client trova un pro nel segmento di inizializzazione, avrà la precedenza su un PRO contenuto in una casella "pssh" nell'intestazione della casella "moov" del contenuto multimediale (vedere requisiti aggiuntivi per segmento di inizializzazione PRO nella versione 2.2.3).

2.2.3 Dove includere il PRO

Pro deve essere presente in MPD o Nel segmento di inizializzazione. Può essere presente in entrambi. Nel MPD dovrebbe essere presente sia in un elemento mspr:pro che in un elemento cenc:pssh nel descrittore di protezione del contenuto PlayReady (mspr:pro per i giocatori legacy).

Un PRO nel segmento di inizializzazione o MPD PUÒ includere un'intestazione Rights Management.

Indipendentemente dal fatto che si usi o meno un segmento di inizializzazione, è consigliabile che MPD includa il pro corretto, in modo che le informazioni Rights Management intestazione possano essere acquisite senza scaricare il segmento di inizializzazione.

2.2.4 Cosa includere in MPD PRO

Pro può includere l'intestazione Rights Management e/o un archivio licenze incorporato.the PRO may include the Rights Management Header and/or an Embedded License Store (ELS).

È CONSIGLIABILe che MPD PRO includa l'intestazione Rights Management.

Non è consigliabile includere un els a meno che non sia necessario come parte di un dominio DRM o uno schema della catena di licenze.

2.2.5 Ordine byte KID

Gli identificatori di chiave (KID) in PlayReady vengono archiviati in una matrice di byte formattata come GUID (DWORD, WORD, WORD, 8 BYTE array) in ordine di byte little endian, che viene quindi codificato in base64 per l'archiviazione come stringa in PRO. Sia i server licenze PlayReady che i client PlayReady in un ecosistema PlayReady prevedono che kid nella licenza PRO e PlayReady sia una rappresentazione di ordine di byte little-endian di [GUID].

L'equivalente KID può essere rappresentato come stringa UUID ([X.667] sezione 6.4) o matrice di byte contenente un UUID in binario ordine byte big endian (sezione 6.2) o numero (sezione 6.3) come specificato in [X.667]. Common Encryption [CENC] e DASH usano queste rappresentazioni nell'attributo cenc:default_KID (stringa 6.4), Track Encryption Box ('tenc') e 'seig' Sample Group Description Box ('sgpd') (matrice di byte binaria 6.2 o 6.3).

Di conseguenza, a meno che non sia presente una modifica, il client deve convertire l'endianness della matrice di byte KIDs in modo che corrisponda alla licenza PlayReady.

Per convertire i KID nelle caselle cenc:default_KID e [ISOBFF] in PlayReady KID, usare il codice di esempio seguente:

// Create a PlayReady GUID from the KID value in ISOBFF box.
// Since the PlayReady Server always runs on an Intel processor,
// this will be a little endian representation.
// e.g. KID in Track Encryption Box is:
//      {f81d4fae-7dec-11d0-a765-00a0c91e6bf6}

byte[] tencKidBytes = new byte[] {
    0xf8, 0x1d, 0x4f, 0xae,
    0x7d, 0xec,
    0x11, 0xd0,
    0xa7, 0x65,
    0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6
};

Byte[] prKidBytes = new byte[16];

// Swap the endianness of the GUID value:
// - Reverse bytes 0 to 3,
// - swap bytes 4 and 5,
// - swap bytes 6 and 7, and
// - copy bytes 8-15 as-is without swapping

ConvertEndianness(tencKidBytes, prKidBytes);
Guid prKid = new Guid(prKidBytes);
void ConvertEndianness(byte[] original, byte[] guidBytes)
{
    System.Array.Copy(original, guidBytes, 16);
    Swap(ref guidBytes, 0, 3);
    Swap(ref guidBytes, 1, 2);
    Swap(ref guidBytes, 4, 5);
    Swap(ref guidBytes, 6, 7);
}

void Swap(ref byte[] bytes, int pos1, int pos2)
{
    byte temp = bytes[pos1];
    bytes[pos1] = bytes[pos2];
    bytes[pos2] = temp;
}

Tabella 2 : esempio di rappresentazione KID

Parametro KID Tipo Rappresentazione
RAGAZZO UUID BE Numero esadecimale f81d4fae7dec11d0a76500a0c91e6bf6
Sezione 6.3 di [X.667]
Attributo cenc:default_KID Stringa esadecimale UUID con trattini "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
Sezione 6.4 di [X.667]
KID in scatole ISOBFF Matrice di byte UUID BE Rappresentazione esadecimale è { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }
Sezione 6.2 di [X.667]
KID in PRO Stringa base64 della matrice di byte LE GUID "rk8d+Ox90BGnZQCgyR5r9g=="
(Rappresentazione esadecimale dei dati prima della codifica Base64 è { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 })
mspr:kid Stringa base64 di default_KID matrice di byte nella casella 'tenc' "+B1Prn3sEdCnZQCgyR5r9g=="
(Rappresentazione esadecimale dei dati prima della codifica Base64 è { 0xf8, 0x1d, 0x4f, 0xae, 0x7d, 0xec, 0x11, 0xd0, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 })
KID nella licenza PlayReady Matrice di byte GUID LE Rappresentazione esadecimale è { 0xae, 0x4f, 0x1d, 0xf8, 0xec, 0x7d, 0xd0, 0x11, 0xa7, 0x65, 0x00, 0xa0, 0xc9, 0x1e, 0x6b, 0xf6 }

Torna all'inizio



3. Esempio di descrizione presentazione multimediale

3.1 Correggere PRO nel segmento di inizializzazione o contenuto multimediale

Vedere la sezione 2.1.1 precedente.

<?xml version="1.0" encoding="utf-8"?>

<MPD
  xmlns="urn:mpeg:DASH:schema:MPD:2011"
  xmlns:cenc="urn:mpeg:cenc:2013"
  minBufferTime="PT2.00S"
  profiles="urn:mpeg:dash:profile:isoff-live:2011"
  type="static">
  <Period>
    <AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
      <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
      </ContentProtection>
      <Representation bandwidth="134878" id="audio">
        <SegmentList duration="4000" timescale="1000">
          <Initialization sourceURL="audio/init.mp4"/>
          <SegmentURL media="audio/seg-0000.m4f"/>
          <SegmentURL media="audio/seg-0001.m4f"/>
          <SegmentURL media="audio/seg-0002.m4f"/>
        </SegmentList>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

3.2 Inclusione di un oggetto PlayReady (PRO) nel MPD

Vedere la sezione 2.1.2 precedente.

<?xml version="1.0" encoding="utf-8"?>

<MPD
  xmlns="urn:mpeg:DASH:schema:MPD:2011"
  xmlns:cenc="urn:mpeg:cenc:2013"
  xmlns:mspr="urn:microsoft:playready"
  minBufferTime="PT4.00S"
  profiles="urn:mpeg:dash:profile:isoff-live:2011"
  type="static">
  <Period>
    <AdaptationSet mimeType="audio/mp4">
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="0b630844-cb17-496a-9700-3702e1d23ee2"/>
      <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95" value=”MSPR 2.0”>
<cenc:pssh>AAAAAJoE8HmYQEKGq5LmW+CIX5UAAALq6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</cenc:pssh>
<mspr:pro>6gIAAAEAAQDgAjwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AUgBBAGgAagBDAHgAZgBMAGEAawBtAFgAQQBEAGMAQwA0AGQASQArADQAZwA9AD0APAAvAEsASQBEAD4APABDAEgARQBDAEsAUwBVAE0APgBxAGgASwBXAEgASgBhAEwAMAAxAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AcABsAGEAeQByAGUAYQBkAHkALgBkAHkAbgBkAG4AcwAuAG8AcgBnAC8AYwBvAG4AdABvAHMAbwBzAHMAcAByAC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPAAvAEwAQQBfAFUAUgBMAD4APABEAFMAXwBJAEQAPgBpAEsARwBsAFcARwA0AEQAWABVAHEANAB3AGIAVwBnAFIATgBMAFIASgBnAD0APQA8AC8ARABTAF8ASQBEAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=</mspr:pro>
      </ContentProtection>
      <Representation bandwidth="134878" id="audio">
        <SegmentList duration="4000" timescale="1000">
          <Initialization sourceURL="audio/init.mp4"/>
          <SegmentURL media="audio/seg-0000.m4f"/>
          <SegmentURL media="audio/seg-0001.m4f"/>
          <SegmentURL media="audio/seg-0002.m4f"/>
        </SegmentList>
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>