dash-if implementation guidelines: content … · dash-if content protection information exchange...

26
DASH-IF Implementation Guidelines: Content Protection Information Exchange Format (CPIX) December 24, 2015 DASH Industry Forum Version 2.0 (Community Review)

Upload: trankhue

Post on 29-Aug-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

DASH-IF Implementation Guidelines:

Content Protection Information

Exchange Format (CPIX)

December 24, 2015

DASH Industry Forum

Version 2.0 (Community Review)

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 2

Scope

The scope of this document is to define a Content Protection Information Exchange Format

(CPIX) for MPEG-DASH and DASH-IF based video streaming. The CPIX file contains key

and DRM information used for encrypting and protecting DASH content, and can be used for

exchanging this information among entities needing it in many possibly different workflows

for preparing DASH content. The CPIX file itself can be encrypted and authenticated so that its

receivers can be sure that its confidentiality and integrity are also protected.

The current version of the CPIX document remains generic and only defines a container for

carrying key and DRM information used for encrypting and protecting DASH content. Future

versions of this document may also include, for example, definition of APIs for exchanging

CPIX files and additional specifications addressing some specific workflows.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 3

Disclaimer

This document is not yet final. It is provided for public review until March 31st, 2016. If you

have comments on the document, please submit comments at the following URL:

• at the github repository https://github.com/Dash-Industry-Forum/CPIX/issues

• at the public repository https://gitreports.com/issue/Dash-Industry-Forum/CPIX

Please add a detailed description of the problem and the comment.

Based on the received comments a final document will be published latest May 31st, 2016,

integrated in a new version of this document.

This is a document made available by DASH-IF. The technology embodied in this document

may involve the use of intellectual property rights, including patents and patent applications

owned or controlled by any of the authors or developers of this document. No patent license,

either implied or express, is granted to you by this document. DASH-IF has made no search or

investigation for such rights and DASH-IF disclaims any duty to do so. The rights and

obligations which apply to DASH-IF documents, as such rights and obligations are set forth

and defined in the DASH-IF Bylaws and IPR Policy including, but not limited to, patent and

other intellectual property license rights and obligations. A copy of the DASH-IF Bylaws and

IPR Policy can be obtained at http://dashif.org/.

The material contained herein is provided on an "AS IS" basis and to the maximum extent

permitted by applicable law, this material is provided AS IS, and the authors and developers of

this material and DASH-IF hereby disclaim all other warranties and conditions, either express,

implied or statutory, including, but not limited to, any (if any) implied warranties, duties or

conditions of merchantability, of fitness for a particular purpose, of accuracy or completeness

of responses, of workmanlike effort, and of lack of negligence.

In addition, this document may include references to documents and/or technologies controlled

by third parties. Those third party documents and technologies may be subject to third party

rules and licensing terms. No intellectual property license, either implied or express, to any

third party material is granted to you by this document or DASH-IF. DASH-IF makes no any

warranty whatsoever for such third party material.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 4

Contents

1.1 General ......................................................................................................................... 5

1.2 References ................................................................................................................... 5

1.3 Normative Language ................................................................................................... 5

1.4 Terms & Definitions .................................................................................................... 5

2.1 Introduction ................................................................................................................. 6

2.2 Overview of the End to End Architecture ................................................................... 6

2.3 Content On-Demand .................................................................................................... 7

2.4 Live .............................................................................................................................. 8

2.5 Catch-up ....................................................................................................................... 9

2.6 Electronic Sell Through ............................................................................................... 9

2.7 Requirements ............................................................................................................... 9

3.1 Introduction ............................................................................................................... 10

3.2 Structure Overview .................................................................................................... 10

3.3 Hierarchical data model ............................................................................................. 11

4.1 Encryptor Producer and Encryptor Consumer ........................................................... 19

4.2 Multiple Producers .................................................................................................... 21

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 5

1 Introduction

1.1 General

This document defines a container allowing the exchange of content protection information

between entities. Typically, content protection information is made of keys used for encrypting

content and any associated Digital Rights Management (DRM) specific information. There may

be one or several keys and these keys may be protected by one or several DRMs, hence there

may be one or several DRM specific information sets. There is no assumption on the entities

exchanging this information but it is not expected that a DASH client device will use this

