| Does the Marlin specifications bundle contain the complete set of available specifications? |
| Please describe some of the main Marlin specifications |
Here is a brief description of some of them:
| Is other documentation available? |
Yes, a lot of documentation is available. For example, there are several white papers:
Additional components documented include the following:
| What are your recommendations for initial navigation of the specifications and documentation? |
| Can Marlin export content to other technologies? |
| Does Marlin provide some mechanism to implement protection of the transmission link between devices? How does that relate to Marlin export? |
In Marlin, export and transmission link protection are treated the same. For example, DTCP is a link protection technology, whereas MG-R is a content protection technology. They are very different, but a Marlin License can grant the right to export to either of them. Section 11 of the “Core” specification enumerates the various technologies that all Core Marlin implementations should be able to export to:
| If content is already protected by non-Marlin technology, will it still work on Marlin-compliant devices? |
| What about the legacy problem? |
| If content is protected using DRM X, will it play on Marlin devices? |
| What are the media file formats used within Marlin? |
| What is a Node? |
Both Octopus and NEMO use the term Node to represent attributes of system entities. Therefore, whenever Nodes are described, it is critical to qualify whether the Node is a NEMO Node or an Octopus Node. Note: Whenever the term “Node” is used by itself in this FAQ, it refers to an Octopus Node.
NEMO Nodes are used to encapsulate security properties of communications endpoints. NEMO Nodes are active, in contrast to Octopus Nodes, which are passive. A NEMO Node is an object analogous to the trusted “host” of a particular functional component. The NEMO Node acts as a trusted entity with which other components can send and receive authenticated messages. For example, a License Service would use its NEMO Node credentials to send and receive messages between it and another NEMO Node representing a Marlin Client.
Octopus Nodes are an abstraction used to represent system entities. Octopus Nodes are encoded in XML and encapsulate attributes about themselves, such as secrets and type information.
| What do the different Octopus Node types represent?> |
In Marlin, Octopus Nodes representing logical entities or “principals” within the system are defined. For example, Personality Nodes represent devices, User Nodes represent users, and Subscription Nodes represent subscriptions.
| What is a Link? |
Links are self-protected Octopus objects that represent relationships between devices, users, and subscriptions, forming a directed graph, an example of which is shown in the following figure.

