Embodiments of the present invention relate generally to content access and, more particularly, linking content with license and accessing the content based on a session ticket.
Digital rights management (DRM) is a technology used to protect and control the distribution of content, such as music files, video files, and other content. In DRM, content is encrypted with a cryptographic key, whereby the cryptographic key can also be used to decrypt the content. In order for a user to decrypt and access the content, the user must have access to a license that is associated with the content. Generally, a license can grant different access rights to the content depending on the permissions defined by a license provider. For example, the license may limit the content (e.g., a music file) to be played for a limited number of times.
In traditional DRM technologies, the cryptographic key used to decrypt the content is stored only in the license. The license can be hacked and the cryptographic key can be easily extracted from the license. If the cryptographic key is compromised, an unauthorized user can decrypt the content without the license and thereby access the content without limitations. As a result, there is a need to further improve the protection of content.
Various embodiments of the present invention provide methods, systems and/or apparatuses for linking a license with content and accessing content based on a session ticket. It should be appreciated that the embodiments can be implemented in numerous ways, including as a method, a circuit, a system, or a device. Several embodiments of the present invention are described below.
In an embodiment, an apparatus is provided. The apparatus includes a memory and a processor that is in communication with the memory. The processor is configured to: transmit a request to a memory device to access content stored in the memory device; receive a session ticket; and access the content based on the session ticket. The session ticket includes a parameter used to decrypt the content and the session ticket is generated based on a variable that is configured to change at a session.
Other embodiments and advantages of the invention are apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating by way of example the principles of the invention.
The present invention will be readily understood by the following detailed description in conjunction with the accompanying drawings, and like reference numerals designate like structural elements.
A detailed description of one or more embodiments is provided below along with accompanying figures. The detailed description is provided in connection with such embodiments, but is not limited to any particular embodiment. The scope is limited only by the claims and numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided for the purpose of example and the described embodiments may be implemented according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the embodiments has not been described in detail to avoid unnecessarily obscuring the description.
The embodiments described herein provide the linking of a license with content and the access of the content based on a session ticket. A cryptographic key is used to decrypt and access an encrypted content. As will be explained in more detail below, parameters associated with both the license and the content are used to derive the cryptographic key. In some embodiments, a parameter used to derive the cryptographic key can be further encrypted with a variable such that access to the content is limited to a session.
Host computing device 114 hosts application 104. Application 104 may include a variety of program applications. For example, application 104 may be an operating system that manages the hardware and software resources on host computing device 114. In another example, application 104 may be a multimedia player configured to play audio and video files. Additionally, for example, application 104 may be a video game. Application 104 may access content 118 stored in memory device 116. Content 118 can include a variety of data. Examples of content 118 include audio files encoded in audio file formats such as WAVE, MPEG-1 Audio Layer 3 (MP3), Advanced Audio Coding (AAC), and other audio file formats. Content 118 may also include video files encoded in video file formats such as Audio Video Interleave (AVI), Moving Picture Experts Group (MPEG), and other video file formats. Other examples of content 118 include document files, image files, application files, and other data.
Linking License with Content
Content 118 is encrypted and third parameter 210 is configured for use in decrypting the content. Third parameter 210 includes a variety of data that may be associated with the decryption of content 118. For example, third parameter 210 may be a cryptographic key used for the encryption and decryption of content 118. Instead of the cryptographic key, third parameter 210 may also include a reference to the cryptographic key. The reference, for instance, may be a number or string that identifies the cryptographic key. Third parameter 210 may also include an authentication key. The authentication key is a cryptographic key used for authentication sessions between the host computing device and memory device. In another example, third parameter 210 may be a cryptographic nonce. A cryptographic nonce is a number that can be used to generate the cryptographic key.
Third parameter 210 is generated based on first parameter 202 and second parameter 206. In other words, third parameter 210 can be expressed as
Third parameter=F (first parameter, second parameter) (1.0)
where the third parameter is a function of first and second parameters 202 and 206. The function may include a variety of functions, such as a hash function, whereby third parameter 210 can be the hash value of the hash function. First parameter 202 is associated with license 204 and second parameter 206 is associated with content 118. First and second parameters 202 and 206 may include a variety of data. For example, first parameter 202 may be a number. In an embodiment, the number may be randomly generated. In another embodiment, the number is pre-defined. Second parameter 206 may be dependent on first parameter 202 or vice versa. For instance, second parameter 206 may be a number or string derived from both a reference to a cryptographic key and first parameter 202. Such number or string may be expressed as
Second parameter=F (key reference, first parameter) (1.2)
where second parameter 206 is a function of both the reference to the cryptographic key and first parameter 202. It should be appreciated that second parameter 206 also may be derived from both an authentication key and first parameter 202. In another example, second parameter 206 may be derived from a cryptographic nonce and first parameter 202. Conversely, first parameter 202 may be derived from second parameter 206 and an authentication key, a reference to a cryptographic key, a cryptographic nonce or other parameters.
First and second parameters 202 and 206 are associated with license 204 and content 118, respectively. To be associated with either license 204 or content 118, first and second parameters 202 and 206 may be located or included in the license and the content, respectively. For example, second parameter 206 may be located in the header or footer of content 118. Alternatively, first parameter 202 and/or second parameter 206 may be located separately from license 204 and/or content 118. If located separately, license 204 may be associated with first parameter 202 with the inclusion of a pointer to the first parameter. Content 118 may also include a pointer to second parameter 206 if the second parameter is located separately from the content.
As shown in
In the embodiment of
With the first parameter and the second parameter, a reference to the cryptographic key may be generated or computed at 408. As expressed above in Equation 1.0, the reference to the cryptographic key can be generated based on the first parameter and the second parameter. Thereafter, at 410, the content can be decrypted and accessed based on the third parameter. For example, in an embodiment, the third parameter in the form of a reference to the cryptographic key can be transmitted to the memory device. The memory device can include a secure store that stores the cryptographic key. The memory device can retrieve the cryptographic key from the secure store using the reference to the cryptographic key. With the cryptographic key, the memory device can decrypt the content and transmit the decrypted content to a host computing device.
Accessing Content Based on a Session Ticket
The generation of session ticket 506 involves the use of variable 504. Variable 504 includes a variety of data. For example, the data can be a number. The number may be predefined or randomly generated. In another embodiment, the data can be a character string. Unlike the parameters discussed above, variable 504 may not be associated with the license and content. In other words, variable 504 may be independent of the license and content. Variable 504 is configured to change at a session. A session may span for a period of time. For example, the session may last for an hour, a day, a week, or other units of time. In addition, a session may expire when the host computing device that is coupled to the memory device is initiated or restarted. A session may also expire when the memory device is decoupled from the host computing device. Furthermore, for example, a session can span for a limited number of access to the content (e.g., a limited number of times the content can be accessed).
Session ticket 506 is generated based on parameter 502 and variable 504, whereby the parameter is encrypted based on the variable to define session ticket 506. Session ticket 506 can therefore be expressed as
Session Ticket=F (Parameter, Variable) (2.0)
where the session ticket is a function of parameter 502 and variable 504. With session ticket 506, the content may be accessed based on the session ticket. For example, a host computing device can transmit session ticket 506 to the memory device. The memory device may derive the parameter used to decrypt the content based on session ticket 506.
Parameter=F−1 (Session Ticket, Variable) (2.2)
where the parameter is an inverse function of session ticket 506 and variable 504.
It should be appreciated that session ticket 506 is associated with a particular content because the session ticket is used to decrypt the content. As a result, another content that is stored in the memory device cannot be used or accessed with session ticket 506 unless the session ticket includes a parameter, such as parameter 502, to decrypt that other content. As an example, if two, separate contents stored in a memory device are encrypted with different cryptographic keys, then the host computing device or memory device generates two, different session tickets to access the two, separate contents. Here, one session ticket cannot be used to access the two, separate contents that are encrypted with different cryptographic keys.
As shown in
After the session ticket is generated, second content protection platform 306 transmits the session ticket to host computing device 114. With the session ticket, host computing device 114 may access content 118 based on the session ticket. To access content 118, host computing device 114 subsequently transmits the session ticket back to memory device 116. With the receipt of session ticket, second content protection platform 306 decrypts the session ticket to extract the parameter used to decrypt content 118, which is expressed in Equation 2.2. If variable 604 has not changed, then the parameter can be extracted because the decryption is based on a variable that is identical to the variable used to encrypt the parameter. Variable 604 may change at different sessions. As a result, variable 604 is identical to the variable used to encrypt the parameter if the variables are generated within the same session. However, if variable 604 has changed, then the parameter cannot be extracted because the decryption is based on a variable that is different from the variable used to encrypt the parameter. Variable 604 is different from the variable used to encrypt the parameter if the variables are generated within different sessions. By changing variable 604 at a session, the session ticket lasts or is valid for one session. If the parameter can be extracted, then the second content protection platform 306 can decrypt content 118 based on the parameter and transmit the decrypted content to host computing device 114.
In another embodiment, first content protection platform 304 may also generate the session ticket by encrypting the parameter used to decrypt content 118. Here, in response to request by application 104 to access content 118, first content protection platform 304 may generate the session ticket and transmit the session ticket to application 104. Application 104 can then transmit the session ticket back to first content protection platform 304 to access content 118.
When the host computing device accesses content stored on a memory device, the host computing device can transmit the session ticket received to the memory device at 706. The memory device receives the session ticket at 708 and decrypts the session ticket based on a number at 710. If the number matches the number used to generate the session ticket, then the reference to the cryptographic key can be extracted from the decryption operation. However, if the session has changed and a different number is held by the memory device, then the reference to the cryptographic key cannot be extracted from the decryption operation because the numbers do not match. If the reference to the cryptographic key can be extracted from the session ticket, then the cryptographic key is retrieved based on the reference at 712. The cryptographic key can be retrieved from, for example, a secure store. The content is then decrypted at 714 using the cryptographic key and then transmitted to, for example, the host computing device at 716.
In communication with content protection platform 304 is file system manager 808. In general, file system manager 808 is configured to manage and handle access (e.g., reading, writing, and other access operations) of content stored in a memory device. For example, file system manager 808 can read content from a memory device and transmit the content to content protection platform 304 for processing. Host computing device 114 can interface with a memory device. Host computing device 114 therefore can include device driver 810, which is in communication with file system manager 808, to interface with the memory device. Device driver 810 may, for example, include the lower-level interface functions to communicate with a memory device. An example of a lower-level interface function include input/out functions associated with input and output of data to and from the memory device.
It should be appreciated that in other embodiments, host computing device 114 of
In some embodiments, host computing device 114 performs specific operations by processor 1004 when executing one or more sequences of one or more program instructions stored in system memory 1006. Such program instructions may be read into system memory 1006 from another computer readable medium, such as storage device 1008. In some embodiments, hard-wired circuitry may be used in place of or in combination with software program instructions to implement embodiments of the invention.
It should be appreciated that the term “computer readable medium” refers to suitable medium that participates in providing program instructions to processor 1004 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media may include, for example, optical or magnetic disks, such as storage device 1008. Volatile media may include dynamic memory, such as system memory 1006. Transmission media includes coaxial cables, copper wire, and fiber optics, including wires that comprise bus 1002. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. Common forms of computer readable media include, for example, magnetic mediums (e.g., floppy disk, flexible disk, hard disk, magnetic tape, and other magnetic mediums), optical mediums (e.g., compact disc read-only memory (CD-ROM) and other optical mediums), physical medium with patterns (e.g., punch cards, paper tape, any other physical mediums), memory chips or cartridges, carrier waves, (e.g., RAM, programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), flash memory, and other memory chips or cartridges), and any other medium from which a computer can read.
In some embodiments, execution of the sequences of program instructions to practice the embodiments may be performed by a single computing device 114. In other embodiments, two or more computer systems, such as host computing device 114, coupled by communication link 1020 (e.g., local area network (LAN), public switched telephone network (PSTN), wireless network, and other communication links) may perform the sequence of program instructions to practice the embodiments in coordination with one another. In addition, computing device 114 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 1020 and communication interface 1012. Received program instructions may be executed by processor 1004 as the program instructions are received, and/or stored in storage device 1008, or other non-volatile storage for later execution.
Memory device 116 can include a variety of non-volatile memory structures and technologies. Examples of memory technologies include flash memories (e.g., NAND, NOR, Single-Level Cell (SLC/BIN), Multi-Level Cell (MLC), Divided bit-line NOR (DINOR), AND, high capacitive coupling ratio (HiCR), asymmetrical contactless transistor (ACT), and other flash memories), erasable programmable read-only memory (EPROM), electrically-erasable programmable read-only memory (EEPROM), read-only memory (ROM), one-time programmable memory (OTP), and other memory technologies. In an embodiment, memory device 116 can be a flash memory card using flash memory. Examples of flash memory cards include a variety of the following trademarked products such as Secure Digital™ (compliant with specifications maintained by the SD Card Association of San Ramon, Calif.), MultiMediaCard™ (compliant with specifications maintained by the MultiMediaCard Association (“MMCA”) of Palo Alto, Calif.), MiniSD™ (as manufactured by SanDisk, Inc.), MicroSD™ (as manufactured by SanDisk, Inc.), CompactFlash™ (compliant with specifications maintained by the CompactFlash Association (“CFA”) of Palo Alto, Calif.), SmartMedia™ (compliant with specifications maintained by the Solid State Floppy Disk Card (“SSFDC”) Forum of Yokohama, Japan), xD-Picture Card™ (compliant with specifications maintained by the xD-Picture Card Licensing Office of Tokyo, Japan), Memory Stick™ (compliant with specifications maintained by the Solid State Floppy Disk Card (“SSFDC”) Forum of Yokohama, Japan), TransFlash™ (as manufactured by SanDisk, Inc.), and other flash memory cards. In another embodiment, memory device 116 can be implemented as a non-removable memory device.
The following patent documents contain embodiments that can be used with the embodiments described herein. Each of these patent documents is being filed on the same date as the present application, is assigned to the assignee of the present invention, and is hereby incorporated by reference: “Methods for Linking Content with License,” U.S. patent application Ser. No. ______ (atty. dkt. no. SAN-017); “Apparatuses for Linking Content with License,” U.S. patent application Ser. No. ______ (atty. dkt. no. SAN-020); “Methods for Accessing Content Based on a Session Ticket,” U.S. patent application Ser. No. ______ (atty. dkt. no. SAN-021); “Methods for Binding Content to a Separate Memory Device,” U.S. patent application Ser. No. ______ (atty. dkt. no. SAN-018); “Apparatuses for Binding Content to a Separate Memory Device,” U.S. patent application Ser. No. ______ (atty. dkt. no. SAN-023); “Method for Allowing Multiple Users to Access Preview Content,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-180); “System for Allowing Multiple Users to Access Preview Content,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-191); “Method for Allowing Content Protected by a First DRM System to Be Accessed by a Second DRM System,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-181); “System for Allowing Content Protected by a First DRM System to Be Accessed by a Second DRM System,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-190); “Method for Connecting to a Network Location Associated with Content,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-182); and “System for Connecting to a Network Location Associated with Content,” U.S. patent application Ser. No. ______ (atty. dkt. no. 10519-189).
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the embodiments are not limited to the details provided. There are many alternative ways of implementing the embodiments. Accordingly, the disclosed embodiments are to be considered as illustrative and not restrictive, and the embodiments are not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims. In the claims, elements and/or operations do not imply any particular order of operation, unless explicitly stated in the claims.
This application is related to U.S. patent application Ser. No. ______ (Attorney Docket No. SAN-021), filed on Nov. 14, 2006, and entitled “Methods for Accessing Content Based on a Session Ticket,” the disclosure of which is incorporated herein by reference.