exchange format. The goal is to allow entities involved in the content preparation workflow to

get the content protection information so that the MPD can be generated with all content

protection related information.

1.2 References

[DASH] ISO/IEC 23009-2:2014 Information technology - Dynamic adaptive streaming over

HTTP (DASH) - Part 1: Media presentation description and segment formats.

[DASH-IF-IOP] Guidelines for Implementation: DASH-IF Interoperability Points, version 3.2,

December 2015.

[DASH-attributes] http://www.dashif.org/identifiers/protection/

[RFC6030] IETF RFC 6030, “Portable Symmetric Key Container (PSKC)”, October 2010.

[CPIX-XML] http://dashif.org/wp-content/uploads/2015/12/DASH-IF-CPIX-v1.9.zip

1.3 Normative Language

See [DASH-IF-IOP] section 2.3.

1.4 Terms & Definitions

Content: One or more audio-visual elementary streams and the associated MPD if in DASH

format.

Content Key: A cryptographic key used for encrypting part of the Content.

Content Protection: The mechanism ensuring that only authorized devices get access to

Content.

CPIX Document: An XML-formatted document following this specification in order to

exchange Content Protection related information for DASH-based media distribution.

DRM Signalization: The DRM specific information to be added in Content for proper

operation of the DRM system when authorizing a device for this Content. It is made of

proprietary information for licensing and key retrieval.

PSSH: “Protection System Specific Header” box that is part of an ISOBMFF file. This box

contains DRM Signalization.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 6

2 Use Cases and Requirements

2.1 Introduction

Content Keys and DRM Signalization need to be created and exchanged between some system

entities when preparing content. The flows of information are of very different nature depending

on where Content Keys are created and also depending on the type of Content that can be either

On-Demand or Live.

This section presents different use cases where such exchanges are required.

2.2 Overview of the End to End Architecture

This informative section gives a general overview of the context in which content protection

information made of Content Keys and DRMs Signalization need to be exchanged between

entities in the backend. It complements section 7.5 of [DASH-IF-IOP] by putting more

emphasis on the backend aspects.

Figure 1: Logical roles that exchange DRM information and media.

Figure 1 shows logical entities that may send or receive DRM information such as media keys,

asset identifiers, licenses, and license acquisition information. A physical entity may combine

multiple logical roles, and the point of origin for information, such as media keys and asset

identifiers, can differ; so various information flows are possible. This is an informative example

of how the roles may be distributed to facilitate the description of workflow and use cases.

Alternative roles and functions can be applied to create conformant content. The different roles

are:

Content Provider – A publisher who provides the rights and rules for delivering protected

media, also possibly source media (mezzanine format, for transcoding), asset identifiers, key

identifiers (KID), key values, encoding instructions, and content description metadata.

Encoder – A service provider who encodes Adaptation Sets in a specified media format,

number of streams, range of bitrates and resolutions, seamless switching constraints, etc.,

possibly determined by the publisher. An asset identifier needs to be assigned to each encoded

Content Provider

Encoder

Packager Encryptor

MPD Creator

Player &DRM Client

DRM Service

DRM Information

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 7

track in order to associate a key identifier, a Representation element in an MPD, a possible

‘pssh’ box in the file header, and a DRM license separately downloaded.

Packager / Encryptor – A service provider who encrypts and packages media files, inserting

default_KID in the file header ‘tenc’ box, initialization vectors and subsample byte ranges in

track fragments indexed by ‘saio’ and ‘saiz’ boxes, and possibly packages ‘pssh’ boxes

containing license acquisition information (from the DRM Provider) in the file header. Tracks

that are partially encrypted or encrypted with multiple keys require sample-to-group boxes and

sample group description boxes in each track fragment to associate different KIDs to groups of

samples. The Packager could originate values for KIDs, media keys, encryption layout, etc.,

then send that information to other entities that need it, including the DRM Provider and

Streamer, and probably the Content Provider. However, the Packager could receive that

information from a different point of origin, such as the Content Provider or DRM Provider.

MPD Creator – The MPD Creator is assumed to create one or more types of DASH MPD, and

provide indexing of Segments and/or ‘sidx’ indexes for download so that players can byte

range index Subsegments. The MPD must include descriptors for Common Encryption and

