You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 10-General.inc.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
DASH-IF provides guidelines for using multiple [=DRM systems=] to access a DASH presentation by adding encryption signaling and [=DRM system configuration=] to DASH content encrypted in conformance to Common Encryption [[!CENC]]. In addition to content authoring guidelines, DASH-IF specifies interoperable workflows for DASH client interactions with [=DRM systems=], platform APIs and external services involved in content protection interactions.
4
4
5
5
<figure>
6
-
<img src="Diagrams/DrmBigPicture.png" />
6
+
<img src="Diagrams/DrmBigPicture.png" >
7
7
<figcaption>A [=DRM system=] cooperates with the device's [=media platform=] to enable playback of encrypted content while protecting the decrypted samples and [=content keys=] against potential attacks. The DASH-IF implementation guidelines focus on the signaling in the DASH presentation and the interactions of the DASH client with other components.</figcaption>
8
8
</figure>
9
9
@@ -28,7 +28,7 @@ A <dfn>license</dfn> is a data structure in a [=DRM system=] specific format tha
28
28
Different software architectural components are involved in playback of encrypted content. The exact nature depends on the specific implementation. A high-level reference architecture is described here.
29
29
30
30
<figure>
31
-
<img src="Diagrams/SoftwareComponents.png" />
31
+
<img src="Diagrams/SoftwareComponents.png" >
32
32
<figcaption>Reference architecture for encrypted content playback.</figcaption>
33
33
</figure>
34
34
@@ -220,7 +220,7 @@ Note: This optimization might require support from platform APIs and/or [=DRM sy
220
220
While it is common that `default_KID` identifies the actual [=content key=] used for encryption, a [=DRM system=] MAY make use of other keys in addition to the one signalled by the `default_KID` value but this SHALL be transparent to the client with only the `default_KID` being used in interactions between the DASH client and the [=DRM system=]. See [[#CPS-KeyHierarchy]].
<figcaption>In a [[#CPS-KeyHierarchy|hierarchical key scenario]], `default_KID` references the [=root key=] and only the sample group descriptions reference the [=leaf keys=].</figcaption>
Copy file name to clipboardExpand all lines: 40-LicenseRequestModel.inc.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,7 +53,7 @@ The above data sets are serialized and digitally signed to arrive at the final f
53
53
[=Authorization tokens=] are issued by an authorization service, which is part of a solution's business logic. The authorization service has access to the project-specific context that it needs to make its decisions (e.g. the active session, user identification and database of purchases/entitlements). A single authorization service can be used to issue [=authorization tokens=] for multiple license servers, simplifying architecture in solutions where multiple license server vendors are used.
<figcaption>Role of the authorization service in DRM workflow related communication.</figcaption>
58
58
</figure>
59
59
@@ -68,7 +68,7 @@ To obtain an [=authorization token=], a DASH client needs to know the URL of the
68
68
If no authorization service URL is provided by the MPD nor made available at runtime, a DASH client SHALL NOT attach an [=authorization token=] to a license request. Absence of this URL implies that authorization operations are performed in a manner transparent to the DASH client (see [[#CPS-lr-model-deployment]]).
<figcaption>[=Authorization tokens=] are requested from all authorization services referenced by the selected adaptation sets.</figcaption>
73
73
</figure>
74
74
@@ -197,7 +197,7 @@ Authorization services and license servers SHOULD indicate an inability to satis
197
197
198
198
1. Signals a suitable status code (4xx or 5xx).
199
199
1. Has a `Content-Type` of `application/problem+json`.
200
-
1. Contains a HTTP response body conforming to [[!rfc7807]].
200
+
1. Contains a HTTP response body conforming to [[!rfc7807 obsolete]].
201
201
202
202
<divclass="example">
203
203
HTTP response from an authorization service, indicating a rejected [=authorization token=] request because the requested content is not a part of the user's subscriptions.
@@ -265,7 +265,7 @@ The interoperable license request model is designed to allow for the use of diff
265
265
The baseline architecture assumes that a separate authorization service exists, implementing the logic required to determine which users have the rights to access which content.
<figcaption>The baseline architecture with an authorization service directly exposed to the DASH client.</figcaption>
270
270
</figure>
271
271
@@ -274,7 +274,7 @@ While the baseline architecture offers several advantages, in some cases it may
274
274
A common implementation for transparent authorization is to use a "license proxy", which acts as a license server but instead forwards the license request after authorization checks have passed. Alternatively, the license server itself may perform the authorization checks.
<figcaption>A transparent authorization architecture performs the authorization checks at the license server, which is often hidden behind a proxy (indistinguishable from a license server to the DASH client).</figcaption>
Copy file name to clipboardExpand all lines: 60-ClientWorkflows.inc.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ A typical [=DRM system=] might offer the following set of capabilities:
29
29
A typical [=media platform=] API such as EME [[!encrypted-media]] will require the DASH client to query the platform by supplying a desired capability set. The [=media platform=] will inspect the desired capabilities, possibly displaying a permissions prompt to the user (if sensitive capabilities such as unique user identification are requested), after which it will return a supported capability set that indicates which of the desired capabilities are available.
30
30
31
31
<figure>
32
-
<img src="Images/CapabilityNegotiation.png" />
32
+
<img src="Images/CapabilityNegotiation.png" >
33
33
<figcaption>The DASH client presents a set of desired capabilities for each [=DRM system=] and receives a response with the supported subset.</figcaption>
34
34
</figure>
35
35
@@ -128,7 +128,7 @@ When encrypted adaptation sets are initially selected for playback or when the s
128
128
* This enables business logic to include DRM systems not signaled in the MPD.
129
129
130
130
1. Let <var>default_kids</var> be the set of all distinct `default_KID` values in <var>adaptation_sets</var>.
131
-
1. Let <var>system_configurations</var> be an empty map of `system ID -> map(default_kid -> configuration)`, representing the [=DRM system configuration=] of each `default_KID` for each [=DRM system=].<br><imgsrc="Images/SelectionAlgorithm-SystemConfigurations.png"/>
131
+
1. Let <var>system_configurations</var> be an empty map of `system ID -> map(default_kid -> configuration)`, representing the [=DRM system configuration=] of each `default_KID` for each [=DRM system=].<br><imgsrc="Images/SelectionAlgorithm-SystemConfigurations.png" >
132
132
1. For each <var>system_id</var> in <var>candidate_system_ids</var>:
133
133
1. Let <var>configurations</var> be a map of `default_kid -> configuration` where the keys are <var>default_kids</var> and the values are the [=DRM system configurations=] initialized with data from `ContentProtection` descriptors in the MPD (matching on `default_KID` and <var>system_id</var>).
134
134
* If there is no matching `ContentProtection` descriptors in the MPD, the map still contains a partially initialized [=DRM system configuration=] for the `default_KID`.
@@ -211,7 +211,7 @@ It is possible that not all of the encrypted adaptation sets selected for playba
211
211
A DASH client can request a [=DRM system=] to enable decryption using any set of [=content keys=] (if it has the necessary [=DRM system configuration=]). However, this is only a request and playback can be countermanded at multiple stages of processing by different involved entities.
212
212
213
213
<figure>
214
-
<img src="Diagrams/ReductionOfKeys.png" />
214
+
<img src="Diagrams/ReductionOfKeys.png" >
215
215
<figcaption>The set of [=content keys=] made available for use can be far smaller than the set requested by a DASH client. Example workflow indicating potential instances of [=content keys=] being removed from scope.</figcaption>
216
216
</figure>
217
217
@@ -262,7 +262,7 @@ DASH clients performing license requests SHOULD follow the [[#CPS-lr-model|DASH-
262
262
[=DRM systems=] generally do not perform license requests on their own. Rather, when they determine that a [=license=] is required, they generate a document that serves as the license request body and expect the DASH client to deliver it to a license server for processing. The latter returns a suitable response that, if a [=license=] is granted, encapsulates the [=content keys=] in an encrypted form only readable to the DRM system.
263
263
264
264
<figure>
265
-
<img src="Diagrams/LicenseRequestConcept.png" />
265
+
<img src="Diagrams/LicenseRequestConcept.png" >
266
266
<figcaption>Simplified conceptual model of license request processing. Many details omitted.</figcaption>
267
267
</figure>
268
268
@@ -276,7 +276,7 @@ The license request workflow defined here exists to enable the following goals t
276
276
277
277
The proof of authorization is optional and the need to attach it to a license request is indicated by the presence of at least one `dashif:authzurl` in the [=DRM system configuration=]. The proof of authorization is a [[!jwt|JSON Web Token]] in compact encoding (the `aaa.bbb.ccc` form) returned as the HTTP response body when the DASH client performs a GET request to this URL. The token is attached to a license request in the HTTP `Authorization` header with the `Bearer` type. For details, see [[#CPS-lr-model]].
278
278
279
-
Error responses from both the authorization service and the license server SHOULD be returned as [[rfc7807]] compatible responses with a 4xx or 5xx status code and `Content-Type: application/problem+json`.
279
+
Error responses from both the authorization service and the license server SHOULD be returned as [[rfc7807 obsolete]] compatible responses with a 4xx or 5xx status code and `Content-Type: application/problem+json`.
280
280
281
281
DASH clients SHOULD implement retry behavior to recover from transient failures and expiration of [=authorization tokens=].
Copy file name to clipboardExpand all lines: 80-Misc.inc.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,7 @@ Note: Changing the [=content keys=] does not increase the cryptographic security
16
16
Using a key hierarchy allows a single [=content key=] to selectively unlock only a subset of a DASH presentation and apply license policy updates without the need to perform license requests at every program boundary. This mechanism is a specialization of periodic re-authorization for scenarios where license requests at program boundaries are not always desirable or possible.
17
17
18
18
<figure>
19
-
<img src="Diagrams/KeyHierarchy.png" />
19
+
<img src="Diagrams/KeyHierarchy.png" >
20
20
<figcaption>A key hierarchy establishes a [=DRM system=] specific relationship between a [=root key=] and a set of [=leaf keys=].</figcaption>
21
21
</figure>
22
22
@@ -43,7 +43,7 @@ The mechanism by which a set of [=leaf keys=] is made available based on a reque
43
43
When using a key hierarchy, the [=leaf keys=] are typically delivered in-band in the media segments, using `moof/pssh` boxes, together with additional/updated license policy constraints. The exact implementation is [=DRM system=] specific and transparent to a DASH client.
<figcaption>Different rows indicate [=root key=] changes. Color alternations indicate [=leaf key=] changes. A key hierarchy enables per-program access control even in scenarios where a license request is only performed once per day. The single license request makes available all the [=leaf keys=] that the user is authorized to use during the next epoch.</figcaption>
0 commit comments