Internet DRAFT - draft-gildred-perm
draft-gildred-perm
Network Working Group J. Gildred
Internet-Draft A. Andreasyan
Expires: January 15, 2005 Pioneer
R. Osawa
T. Stahl
Thomson
J. Card
Echostar
July 17, 2004
Protected Entertainment Rights Management (PERM)
draft-gildred-perm-02
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on January 15, 2005.
Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract
This document describes the Protected Entertainment Rights Management
(PERM) protocol for management of usage rights to digital
entertainment content. PERM is not intended to replace existing copy
protection and conditional access systems. Rather it is intended to
complement such systems by providing standardized methods of device
and user authentication, content protection and content rights
Gildred, et al. Expires January 15, 2005 [Page 1]
Internet-Draft PERM July 2004
management across heterogeneous data networks. PERM does not impose
any content usage policy upon an implementation of the PERM protocol.
PERM defines a common method for policy enforcement, and implementors
are free to design and enforce their own policy by using the features
and conventions of the PERM protocol.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Abbreviations, Terms and Conventions . . . . . . . . . . . . 5
3. Device Roles . . . . . . . . . . . . . . . . . . . . . . . . 9
4. Content Access Translation . . . . . . . . . . . . . . . . . 10
5. Content Scrambling . . . . . . . . . . . . . . . . . . . . . 11
6. Removable Media . . . . . . . . . . . . . . . . . . . . . . 12
7. Direct and Indirect Authentication . . . . . . . . . . . . . 13
8. Signatures . . . . . . . . . . . . . . . . . . . . . . . . . 14
9. Key Exchange . . . . . . . . . . . . . . . . . . . . . . . . 15
10. Content Usage Rights (CURs) . . . . . . . . . . . . . . . . 16
11. Entitlement Control Message (PERM ECM) . . . . . . . . . . . 17
12. Profile D: PERM Device ECM . . . . . . . . . . . . . . . . . 19
12.1 Device Authentication . . . . . . . . . . . . . . . . . 19
12.2 Device Content Protection . . . . . . . . . . . . . . . 19
13. Profile U: PERM User ECM . . . . . . . . . . . . . . . . . . 21
13.1 User Authentication . . . . . . . . . . . . . . . . . . 21
13.2 User Content Protection . . . . . . . . . . . . . . . . 21
14. Profile Z: PERM Zone ECM . . . . . . . . . . . . . . . . . . 23
14.1 PERM Zone . . . . . . . . . . . . . . . . . . . . . . . 23
14.2 Complex Zone . . . . . . . . . . . . . . . . . . . . . . 24
14.3 PERM Message Transport . . . . . . . . . . . . . . . . . 24
14.4 Zone Device Authentication . . . . . . . . . . . . . . . 24
14.5 Zone Membership . . . . . . . . . . . . . . . . . . . . 26
14.6 Zone Renewal . . . . . . . . . . . . . . . . . . . . . . 29
14.7 Zone Merging . . . . . . . . . . . . . . . . . . . . . . 31
14.8 Zone Content Protection . . . . . . . . . . . . . . . . 33
14.8.1 Protected Mode . . . . . . . . . . . . . . . . . . . 34
14.8.2 Pass Through Mode . . . . . . . . . . . . . . . . . 35
14.8.3 Clear Mode . . . . . . . . . . . . . . . . . . . . . 35
14.8.4 Zone Broadcasting and Multicasting . . . . . . . . . 35
15. PERM Device Requirements . . . . . . . . . . . . . . . . . . 37
16. Certification and Compliance Rules . . . . . . . . . . . . . 38
17. Future Work . . . . . . . . . . . . . . . . . . . . . . . . 39
18. Security Considerations . . . . . . . . . . . . . . . . . . 40
19. References . . . . . . . . . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 42
A. MsgType Header Description . . . . . . . . . . . . . . . . . 44
B. PERM CURs . . . . . . . . . . . . . . . . . . . . . . . . . 47
C. PERM ECM . . . . . . . . . . . . . . . . . . . . . . . . . . 52
C.1 ECM Header . . . . . . . . . . . . . . . . . . . . . . . . 52
Gildred, et al. Expires January 15, 2005 [Page 2]
Internet-Draft PERM July 2004
C.2 Content Key . . . . . . . . . . . . . . . . . . . . . . . 54
C.3 CUR Section . . . . . . . . . . . . . . . . . . . . . . . 54
C.4 Certificate Authority Chain - CACH . . . . . . . . . . . . 54
C.5 Certificate - Cert . . . . . . . . . . . . . . . . . . . . 55
C.6 ECM HMAC and Signature . . . . . . . . . . . . . . . . . . 55
D. Encryption Algorithms and Mode . . . . . . . . . . . . . . . 56
E. Status Notification . . . . . . . . . . . . . . . . . . . . 57
F. DSA Certificates . . . . . . . . . . . . . . . . . . . . . . 59
G. Random Number Generator . . . . . . . . . . . . . . . . . . 60
H. X.509 v3 Certificates . . . . . . . . . . . . . . . . . . . 61
I. CRL Request . . . . . . . . . . . . . . . . . . . . . . . . 62
J. Certification Request . . . . . . . . . . . . . . . . . . . 63
K. Content Request Methods (CRMs) . . . . . . . . . . . . . . . 64
L. Protection Modes . . . . . . . . . . . . . . . . . . . . . . 65
M. ECM Delivery Methods (EDMs) . . . . . . . . . . . . . . . . 67
N. PERM Content Storage Methods (CSMs) . . . . . . . . . . . . 71
O. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 73
Intellectual Property and Copyright Statements . . . . . . . 74
Gildred, et al. Expires January 15, 2005 [Page 3]
Internet-Draft PERM July 2004
1. Introduction
This document describes a method of protecting digital content from
unintended use. This document has three goals:
1. To describe a simple and secure protocol for authentication of
the content sink as a user, device or group of devices.
2. To describe a simple yet sufficiently robust rights language for
restricting content use by a sink device.
3. To provide content protection with strong encryption considering
optimizations where possible for implementations with limited
computing resources.
It is beyond the scope of this document to discuss the political
ramifications of using a digital rights management system to protect
the fair use of any digital entertainment content. It is a premise
of this specification that providing a mechanism for content owners
and distributors to restrict the use of their content as they see
fit, is a worthwhile endeavor.
Gildred, et al. Expires January 15, 2005 [Page 4]
Internet-Draft PERM July 2004
2. Abbreviations, Terms and Conventions
The following abbreviations and terms are defined for this
specification:
PERM Device ....... A PERM Device is any device which is compatible with
the PERM specification. Compatibility between PERM
devices additionally requires a common certificate
authority between the PERM devices.
ECM ............... Entitlement Control Message
PERM ECM .......... ECM in PERM-compliant format
PERM Zone ......... Logical grouping of PERM devices to allow zone-level
rights
PERM Profile ...... A protection mode which defines the scope of access
per content item
CUR ............... Content Usage Right - PERM definition of content
usage rights
CSoD .............. Content Source Device - PERM device capable of
transmitting PERM protected content
CSiD .............. Content Sink Device - PERM device capable of
receiving PERM protected content
KC ................ Content key used for content scrambling.
KZ ................ Zone key used for protection and authentication of
zone communication.
SSK ............... Shared secret key.
Pub_D, Priv_D ..... A device public/private key pair is represented by
Pub_D and Priv_D, respectively.
TZ ................ Represents the zone key lifetime. The length of TZ is
determined by the ZM which created the zone key.
Pub_U, Priv_U ..... A user public/private key pair is represented by
Pub_U and Priv_U, respectively.
ZM ................ Zone Master - A CSoD responsible for generating the
zone key and allowing zone membership to other
Gildred, et al. Expires January 15, 2005 [Page 5]
Internet-Draft PERM July 2004
devices. Only a CSoD device can be a ZM.
CRM ............... Content Request Method - A method of requesting
content, such as HTTP GET or RTSP. PERM defines
extensions to existing CRMs allowing for PERM
authentication data to be included in the content
request.
PMP ............... PERM Message Payload - The part of a CRM which is
extended to include a PERM content request message.
EDM ............... ECM Delivery Method - A method of delivering one or
more ECMs inline with the corrsponding content or
separately. PERM defines extensions to existing media
formats, content delivery methods, and other
communication protocols allowing for PERM ECMs to
included with the content transfer or obtained
through a separate transfer session.
Protection Scope .. PERM defines three protection scopes: "zone",
"device" and "user".
UID(A) ............ The unique identifier of A. A can be a zone, device
or user. The device UID() can be for CSoD and CSiD.
The format of UID() is an alphanumeric string of 20
characters using only standard ascii values. For a
zone, the string must begin with a "z", for a device
the string must begin with a "d" and for a user the
string must begin with a "u". PERM requires the UID()
parameter in each device or user certificate.
CERT(A) ........... Certificate of entity A. In PERM all certificates
must be X.509 v3 format, signed by a Certificate
Authority. PERM defines two basic types of
certificates: device certificates represented by
CERT(D) and user certificates represented by CERT(U).
Currently PERM only allows certificates which contain
RSA or DSA signatures.
DN(A) ............. Represents the Distinguished Name of entity A.
CA ................ Certificate Authority - A certifying entity capable
of issuing certificates for PERM devices or users.
Issuer(A) ......... CA which issued certificate of entity A. Entity A can
be device, user or subordinate CA.
Gildred, et al. Expires January 15, 2005 [Page 6]
Internet-Draft PERM July 2004
Root(A) ........... The root CA of device or user A. Root(A) must be
represented in the CA chain as a self-signed
certificate.
TA(A,B) ........... Trusted Authority between device or user A and B; a
common certificate issuer between two peers (device
or user).
CRP(A) ............ A Certificate Request Payload of a device or user. A
list of all DN(CA) of the device or user.
CACH(A) ........... Certificate Authority chain for device or user A.
EncAlg(A) ......... Represents the list of symmetric key encryption
algorithms supported by device A. For example:
AES_128_CBC and TDES_CBC8.
CRL(CA) ........... A Certificate Revocation List from certificate
authority CA. A CRL is a list of serial numbers of
certificates which are revoked by CA.
Nonce() ........... Random data used for protection from replay attacks.
MsgType() ......... PERM message type; hex value of type is dislayed in
parenthesis.
StatCode ........... PERM status code in hexadecimal.
Zone_Limit ........ Maximum allowed number of CSiDs in a zone. This
number is determined by the ZM.
Zone_Size ......... Current number of CSiDs in a zone. This number is
maintained by the ZM.
IV ................ Initialization Vector for a scrambling algorithm.
The following notation conventions are defined for use in this
document:
Gildred, et al. Expires January 15, 2005 [Page 7]
Internet-Draft PERM July 2004
[], {}, and || .... Encryption is represented by brackets [], signing is
represented by braces {}, and concatenation is
represented by bars ||. A comma delimited list of
items within (), {}, [] represents that they are
concatenated in listed order prior to processing.
E[m, KZ] .......... Represents a message m which is encrypted using a
symmetric zone key KZ.
E[m, Pub_D] ....... Represents a message m which is encrypted using a
device public key Pub_D.
{m}SIGN(Priv_D) ... Represents a message m which is signed by using a
device private key Priv_D. This notation signifies
that the message is included before the signature.
(B -> A): < m > ... Entity B sends message m to entity A.
< m > ............. Represents that m is information which may be
required in some cases.
{A, B}HMAC(K) ..... Represents a keyed hashing authentication code on
concatenated message A and B by using a symmetric key
K. This notation signifies that the message is
included before the HMAC.
Parts of this document use the "C" programming language syntax to
describe data structures [20]. All data is assumed to be transmitted
in network or big-endian order.
Gildred, et al. Expires January 15, 2005 [Page 8]
Internet-Draft PERM July 2004
3. Device Roles
In PERM there are two roles that a device may assume. They are:
Content Source Device (CSoD) and Content Sink Device (CSiD). A PERM
device may be capable of both the role of CSoD and CSiD.
A CSoD is defined as a device which transmits protected content to
another PERM device. A CSoD ensures that the content is protected
using the appropriate encryption for it's intended recipient which
could be a user, device or all devices in a PERM Zone.
A CSiD is defined as a device which receives protected content from
another PERM device.
A PERM device may contain a region identifier, typically to signify
the geographic region in which the device operates. The definition
of the region identifier is provided in an annex of this document.
Gildred, et al. Expires January 15, 2005 [Page 9]
Internet-Draft PERM July 2004
4. Content Access Translation
In addition to PERM functionality, a CSoD may have a non-PERM
conditional access system and tuning or other data reception system
which allows the device to receive non-PERM protected content from a
content provider outside the zone. Such behavior would be bound by
an agreement between the licensing authority managing the conditional
access system and the certificate authority for the PERM CSoD.
An example of such a device is a cable set-top box. This box has a
conditional access system capable of decoding broadcast video
content, and as a PERM CSoD it may also be able to retransmit this
content to PERM CSiDs in the same PERM Zone. Such retransmission
requires that the conditional access information be translated and
repurposed to allow CSiDs in the same zone to access the content.
A CSoD may also act as a CSiD. For example, a cable set-top box,
acting as a home media server, may be able to collect content from
other CSoDs in the same zone.
Gildred, et al. Expires January 15, 2005 [Page 10]
Internet-Draft PERM July 2004
5. Content Scrambling
PERM defines a set of minimally required content scrambling formats
to provide a base level of compatibility with the most commonly used
conditional access systems. A PERM CSiD must support content
de-scrambling using the following minimal set of scrambling formats:
1. DES_CBC
2. TDES_CBC
3. AES_CBC_128
A PERM CSoD is required to provide all available protected content in
at least one of the required PERM CSiD scrambling formats, which in
some cases may require that the CSoD be capable of re-scrambling some
or all of the content before transmission to a CSiD.
Gildred, et al. Expires January 15, 2005 [Page 11]
Internet-Draft PERM July 2004
6. Removable Media
A PERM CSoD may be capable of reading removable media which contain
non-PERM copy protection methods specific to the media format. In
such case a PERM CSoD may be authorized to move or copy such
protected content to internal persistent storage or transmit such
protected content to CSiDs in the same zone, provided that the copy
protection information on the media allows such action. The CSoD
would be required to translate the copy protection information prior
to transmission to a CSiD in the zone. Such behavior would be bound
by an agreement between the licensing authority managing the copy
protection system for each format and the licensing authority for the
PERM CSoD.
Additionally, a PERM CSiD may be capable of recording to removable
media which may have non-PERM copy protection capabilities specific
to the media format. In such case the PERM CSiD may be authorized to
record protected content to removable media, given that the PERM CURs
of the content allow such action. The CSiD would be required to
translate the PERM scrambling as well as the PERM ECM for that
content into the copy protection format specific to that media type.
Such behavior may be bound by an agreement between the certificate
authority of the PERM CSiD and the licensing authority managing the
corresponding copy protection system.
Gildred, et al. Expires January 15, 2005 [Page 12]
Internet-Draft PERM July 2004
7. Direct and Indirect Authentication
When two peers (devices or users) are directly certified by the same
CA (both device or user certificates are signed by the same
authority), the direct certifier of both peers is known as the
Trusted Authority (TA) between both peers. Each peer can
authenticate the other by comparing its Issuer's certificate with the
peer's. This type of authentication in PERM is called Direct
Authentication.
When two peers are not directly certified by the same CA, but they
share a common certifier in their certificate chains, the common
certifier is the TA. Each peer can validate the other by evaluating
the other's entire chain of CAs. This type of authentication in PERM
is called Indirect Authentication.
The following is an example of Direct Authentication:
CA(1) -> CERT(A)
and CA(1) -> CERT(B)
In this example the certificates of device A and B are both issued by
the same CA. As both devices can authenticate each other simply by
examining the other's issuer CA, Direct Authentication is possible.
The following is an example of Indirect Authentication:
CA(root) -> CA(1) -> CERT(A)
and CA(1) -> CA(2) -> CERT(B)
In this example device A and B share a TA, but their device
certificates are not issued by the same CA. In this case Direct
Authentication is not possible. Each device must examine the entire
CA chain of the other in order to authenticate up to a common TA. It
is not required that both peers authenticate up to a root
(self-signed) certificate, only that they authenticate up to a common
TA.
A PERM device must support Direct Authentication and may additionally
support Indirect Authentication. If a PERM device does not support
Indirect Authentication, and the device attempts to authenticate
another PERM device having a common TA, but their device certificates
do not have the same issuer CA, then device authentication must fail
in this case.
Gildred, et al. Expires January 15, 2005 [Page 13]
Internet-Draft PERM July 2004
8. Signatures
PERM defines a set of minimally required signature methods to provide
a base level of compatibility between PERM Devices. A PERM Device
must support signatures using the following minimal set of methods.
As well, a PERM Device must at least support the key sizes designated
in parenthesis:
o RSA (512, 1024)
Gildred, et al. Expires January 15, 2005 [Page 14]
Internet-Draft PERM July 2004
9. Key Exchange
PERM defines a set of minimally required key exhange methods to
provide a base level of compatibility between PERM Devices. A PERM
Device must support key exchange using the following minimal set of
methods. As well, a PERM Device must at least support the key sizes
designated in parenthesis:
o RSA (512, 1024)
Gildred, et al. Expires January 15, 2005 [Page 15]
Internet-Draft PERM July 2004
10. Content Usage Rights (CURs)
Content Usage Rights (CURs) are standardized rights definitions in
PERM. One CUR represents a single usage right such as "play" or
"copy". Having standardized CURs enables interoperability between
secure devices supporting a variety of protected content.
Content originating outside a PERM Zone will most likely contain
usage rights definitions native to the conditional access system of
the content provider. If content which is protected using a non-PERM
system from outside the PERM Zone is made available to PERM devices
within the zone, the usage rights of that content must be translated
into the standardized PERM format CURs. The list of PERM CURs and
methods of translation between popular CA or CP systems is defined in
Annex C of this document.
Gildred, et al. Expires January 15, 2005 [Page 16]
Internet-Draft PERM July 2004
11. Entitlement Control Message (PERM ECM)
PERM defines a PERM Entitlement Control Message (PERM ECM). Each
protected content item is associated with a corresponding PERM ECM or
set of PERM ECMs. When a PERM CSoD transfers protected content to a
PERM CSiD via a PERM supported content request method (CRM), the
content is usually encrypted and accompanied by a PERM ECM. The PERM
ECM contains the content key, the CURs of the content and the ECM
signature or HMAC. There are three types of PERM ECMs: Zone, Device
and User. The PERM Zone ECM is authenticated using the
corresponding PERM Zone key and message authentication function
SHA-1. The PERM Device and User ECMs are always signed using the
CSoD private key.
In a PERM Zone ECM the content key, KC, is encrypted using the PERM
zone key. In a PERM Device or User ECM the content key is encrypted
using the corresponding device or user public key using the RSA or
DSA method (for DSA encryption see Annex F: DSA Certificates) of
encryption. The KC life time, TZ, is recommended to be at least
86400 seconds (24 hours). TZ may be changed at any time by the ZM.
Each ECM is associated with a PERM Profile (Z, D or U), which
determines the content protection scope. A PERM device must support
at least one profile and may support up to all three.
A PERM ECM must be formatted in one of two possible schemes: Long and
Short. The Long ECM is used when CURs are intended to be included
with the ECM. If a content item has only one corresponding ECM, then
its ECM must be a Long ECM. If a content item has multiple ECMs, as
in the case where the content key changes periodically during content
transfer, the first ECM received during content transfer must be a
Long ECM, and subsequent ECMs may be Short. If the CURs should
change during the course of a content transfer, a Long ECM must be
transmitted with the content to provide the CURs to the receiving
CSiD.
The following is the format of a Long ECM:
1. Header
2. Encrypted content scrambling key
3. CURs
4. <CACH>
5. <Certificate>
6. ECM HMAC or Signature
In the case of RSA certificates: If the content request uses Profile
Z, KC is encrypted using KZ. If the content request uses Profile D,
KC is encrypted using or the CSiD's Pub_D. If the content request
uses Profile U, KC is encrypted using or the CSiD's Pub_U.
Gildred, et al. Expires January 15, 2005 [Page 17]
Internet-Draft PERM July 2004
In the case of DSA certificates: KC is generated according to section
Annex F: DSA Certificates of this specification. A more detailed
description of the PERM ECM is described in Annex C: PERM ECM.
The following is the format of a Short ECM:
1. Header
2. Encrypted content scrambling key
A Long ECM is authenticated according to the profile used in the
content request. In Profile Z a Long ECM is authenticated by the
zone key HMAC; in Profile D and Profile U a Long ECM is signed by the
CSoD's Priv_D.
A Device ECM has the following format:
{ECM Header, encrypted KC, CURs, CACH(), CERT()}SIGN(Priv_D)
If Indirect Authentication is supported, then the chain of CACH()
must be included inside the Device or User ECM.
A Zone ECM has the following format:
{ECM Header, encrypted KC, CURs}HMAC(KZ)
Profile U, D and Z are described in more detail in the following
sections.
Gildred, et al. Expires January 15, 2005 [Page 18]
Internet-Draft PERM July 2004
12. Profile D: PERM Device ECM
This section describes the method of content protection for device
access.
12.1 Device Authentication
Device authentication is a process of establishing the legitimacy of
another device before allowing access to requested content. User
authentication is necessary if a device supports Profile D and must
restrict access to content to a specific device. Device
authentication is performed by a PERM CSoD upon receiving a Profile D
content request. The CSoD authenticates the credentials of the
requesting CSiD upon receiving the device-signed content request.
The specific procedure for device authentication is defined in more
detail later in this document.
12.2 Device Content Protection
Device content protection is provided in the case where a CSiD sends
a content request using Profile D. In response to such a content
request, the CSoD transmits the content to the CSiD, protected using
a PERM Device ECM. During content reception the CSiD's private key
must be available to the CSiD for processing the ECM(s) in order to
de-scramble the content. In PERM devices are not always bound to a
zone, or if bound to one or many zones a device may choose to request
content from a CSoD outside all zones. As such, Profile D may allow
protected content to be accessible to a device which is not a member
of any zone.
The following figure describes a Profile D content request.
Device A: CSoD Device B: CSiD
{MsgType(0xA1), Protection_mode,
<Protection_config>, EncAlg(B),
EDM_value, <CACH(B)>, CERT(B)}
SIGN(Priv_B)
<-----------------------------------
Figure 1: Content Request, Prof D (MsgType 0xA1)
Device B: CSiD makes a "Content Request" using Profile D. The
request is made using a PERM supported content request method (CRM).
The CRM is extended to include a PERM message payload section (PMP);
see Appendix K for a detailed description of PERM supported CRMs and
Gildred, et al. Expires January 15, 2005 [Page 19]
Internet-Draft PERM July 2004
the method of including PERM message payloads for each. Included in
the PERM message payload section is a list of supported encryption
algorithms, CERT(B) and protected by device B signature.
If Indirect Authentication is supported, then the chain of <CACH(B)>
must be included inside the "Content Request" message.
Device A: CSoD verifies validity and authenticity of the "Content
Request" by doing the following: verifies incoming message signature;
compares requested scrambling algorithms with its own algorithms and
chooses first matching one from the EncAlg(B); and verifies the Cert
(A) validity. If message is valid and well formatted, then CSoD
generates ECM by above described manner, encrypts content key by
device B public key signed all ECM and encrypts the content.
Device A: CSoD
{ECM Header, E[KC, Pub_B], CURs, CACH(A), CERT(A)}SIGN(Priv_A),
E[Content, KC], Padding
If validation is not successful, the CSoD sends an "Status
Notification" with the corresponding status code.
If Indirect Authentication is supported, then CACH(A) must be
included in the Device ECM.
Device B: By receiving ECM device B verifies validity and
authenticity of ECM. If it passes then decrypts the content
protection key and decrypts all content.
Gildred, et al. Expires January 15, 2005 [Page 20]
Internet-Draft PERM July 2004
13. Profile U: PERM User ECM
This section describes the method of content protection for user
access.
13.1 User Authentication
User authentication is a process of establishing the legitimacy of a
user before allowing access to requested content. User
authentication is necessary if a device supports Profile U and must
restrict access to content to a specific user. User authentication
is performed in two phases. Phase I: A PERM CSiD authenticates the
user by requiring secret user information prior to making a content
request. Phase II: A PERM CSoD authenticates the user's credentials
upon receiving the user-signed content request from the CSiD. The
specific procedure for user authentication is defined in more detail
later in this document.
13.2 User Content Protection
User content protection is provided in the case where a CSiD sends a
content request using Profile U. In response to such a content
request, the CSoD transmits the content to the CSiD, protected using
a PERM User ECM. During content reception the user's private key
must be available to the CSiD for processing the ECM(s) in order to
de-scramble the content for the user. In PERM users are not bound to
a device or zone. As such, Profile U may allow protected content to
be accessible to a user across multiple devices in different zones.
Before sending a "Content Request", the CSiD must perform Phase I
user authentication. In Phase I the CSiD must check that the user is
certified by a common TA (via indirect or direct authentication).
The user certificate may be located on a smart card or stored in
secure memory on the CSiD or obtained from an authentication service.
Optionally the CSiD may require that the user provide a pass code
which matches the one stored on the CSiD or smart card.
If a smart card is used by the CSiD, the method of communication
between the CSiD and the smart card must adhere to the PKCS#11
standard.
If an authentication service is used by the CSiD, the authentication
service must verify the user identity by requesting a user password.
After successful Phase I user authentication, the following content
request scenario is possible. Device B sends a "Content Request".
The request contains a PERM message payload section with MsgType
value indicating a Profile U content request, the set of supported
Gildred, et al. Expires January 15, 2005 [Page 21]
Internet-Draft PERM July 2004
encryption algorithms for Device B and the user certificate. The
entire message is signed using Priv_U obtained in Phase I user
authentication.
If Indirect Authentication is supported, CACH(U) must be included
inside the "Content Request" message.
The following figure describes a Profile U content request.
Device A: CSoD Device B: CSoD/CSiD
{MsgType(0xA2), Protection_mode,
<Protection_config>, EncAlg(B),
EDM_value, <CACH(U)>, CERT(U)}
SIGN(Priv_U)
<---------------------------
Figure 2: Content Request, Prof U (MsgType 0xA2)
Upon receiving the content request, the CSoD performs Phase II user
authentication by verifying the user signature in the PERM message
and checking that the user is certified by a common TA. If the CSoD
supports Profile U and successfully authenticates the user request,
then the response provides the content to the CSiD with user content
protection.
The processing of a Profile U content request and a Profile D content
request is identical; only the certificates and the MsgType are
different. A CSoD capable of Profile D is logically capable of
Profile U and vice versa. Having different MsgType values for
Profile U and Profile D content requests allows the CSoD to decide to
handle the request differently for a user or reject the request
altogether.
Gildred, et al. Expires January 15, 2005 [Page 22]
Internet-Draft PERM July 2004
14. Profile Z: PERM Zone ECM
This section describes the method of content protection for a PERM
Zone.
14.1 PERM Zone
As user's rights to content typically fall within the zone of a
personal work area or living area such as a home, the concept of a
PERM Zone is useful. A PERM Zone is not restricted to physical
boundaries. The definition of a PERM Zone is the following:
A PERM Zone is a set of devices with common network connectivity,
authenticated by the same trusted chain or authority and a common
secret key, which we call, the zone key. Only a CSoD can create a
PERM zone. A PERM Zone may contain several CSIDs and CSoDs. It is
not recommended to use more than one CSoD per zone, as this requires
more complex Zone Master management described later in this document.
When a device joins a PERM zone its membership in the zone is bound
to a role: CSiD, CSoD or both. If a device's certificate device_type
is CSiD/CSoD (see section on X.509 certificates later in this
document), then it must choose to join the zone as a CSiD only, a
CSoD only, or as both. A device which is not defined to be a CSiD or
CSoD/CSiD in it's certificate device_type, must not attempt to join a
zone bound to the role of CSiD. Similarly, a device which is not
defined to be a CSoD or CSoD/CSiD in it's certificate device_type,
must not attempt to join a zone bound to the role of CSoD. The join
request specifies in the device_role field which role the joining
device chooses to use as a member of the zone. The join request is
described in more detail later in this document.
In a PERM Zone all devices used for playback or recording must be
authenticated by at least one other device from the same PERM Zone.
Other authentication requirements may exist as defined later in this
document. A method for allowing users to be bound to a PERM Zone is
not currently defined; however, such a mechanism is not prohibited.
The zone key is generated by CSoD. The zone generator device is the
initial Zone Master (ZM) for the zone. The ZM takes responsibility
for distributing and renewing the zone key. The zone key is a
randomly generated key (See Appendix G), which is used between the
CSoD and CSiD/CSoD to authenticate a content protection session, to
encrypt content protection key, to broadcast or multi-cast contents.
Only the CSoD can generate the zone key. The zone rights are
provided by ZM along with content.
Every device (CSoD/CSiD) can join to zone if device is authenticated
Gildred, et al. Expires January 15, 2005 [Page 23]
Internet-Draft PERM July 2004
by ZM and has a common set of encryption algorithm.
The sequence of messages, for joining a zone, between ZM and CSoD/
CSiD has the following form:
1. (CSoD/CSiD -> BCAST): <Discovery Hello>
2. (ZM -> CSoD/CSiD): <Discovery Response>
3. (CSoD/CSiD -> ZM): <Join Zone Request>
4. (ZM -> CSoD/CSiD): <Join Zone Response>
This sequence of messages is divided by two parts: Zone Device
Authentication and Zone Membership. These parts are described in
more detail in the following sections.
14.2 Complex Zone
A Complex Zone is a PERM Zone which contains more than one CSoD. In
this case, the Zone Master must be managed more carefully, as more
than one device in the zone is capable of assuming the ZM role.
Mechanisms for a CSoD to join an existing zone, as well as negotiate
to become the ZM are defined later in this document. A CSoD is not
required to support Complex Zones. If a CSoD does not support
complex zones, then it always assumes it is the Zone Master, and it
must reject another CSoD's request to join the same zone. A CSoD
supporting Complex Zones is also called a CSoD-CZ. CSiDs must
support Complex Zones.
14.3 PERM Message Transport
PERM messages for zone management are transferred via the User
Data-gram Protocol (UDP), using a port number assigned by the IANA
for such purpose. For unicast messages, retransmission is attempted
if no response is received within 1 second. This may be repeated no
more than 2 times, for a total maximum of 3 transmission attempts per
message.
14.4 Zone Device Authentication
Every PERM device must have an on-board device CERT() and private key
in secure storage (smart card or embedded memory). As well, every
PERM device must have an on-board copy of all current certificate
revocation lists (CRLs) which have been passed to the device by CA
through TFTP or by another authenticated PERM device. The CRL is
signed by a CA , and its size is limited to 1 Megabyte. The CRLs
must also reside in secure storage. The methods of providing secure
storage in a PERM device are defined in section "Robustness Rules".
A device capable of being a PERM CSoD or CSiD must be able to
authenticate itself to another PERM device in a zone if it wishes to
Gildred, et al. Expires January 15, 2005 [Page 24]
Internet-Draft PERM July 2004
be added to the same zone. This requires that a PERM device have a
private key that is unique to the device, a certificate signed by a
common CA or one of the subordinate CAs (Indirect Authentication).
The following is a scenario of zone device authentication.
Device A represents a new device that is not part of a zone. Device
B represents CSoD device currently being a ZM. A new zone device
authentication protocol has the following form:
Device A: CSiD Device B: CSoD (ZM)
{MsgType(0x01),
<CRP(A)>, <CACH(A)>,
CERT(A)}SIGN(Priv_A)
----------------------->
{MsgType(0x02), EncAlg(B),
Zone_Limit,
Zone_Size,
UID (zone), <CRP(B)>,
<CACH(B)>, CERT(B)}SIGN(Priv_B)
<-----------------------------
Figure 3: Discovery Hello and Response (MsgType 0x01, 0x02)
Device A: If Device A is a CSiD, upon connection to a network
interface, it requests to any PERM device on the local network to
identify itself and any zones. A CSoD supporting Complex Zones will
do the same. The method discovery is as follows: Device A (CSiD or
CSoD-CZ) broadcasts MsgType(0x01) "Discovery Hello" to all devices.
The "Discovery Hello" message contains the message header, the CRP
payload contains all device certificate Issuer DNs. If the device
has only one CA, then CRP(A) can be omitted. Whole message is sent
along with CERT(A) and is signed by the device private key.
If Indirect Authentication is supported, then CACH(A) must be
included inside the "Discovery Hello" message.
Device B: The zone is limited by manufactured set value Zone_Limit of
zone generator device. The device B (ZM) verifies incoming message
authenticity, by verifying message signature and Cert (A) using its'
own CACH(B), tries to find the certificate based on CRP(A) list. If
one of these operations fails, then device B drops received message.
Otherwise Device B generates "Discovery Response". The "Discovery
Response" contains message header, the zone encryption algorithm, the
Gildred, et al. Expires January 15, 2005 [Page 25]
Internet-Draft PERM July 2004
Zone_Limit, the Zone_Size (current number of CSiDs in the zone), zone
identification number - UID(zone), Device B's CAs Issuer DN- chain
and CERT(B). CERT(B) is chosen based on the CRP(A) list (lowest
match in the chain). If the device has only one CA then CRP(B) can
be omitted. The "Discovery Response" message is signed by the
Priv_B.
If Indirect Authentication is supported, then CACH(A) must be
included inside the "Discovery Hello" message.
Device A: Examines "Discovery Response" messages. If no responses
are received within 3 seconds and device A is a CSoD, then it creates
a new zone (or first prompts the user to create a zone, then creates
it). Creating a new zone is simply creating a zone key, KZ, for the
zone. A zone key is a 32-bytes random number. The size of zone key
depends on zone encryption algorithm type. See Table 10 Encryption
algorithm and key length correspondence for zone key sizes. The
remaining bytes of zone key must be set to 0x00.
If device A is a CSiD, then above described actions must be skipped
and when the response is received, Device A verifies a message
validity and authenticity. Authentication of Device B is performed
by verifying the entire received message signature and CERT(B) using
its own CA chain. By continuing "Discovery Response" message
verification, Device A verifies message validity, compares zone
encryption algorithms with its own list. If there is a match then it
checks Zone_Size is less than Zone_Limit. If yes, device A checks
if it has a certificate from CRP(B) list. If yes, "Join Zone
Request" is generated.
If any of the above checks fail then Device A must discard "Discovery
Response" message.
If Indirect Authentication is supported, then CACH(B) must be
included inside the "Discovery Response" message.
All messages are signed according to [19] and [15] for RSA and DSS
signature respectively.
The MsgType of device authentication protocol is defined in more
detail in Annex A: MsgType Header Description.
Subsequent actions are described in the following section.
14.5 Zone Membership
Device A: After verifying and authenticated the device B's "Discovery
Response", it considers the zone available, but not yet valid. This
Gildred, et al. Expires January 15, 2005 [Page 26]
Internet-Draft PERM July 2004
procedure is done for each response. If many responses are provided
for each zone, then only the first response for each zone should be
examined, the remaining responses for each zone may be ignored.
If more than one zone is found, the device selects a zone to join (or
prompts the user to select one). Zone membership protocol has the
following form:
Device A: CSoD/CSiD Device B: CSoD
{MsgType (0x03),
UID (zone), device_role,
<CACH(A)>, Cert (A)} SIGN(Priv_A)
--------------------------->
{MsgType (0x04), UID(zone),
E[KZ, Pub_D], TLT, <CACH(B)>,
Cert (B)}SIGN(Priv_B)
<-----------------------------
Figure 4: Join Zone Request and Response (MsgType 0x03, 0x04)
Device A: Sends a MsgType(0x03) "Join Zone Request" to Device B to
get a zone key. The request contains message header, zone
identification number UID (zone) and Device A's certificate CERT(A).
The whole message is signed by the device private key Priv_D.
If Indirect Authentication is supported, then the chain of <CACH(B)>
has to be included inside the "Join Zone Request" message.
Device B: Verifies the validity and authenticity of a "Join Zone
Request" for a zone key by doing the following: verifies incoming
message signature; and verifies the Cert (A)'s validity. Before
doing any validation, the device B must check, if device_role is CSiD
or CSiD/CSoD, and if to then checks to see if current number of zone
devices is less than manufacture set value Zone_Size < Zone_Limit.
Also if Device B does not support Complex Zones, then it checks to
make sure that the device_role is neither CSoD nor CSoD/CSiD. If one
of these conditions is not valid, then the CSoD must drop the "Join
Zone Request" message and send an "Status Notification" with the
corresponding status code (see Annex E) and no new devices can join
the zone.
If message is valid and well formatted, then Device A is considered a
valid candidate to join the zone and Device B responds to Device A's
request by MsgType(0x04) "Join Zone Response" and increments the
Gildred, et al. Expires January 15, 2005 [Page 27]
Internet-Draft PERM July 2004
current number of zone device Zone_Size by one. The response
includes message header, zone ID and the zone key KZ, encrypted with
Device A's public key. The "Join Zone Response" is sent along with
KZ, lifetime and device B's certificate. A zone key lifetime TLT is
defined by the following way TLT = TZ-TE , where TZ is a manufacture
set or user modified zone key lifetime and TE is a elapsed time
starting from the zone key generation time or renewal time.
The whole message is signed. If "Join Zone Request" doesn't pass one
of the above verification, then Device B sends "Status Notification"
with corresponding status code Appendix E.
The "Status Notification" message has the following form:
Device A: CSoD/CSiD Device B: CSoD
{MsgType(0x08), StatCode,
<CACH(B)>, CERT(B)}
SIGN(Priv_B)
<---------------------
Figure 5: Status Notification (MsgType 0x08)
If Indirect Authentication is supported, then the chain of <CACH(B)>
must be included inside the "Join Zone Response" message.
Device A: Examines the "Join Zone Response" in the following manner:
verifies the "Join Zone Response" message validity and authenticity.
Checks the validity of Device B certificate, if valid then uses
Device A's private key to decrypt zone key and stores the zone key in
secured storage (smart card or embedded memory).
Device A is now a member of the zone by virtue of having the zone
key. A "Status Notification" with status code success informs Device
B about becoming a new member of zone.
No other device has a record of this membership, as membership is
defined by the device having a copy of the zone key pair. It is
recommended that no PERM device may have more than one zone key at a
time. If a device contains a zone key, and requests to change its
zone to another, and successfully negotiates to get the key pair for
the new zone, then that device should erase the pre-existing zone key
from secure storage immediately after saving the new zone key.
Further robustness rules may be defined by the CA of the device to
restrict changing zones too easily, for example, not more than once
Gildred, et al. Expires January 15, 2005 [Page 28]
Internet-Draft PERM July 2004
in a 30-day period.
The device authentication protocol MsgType is defined in more detail
in Annex A: MsgType Header Description.
To avoid an anti-replay attack it is recommended to use methods
described in [2]. Each authentication and zone membership message
has message id in a message header. The message id can be converted
into a counter. As in all counter-based anti-replay schemes, each
side should keep a record of the last message id it received from the
peer. The initiator uses 1 in "Discovery Hello" as his first message
id, and he increments this value by 1 on each subsequent messages.
The responder does the same, but he always sets the high bit of his
message id to 1. This ensures that the initiator and responder can
never generate the same value.
PERM is protected from the man in the middle attack as well because
all messages are signed. An attacker can intercept messages going
between the two parties but it won't able to modify messages.
14.6 Zone Renewal
The zone key has a lifetime, which is passed from the ZM along with
encrypted zone key. This lifetime can be set at manufacturing time
or can be changed by the user (depending on device capability). It
is recommended to use 86400 seconds (24 hours). It is ZM's
responsibility to regenerate the zone key upon expiration of the
current zone key. It is recommended that the ZM regenerate the zone
key 300 seconds before the current zone key expiration and broadcast
"Update Membership" message to the entire zone.
The "Update Membership" message has the following form:
Entire Zone Device B: CSoD (ZM)
{MsgType (0xA3), UID(zone),
E[new KZ, old KZ],TZ,
<CACH(B)>, Cert (B)}
HMAC(old KZ)
<----------------------------
Figure 6: Update Membership (MsgType 0xA3)
Device B ZM broadcasts an "Update Membership" message to the entire
zone. The message contains MsgType(0xA3), zone UID, new generated
zone key (new KZ ) encrypted with the old zone key (old KZ ) using
Gildred, et al. Expires January 15, 2005 [Page 29]
Internet-Draft PERM July 2004
the zone encryption algorithm. The AES_128_ECB is used for
distributing the zone key. The KZ is broadcasted along with lifetime
TZ. and device certificate CERT(B). The entire message is
authenticated by {"Update Membership"}HMAC(old KZ).
If Indirect Authentication is supported, then the chain of <CACH(B)>
must be included inside the "Renew All Membership" message.
By receiving the "Update Membership" message, all devices must verify
message authenticity. If message is valid and device belongs to the
same zone, then the zone key should be decrypted and renewed.
Zone member devices can make a new request to the ZM to renew device
membership (get a new zone key) at the zone key expiration time, if
they do not receive an "Update Membership" message for some reason.
This new request is called a "Renew Membership" request. The "Renew
Membership" request and response are protected by signature.
This message has the following form:
Device A: CSoD/CSiD Device B: CSoD (ZM)
{MsgType (0x05), UID( zone),
<CACH(A)>, Cert (A) }
SIGN(Priv_A)
------------------------>
Join Zone Response
<--------------------------
Figure 7: Renew Membership (MsgType 0x05)
Device A: Sends a "Renew Membership" request message. The request
contains a message type MsgType(0x05), UID(zone), device certificate
CERT(A) and the entire message is signed by device private key.
If Indirect Authentication is supported, then the chain of <CACH(B)>
must be included inside the "Renew Membership" request message.
Device B: By receiving MsgType(0x05) ZM checks the message validity
and authenticity by verifying message signature, verifies certificate
validity. The ZM must verify if device A previously belong to the
zone. If all validations are successful, then Device B sends a "Join
Zone Response" message, which is defined in section Zone Membership.
Otherwise, it sends an "Status Notification" message with
corresponding status code and Device A will be out of zone.
Gildred, et al. Expires January 15, 2005 [Page 30]
Internet-Draft PERM July 2004
Device A: By receiving "Join Zone Response" device checks message
validity and authenticity by verifying signature and certificates
validity. If message is well formatted and all verifications are
passed, device decrypts a new zone key and stores it in secure
storage (smart card or embedded memory).
If the ZM is physically removed from the zone or turned off, then
upon the next zone key expiration time, if a zone member device send
a "Renew Membership" request and subsequently does not receive a
"Renew Membership" response within the timeout period, the device
must disable its copy of the zone key, effectively removing itself
from the zone.
If the device is a CSoD-CZ, then upon "Join Zone Response" or "Renew
Membership" response timeout the CSoD must send a "Negotiate Zone"
message which includes a new randomly generated UID(zone) value and
listen for other "Negotiate Zone" messages from other CSoDs for 1
second. If the CSoD receives a "Negotiate Zone" message (which is
signed by the device private key) within the one second period, it
must remember the UID(zone) value from each. At the end of the 1
second period the highest UID(zone) value is determined between all
received UID(zone) values and its own new UID(zone) value.
The "Negotiate Zone" message has the following form
Device A: CSoD Old Zone
{ MsgType(0x06), UID(new zone),
<CACH(A)>, CERT(A)}
SIGN(Priv_A)
------------------------>
Figure 8: Negotiate Zone (MsgType 0x06)
If its own value is the highest of all, then the CSoD assumes that it
is the new ZM and sends a "Renew Zone" broadcast message. If its own
value is not the highest, then it assumes that another device is the
new ZM and it waits for a "Renew Zone" message from the new ZM, and
all devices previously in the zone send a "Join Zone Request" to
re-join.
14.7 Zone Merging
It is possible that 2 zones can merge together. The one of the
initiator zone devices (CSoD or CSiD) must broadcast the "Discovery
Hello" message and gets back a "Discovery Response" messages from the
Gildred, et al. Expires January 15, 2005 [Page 31]
Internet-Draft PERM July 2004
different ZMs . After verifying "Discovery Response" messages and
choosing to which zone to join, initiator zone device broadcasts
"Renew Zone" message to entire zone (see Figure 7 Renew Zone
Message). Choosing a new ZM must be done by considering the new ZM
Zone_Limit, Zone_Size and CACH. It is possible, that some of the
devices which were in the initiator zone cannot be included in the
new zone, if they do not have a common CA with the new ZM, or the new
ZM limits the total number of zone devices. Only CSiD and CSiD/CSoD
must join to the new zone. The old ZM (CSoD) will be out of merged
zone and must keep its zone key.
The "Renew Zone" message must contain UID(old zone) matching the
current zone ID and UID(new zone) matching the ID of the zone to
which it wants to join. The message also contains IP address of the
new zone ZM. The entire message is protected by {"Renew
Zone"}HMAC(zone key), where the zone key is a current zone key. When
initiator zone devices receive "Renew Zone" message and verify
message validity, they must send "Join Zone" message to the new ZM.
The sequence of messages is as follows:
1. (CSoD/CSiD from Zone A -> Zone B): <"Discovery Hello">
2. (Zone B -> CSoD/CSiD from Zone A): <"Discovery Response">
3. (CSoD/CSiD from Zone A -> Zone A): <"Renew Zone">
4. (All devices from Zone A -> ZM of Zone B): <"Join Zone">
The "Renew Zone" message contains the following:
Device A: CSoD (New ZM) Old Zone
{MsgType(0x07), EncAlg(A),
UID(old zone), UID(new zone),
ZM address,
<CACH<A)>, Cert (A)}
SIGN(Priv_A)
--------------------------->
Figure 9: Renew Zone (MsgType 0x07)
MsgType is the message type defined in Annex A: MsgType Header
Description, EncAlg(A) is a set of encryption algorithms, UID(old
zone) and UID(new zone) is an old and new zone IDs, ZM address is a
64 bit number, which usually will be an IP address of new ZM,
CERT(A) is new ZM certificate. The entire message is signed by new
ZM private key Priv_A.
If Indirect Authentication is supported, then the chain of <CACH(A) >
Gildred, et al. Expires January 15, 2005 [Page 32]
Internet-Draft PERM July 2004
must be included inside the "Renew Zone" message.
When the ZM is turned on again or physically reconnected to the
network, it sends a "Discovery Hello" message first to see if any ZM
have assumed control over its zone. If not, then it sends a "Renew
Zone" broadcast message.
14.8 Zone Content Protection
In the case where protected content originates from outside the PERM
Zone, a PERM CSoD may serve as an acquisition point for this content.
The CSoD may provide the acquired content to the entire PERM Zone.
This CSoD must include a conditional access system authorized by the
content provider in order to properly decode the content received
from the provider. An example of a content provider could be a cable
MSO, satellite TV provider, or Internet content provider.
To get content, a PERM CSiD makes "Content Request". If CSiD wants
to make content available to the entire zone, then it must use zone
Profile Z, with MsgType(0xA0). In Profile Z a "Content Request" has
the following form:
Device A: CSoD Device B: CSiD
{MsgType(0x09), Protection_mode,
<Protection_config>, EncAlg(B), UID(zone),
EDM_value, <CACH(B)>, CERT(B)}
HMAC(KZ)
<-------------------------------------
Figure 10: Content Request, Prof Z (MsgType 0x09, 0xA0)
Device B: CSiD makes a "Content Request" using HTTP Get Request. The
"Content Request" message can be set into the request-header. This
field allows CSiD to pass additional information to CSoD which
contains a list of supported encryption algorithms, UID of zone,
CERT(B), all protected by a zone key HMAC.
If Indirect Authentication is supported, then CACH(B) must be
included inside the "Content Request" message.
Device A: CSoD verifies message validity and authenticity by
calculating {"Content Request"}HMAC(KZ); compares the requested
scrambling algorithms with its own algorithms and chooses the first
matching one from the EncAlg(B); checks requester certificate
validity and checks device CUR's in content directory by using UID(B)
Gildred, et al. Expires January 15, 2005 [Page 33]
Internet-Draft PERM July 2004
from the certificate. CSoD discards the "Content Request" and sends
"Status Notification" with the corresponding status code to CSiD, if
CURs don't allow for this request or one of the above verification
doesn't pass.
Otherwise, it is possible to have the scenarios listed in the
following subsections.
14.8.1 Protected Mode
If the protected content originates outside the PERM Zone, and the
content is not encrypted by the content provider, then CSoD must does
the following actions:
1. Generates content key KC. The size of KC depends on encryption
algorithm type. For example, TDES requires a 24 - bytes length
key, for AES [14] it can be 16, 24 or 32-bytes length. KC is
generated by a random number generator;
2. Encrypts the content key using method corresponding to the
algorithm appropriate for the type of peer end certificate. For
example, if the peer end certificate contains an RSA public key
then KC is encrypted using the RSA encryption method. If the
certificate contains a DSA public key then KC is encrypted by the
method described in section Annex F: DSA Certificates;
3. Generates the ECM, encrypts KC by using the requester's RSA
public key, obtained from CERT(B). The entire ECM is protected
by zone key {ECM}HMAC(KC);
4. Padding is used to make an unencrypted content to multiple of
encryption block size. TDES has a 8-bytes block size length, AES
has a 16- bytes block size length and respectively the padding
length must be defined based on encryption algorithm type. As a
padding mechanism can be used method defined in [16].
Device A: CSoD Device B: CSiD
{ECM Header, E[KC, KZ], CUR's}
HMAC(KZ), E[Content, KC], Padding
--------------------------------------->
Figure 11: Content Delivery
Device B: CSiD first calculates {ECM}HMAC(KZ) and compares it against
the received value. If both values are the same, then the CSiD
decrypts KC and uses it to decrypt the content.
In this mode KC will remain valid for duration the session validity
period, which can be defined by the manufacture or user. At KC
Gildred, et al. Expires January 15, 2005 [Page 34]
Internet-Draft PERM July 2004
expiration time the CSoD must generate a new session key.
14.8.2 Pass Through Mode
If protected content is received by the CSoD from the content
provider in encrypted form, then the content encryption is preserved
if possible, and only the content's original ECM is replaced by a
PERM Zone ECM. Replacing the ECM involves the following process:
1. Compare content requester encryption algorithms with incoming ECM
encryption algorithms and chooses first match;
2. If they match, then Decrypt the original ECM content key; Extract
the content key and the usage rules; Translate the usage rules to
the appropriate PERM CURs; Re-encrypt the content key; Calculate
HMAC using the zone key;
3. If preserving the original content scrambling is not possible or
the original content was not scrambled, then content must be
encrypted using PERM compliant scrambling, and accompanied by a
PERM Zone ECM.
14.8.3 Clear Mode
CSiD can request content with a NULL encryption algorithm, which
means CSiD requests the content in clear mode. If CURs allows
passing the content in clear, then CSoD translates usage rules to
CUR's format, generates ECM and transfers the content in clear mode,
otherwise it sends "Status Notification" with corresponding status
code.
The clear content is sent along with Long ECM in first content
transfer packet. After this, CSoD uses Short ECM for the following
contents, if CUR's are the same. It switches to the Long ECM, when
CUR's are changed.
14.8.4 Zone Broadcasting and Multicasting
CSoD can broadcast or multi-cast content to whole zone or one of the
zone devices can make content request for entire zone. To make
content available to whole zone, CSoD must use Profile Z ECM. Only
zone member devices can decrypt the content.
First, CSoD randomly generates content protection key (see Protected
Mode), then generates ECM, encrypts content with content key; and
then content key is encrypted with zone key and entire content with
zone ECM is broadcasted or multi-cast to whole zone as described in
Protected Mode (see Figure 8 Zone ECM in Protected Mode).
By receiving zone ECM, each zone member device first validates zone
ECM: checks zone ECM HMAC, checks for well formatting and then
Gildred, et al. Expires January 15, 2005 [Page 35]
Internet-Draft PERM July 2004
decrypts the content key and decrypts the content.
Gildred, et al. Expires January 15, 2005 [Page 36]
Internet-Draft PERM July 2004
15. PERM Device Requirements
Developers of PERM devices should include the unique PERM device key
and X.509 v3 certificate. The device key pair must be unique to each
device, and each device must also have a unique identifier (UID),
which is unique across all PERM devices from any vendor. The CA's
X.509 certificate should also be included in each device.
A PERM device should include:
1. Priv_D
2. CERT(Device)
3. CERT(CA) or CACH()
4. Zone_Limit (CA imposed maximum allowed number of CSiDs in a zone)
5. TZ - Zone key life time (it is recommended to use 86400 seconds)
Gildred, et al. Expires January 15, 2005 [Page 37]
Internet-Draft PERM July 2004
16. Certification and Compliance Rules
Device/implementation certification requirements of certificate
authorities and applicable compliance and robustness rules are
outside the scope of this specification. However, PERM is only as
secure as the device which uses it. Third-party key licensing
authorities supporting the PERM protocol would most likely include
additional compliance rules for device certification. Such rules
should ensure a significant barrier to circumvent or disable the
security mechanisms provided by PERM and the certification program.
Gildred, et al. Expires January 15, 2005 [Page 38]
Internet-Draft PERM July 2004
17. Future Work
1. Support for Elliptic Curve (ECC)
2. Additional Content Request Methods (CRMs)
3. Additional ECM Delivery Methods (EDMs)
Gildred, et al. Expires January 15, 2005 [Page 39]
Internet-Draft PERM July 2004
18. Security Considerations
The Cryptographic strength of PERM protocol is based on discrete
logarithm and factorization problem on which the RSA and DSA
algorithms are based. The proposed protocol uses a 1024-bit or
larger size key for RSA and DSA, the cryptographic strength of which
are approximately 2^86 or greater. Future versions of PERM will
likely include the addition of elliptic curves which may greatly
increase strength using much smaller numbers.
PERM uses DES, TDES and AES symmetric algorithms for content
scrambling.
The strength of all keys are limited by the size of the output of the
negotiated PRNG function. PERM uses PRNG based on SHA-1 as described
in [15] Appendix 3.
The security of this protocol is critically dependent upon the
randomness of the randomly chosen parameters. These should be
generated by a strong random or properly seeded pseudo-random source.
See [17]. Implementors should take care to ensure that the use of
random numbers for both keys and nonces is engineered in a fashion
that does not undermine the security of the keys.
PERM is protected against man-in-the-middle, impersonation and
anti-replay attacks.
19 References
[1] National Institute of Standards and Technology, "Recommendation
for Block Cipher Modes of Operation", Document# SP800-38A,
2001.
[2] Krywaniuk, A., "Using Isakmp Message Ids for Replay
Protection", Internet Draft
draft-krywaniuk-ipsec-antireplay-00, July 2001.
[3] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message Bodies",
RFC 2045, November 1996.
[4] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046, November
1996.
[5] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part
Three: Message Header Extensions for Non-ASCII Text", RFC 2047,
Gildred, et al. Expires January 15, 2005 [Page 40]
Internet-Draft PERM July 2004
November 1996.
[6] Freed, N., Klensin, J. and J. Postel, "Multipurpose Internet
Mail Extensions (MIME) Part Four: Registration Procedures", RFC
2048, November 1996.
[7] Berners-Lee, T., Fielding, R. and H. Frystyk, "Hypertext
Transfer Protocol -- HTTP/1.0", RFC 1945, May 1996.
[8] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L.,
Leach, P. and T. Berners, "Hypertext Transfer Protocol -- HTTP/
1.1", RFC 2616, June 1999.
[9] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson,
"RTP: A Transport Protocol for Real-Time Applications", RFC
3550, July 2003.
[10] Schulzrinne, H., Rao, A. and R. Lanphier, "Real Time Streaming
Protocol (RTSP)", RFC 2326, April 1998.
[11] Handley, M. and V. Jacobson, "SDP: Session Description
Protocol", RFC 2327, April 1998.
[12] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
the Session Description Protocol (SDP)", RFC 3264, June 2002.
[13] National Institute of Standards and Technology, "Secure Hash
Standard", FIPS PUB 180-1, April 1995.
[14] National Institute of Standards and Technology, "Advanced
Encryption Standard", FIPS 197, November 2001.
[15] National Institute of Standards and Technology, "Digital
Signature Standard", FIPS 186, May 1994.
[16] Atkinson, R. and S. Kent, "IP Encapsulation Security Payload
(ESP)", RFC 2406, 1998.
[17] Eastlake, D., Crocker, S. and J. Schiller, "Randomness
Recommendations for Security", RFC 1750, December 1994.
[18] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-Hashing
for Message Authentication", RFC 2104, February 1997.
[19] RSA Laboratories, "PKCS#1: RSA Encryption Standard", PKCS 1,
Version 2.1, June 2002.
[20] Srinivasan, R., "XDR: External Data Representation Standard",
Gildred, et al. Expires January 15, 2005 [Page 41]
Internet-Draft PERM July 2004
RFC 1832, August 1995.
[21] Housley, R. and P. Hoffman, "Internet X.509 Public Key
Infrastructure - Operational Protocols: FTP and HTTP", RFC
2585, May 1999.
[22] International Telecommunications Union, "Information technology
- Open System Interconnection - The Directory: Overview of
concepts, models and services", ITU-R X.500, ISO/IEC
9594-1:1997, 1997.
[23] International Telecommunications Union, "Information technology
- Open System Interconnection - The Directory: Models", ITU-T
X.501, IEC 9594-2:1997, 1997.
[24] Housley, R., Ford, W. and D. Solo, "X.509 PKI certificate and
certificate revocation list (CRL) Profile", RFC 2459, January
1999.
Authors' Addresses
John Gildred
Pioneer
101 Metro Drive, Suite 264
San Jose, CA 95110
US
Phone: +1 408 437 1800
EMail: john@pioneer-pra.com
URI: http://www.pioneerelectronics.com/
Ashot Andreasyan
Pioneer
101 Metro Drive, Suite 264
San Jose, CA 95110
US
Phone: +1 408 437 1800
EMail: ashot@pioneer-pra.com
URI: http://www.pioneerelectronics.com/
Gildred, et al. Expires January 15, 2005 [Page 42]
Internet-Draft PERM July 2004
Roy Osawa
Thomson
EMail: roy.osawa@thomson.net
URI: http://www.thomson.net/
Tom Stahl
Thomson
EMail: tom.stahl@thomson.net
URI: http://www.thomson.net/
John Card
Echostar
EMail: john.card@echostar.com
URI: http://www.echostar.com/
Gildred, et al. Expires January 15, 2005 [Page 43]
Internet-Draft PERM July 2004
Appendix A. MsgType Header Description
The following table explains general message header format, which is
used in Device Authentication and Zone Membership protocols.
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MsgType | Version | Message Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following are the allowed MsgType values:
Gildred, et al. Expires January 15, 2005 [Page 44]
Internet-Draft PERM July 2004
Hex Definition
---- ----------
0x00 Reserved
0x01 "Discovery Hello" - Broadcasted by device to authenticate
itself, when it first connected to a network
0x02 "Discovery Response" - Response to "Discovery Hello" message
0x03 "Join Zone Request" - Request to join a zone
0x04 "Join Zone Response" - Sent by ZM in response to a "Join Zone
Request" message
0x05 "Renew Membership" - Request to ZM renewing for zone key
0x06 "Negotiate Zone" - Sent by CSoD to negotiate a new zone
0x07 "Renew Zone" - Announce requirement for all zone devices to
renew zone key
0x08 "Status Notification" - Used to inform peer end about status or
result of the action
0x09 "Content Request Z" - for Profile Z, extends existing content
request protocols such as HTTP
0xA0 "Content Request MZ" - for Profile Z for broadcast or
multicast, extends existing content request protocols such as
HTTP
0xA1 "Content Request D" for Profile D - Requests a content for a
device
0xA2 "Content Request U" for Profile U - Requests a content for a
user
0xA3 "Update Membership" - Broadcasted by ZM to entire zone for zone
key updating
1. Version (1 byte)- PERM protocol version consists from major and
minor portions. High four bits indicates the major version of
the PERM protocol and low four bits indicates minor version.
Implementations should never accept packets with a major version
number larger than its own.
Gildred, et al. Expires January 15, 2005 [Page 45]
Internet-Draft PERM July 2004
2. Msg Length (2 bytes) - Total length of message including all
message and signature.
3. Message ID (4 bytes) - This number is generated as described in
[2]. It is used for anti-replay protection. For "Status
Notification" case it is set to zero.
Gildred, et al. Expires January 15, 2005 [Page 46]
Internet-Draft PERM July 2004
Appendix B. PERM CURs
Each ECM has a set of CURs. The following actions are defined for
PERM CURs with consideration given toward alignment with similar
rights defined in MPEG-21 Part 5 Multimedia Extensions. Each action
may be restricted by the action parameters. The combination of an
action with restriction parameters makes up one CUR. If any CUR is
not included in the ECM or it is included without any parameter, then
it is considered as having the "never" parameter.
The following are the CUR actions defined in PERM and the bit
positions of each in the CUR section of the ECM. Setting the bit
position to 1 signifies that the action is allowed, and the action
must be constrained by any action parameters. A value of 0 signifies
that the action is not allowed, and any action parameters are
ignored.
Bit Action Definition
--- ------------- ----------
0 Play Display/render or convert to analog and output
for display/render
1 Copy Record to non-removable persistent storage, leave
original copy in tact
2 Move Record to non-removable persistent storage, erase
original copy
3 Burn Copy Record to removable persistent storage, leave
original copy in tact
4 Burn Move Record to removable persistent storage, erase
original copy
5 Cache Keep partial or complete copy in temporary
storage to enhance live viewing performance, no
limit to cache size
6 Short Cache Keep partial or complete copy in temporary
storage to enhance live viewing performance,
limited cache size
7 Skip Ahead Jump ahead in the content sequence a short
distance during viewing, for example 30 seconds
8 Ad Skip Remove or bypass embedded advertisements during a
recording or viewing
Gildred, et al. Expires January 15, 2005 [Page 47]
Internet-Draft PERM July 2004
9 Replay Jump back in the content sequence a short
distance during viewing to replay content
10 Pause Pause playback with or without freeze frame
display
11 Fwd Scan Playback in forward direction faster than
real-time
12 Rev Scan Playback in reverse direction real-time or faster
13 Fwd Slow Playback in forward direction slower than
real-time
14 Rev Slow Playback in reverse direction slower than
real-time
15 Fwd Frame Move one frame forward and pause
16 Rev Frame Move one frame backward and pause
17 Fwd Seek Move to a specified location forward in the
content and begin/resume playback
18 Rev Seek Move to a specified location backward in the
content and begin/resume playback
19 Delete Remove entire item from persistent storage
20 Modify Change content and save changes over previous
version
21 Adapt Save a modified copy of the content
22 Extract Extract a portion of the content
23 Embed Insert data into the content
24 Enlarge Make the item larger
25 Reduce Make the item smaller
26 Execute Execute a run-time instance of the item
27 Print Render a physical representation of the content
28 Install Install components of item in order to allow
usage
Gildred, et al. Expires January 15, 2005 [Page 48]
Internet-Draft PERM July 2004
29 Uninstall Remove components of item from system
30 Enable Make the item active for user interaction
31 Disable Make the item inactive for user interaction
32 Show Display the content item in as available
33 Hide Hide the content item obscuring its availability
34 Change Rights Change CURs to be more restrictive
A CUR action is defined as a logical OR of the above mentioned
actions. It is a 64-bit unsigned integer (uint64 cur_action). Each
bit corresponds to one action.
All parameters corresponding to allowed actions must be populated
with valid data. The following parameters are applied to each action
separately:
o action_limit: Restricts content action by number if instances.
o action_start: Action is allowed only after this time.
o action_until: Action is allowed only before this time.
action_limit is applicable only during the allowed period as defined
by action_start and action_until. The following values are allowed
for action_limit:
Value Description
-------- -----------
0 Action may not occur, effectively same as action not
allowed;
65535 Action may occur unlimited number of instances;
1-65534 Action may occur n number of instances.
It is possible to create a 'blackout window' for an action by setting
action_start later than action_until. This is allowed, however this
configuration will result in the action being allowed indefinitely
after action_start.
action_start and action_until are in standard UTC 32-bit format
(seconds since the midnight starting Jan 1, 1970, GMT) according to
the CSoD internal clock. A value of all 0's for action_start is
interpreted as infinitely in the past. A value of all 0's for
Gildred, et al. Expires January 15, 2005 [Page 49]
Internet-Draft PERM July 2004
action_until is interpreted as infinitely in the future.
The format of action parameters is the following:
struct {
uint16 action_limit;
unit32 action_start;
unit32 action_until;
}action_params;
The following diagram illustrates the format of the CUR section of an
ECM.
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| cur_expire_offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| cur_region |
| ... |
| ... |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| cur_action |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| action_params |
| ... |
| ... |
| ... |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
cur_expire_offset defines the expiration time of the CURs in the ECM.
It is sent only in a Long ECM, and it is applied to all CURs in that
ECM. The CUR expiration time is defined as the beginning of the
stream (set as time=0) increased by the cur_expire_offset. When the
CUR expiration time is reached, the ECM is invalid and use of the
content item must cease immediately. cur_expire_offset is a 32-bit
unsigned integer containing the offset amount of time (always
positive) in seconds.
If the content stream contains a dynamic ECM (changing periodically
throughout the stream), then each ECM only applies to the segment of
the stream following the embedded ECM. In this case, the CUR
expiration time is defined as the beginning of the stream segment
where the current CURs were extracted (set as time=0) increased by
Gildred, et al. Expires January 15, 2005 [Page 50]
Internet-Draft PERM July 2004
the cur_expire_offset. For uninterrupted playback, in such a case,
the cur_expire_offset must be long enough to allow for the next long
ECM to arrive before expiration.
In the case where viewing of the content is not time-base, such as an
image, the CUR expiration time is defined as the start time of
viewing (time=0) increased by the cur_expire_offset. This
effectively limits the viewing time of the content by the number of
seconds in cur_expire_offset.
cur_region is an 8-bit unsigned integer representing region_type
followed by an 11 byte string representing the applicable region of
the CURs. Only one region may be defined per set of CURs. The
cur_region field consist of the following format:
struct {
uint8 region_type;
uchar11 region_data;
}cur_region;
The following region_types are defined:
Value Type
----- -------------
0 Reserved
1 PERM Standard Region - ISO 3166 2-character country code + up
to 9 chars for postal code
2 GPS Location (4 bytes Longitude, 4 bytes Latitude, 3 bytes
Altitude)
3 DVD Region (integer value 1-7)
4-253 Undefined
254 Vendor Defined Region Type
Each action_params structure corresponds to each set action bit in
big-endian format. The total number of action_params depends on
number of active actions set bits in the cur_action. m times defines
the number of action_params.
Gildred, et al. Expires January 15, 2005 [Page 51]
Internet-Draft PERM July 2004
Appendix C. PERM ECM
There are two types of scheme for the PERM ECM: Long and Short. The
Long ECM is always applied to the first content and when CURs are
changed. After sending the Long ECM, CSoD switches to a Short ECM if
CURs remain unchanged.
A Long ECM has the following form:
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Content Key |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CURs |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| <CACH> |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CERT() |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| HMAC or SIGN() |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
A Short ECM has the following form:
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Content Key |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The following subsections describe the ECM in more detail.
C.1 ECM Header
The ECM header has the following form:
Gildred, et al. Expires January 15, 2005 [Page 52]
Internet-Draft PERM July 2004
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Scope | Reserved | Version | Scheme |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length (including Header) | EncALg | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IV |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The ECM Header fields are defined as follows:
o Scope (1 byte) - indicates ECM type: Zone, Device, User (see Table
8 Scope Values);
o Reserved (1 byte) - Must be set zero;
o Version (1 byte) - Defined in Annex A;
o Scheme (1 byte) - Long or Short (see Table 9 Scheme Values);
o Length (2 bytes) - Length of total ECM and content;
o EncAlg (1 byte) - Defined in Section D: Encryption Algorithms and
Mode;
o Reserved (1 byte) - Must be set zero;
o ECM Sequence Number (4 bytes) - Sequentially increasing 32-bit
unsigned number [16]. This number is used by CSiD for preventing
against anti-reply attack. It is mandatory and is always present
even if the CSiD does not elect to enable the anti-replay service;
o IV (8 or 16 bytes) - IV must be chosen by the CSoD in a manner
that ensures that the same IV value is used only once for a given
key. The length of IV depends on encryption algorithm type. If
algorithm is TDES, then the length is a 8-byte, for AES length [1]
of IV is a 16-byte. If NULL encryption is applied then 8 byte IV
must be set to zero.
The following defines ECM Header Type Values.
Scope Value (Hex)
-------------- -----------
Reserved 0x00
User ECM 0x01
Device ECM 0x02
Zone ECM 0x03
The following defines ECM Header Scheme values.
Gildred, et al. Expires January 15, 2005 [Page 53]
Internet-Draft PERM July 2004
Scheme Value (Hex)
-------------- -----------
Reserved 0x00
Long 0x01
Short 0x02
C.2 Content Key
The content scrambling key follows right after the Long or Short ECM
Header. It is a randomly generated number and can be changed any
time by the content provider. It is always sent with the ECM,
encrypted by the CSiD public key. The key length depends upon the
encryption algorithm type. The following table shows the
correspondence between encryption algorithm type and key length.
Encryption Algorithm Key Length (Bytes)
--------------------- ------------------
NULL 8
DES 24
TDES CBC 24
AES CBC 128 16
AES CBC 192 24
AES CBC 256 32
If NULL encryption is applied then the 8-byte key and IV must be used
and set to zero (0).
C.3 CUR Section
The CURs are defined in more detail in Annex B: PERM CURs.
C.4 Certificate Authority Chain - CACH
This field is conditional and can be omitted in the ECM if both ends
share a common certification. If both ends support multiple
Certificate Authorities then CAs must be exchanged for verifying
certificates. The chain starts from a root certificate and ends with
Gildred, et al. Expires January 15, 2005 [Page 54]
Internet-Draft PERM July 2004
the issuer certificate. This field is used only in the case of
Profile D or Profile U.
C.5 Certificate - Cert
This field contains the CSoD's X.509 v3 device certificate. It
follows right after chain of authority's certificate. In more detail
it is described in [24]. The certificate is transferred only for
Profile D and U.
C.6 ECM HMAC and Signature
The HMAC [18] is applicable only for Profile Z, and it is calculated
using SHA-1 [13]. This algorithm is fixed for HMAC calculation. The
output of the HMAC is a 20-byte number.
A Signature is applied only when using Profile D or U. The length of
the signature depends on the CSoD certificate type. If the
certificate contains an RSA key, then the [19] standard must be used
for signature generation. If the certificate contains a DSA key,
then the [15] standard must be used for signature generation.
Gildred, et al. Expires January 15, 2005 [Page 55]
Internet-Draft PERM July 2004
Appendix D. Encryption Algorithms and Mode
The following table defines encryption algorithms vales used in
Device Authentication, Zone Membership protocols and "Content
Request" message.
Encryption Algorithm Value (Hex)
--------------------- -----------
NULL 0x00
DES 0x01
TDES CBC 0x02
AES CBC 128 0x03
AES CBC 192 0x04
AES CBC 256 0x05
Gildred, et al. Expires January 15, 2005 [Page 56]
Internet-Draft PERM July 2004
Appendix E. Status Notification
"Status Notification" informs a peer entity of success or status that
has occurred during protocol processing.
The "Status Notification" message has the following format:
0 1 2 3 4
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| StatCode |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| <CACH> |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CERT() |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SIg() |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Status Notification Message Header is described in Appendix A.
The following status codes are used in a status message:
enum{
success = 0x00,
zone_is_full = 0x01,
unknown_msg_type = 0x02,
unknown_msg_format = 0x03,
wrong_prot_version = 0x04,
enc_alg_mismatch = 0x05,
invalid_msg_id = 0x06,
cert_revoked = 0x07,
cert_expired = 0x08,
unknown_ca = 0x09,
no_room_in_zone = 0xa0,
not_allowed_to join = 0xa1
}STAT_CODES;
CACH - Chain of CA certificates. The CACH is used only for Indirect
Authentication.
CERT() can be omitted for initiator side, since it is in the third
message of Zone membership, protocols and responder already has the
initiator certificate public key for verifying "Status Notification"
digital signature.
Gildred, et al. Expires January 15, 2005 [Page 57]
Internet-Draft PERM July 2004
SIGN() digital signature, generated over the message. This is used
for verifying the integrity of the message and against
non-repudiation services.
Gildred, et al. Expires January 15, 2005 [Page 58]
Internet-Draft PERM July 2004
Appendix F. DSA Certificates
The above key distribution protocol requires that devices have an RSA
type certificate (certificate contains RSA public key). If a
device's certificate contains a DSA type public key, then some
additional computations must be done to generate the zone key.
The DSA [15] type of certificate contains deviceØs DSA public key
Pub_A inside the CERT(A).
When Device B receives "Join Zone Request" from device A, it does the
following computations using DSA common parameters from requester
certificate CERT(A). Generates 20-byte random number R(B) (1< R(B) <
Q-1) and computes one time public number PN(B). Using device A DSA
public key Pub_A from CERT(A), calculates shared secret key, SSK(B).
(see description bellow) Then the PN(B) is sent to device A. The
device A using PN(B) calculates the same SSK(A) as described bellow.
Device A Device B
DSA common parameters P,Q,G and Pub_A from certificate
CERT(A)
--------->
PN(B)=G^R(B) mod(P)
<----------------------
SSK(B) = Pub_A^R(B) mod(P)
SSK(A) = PN(B)^Priv_A mod(P)
Figure 12: Key Exchange Using DSA Certificate
Now both sides have the same shared number SSK(A) = SSK(B), which can
be used to generate zone key. Depends on encryption algorithm type
(see Table 10 Encryption algorithm and key length correspondence) the
zone key must be taken first bytes (starting from LSB) of SSK. If
algorithm type is TDES the weak key validation test must be done. If
weak key is found then must be shift one byte and do the same.
This mechanism allows generating the same shared secret key without
using special key exchange payload.
Gildred, et al. Expires January 15, 2005 [Page 59]
Internet-Draft PERM July 2004
Appendix G. Random Number Generator
A PERM device must use a pseudo random number generator (PRNG) based
on SHA-1 as described in [17] Appendix 3 for all random number
generation. The seed for PRNG must be set at manufacture time
securely or must be generated using different timing of clocking
speed, number of current processing being executing, etc. The seed
must be stored in FLASH memory.
Gildred, et al. Expires January 15, 2005 [Page 60]
Internet-Draft PERM July 2004
Appendix H. X.509 v3 Certificates
A PERM device must use only X.509 v3 certificates. Version 3
certificates are required as PERM uses private certificate extensions
for device UID, device type, Zone_Limit, and device region. The PERM
certificate extensions have the following structure.
Struct {
uchar8 uid [20];
uint32 dev_type;
uint32 zone_limit;
uint8 region_type;
uchar8 region_data [11];
} PERM_DEV_ID
The dev_type can be CSoD, CSiD or CSoD/CSiD. The device type values
are defined in the following table.
Device Type Value (Hex)
------------ -----------
Reserved 0x00
CSoD 0x01
CSiD 0x02
CSoD/CSiD 0x03
The uid is an alphanumeric string of 20 characters, which uniquely
defines a device. The zone_limit is valid only for CSoD and CSoD/
CSiD type of devices and is set to Zone_Limit. For CSiD this filed
is set zero. All these data are set by the CA and remains unchanged
during device lifetime. region_type and region_data are described in
a previous section of this document.
Gildred, et al. Expires January 15, 2005 [Page 61]
Internet-Draft PERM July 2004
Appendix I. CRL Request
This section describes the standard method of requesting CRLs in
PERM. Other standard and non-standard methods are allowed, however
the methods described in this section must be supported by a PERM
device.
HTTP GET: A PERM device must support certification requests via HTTP
GET as described in this section. The CRL request is simply an HTTP
GET which includes a CRL-REQUEST extension-header containing the
serial number of the CA certificate.
The response to an HTTP GET CRL request contains the requested CRL in
the format defined by content type application/pkix-crl [21].
Gildred, et al. Expires January 15, 2005 [Page 62]
Internet-Draft PERM July 2004
Appendix J. Certification Request
This section describes the standard method of requesting device or
user Certification in PERM. Other standard and non-standard methods
are allowed, however the methods described in this section must be
supported by a PERM device.
HTTP GET: A PERM device must support certification requests via HTTP
GET as described in this section. The certification request is
simply an HTTP GET which includes a PKCS10-REQUEST extension-header
containing the Base64 encoded PKCS#10 message. The PKCS#10 message
must be signed by the private key of the requesting user or device.
As the request must come from a previously certified user or device,
the request is always for re-certification.
The response to an HTTP GET certification request contains the new
certificate in the format defined by content type application/
pkix-cert [21].
Gildred, et al. Expires January 15, 2005 [Page 63]
Internet-Draft PERM July 2004
Appendix K. Content Request Methods (CRMs)
This section describes a basic set of PERM supported content request
methods (CRMs) and a method for including PERM authentication
information in each. The following request methods are allowed.
HTTP GET CRM: A PERM CSiD and PERM CSoD must support the HTTP GET CRM
as described in this section. This CRM is simply an HTTP GET which
includes a PERM-CR extension-header containing the base64 encoded
PERM message. Only PERM message types 0x09, 0xA0, 0xA1, 0xA2 may be
used in the PERM-CR extension-header.
The response to an HTTP GET CRM contains the requested content and
corresponding ECMs via the requested EDM (see below for EDMs).
RTSP CRM: A PERM CSiD and PERM CSoD may support the RTSP CRM as
described in this section. This CRM is simply an RTSP DESCRIBE
command which includes a PERM-CR extension-header containing the
base64 encoded PERM message. Only PERM message types 0x09, 0xA0,
0xA1, 0xA2 may be used in the PERM-CR extension-header.
The response to an RTSP CRM contains the requested content and
corresponding ECMs via the requested EDM (see below for EDMs).
Gildred, et al. Expires January 15, 2005 [Page 64]
Internet-Draft PERM July 2004
Appendix L. Protection Modes
This section describes a basic set of extensions to existing media
formats, content delivery methods, and other communication protocols
allowing for PERM ECMs to included with the content transfer or
obtained through a separate transfer session.
When sending a content request the CSiD must include the EDM value
which describes the required EDM for the response. The following EDM
values are allowed in a content request message.
Protection Mode Value (Hex)
--------------- -----------
Reserved 0x00
Protected 0x01
Passthru 0x02
Clear 0x03
Protected: This setting indicates that the CSoD may use one of the
encryption algorithms which are supported by the requesting CSiD. A
CSiD and CSoD is required to support Protected mode.
Passthru: This mode indicates that the CSoD may use the original
content encryption. The following content encryption configurations
are allowed. A CSiD and CSoD is not required to support Passthru
mode.
Gildred, et al. Expires January 15, 2005 [Page 65]
Internet-Draft PERM July 2004
Configuration Value (Hex)
--------------- -----------
Reserved 0x00
DVB 0x01
US-Cable-Card 0x02
US-Cable-SA 0x03
US-Cable-MOT 0x04
DirecTV 0x05
ARIB 0x06
ATSC 0x07
XM 0x08
SIRIUS 0x09
The format of each configuration is defined by the relevant digital
broadcast standards. More configuration types may be defined in the
future to accommodate additional digital broadcast standards.
Clear: This method should only be used if content encryption is not
desired. A CSiD and CSoD is not required to support Clear mode.
Gildred, et al. Expires January 15, 2005 [Page 66]
Internet-Draft PERM July 2004
Appendix M. ECM Delivery Methods (EDMs)
This section describes a basic set of extensions to existing media
formats, content delivery methods, and other communication protocols
allowing for PERM ECMs to be included with the content transfer or
obtained through a separate transfer session.
When sending a content request the CSiD must include the EDM value
which describes the required EDM for the response. The following EDM
values are allowed in a content request message.
EDM Value (Hex)
------------ -----------
Reserved 0x00
HTTP Response 0x01
RTP 0x02
HTTP Response EDM: This method must be used when responding to an
HTTP GET or POST. A CSoD is required to support HTTP Response EDM to
a requesting CSiD. In the HTTP Response EDM, the HTTP response must
be chunked encoded. The ECMs are inserted into the chunked payload
byte stream periodically as separate chunks. The ECM is delimited by
a 20-byte boundary value, a 2-byte sequence number, and a 1-byte
content type. The HTTP header of the response must include
parameters with the content type header. These parameters are used
to define the section boundary value as well as the primary content
type. The HTTP header of the response must include additional PERM
extension headers. A PERM-Version header declaring the PERM version
number, and one or more Subcontent-Type headers which define the
various payload section content types and their corresponding labels
(as used in the section content types). For example, an HTTP
Response header may include the following headers.
Content-Type: multipart/perm; primary-type=video/mpeg;
boundary="34lkekho3404u0e34kjt"
PERM-Version: 1.0
Subcontent-Type: video/mpeg; unit-length=176; label=aa
Subcontent-Type: application/perm-ecm; scheme=long;
unit-length=132; label=bb
Gildred, et al. Expires January 15, 2005 [Page 67]
Internet-Draft PERM July 2004
Subcontent-Type: application/perm-ecm; scheme=short;
unit-length=88; label=cc
In the example above, the content type includes two parameters:
primary-type and boundary (represented as a 20-char string). The
content type must be set to multipart/perm for PERM protected
content. The unit length defines the length of each body part
containing data of the corresponding subcontent type. A new
subcontent type header is introduced which can include any MIME
content type with associated parameters. The subcontent type header
requires two additional parameters: unit-length (in bytes) and label
which defines a 2-byte identifier (represented as a 2-char string)
for the subcontent type.
The above header example contains three subcontent types. One
defines the video content stream, and two of them define the long and
short ecms. The content type used for a PERM ECM is application/
perm-ecm. Application/perm-ecm requires a scheme parameter.
Currently the scheme parameter may contain one of the following
values: long or short.
Below is an example of a byte stream (represented by ascii characters
here for readability) which contains PERM ECMS according to the
header example above.
< beginning of bytestream >
< anything before the first boundary is ignored >
--34lkekho3404u0e34kjt0000bb <-- ( 1st Boundary )
34kl5lk34j3jhkj34lj6234524k5h3k5j3kj53648w8eh <-- ( Long ECM )
090d9g8w0r9t0v9et09g0aerg8a938rk2jhhr8sdd7gdf <-- ( ... )
097t9ry2ijfhk34th98yw9v832r2ekfjwhe9i3i33se74 <-- ( ... )
--34lkekho3404u0e34kjt0001aa <-- ( 2nd Boundary )
097t9ry2ijfhk34th98yw9v832riekfjwh98f8s74h3th <-- ( Video Data )
djr837xh0r9t0v9et09g0aerg8ga98rkhrtikw38d7gdf <-- ( ... )
42y7gsfbv837234th98yw9v832ri2ewheii3rui33se74 <-- ( ... )
lkj4liw09f8wyuoti2h3lrjwepf9g34okfhgd98ryt983 <-- ( ... )
--34lkekho3404u0e34kjt0002cc <-- ( 3rd Boundary )
34kl5lk34j3jhkj34lj62345235h3kj3kf09sd093a0e0 <-- ( Short ECM )
090d9g8w0r9t0v9et09g0aerga938ry894wudv90fjs8u <-- ( ... )
--34lkekho3404u0e34kjt0003aa <-- ( 4th Boundary )
jwepf9ueg834okfhwlgidh83kj53648wef09sd0934ede <-- ( Video Data )
090d9g8w0r9t0v9et09gerg8gatikwyf2eij38vhb8w72 <-- ( ... )
097t9ry2ijfhk34th9w9v832ri2ey98sdfi3rui33see4 <-- ( ... )
378hf83h9f8wyuoth3lrjwepf9ueg834okf478wfy738r <-- ( ... )
Gildred, et al. Expires January 15, 2005 [Page 68]
Internet-Draft PERM July 2004
< end of bytestream >
In the example above, the byte stream begins with the 20-byte
boundary value (prefixed with "--"), followed by a 4-byte sequence
number, then a 2-byte content type label and a CRLF (carriage return
and line feed). Immediately following the CRLF is the long ECM,
followed by the boundary for the next section, etc. Any data
appearing after the HTTP headers and before the first boundary is
ignored.
An optional additional PERM-EIF header may be used in the HTTP
response to indicate a location where the CSiD may retrieve an EIF
(see next section about EIFs) containing ECMs for the content stream
of the current session. The PERM-EIF contains a URI, as in the
example below.
PERM-EIF: http://hostname/path/filename.eif
RTP EDM: This method must be used when responding to an RTSP PLAY or
other RTSP command which results in the return of PERM protected
content via RTP. A CSoD which supports an RTSP/RTP service is
required to support RTP EDM to a requesting CSiD. In the RTP EDM,
RTP packets containing PERM ECMs transmitted via a separate RTP
streams. The payload type identifier for an RTP packet containing a
PERM ECM must match that which is defined for the corresponding ECM
type in the RTSP session description via SDP.
The following is an example of an SDP session description which
contains payload type definitions for PERM ECMs.
Subcontent-Type Description (HTTP):
-----------------------------------
application/perm-ecm; scheme=long; unit-length=132; label=97
SDP Payload Type Description (RTP):
-----------------------------------
m=application 49170 RTP/AVP 97
a=rtpmap:97 perm-ecm
a=fmtp:97 scheme=long
In RTP the unit-length and label parameters are not needed as all
ECMs for the content stream will be delivered in a separate RTP
Gildred, et al. Expires January 15, 2005 [Page 69]
Internet-Draft PERM July 2004
stream from the content stream with its own payload type.
Synchronization between ECMs and the content stream can be achieved
by using timing information carried in the RTP/RTCP packets for both.
The SDP key field may also be used to indicate a location where the
CSiD may retrieve an EIF (see next section about EIFs) containing
ECMs for the content stream of the current session. The key type is
a URI, as in the example below.
k=uri:http://hostname/path/filename.eif
Notes on media formats which contain ECMs: If a media format which
contains ECMs, for example MPEG-TS with SCTE extensions for
conditional access information), is retransmitted by a CSoD to a CSiD
with PERM protection, then the ECM section in the media format should
be removed before retransmission to the CSiD. This will ensure that
the CSiD will not detect both the PERM ECMs and the media format
ECMs, causing confusion as to which ECM is applicable.
Gildred, et al. Expires January 15, 2005 [Page 70]
Internet-Draft PERM July 2004
Appendix N. PERM Content Storage Methods (CSMs)
This section describes a basic set of extensions to existing media
formats and content storage methods for PERM ECMs to be included with
the content when stored on recordable media. The ECMs listed here
are intended as a baseline which may be applied to many different
media formats. Other media format specific CSMs may be defined
outside this specification.
ECM Index File (EIF): This method places all ECMs related to a
particular content stream into a separate file which contains all
ECMs in the order that they are applied to the content stream. The
file format of the EIF is the following.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Index Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CRLF |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1st Index Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1st ECM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CRLF |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2nd Index Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2nd ECM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CRLF |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3rd Index Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3rd ECM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CRLF |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CRLF |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
In the figure above the index type currently may have one of the
following values. The length of the index values is always 32-bits.
The format of the index values are determined by the index type.
Gildred, et al. Expires January 15, 2005 [Page 71]
Internet-Draft PERM July 2004
Index Type Value (Hex) Format of Index Values
------------ ----------- ----------------------
Reserved 0x00 NA
Time Position 0x01 uint (seconds after start of stream)
Byte Position 0x02 uint (bytes after start of stream)
Binding of an EIF to a media file is possible by using the same file
name as the media file for the EIF file, replacing the suffix with
".eif". The MIME content type for an EIF is application/perm-eif.
7-bit transports such as STMP should use Base64 transfer encoding.
Gildred, et al. Expires January 15, 2005 [Page 72]
Internet-Draft PERM July 2004
Appendix O. Acknowledgements
The author gratefully acknowledges the contributions of other
participants.
Gildred, et al. Expires January 15, 2005 [Page 73]
Internet-Draft PERM July 2004
Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it
has made any effort to identify any such rights. Information on the
IETF's procedures with respect to rights in standards-track and
standards-related documentation can be found in BCP-11. Copies of
claims of rights made available for publication and any assurances of
licenses to be made available, or the result of an attempt made to
obtain a general license or permission for the use of such
proprietary rights by implementors or users of this specification can
be obtained from the IETF Secretariat.
The IETF invites any interested party to bring to its attention any
copyrights, patents or patent applications, or other proprietary
rights which may cover technology that may be required to practice
this standard. Please address the information to the IETF Executive
Director.
Full Copyright Statement
Copyright (C) The Internet Society (2004). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assignees.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
Gildred, et al. Expires January 15, 2005 [Page 74]
Internet-Draft PERM July 2004
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgment
Funding for the RFC Editor function is currently provided by the
Internet Society.
Gildred, et al. Expires January 15, 2005 [Page 75]