DRM key management systems, and should include identification of the default_KID for

each AdaptationSet element, and sufficient information in UUID

ContentProtection Descriptor elements to acquire a DRM license. The default_KID

is available from the Packager and any other role that created it, and the DRM specific

information is available from the DRM Provider.

DRM Client – Gets information from different sources: MPD, Media files and DRM License.

DRM Service – The DRM Provider creates licenses containing a protected media key that can

only be decrypted by a trusted client.

The DRM Provider needs to know the default_KID and DRM SystemID and possibly

other information like asset ID and player domain ID in order to create and download one or

more licenses required for a Presentation on a particular device. Each DRM system typically

has different license acquisition information, a slightly different license acquisition protocol,

and a different license format with different playback rules, output rules, revocation and

renewal system, etc. The DRM Provider typically must supply the Streamer and the Packager

license acquisition information for each UUID ContentProtection Descriptor element or

‘pssh’ box, respectively.

The DRM Service may also provide logic to manage key rotation, DRM domain management,

revocation and renewal and other content protection related features.

2.3 Content On-Demand

The flow for preparing Content On-Demand requires that a file is available non-encrypted,

ideally in the maximum resolution so that DASH content can be prepared.

One possible flow is that a Content Management System (CMS) creates a workflow ensuring

that DASH Content is prepared. The CMS makes the file available to a transcoder. The

transcoder outputs the segmented files that can be encrypted. The encryption engine either

generates the Content Keys or requests them from a DRM system. The DRM system also

provides any information to be added in the PSSH boxes. When the encrypted DASH Content

is ready, the MPD is generated by a “MPD Generator”. It asks the DRM system the required

DRM signalization to be added in the MPD. DASH content is then uploaded by the CMS on a

CDN making it available to users.

In parallel, editorial metadata is exported to the Portal, enabling access to users. DRM systems

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 8

receive relevant metadata information that needs to be included in the license (output controls)

when creating a license.

This flow is summarized in Figure 2 where arrows show the flow of information.

Figure 2 Typical work flow for encrypted On-Demand content generation

2.4 Live

The flow for preparing Live content is different to On-demand. In the live case, metadata is

regularly imported with new or updated information. Metadata can include different type of

information on the EPG events such as the duration of the event, the list of actors, the output

controls usage rules, a purchase window…

Content is continuously received, transcoded in the desired format and encrypted if any type of

entitlement is required.

One or many Content Keys can be used if key rotation is used or not. Such setting is static and

configuration is hard-coded in the relevant equipment, hence a CMS is not required for this

workflow to operate. As for Content on-Demand, keys are generated by the encryption engine

or the DRM system and are available to all DRM systems and the encryption engine at the right

moment depending on how these keys are used. The encoder requests to the DRM systems their

specific signaling, if any, to be added in the MPD.

Encrypted segments and the MPD are uploaded to a CDN making it available to users.

Metadata is exported to the Portal, enabling access to users. DRM systems receive relevant

metadata information that needs to be included in the license (output controls).

This flow is summarized in Figure 3where arrows show the flow of information.

Figure 3 Typical work flow for encrypted Live content generation

Transcoder Encryption

Engine

MPD

Generator CDN

DRM System

Content Management

System Portal

Transcoder Encryption

Engine

MPD

Generator CDN

DRM System

Content Management

System Portal

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 9

2.5 Catch-up

Live Content has already been encoded and encrypted (if required) for Live unicast. All DRM

systems have access to the keys.

Additional metadata may be required for ensuring that events are effectively available in catch-

up. These are made available to the Portal and some Live events are identified as being able to

be replayed as On-demand. Optionally, the operator may choose to replace the advertising

content with targeted ads.

2.6 Electronic Sell Through

In order to make available its Content in a defined and controlled quality, a content owner is

preparing it. Preparation includes transcoding to the desired format and encryption of the

resulting segments. The content owner is generating also the Content Key(s). At the end of the

process, Content is ready and stored along with the Content Key(s).

Later the content owner distributes the prepared Content to multiple locations, in addition

metadata describing it is also made available to retail platforms so that Content becomes salable

on multiples Portals. In parallel, the content owner distributes the Content Key(s) to any

authorized DRM system. A DRM system is authorized if it is one used by the Portal that has