In the figure, Nodes are illustrated as circles, and Links between Nodes are shown as arrows. The actual semantic of a Link is a function of the business model the Link issuer is enabling. For example, for many issuers, the presence of a Link (or arrow) between two Nodes may indicate that there is a relationship between the two Nodes, and this relationship may be described as representing that a particular Node “belongs to” or “is a member of” the Node that the arrow is pointing to. Using this interpretation, the set of Nodes and Links in the figure indicates that Device A “belongs to” user “Bob Smith”, and that Bob Smith “subscribes to” the “Video” subscription service. Similarly, Devices B and C “belong to” both “Bob Smith” and “Carol Smith”.
| What is the graph of Nodes and Links used for? |
This system of Nodes and Links is integral to managing where, how, and when content can be used in a Marlin system. When a License is created, the control program within it will typically include a requirement that a certain Node, such as a User Node (e.g., one representing “Bob Smith”) be reachable by the device attempting to access the content. Being reachable means that the Marlin Client running on the device in question contains a valid set of Links from the Personality Node representing the device to the specified Node. This can be a direct Link from the Personality Node to the specified Node (such as from Device A to user “Bob Smith” in the figure above) or a series of Links (such as from Device B to “Bob Smith” to “Video”). This process of indicating in the License’s control program that a particular Node must be reachable is referred to as targeting to that Node.
| What is Scuba? |
Scuba is a key distribution mechanism that works in concert with Octopus’ graph-based object model. Scuba takes advantage of the Link objects representing relationships. A Link contains the private key or symmetric secret key belonging to the destination Node (the “to” Node). The key is encrypted using the public key of the source Node (the “from” Node). The encrypted key can only be decrypted using the private key of the source Node. Consider the following example: If a device is registered to a user, the device Personality Node is linked to the User Node. Only that Personality Node’s private key can be used to decrypt the User Node key contained in the Link. That fact enables the device to access content that is encrypted using a content key which is itself encrypted with the User Node’s public or secret key, as illustrated in this question.
| Are the NEMO and Octopus Nodes cryptographically bound together and, if so, how is this done? |
Not usually. Octopus Personality Nodes and User Nodes are both passive. There is one important difference: Personality Nodes are owned by, managed by, and permanently associated with a physical device, which also has NEMO keys. User Nodes may be owned and managed by different entities in the system. Typically, a User Node is owned and managed by the service provider/rights issuer which created and manages the “user account.” A User Node is not permanently associated with a physical entity with NEMO keys, etc.
A NEMO Node assigned the role of a DRM Client may temporarily bind to an Octopus Personality Node. This binding may occur during certain protocol interactions. For example, during the DRM Client Information protocol exchange described in Section 5.7.2 of Marlin Core, the NEMO Node signs the response, to bind itself to the Octopus Personality Node it is acting on behalf of.
A loose (temporary) binding is the only one ever needed. In all cases, the “public” part of an Octopus Node (a User Node or a Personality Node) can be freely exchanged in the system, as it is essentially a signed attribute bundle. Octopus Nodes are “owned and managed” by entities (devices, account managers, etc.). The “private” part of an Octopus Node (e.g., the Scuba private keys) is under control of the entity that owns or manages the Node. These secrets only travel in the system via Links issued by this managing entity.
| Who creates User Nodes and Links? |
User Nodes and Links can be acquired via a number of protocol interactions with entities authorized to issue such objects. User Nodes and Links must be signed. They can only be issued by entities that have signed certificates containing appropriate policy terms. A User Node must be signed by a key whose certificate has the “id-cp-octopus-marlin-signing-node” policy term, and a Link must be signed by a key whose certificate has the “id-cp-octopus-marlin-signing-link” policy term. Examples of entities that are authorized to issue User Nodes and Links are DRM Object Providers and the Marlin Broadband Registration Service.
Note: A signed Link object includes the unique identifiers of the Nodes that it links.
| Is it only NEMO Nodes that can, and have to, authenticate themselves? |
Yes. Octopus Nodes are passive entities, so authentication does not apply to them. (However, please note that an Octopus Node is signed, so an entity receiving it can verify its authenticity.)
| How are Nodes and Links stored? |
Marlin relies upon Octopus’ XML serialization/deserialization feature for the encoding and decoding of Octopus objects. Because the objects are self-protected, an implementation has a large degree of latitude in how it manages the serialized objects.
| How big are Node and Link and related objects? |
Each object has different size characteristics. For example, Link and Node objects generally include cryptographic secrets or certified keys. The size of public key certificates will vary depending on whether the certificate chain is included, and the size of the key itself. Control programs are very compact, but also vary based on the amount of logic they implement.
XML-encoded objects are generally large. However, an implementation is free to deploy space-saving strategies, such as compression, to conserve space if needed. Once Octopus objects have been de-serialized, they are very compact.
| How is access to Marlin content controlled? |
Via Licenses and Links, as described in the following.
| What is a License? |
A (Marlin) License is an XML document containing a set of Octopus objects that govern the use of content and convey the conditions necessary for allowing access to the content key, which is the key used to encrypt the content.
At a minimum, a License will include at least one of each of the following objects:
A License contains one or more content keys (at least one per stream of data that is protected), one or more Control objects that express the usage rules (multiple streams can share the same control), and some linking information, such as a Controller object indicating which Control applies to which content key, and a Protector object indicating which stream is encrypted with which content key. The Content object in a License is simply a reference to the content, which can either be in a separate file or grouped together in the same file as the License.
| A License can be separate from the content it applies to? |
Yes. Since content is encrypted, it can be distributed separately from the License that governs its usage and enables its decryption. The Marlin specifications do not say anything about whether content and its corresponding License should travel together. They can either be a unit or be obtained separately. Combining the content and the License into a single file may be commonly done, for management convenience and efficiency. For example, if the content is transferred from one device to another, and the License is in the same file, then the second device does not have to do a License acquisition. If the content and the License are not in the same file, the second device has to acquire the License in order to be able to render the content.
| How is the content key in the License protected? |
It is encrypted using a key of the entity that the content is considered to be bound to. For example, if the content is considered bound to a particular User Node, the content key is encrypted using either the public key or the (symmetric) secret key for that User Node.
| When would the content key be encrypted with the secret key, as opposed to the public key? |
The most flexible approach, and one that is always possible, is for the content key to be encrypted using the public key of the Node to which the content should be bound. This is always possible because the public parts of Nodes can be freely distributed. When the content key is encrypted using the public key, any Links to the Node to which the content is bound include the corresponding private key so that the private key can be used to decrypt the content key. Such Links are protected by encrypting them with the public key of the origin Node.
If the License Service creating a License has access to the private portion of the Node, which includes the secret key, the License Service can encrypt the content key with the secret key instead of the public key. One reason this might be done is to save on client License processing time, since secret key cryptography is faster than public key cryptography. In this case, Links to the Node to which the License is bound must contain the secret key rather than the private key.
| How does a License specify who can access the content? |
The Plankton byte code of a control program in the Control object in the License specifies the usage rules. This frequently includes, for example, a requirement that one or more particular Octopus Nodes be reachable (via Links) by the device attempting to play the content. The License is said to be targeted to those Nodes.
| What is the difference between targeting a License to a Node and binding a License to a Node? |
Targeting and binding represent two different, yet closely related processes. In Marlin, binding is primarily a cryptographic process, concerned with protecting the content key, the key that was used to encrypt the content. When a License is “bound” to a User Node, for example, it means that the content key is encrypted with the public key (or secret key) associated with the User Node. Therefore, only devices that have access to the private (or secret) key of that User Node will have the necessary key to decrypt the content. (Any device having a Link or chain of Links between its Personality Node and the User Node has such access.) Note, however, that simply having the correct key only indicates that the device has the capability to decrypt the content—if it is permitted to do so.
Whether or not a device is permitted to access the content is determined by the control program in the License, and specifically, how the License is targeted. Within the control program, the service provider will typically specify that a particular Node or Nodes—referred to as the target Node(s)—must be reachable via a Link or chain of Links from the device attempting to play the content to the target Node(s).
| Why might multiple Nodes be required to be reachable? |
In some instances, for example, a service provider may wish to indicate that not only a particular User Node must be reachable, but also a Subscription Node. In other words, the device must not only possess a valid Link (or path of Links) to the User Node, but must also possess a path of Links to a particular Subscription Node, including a valid (e.g., unexpired) Link from a User Node to that Subscription Node.
| Is it possible for a License to be targeted to one Node, but bound to another? |
Yes. Although frequently a License will be both bound and targeted to the same Node, it is possible for a License to be bound to a different Node than the one to which it is targeted. For example, sometimes Licenses that are targeted to a Subscription Node are bound to a User Node. That is, the control program in the License requires that the Subscription Node be reachable, and a key of the User Node is used to encrypt the content key.
Actually, in this scenario where a License is targeted to a Subscription Node and bound to a User Node, it is recommended that the License be targeted to that User Node in addition to the Subscription Node. This ensures that the necessary Link(s) are available to decrypt the content key in the License.
| How do you know which content a License applies to? |
The License indicates which content it applies to by specifying the Content ID(s). A piece of content (either the entire content or each of the streams in it) contains a globally unique ID. It also contains the content data (e.g., audio or video data streams), which is encrypted using the content key stored in the License.
| Is there a way of ensuring that an entity publishing content is not rogue? |
Yes, by verifying the signature on the License objects.
Top
| Is ownership (or rights) for a given content item represented by a Link from a User Node to the content item? |
No. This semantic is represented by the Control object that is a component of a License. The Control object has byte code (the control program) within it which tests for the reachability of the target Node. The result of this test is a function of whether there is a valid path from the Personality Node (of the device attempting to play the content) to the target Node.
| If I’m a publisher and want to integrate Marlin into my system, what do I need to do in the absence of a rights language? |
First, Marlin does not preclude the use of a rights language. A possibility is to choose an existing rights language (ex: ODRL), and compile it to Plankton byte code. A content publisher needs to be able to describe the set of actions that can be performed on a given content item.
If a publisher chooses to use a rights language, then a translation process, from the rights language to Plankton byte code, must result in stipulating the reachability conditions under which the action is permitted. For example, the PLAY action may be constrained by the ability to reach a particular Node (which may represent a user).
Another approach that a publisher can use is to populate a well-defined template. Once populated, the template can be run through a Plankton assembler that will generate the byte code. The byte code is then packaged within an Octopus Control object.
| Why does Marlin approach rights expression the way it does, rather than by using a declarative language Rights Expression Language (REL) like ODRL or XRML? |
The byte code engine at the heart of Marlin makes it easily extensible. Marlin can respond to new architectures, business models, and distribution models by organically building new profiles. The byte code itself is compact and easily extensible, thereby future-proofing the specification. The byte code is also easier for small devices to process than an XML REL expression.
| What is the result of executing the Plankton byte code? |
The result of running the Plankton code is a data structure that indicates whether the requested action is granted or denied, along with optional parameters that can indicate further obligations, etc. The code may use the information from the Octopus Node/Link graph, but typically also uses other data (such as time, or stored state) to make that decision.
| Can a License Service provided by one service provider issue Licenses bound and targeted to a user that is registered with a different service provider? |
A service provider can opt to issue Licenses to another provider’s users, if the other provider provisions its Octopus Nodes with a public Scuba key (and not just a symmetric Scuba secret key). The License Service can encrypt the content key with a Node’s public key and thus bind the License to the specified Node.
| What does a device need in order to be able to play a particular piece of content? |
All of the following are required:
| Please give an example explaining exactly how a device gets access to the content. |
Suppose that a License is targeted and bound to Peter’s User Node. A device could play the content that the License references if the device contains a Link between itself (its Octopus Personality Node) and Peter’s User Node, as described in the following.
Let
Pu = public key of Peter’s User Node
Vu = private key of Peter’s User Node
Pd = public key of the device’s Personality Node
Vd = private key of the device’s Personality Node
Ck = content key
E(k, m) = Encrypt m using key k
D(k, n) = Decrypt n using key k
Suppose the License carries
R = E(Pu, Ck)
that is, the result of using Peter’s (User Node’s) public key to encrypt the content key.
The Link carries
N = E(Pd, Vu)
that is, the result of using the device’s public key to encrypt Peter’s User Node’s private key.
With the above elements, the device would use the Link and its private key, Vd, to recover the private key of Peter, Vu. Then the device would recover the content key, Ck, using Vu. These steps are depicted by the following:
D(Vd, N) = Vu
D(Vu, R) = Ck
Once the device has the content key Ck, it can use that key to decrypt the content.
| Does the target User Node need to be physically present on the device? |
No. As you can see from the previous example, the device does not need the User Node, but it does need the private (or, in some cases, secret) key of the User Node, which is distributed to it in a Link.
| Is there a Marlin policy that ensures that a Link can only be created by the owner of the destination Node? |
There is no policy per se enforcing or suggesting that the creator of a Link be the issuer (creator) of the target Node. It is essentially a best practice, and in the case where a Scuba secret key is carried in the Link, then the Link issuer will need knowledge of the private part of the Link destination Node. Typically, only the Node creator would have such information.
| What is registration? |
Registration in Marlin involves grouping devices so that they can share access to content. Currently in Marlin Broadband, for example, a device is registered with a user, and the collection of devices registered with a user is called a domain. More specifically, when a device is registered with a user, a Link is generated between the device’s Personality Node and the user’s User Node. (Note: Devices could be linked to other types of Nodes in the future.) A device may be registered with multiple users, and multiple devices may be registered with any given user. Many Licenses contain a requirement that a particular Node, often a User Node, must be reachable by a device attempting to render content. This condition is satisfied if the device contains a Link or chain of Links to that Node.
| What is deregistration, and why is it needed? |
Deregistration removes a particular device from a domain (group of devices) with which it was grouped when it was registered. The purpose of deregistration is to support models where the number of registered devices or applications is limited. When the maximum number is reached, a user can deregister some devices (for example devices that are lost, no longer in use, etc.) in order to be able to register new ones. When a device is deregistered, the Link established during registration (e.g., a Link from a Personality Node to a User Node) is invalidated. This prevents the device from using that Link to access content whose License specifies that that particular User Node must be reachable from the device.
| What service is responsible for registration and deregistration? |
In Marlin Broadband, the Registration Service is responsible for various operations, including registration and deregistration. More specifically, a Registration Service is responsible for
| Does a Registration Service return the User Node? |
The User Node does not necessarily need to be distributed in order to govern the content usage; only the Link is needed for that. However, the User Node may be needed by the Marlin Client for other purposes, for example, in License acquisition requests, which require an Octopus Node to be supplied. Normally, the registration process will include two requests: one to acquire the User Node and the other to acquire a Link from the device Personality Node to the User Node. In response, the Marlin Broadband Registration Service returns, respectively, the public portion of the User Node and the requested Link. The User Node can subsequently be used to subscribe to a catalog of content, by acquiring a Link between the User Node and a Subscription Node. In addition, a User Node must be passed to a License Service in order to acquire a License bound to that Node.
| What is metering? |
Metering is the reporting of usage data to the backend service. It was orginally designed to allow a service not to have to pay royalites on each piece of content downloaded by the consumer, but rather to only pay royalties on the actual content consumption. It can also enable business models where the service charges the consumer retroactively for usage. The consumer may pay per play or per use of a snippet, such as some pages of an encyclopedia.
| What is a subscription, and how does subscription work in the Octopus graph topology? |
A subscription allows time-limited access to a catalog of content, such as all episodes of a particular television series or all issues of a particular online magazine. A subscription is represented as a Link between a User Node and a Subscription Node. The Link has a specified expiration. For example, it may
only be valid for 30 days. After a Link has expired, it can no longer be used to provide access to the content subscribed to.
| The Data Certification Service in the Broadband spec seems to be one example of providing certifiable secure time stamps, metering, etc. Are these elements architecturally critical? |
Yes, the data certification mechanisms are one of the renewability techniques designed into Marlin.
| What about offline use of eBooks? Can you only read eBooks when connected? |
No. Offline business models are at the heart of the Marlin technology. Marlin enables several approaches for this. In a subscription model, it is possible to provide for grace periods in the License constraints. Also, if the business model dictates, metering data can be collected and reported the next time the device is online.
A License issuer may choose to craft the License to take the data certification status into consideration. In so doing, it is important to balance the user experience with the License requirements.
| What kinds of content sharing does Marlin allow? |
Unlike many other DRM systems, Marlin
Marlin’s unique architecture permits this degree of user flexibility while still protecting content owners’ interests and guarding against widespread copyright abuse and piracy.
| How can Peter play his content on multiple devices? |
He can register each of his devices (see this question), so that each device contains a Link (or path of Links) from it to his User Node. That enables each device to access any content whose License is targeted and bound to his User Node.
| How can a family or other group, play all content obtained by any group member on any devices owned by the members? |
Currently, in Marlin Broadband, devices are registered directly with users. If each member of the family has their own user account and thus their own User Node, then in order for all the family members to be able to play content belonging to any of them, each device must be registered multiple times, once per family member. As a result of these registrations, each device obtains Links from its Personality Node to all the family members’ User Nodes, as illustrated in the following figure.

