The present invention relates to the sequential rights transactions related to media object rights.
A media object is a collection of digital data. Data in a media object can represent content, such as text, graphics, audio, video, electronic documents, computer program instructions and/or other information, and other data or information stored in an electronic file. When media objects are distributed, e.g. sold or loaned to consumers, media object content can be protected by a digital rights management (“DRM”) system.
In a typical DRM system, a media object with protected content is associated with a set of rights. Each right in the set specifies one or more permitted actions that can be authorized using the right. Optionally, the set of rights can specify conditions on performing the permitted actions. For example, an electronic document can be associated with a print right that can authorize printing. Optionally, conditions on the print right can specify, e.g., a limited time period, a portion of the content or a maximum number of pages for printing. The media object rights can be expressed using, e.g., rights languages such as Extensible rights Markup Language (“XrML”) or Open Digital Rights Language (“ODRL”).
DRM systems define protocols for distributing rights to media objects. A rights holder of the rights to a media object requests the rights using a client computer. The rights request is transmitted to a media object server implementing the DRM system. In a typical DRM system the rights holder can also obtain a media object application program and install it on the client computer. If the request for the rights can be fulfilled, the media object server generates a rights object specifying the rights to the media object being granted, and transmits the rights object to the client. The rights holder can access the granted rights to the media object using the media object application installed on the client. If the rights specified in the rights object have a limited rights duration, the rights object can be disabled at the expiration of the rights duration preventing future access to the expired rights.
In general, in one aspect, the invention provides methods and apparatus, including computer program products, for delivering a rights object granting one or more rights to a media object, the rights object having an associated return address, the return address being usable to initiate a subsequent rights transaction relating to the rights.
Advantageous implementations of the invention include one or more of the following features. Delivering a rights object can include delivering a rights object including a transaction identifier associated with the rights object, where the transaction identifier can be associated with the return address. Delivering a rights object can also include delivering a rights object including a rights duration for one or more of the rights. The return address is usable to initiate a subsequent rights transaction to relinquish, replace or modify one or more of the rights. The return address can be a URL or an IP address. The method further includes, receiving a subsequent rights transaction request to relinquish, replace, or modify one or more rights to a media object, the subsequent transaction request originating from a client, authenticating the subsequent transaction request, and transmitting a response to the client for the subsequent rights transaction request. If the subsequent rights transaction request is a valid relinquish rights request, an acknowledgement is transmitted to the client. If the subsequent rights transaction request is a valid replace rights request, a replacement rights object is transmitted to the client. If the subsequent rights transaction request is a valid modify rights request, a modifying rights object is transmitted to the client. If the subsequent rights transaction request is a relinquish rights request, authenticating the subsequent rights transaction request includes determining whether the subsequent rights transaction request has been received during a time period defined by a rights duration associated with the rights. If the subsequent rights transaction request is a replace rights request, authenticating the subsequent rights transaction request includes determining whether the replace rights request can be granted. If the subsequent rights transaction request is a modify rights request, authenticating the subsequent rights transaction request includes determining whether the modify rights request can be granted. Authenticating the subsequent rights transaction request can also include determining whether there is a rights fulfillment transaction associated with the request. Receiving a subsequent rights transaction request for the rights includes receiving a subsequent rights transaction request having an associated transaction identifier. The transaction identifier can be used to identify a rights fulfillment transaction or a media object associated with the rights. The method further includes, determining whether the rights are outstanding, and if the rights are outstanding, generating a NONCE and transmitting the NONCE to the client. The method includes, receiving a signed NONCE and a public key certificate from the client, the signed NONCE being signed using the client's private key, and determining the validity of the subsequent rights transaction request using the signed NONCE and the public key certificate.
In general, in another aspect, the invention provides methods and apparatus, including computer program products, for initiating a rights fulfillment request for one or more rights to a media object, and receiving a rights object granting one or more rights to the media object, the rights object having an associated return address, the return address being usable to initiate a subsequent rights transaction relating to the rights.
Advantageous implementations of the invention include one or more of the following features. Receiving a rights object can include receiving a transaction identifier associated with the rights. The transaction identifier can be associated with the return address. The return address is usable to initiate a subsequent rights transaction to relinquish, replace, or modify one or more of the rights. Receiving a rights object includes receiving a rights object including a rights duration for one or more of the rights. Initiating a rights fulfillment request can include, receiving a NONCE from a server requesting authentication of the request, signing the NONCE using a private key, and transmitting the signed NONCE and the public key certificate to the server requesting authentication. The method includes using the rights object to access the one or more rights to the media object. The method also includes using the return address to initiate a subsequent rights transaction relating to one or more of the rights granted by the rights object. Using the return address can include, using the return address to transmit a subsequent rights transaction request to relinquish one or more of the rights granted by the rights object, and disabling the rights object. Using the return address can also include, using the return address to transmit a transaction identifier associated with the rights object. The method includes responding to authentication requests from a server. The method also includes receiving a NONCE from a server, signing the NONCE using a private key, the private key having an associated public key certificate, and transmitting to the server, the signed NONCE and the public key certificate. The method includes transmitting to a server a subsequent rights transaction request, and receiving a response for the subsequent rights transaction request. The subsequent rights transaction request includes a relinquish rights request, a replace rights request, or a modify rights request, and the subsequent transaction request relates to one or more of the rights granted by the rights object. If the subsequent rights transaction request is a relinquish rights request, the method includes receiving an acknowledgement for the request and disabling the rights object. If the subsequent rights transaction request is a replace rights request, the method includes receiving a replacement rights object and replacing the rights object with the replacement rights object. If the subsequent rights transaction request is a modify rights request, the method includes receiving a modifying rights object and modifying the rights object with the modifying rights object. The method also includes, re-transmitting to the server the subsequent rights transaction request, if a response for the subsequent rights transaction request is not received from the server.
In general, in another aspect, the invention provides a rights object tangibly embodied in a computer readable medium. The rights object includes, a rights descriptor specifying one or more rights to a media object, a return address usable to initiate a subsequent rights transaction relating to one or more of the rights, and a transaction identifier identifying a rights transaction granting the rights. The rights object can also include a rights duration associated with the rights.
The invention can be implemented to realize one or more of the following advantages. A user can initiate a subsequent rights transaction relating to one or more of the media object rights granted by a rights object. The rights object granting the rights to the media object contains a return address that can be used by the client for a subsequent rights transaction relating to the rights. The subsequent rights transaction can include relinquishing the rights, replacing the rights with new replacement rights, or modifying the rights. The subsequent rights transaction can be performed in a secure manner to protect and/or prevent security attacks on a server processing the transaction. The user can relinquish the rights to a media object before a rights duration associated with the rights has expired. If there is a limited inventory of rights and if the rights granted to the client for an original rights duration are relinquished before the expiration of the original rights duration, the media object server can grant the rights to another user before the original rights duration has expired. One implementation of the invention provides all of the above advantages.
The details of one or more implementations of the invention are set forth in the accompanying drawings and the description below. Further features, aspects, and advantages of the invention will become apparent from the description, the drawings, and the claims.
Like reference numbers and designations in the various drawings indicate like elements.
A user 145 seeking rights to one or more media objects interacts with the media object server 100 through the client 105 to complete transactions for one or more rights to a media object in the media object repository 140. The client 105 can issue a rights fulfillment request 120 to the media object server 100 requesting rights to the media object. The rights fulfillment request can result in a rights transaction between the media object server 100 and the client 105, granting one or more of the requested rights to the client 105. The rights fulfillment request 120 identifies one or more rights to a media object that are being requested by the client 105. The rights fulfillment request 120 can also identify an existing rights transaction in the fulfillment engine database. In response to the rights fulfillment request 120, the media object server 100 transmits a rights object 130 granting one or more of the requested rights to the client 105. The rights granted by rights object can be new rights to the requested media object. Alternatively, the rights object can grant rights intended to replace (i.e., replacement rights) or modify (i.e., modifying rights) rights previously obtained for the media object. The media object server 100 can also transmit the requested media object 125, to the client. In one implementation, transmission of the requested media object 125 is optional if the client 105 indicates it has a copy of the requested media object. For example, the client 105 can have a copy of the requested media object as a result of a previous rights fulfillment request 120. A client 105 obtaining the rights object can use a return address associated with the rights object to issue a subsequent rights transaction request 135 related to the rights. The subsequent rights transaction request 135 can include a request to relinquish the rights, a request to replace the rights, and/or a request to modify the rights. For example, a client 105 obtaining the rights for a limited duration of time, defined by a rights duration associated with the rights, can relinquish the rights before the rights duration expires using a subsequent rights transaction request 135.
The client 105 can generate a subsequent rights transaction request (135,
There can be different rights durations associated with the rights granted by the media object server 100 in response to a rights fulfillment request (120,
If the subsequent rights transaction request 135 relates to modification or replacement of the rights (“yes” branch of decision step 525), the rights transaction server verifies that the replacement or modifying rights may be granted (step 530). For example, the rights transaction server can determine whether the user submitting the subsequent rights transaction request 135 has the right to replace or modify rights relating to the media object. The rights transaction server can also determine whether it is authorized to grant the rights requested in the subsequent rights transaction request 135, or if the server's available inventory of the requested rights is sufficient to allow it to grant the rights. If the replacement or modifying rights cannot be granted (“no” branch of decision step 530), the rights transaction server transmits a message to the client 105 that the request is invalid (step 520). If the replacement or modifying rights can be granted (“yes” branch of decision step 530) or if the subsequent rights transaction request 135 is not related to a modification or replacement of the rights (“no” branch of decision step 525), the rights transaction server authenticates the subsequent rights transaction request 135 (step 505) and determines if the subsequent rights transaction request is valid (step 510). If the subsequent rights transaction request is not valid (“no” branch from decision step 510), the rights transaction server transmits a message to the client 105 that the request is invalid (step 520). If the subsequent, rights transaction request is valid (“yes” branch from decision step 510), the rights transaction server determines if the subsequent rights transaction request 135 is a request to relinquish, replace, or modify the rights for the media object. If the subsequent rights transaction request 135 is a request to relinquish the rights (“relinquish” branch of decision step 512), the rights transaction server transmits an acknowledgement to the client 105. If the subsequent rights transaction request 135 is a request to replace the rights (“replace” branch of decision step 512), the rights transaction server transmits a replacement rights object to the client 105. If the subsequent rights transaction request 135 is a request to modify the rights (“modify” branch of decision step 512), the rights transaction server transmits a modifying rights object to the client 105.
The NONCE can be any data that is known only to the authentication server. In one implementation, the NONCE is a random number. In another implementation, the NONCE is valid for a predetermined duration of time and the subsequent rights transaction request is determined to be invalid if the client does not return the signed NONCE within the predetermined duration of time.
Referring to
The invention can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The invention can be implemented as a computer program product, i.e., a computer program tangibly embodied in an information carrier, e.g., in a machine-readable storage device or in a propagated signal, for execution by, or to control the operation of, data processing apparatus, e.g., a programmable processor, a computer, or multiple computers. A computer program can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network.
Method steps of the invention can be performed by one or more programmable processors executing a computer program to perform functions of the invention by operating on input data and generating output. Method steps can also be performed by, and apparatus of the invention can be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or- more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. Information carriers suitable for embodying computer program instructions and data include all forms of non-volatile memory, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in special purpose logic circuitry.
To provide for interaction with a user, the invention can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input.
The invention can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the invention, or any combination of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), e.g., the Internet.
The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
The invention has been described in terms of particular embodiments. Other embodiments are within the scope of the following claims. For example, the steps of the invention can be performed in a different order and still achieve desirable results. The communication between the client and the media object server can use any messaging protocol. The communication is typically over HTTP networks, but it is not limited to HTTP networks. The messages sent using the protocol can be of any format that is known to both client and server