this Content for sale.

2.7 Requirements

Based on the use cases, the following requirements are collected to motivate the design of the

solution in the remainder of the documents:

• It shall be possible to exchange Content Key(s) and DRM Signalization between entities

involved in DASH Content preparation workflows, an example of such interface where

the exchange shall be possible is between a DRM system and the encryption engine.

• It shall be possible that the MPD generator receives DRM signalization for several

DRMs.

• Update of Content Key(s) shall be possible at periodic time or based on events,

following Section 5 of [DASH-IF-IOP]. Some period of time could be in the clear (no

encryption).

• It shall allow generating MPD conformant to [DASH-IF-IOP].

• Content Key(s) shall be secured over the interface.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 10

3 XSD Schema Definition

3.1 Introduction

This section describes the Content Protection Information eXchange (CPIX) format to provide

a framework to securely exchange Content Key(s) and DRM Signalization between different

system entities (see Section 2.2). This is an XML file that is described by the XSD provided in

[CPIX-XML]. This section describes in detail the elements and attributes included in the

schema.

3.2 Structure Overview

The structure is similar to the MPD structure defined in [DASH]. A Presentation is the

root element of this schema and contains all information required for getting the common

encryption keys which is used to encrypt all representations within an adaptation sets. It follows

these principles:

Following the constraints defined in Section 5.4.4 of [DASH-IF-IOP], it is assumed that

the same key is used for encrypting all Representations of a given Adaptation Set. For

supporting key rotation, several Content Keys can be used for encrypting all

Representations, each key with a validity period (@start, @end see Section 3.3.5)

The same XML file can be shared between several receiving entities, hence, each one

must be able to decrypt keys and must be properly identified.

Taking this into account, the Presentation contains:

DeliveryData: each instance of the DeliveryData describes an entity which permitted

to decrypt common content encryption key which XML file contains.

AdaptationSet: Each AdaptationSet element contains the DefaultKey and/or

ContentKey information (the Content Key(s) itself and all associated DRM

Signalizations which is protection system specific information for every DRM.)

UpdateHistoryItem: Each UpdateHistoryItem element contains an update version

number and an identifier of the entity which produced the update. Other elements in the

Presentation are linked to a specific update by update version number

(@updateVersionNumber).

The Content Keys can be encrypted inside the XML file using information provided in the

DeliveryData element. The XML file also allows storing the Content Keys in the clear and

then the protection of the delivery mechanism is used for securely deliver the file.

Figure 4 shows the first elements of the structure. Detailed description of the structure is given

in the following sections.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 11

Figure 4: Content Protection Information Exchange Format high level view.

3.3 Hierarchical data model

In all tables of this section, the following convention is used

Elements are bold and the “Use” values are <minOccurs>…<maxOccurs>

(N=unbounded).

@attributes are non-bold preceded with an @ and the “Use” values are

M=Mandatory, O=Optional, OD=Optional with Default Value, CM=Conditionally

Mandatory.

The XSD schema for this model is provided in [CPIX-XML].

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 12

3.3.1 Presentation

Element or Attribute Use Description

Presentation The root element that carries the Content Protection

Information for a Media Presentation.

@id M It specifies an identifier for the Media Presentation. It is

also referred as the Asset ID. It is recommended to use an

identifier that is unique within the scope in which this key

file is published.

@name O It is the name of the Presentation.

DeliveryData 0…N It contains the required information allowing defining

which entities can get access to the keys encrypted in this

key file.

There is one DeliveryData element per entity capable of

decrypting keys in the key file. If this element is not present,

then the keys are in the clear in the file.

AdaptationSet 1...N It contains all information on keys used for encrypting the

Adaption Sets and all the DRM information required for

properly generate content and create the MPD.

There is one AdaptationSet element per Adaptation Set

the Representation has.

UpdateHistoryItem 0..N It contains metadata about an update made to the CPIX

document. There should be one entry for each instance in

which an entity updated the document.

3.3.2 Delivery Data

Element or Attribute Use Description

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 13

DeliveryData

@id M It specifies an identifier for the Delivery Data. It is

recommended to use an identifier that is unique within the

scope in which this CPIX document is published.

@name O It is the name of the Delivery Data.

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the DeliveryData element