If, on the other hand, all the family members share an account (and thus a single User Node), then the family devices only need to be linked to that User Node in order for any content purchased through that account to be able to be played on the family devices, as illustrated in the following figure.

| How are Marlin Licenses, Nodes and other objects moved between devices in a domain? |
License objects are delivered in License bundles (collections of objects) that are either embedded into the content in structured container formats (such as MP4), or transported as standalone Licenses (e.g., sent from a License Server).
Since content is protected by encrypting it with the content key that is in the License, media files (with or without embedded Licenses) can be shared using any mechanism the user has available (e.g., ftp, cifs, nfs, e-mail, USB mass storage, etc.)
The public part of an Octopus Node is communicated in the registration protocols defined in the delivery system specifications and in the Marlin Core services of the peer-to-peer framework, e.g., as in the Provide DRM Objects protocol.
The Link objects, which are the only objects needed to enforce governance, are communicated in the response of certain peer-to-peer protocols. Link objects are also delivered in profile-specific ways, such as the Broadband Registration protocol. Note that Link objects, being self-protected, could be delivered and shared in other ways, too.
A variety of different sharing scenarios are possible between devices, including superdistribution (receiving content from a third party, typically another user), superdistribution of subscription content, and shared streams (temporarily using content on a device in the presence of a valid owner of that content).
| Is an active protocol required to move media (content) files, or is it enough to simply transfer the media files, e.g., over a Marlin-agnostic memory card/USB stick between devices? |
No active protocol is necessary for content bound to a user. If the content is device-bound, as is the case for Broadcast content that signaled Copy One Generation during delivery, then the License Transfer protocol is required. (Copy One Generation is a broadcast Copy Control Information attribute indicating that the content can only be played on a single device. Thus, it can be played only on the device receiving the first-generation copy, unless the copy is moved such that only one copy still exists.)
| Where is the Transfer protocol defined? |
The License Transfer protocol is defined in the Marlin Core System Specification.
| How can content that Peter has access to be played by his friend Paul on his (Paul’s) Marlin-enabled device? |
Suppose the License is targeted/bound to Peter’s User Node. Since there is no Link between Paul’s PC or other device and Peter’s User Node, the content will not play on Paul’s device. However, there are ways in which Peter may be able to share or even give away some of his content. Please note that Peter does not have the authority per se to give content away. Doing so would normally require the participation of an authorized entity, such as the original License issuer or a License Transfer Service.
Since content is protected (encrypted), it can be freely copied, e.g., from one of Peter’s devices to one of Paul’s devices.
Paul always has the option of purchasing content that he has obtained, by contacting the service provider, making the purchase, and then receiving a License to play the content (if the License is not embedded in the content file). Other ways Paul may be enabled to play content obtained from Peter include the following:
This is effectively a move operation using the License Transfer protocol, so after the transfer Peter will no longer have the right to play the content, unless another License transfer is later done to return the License to Peter. Note: The License Transfer protocol is intended for content that is bound to a device (as opposed to a user). So, the expectation is that the License Peter was initially issued was also device-bound.
How does Marlin guard against content sharing abuse and piracy? |
Marlin guards against these in various ways. For example, the system can enforce a limit on the number of devices that may belong to a single domain (user). Individual devices are also limited as to the number of domains they may belong to at any given time.
| How are certificate policies used in Marlin? |
They are used throughout Marlin. Here are some examples:
| There are two specific and distinct authorization policies. |
First, Marlin relies on NEMO’s trust management model to authenticate communicating peers and to determine whether a peer is authorized to participate in a particular service interaction. For example, the Provide DRM Objects service must be able to authenticate itself to a client and demonstrate that it has been assigned the role of “DRM Object Provider”.
Secondly, in Marlin we define a set of certificate policy terms that must be applied to the process of certificate path validation. That is, a system implementation must ensure that the required certificate policy terms are present in the certificate path as part of signature validation. So, for example, an entity that generates Octopus Links must sign each Link object, and in order for an application to trust a Link, (minimally) the certificate for the key that signed the Link must have a certificate policy of “id-cp-octopus-marlin-signing-links”.
What we achieve by this design is a separation of concerns. The authorization of the entity which participated in the delivery of a signed object is orthogonal to the trustworthiness of the signed object itself.
You could also say that we have a mixed authorization model, where the protocols between NEMO Nodes convey authorization with SAML, and the creation of Octopus objects relies upon certificate policies.
The certificate policies add granularity to the actions system entities are trusted to perform.
Note: The Marlin Trust Management Organization (MTMO) contracts Seacert Corporation to manage the root keys of the Marlin Broadband and IPTV-ES Public Key Infrastuctures (PKIs), and to provide sets of Common Test Keys (CTKs). The MTMO Common Test Keys lay out a hierarchy of certificate authorities (CAs), devices and services. Seacert also provides services as a Provisioning Data Center (PDC) to Marlin adopters, creating certificates and credentials for Marlin CAs, devices and services. The PKI hierarchies produced by Seacert in its PDC function mimic the hierarchies of the Broadband and IPTV-ES CTKs.
| What kind of help is available to satisfy the MTMO robustness requirements? |
The Marlin Client Adopter and Service Provider agreements define robustness requirements for client and service implementations, respectively. Depending on the client deployment platform and the level of experience of the implementers, it may be advisable to seek support from commercial tamper-resistance providers. To meet server-side robustness requirements, the MTMO lists trusted service providers who can provide the option of supplying client and server provisioning material that may otherwise require a significant investment in infrastructure and operational mechanisms to safeguard highly sensitive key material. Seacert is an entity that is equipped to securely generate the Marlin trust objects (certificates, keys, CRLs, role assertions, etc.)
How is Marlin right for your business? Find out how to Get Started.