was added or modified.

DeliveryKey 1 It contains the crypto material required to uniquely identify

the entity capable of decrypting the DefaultKey and

ContentKey elements in this CPIX document.

Description 0…1 A description of the element.

SendingOrganization 0…1 The description, such as the name, of the entity generating

this CPIX document.

SenderPointOfContact 0…1 The information, such as an email address, of the Sending

Organization.

ReceivingOrganization 0…1 The description, such as the name, of the entity capable of

decrypting keys in this CPIX document.

3.3.3 Adaptation Set

Element or Attribute Use Description

AdaptationSet

@id M It specifies an identifier for the Adaptation Set. It is

recommended to use an identifier that is unique within the

scope in which this CPIX document is published.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 14

@name O It is the name of the Adaptation Set.

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the AdaptationSet

element was added or modified.

DefaultKey 0…1 This is the default key as defined in [DASH] and all related

DRM information.

ContentKey 0…N These are the keys and all related DRM information used

when the Adaptation Set is encrypted with key rotation.

3.3.4 Default Key

Element or Attribute Use Description

DefaultKey

@id M It specifies an identifier for the Default Key. It is

recommended to use an identifier that is unique within the

scope in which this CPIX document is published.

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the DefaultKey element was

added or modified.

DRMSystem 1…N This is the DRM information for every DRM that is used for

protecting all Representations part of this Adaptation Set.

There are as many DRMSystem elements as there are DRM

allowing accessing this Adaptation Set.

Key 1…N This is the key itself. It is represented as KeyType as defined

in [RFC6030]. It can be encrypted or in the clear.

If it is encrypted, then the Extension element shall contain

a DeliveryKeyReference element allowing retrieving the

information allowing decrypting this key.

If it is encrypted, there are as many Key elements as there are

DeliveryData capable of accessing (decrypting) it.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 15

3.3.5 Content Key

Element or Attribute Use Description

ContentKey

@id M It specifies an identifier for the Content Key. It is

recommended to use an identifier that is unique within the

scope in which this CPIX document is published.

@start O This is the absolute time when this key starts to be used for

encrypting the Representations part of this Adaptation Set.

The attribute must be present if the @cryptoPeriod attribute

is not present.

@end O This is the absolute time when this key stops to be used for

encrypting the Representations part of this Adaptation Set.

If not present, then the end time is defined by the earliest

@start time of another ContentKey element part of the same

AdaptationSet element.

@cryptoPeriod O This is the unique identifier of the period of time when this

key starts to be used for encrypting the Representations part

of this Adaptation Set. The attribute must be present if the

@start attribute is not present.

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the ContentKey element was

added or modified.

DRMSystem 0…N This is the DRM information for every DRM that is used for

protecting all Representations part of this Adaptation Set.

There are as many DRMSystem elements as there are DRM

allowing accessing this Adaptation Set.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 16

Key 1…N This is the key itself. It is represented as KeyType as defined

in [RFC6030]. It can be encrypted or in the clear.

If it is encrypted, then the Extension element shall contain

a DeliveryKeyReference element allowing retrieving the

information allowing decrypting this key.

If it is encrypted, there are as many Key elements as there are

DeliveryData capable of accessing (decrypting) it.

3.3.6 DRM System

The DRMSystem element contains all information on a DRM that can be used for retrieving

licenses for getting access to an Adaptation Set.

Element or Attribute Use Description

DRMSystem

@systemId M This is the unique identifier of the DRM system. Values are

defined on [DASH-attributes].

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the DRMSystem element was

added or modified.

PSSH 0…1 This is the full PSSH box that is added either under the moov

box or the moof box in the ISOBMFF depending on the

parent element of the DRMSystem element (DefaultKey and

ContentKey respectively).

ContentProtectionData 0…1 This is the full XML element to be added in the MPD under

the ContentProtection element for this DRM.

CustomData 0…1 This is any data the DRM system needs to exchange with

other entities for proper generation of the MPD.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 17

3.3.7 Delivery Key Reference

The DeliveryKeyReference element is used for linking a Key element to a DeliveryData

element. It is added under the Extension element of the Key element as allowed by [RFC6030].

Element or Attribute Use Description

DeliveryKeyReference

@updateVersion O It has the same value as the @id of the UpdateHistoryItem

element giving details on when the DeliveryKeyReference

element was added or modified.

As an extension, updating the DeliveryKeyReference

element means that the Key element has also been added or

modified.

ID M This is the identifier of the DeliveryData element that

contains the required key material for decrypting the Key

element it is inserted in.

3.3.8 Update History Item

Element or Attribute Use Description

UpdateHistoryItem

@id M This is the version number for the document update. Each

UpdateHistoryItem element contains a unique @id value.

It is a monotonically increasing number, starting at value 1.

@source M This is the identifier for the entity which performed the

document update.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 18

@date M This is the date and time when the document update was

performed.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 19

4 Workflow Examples

4.1 Encryptor Producer and Encryptor Consumer

4.1.1 Introduction

Many different workflows are possible, depending on which entities provide information as

defined in the CPIX document, and which entities consume that information. Two simple single

producer, single consumer examples are illustrated below:

Figure 5: Encryptor Producer. Figure 6: Encryptor Consumer.

All workflows require that content protection information and content keys are exchanged

between two or more entities. In the examples in Figure 5 and Figure 6 the entities are the

Encryptor and DRM System:

• The Encryptor Producer example allows, in this case, the Encryptor to generate Content

Keys and to push them to one or many DRM systems. The Encryptor could expect to receive

from the DRM systems some DRM Signalization.

• The Encryptor Consumer example allows the Encryptor to pull Content Keys and DRM

Signalization from a DRM system. In this case, Content Keys are generated by the DRM

System.

The CPIX document allows supporting both workflows above. The format allows sending and

receiving the Content Keys and DRM Signalization. Each model has its own advantages and

limitations. It is a matter of requirements for selecting one of the models or both.

It is recommended to encrypt the Content Keys and DRM Signalization which is exchanged

between entities as it contains very sensitive data. A CPIX document consists of two main

elements:

• The DeliveryData that contains required information allowing defining which entities can

get access to the encrypted keys in the document as well as information about the sending

entity itself.

• The AdaptationSet that contains the encrypted keys.

Before exchanging key information in a secure manner the entities which exchange key material

must know about each other and share public keys so that one entity could encrypt data and the

other entity could decrypt it. This important step of Trust establishment is out of the scope of

this document.

The encryption of the keys is the second important step. It could be done with a CPIX document

or on the distribution protocol. This important step of securing the Content Keys exchange is

out of the scope of this document. The DRM Signalization contains proprietary information and

if protection is required, it is under the DRM responsibility.

Encryptor

Content Keys

and DRM Signalisation

DRM

System Encryptor Content Keys

DRM

System

DRM

System

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 20

4.1.2 Encryptor Producer

This informative section shows a possible workflow for securing the exchange of the key

information between entities when the Encryptor generates the Content Keys. In this example,

shown in Figure 5, the Encryptor is the entity which is taking responsibility for generating the

Content Keys, protecting them and pushing them to the DRM Systems.

• The first step is the Trust establishment. Public keys must be exchanged between two or

more entities (the Encryptors and the DRM Systems) prior exchanges.

• Once the Trust is established and the necessary associated key material is shared between

entities, Content Keys can be exchanged. The Encryptor is encrypting these keys using

DRM Systems public keys. The DRM Systems can decrypt using their own private key.

• The Encryptor provides DeliveryData elements with crypto material required to uniquely

identify the entity capable of decrypting the media within the AdaptationSet element. The

CPIX document might contain one or multiple or no DeliveryData elements and at least

one AdaptationSet element must be present.

All these steps are summarized in Figure 7.

Figure 7: Encryptor Producer example steps.

4.1.3 Encryptor Consumer

This informative section shows a possible workflow for securing the exchange of the key

information between entities when the DRM System generates the Content Keys. In this model,

shown in Figure 6, the Encryptor can pull CPIX documents directly from a DRM System. In

this case, the DRM System is generating Content Keys and is encrypting them for a secure

delivery to the Encryptor.

• As in the case of the Push model, the first step is the Trust establishment. Public keys must

be exchanged between two or more entities (the Encryptors and the DRM System) prior

exchanges.

• The DRM System will use the public key of the Encryptor to encrypt keys to be inserted in

the DeliveryData element and will send it to Encryptor.

The Encryptor and DRM Systems

exchange public keys

The Encryptor constructs and secures

the CPIX document with DRM Systems

public keys

The Encryptor sends the protected CPIX

document to the DRM Systems

Each DRM System decrypts the

document with its own private key

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 21

• The Encryptor can decrypt the Content Keys using its private key.

All these steps are summarized in Figure 8.

Figure 8: Encryptor Consumer example steps.

4.2 Multiple Producers

This informative section illustrates that it is possible to have more complex workflows than

those illustrated in sections 4.1. In one such example, a media packager might define the

structure of the presentation (AdaptationSet’s), an Encryptor might generate the Content

Keys, a DRM System might generate other DRM Signalisation (DRMSystem element), An

Encryptor and an MPD Generator might be the consumers of the final CPIX document. In such

workflows, the document gets passed from entity to entity in sequence, with each entity adding

elements, and recording the update by adding an UpdateHistoryItem element to the

Presentation.

Figure 9 Multiple Producers example

• The first step is the Trust establishment. Public keys must be exchanged between two or

more entities prior to exchanges.

• Once the Trust is established and the necessary associated key material is shared between

entities, Content Keys can be exchanged.

• The Packager provides AdaptationSet and DeliveryData elements in version 1 of the

document.

The Encryptor and DRM System

exchange public keys

The Encryptor sends a CPIX document

request message to the DRM System

The DRM System constructs and secures

the CPIX document with the public key

of the Encryptor and sends the response

back

The Encryptor decrypts the document

using its private key

Packager Encryptor DRM System CPIX document

v2

CPIX document v3

(final)

MPD Generator

CPIX document

v1

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 22

• The Encryptor adds DefaultKey and ContentKey elements in version 2 of the document.

These elements only contain Key elements and no DRMSystem elements.

• The DRM system imports the Content Keys stored in the Key elements of the document,

and adds DRMSystem elements in version 3 of the document, which is the finalized version.

• The Encryptor extracts content protection related information from the DRMSystem elements

to be embedded in the media (e.g. PSSH boxes).

• The MPD Generator extracts content protection related information from the DRMSystem

elements to be embedded in the MPD document (e.g. PSSH boxes, key IDs).

All these steps are summarized in Figure 10.

Figure 10 Multiple Producers example steps.

The relationship between the elements added during the various updates described above is

shown in the following diagram:

The Packager, Encryptor and DRM

System exchange public keys

The Packager constructs version 1 of the

document with AdaptationSet and

DeliveryData elements, and sends the

document to the Encryptor

The Encryptor adds DefaultKey and

ContentKey elements, encrypting the

Key’s with the DRM System’s public

key, and sends version 2 of the

document to the DRM System

The DRM System decrypts the keys

with its public key, and imports them

into its database. Next it adds

DRMSystem elements, and sends version

3 of the document to the Encryptor and

MPD Generator

The Encryptor encrypts the content,

and embeds items from the

DRMSystem elements into the

content

The MPD Generator generates the

MPD, adding items from the

DRMSystem elements into the

ContentProtection element of the

MPD

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 23

Figure 8: Multiple Producers example hierarchy

Presentation

DeliveryData(@updateVersion 1)

AdaptationSet(@updateVersion 1)

DefaultKey(@updateVersion 2)

Key

UpdateHistoryItem(@id 1)

UpdateHistoryItem(@id 2)

UpdateHistoryItem(@id 3)

DRMSystem(@updateVersion 3)

DeliveryKeyReference(@updateVersion 2)

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 24

5 Key Rotation Support

A CPIX document can contain content protection information for multiple cryptoperiods for

content encrypted using key rotation. In this case, the AdaptationSet elements shall contain

one or more ContentKey elements, one per cryptoperiod which the document covers. Each

ContentKey element contains the content protection information for a single cryptoperiod,

which is identified by the ContentKey element’s @start and/or @cryptoPeriod attributes. The

number of ContentKey elements must match across AdaptationSet elements.

Key rotation may be supported in complex workflows, with one entity requesting copy

protection information for multiple crypto periods, and another entity providing the requested

information (keys, DRM system-specific information for the crypto period, etc).

Some key rotation implementations may store the content keys within the PSSH data. These

keys are usually wrapped (encrypted) with another key, which is delivered to the client as part

of the content license. This ‘root’ key should never encoded in the CPIX document; instead the

CPIX document shall contain the content keys in the DefaultKey/ContentKey elements.

In a sense it could be said that the same content key is present in both the

DefaultKey/ContentKey element as well as the DRMSystem.PSSH element, but

wrapped for different purposes (content encryption and decryption respectively).

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 25

6 XML Examples

The zip file available on DASH-IF web site contains four examples of XML files [CPIX-XML].

Encrypted keys

This example shows a CPIX document where keys can be decrypted by two entities

(“Authorization Service 1234” and “Authorization Service 5678”). Both are identified by their

X509 certificates.

It contains two Adaptation Sets, each with only Default Key. The Default Key is therefore

encrypted two times (once for Authorization Service 1234 and once for Authorization Service

5678).

In term of DRMs, there are two different DRMs that can be used for accessing the Adaptations

Sets. There are therefore two DRMSystem elements per Adaptation Set.

This example does not contain UpdateHistoryItem elements.

Clear Keys

This example shows a CPIX document where keys are not encrypted. It can be read by any

entity and therefore does not contain DeliveryData elements.

It contains two Adaptation Sets, each with only Default Key. The Default Key is available as

plain data for each Adaptation Set.

In term of DRMs, there are two different DRMs that can be used for accessing the Adaptations

Sets. There are therefore two DRMSystem elements per Adaptation Set.

This example does not contain UpdateHistoryItem elements.

Multiple Updates

This example, consisting of multiple files (v1…v3), shows a CPIX document which has been

built up by successive updates by various entities as illustrated in the example in section 4.2.

The document has three UpdateHistoryItem within it referencing the entities which performed

the updates. Various elements in the document reference the UpdateHistoryItem for the

update in which they were added by UpdateVersion.

It contains two Adaptation sets, each with one Default Key. The Key’s can be decrypted by the

entity “DRM System 1234”.

The document contains copy protection information for a single DRM system, so it only

contains a single DRMSystem element per AdaptationSet.

Key Rotation

This example shows a CPIX document where keys can be decrypted by two entities

(“Authorization Service 1234” and “Authorization Service 5678”). Both are identified by their

X509 certificates.

It contains two Adaptation Sets, each with Content Keys for two cryptoperiods, identified by

their start and end times. The Keys are encrypted two times (once for Authorization Service

1234 and once for Authorization Service 5678).

In addition, each ContentKey element contains DrmSystem elements for the two DRM systems.

DASH-IF Content Protection Information Exchange Format v2.0 – Community Review Version 26

7 Transfer Protocol

The preferred method of exchange of CPIX documents between entities is through a RESTful

API. This API is defined as follows:

[BaseURL]/copyProtectionData/{{PRESENTATION_ID}} Where [BaseURL] is the scheme and host(e.g. https://acme-drm-service.co) of the target resource. Method: POST Behaviour: The request to create copyProtectionData for an encryptor. RequestBody: Element: //Presentation Definition: A Presentation element. ResponseBody: Element: //Presentation Definition: A Presentation element.

— [BaseURL]/copyProtectionData/{{PRESENTATION_ID}} Where [BaseURL] is the scheme and host(e.g. https://acme-drm-service.co) of the target resource. Method: GET Behaviour: Return copyProtectionData for the referenced PRESENTATION_ID. RequestBody: Element: NONE ResponseBody: Element: //Presentation Definition: A Presentation element.

— [BaseURL]/copyProtectionData/{{PRESENTATION_ID}} Where [BaseURL] is the scheme and host(e.g. https://acme-drm-service.co) of the target resource. Method: PUT Behaviour: Update copyProtectionData referenced by the PRESENTATION_ID RequestBody: Element: //Presentation Definition: A Presentation element. ResponseBody: Element: NONE — [BaseURL]/copyProtectionData/{{PRESENTATION_ID}} Where [BaseURL] is the scheme and host(e.g. https://acme-drm-service.co) of the target resource. Method: DELETE Behaviour: Delete/purge copyProtectionData referenced by the PRESENTATION_ID. RequestBody: Element: NONE ResponseBody: Element: NONE