In the emerging Internet enabled world of digital asset commerce, the ease with which assets may be transferred enables many new business possibilities. Unfortunately, this ease of transfer also exposes digital assets to widespread illegal copying and distribution. Content that is in digital form can be copied without degradation. As a result, distributors and artists lose potential sales to customers who might otherwise purchase content, but instead obtain it illegally.
Methods and Apparatus are disclosed for content encryption using programmable hardware. In one embodiment, a content request is transmitted to a content provider. A session key is received in response to the content request. The session key is used to configure programmable hardware with a first configuration. An identification key is generated and the first configuration of the programmable hardware is used to encrypt the identification key. The encrypted identification key is transmitted to the content provider. Encrypted content containing the identification key is then received.
In another embodiment, after a content request is received from a content customer, a session key is sent to the content customer. In response to sending the session key, an encrypted identification key is received. Programmable hardware is configured and is used to decrypt the encrypted identification key. The programmable hardware is then configured with a second configuration and is used to generate encrypted content containing the identification key from content associated with the content request.
Illustrative embodiments of the invention are illustrated in the drawings in which:
An exemplary configuration containing a content provider 100 that provides content to a content customer 150 is shown in
Content provider 100 may also be a source device, such as a tape drive, a disk drive, a compact disk (CD) drive, a CD player, a digital versatile disk (DVD) player, or other device that provides content for copying, playback, or other type of content access. Content customer 150 may be a client computer or a destination device, such as a tape drive, a disk drive, a writeable CD drive, a recordable DVD drive, a computer monitor, a television, a stereo, or other device that is a destination for a copy, playback, storage, or other type of content access.
Content provider 100 may be communicatively coupled to a content library 130. Content library 130 may be a computer file or a database containing one or more audio, video, text, or other types of files that correspond to content that can be requested by the content customer 150. It should be appreciated that other embodiments may not include a content library. Instead, the content to be provided may be stored in a buffer or may be data stored on a disk, tape, CD, DVD, or other type of storage medium.
Content provider 100 is also communicatively coupled to a key library 135. The key library 135 contains one or more keys to be used as part of an encryption process described later in this application. Other embodiments may not include a key library 135. Instead, the keys may be stored with the content to be provided, another location, may be provided by an alternate source or be generated “on the fly”.
Programmable hardware 120 is communicatively coupled to the content provider 100. Programmable hardware 170 is also communicatively coupled to content customer 150. The programmable hardware 120, 170 is a device, such as a field programmable gate array (FPGA), a programmable logic device (PLD), or a type of microprocessor, that can be configured with a variety of different configurations. The programmable device 120, 170 manipulates data differently according to its current configuration. Although reference will be made throughout this application to functions performed by programmable hardware, it should be appreciated that in alternate embodiments these functions may be performed by configurable software.
The content provider 100 may use programmable hardware 120 to encrypt content. Content customer 150 may use programmable hardware 170 to decrypt content. Content provider 100 and content customer 150 can configure and input data to their respective programmable devices. However, either or both of the parties may not know the configuration of the programmable device generated by a particular configuration pattern and, as a result, may be ignorant of the manner in which the programmable device manipulates data when configured with a particular pattern. Using programmable hardware to encrypt content may make it difficult for interceptors to access encrypted content because programmable hardware may provide an almost unlimited number of algorithm possibilities depending upon its configuration.
Programmable hardware 170 includes a key generator 180. In one embodiment, key generator 180 may be a random number generator. Key generator 180 may be used to generate an identification key used in an encryption process. It should be appreciated that in alternate embodiments, key generator 180 may be a separate component communicatively coupled to programmable hardware 170.
A storage medium 185 may be used to store content received from the content provider. The storage medium 185 may be a disk, CD, tape, DVD, or other type of device to store content. It should be appreciated that some embodiments may not include the storage medium 185. For example, if content customer is a playback device, content may be sent directly to a component to play the content to a user.
In the configuration described above, different components were described as being communicatively coupled to other components. A communicative coupling is a coupling that allows communication between the components. This may be by means of a bus, cable, network, wireless mechanism, or other mechanism that allows communication between the components.
In one embodiment, the programmable hardware 170 may be a field programmable gate array (FPGA) 200 as illustrated in
Different configuration patterns may be used to configure FPGA 200 with a variety of different configurations. Data input 215 inputs data into a configuration of FPGA 200. Data is manipulated differently depending upon the configuration of the configurable elements. A data output 225 is coupled to the configurable elements and is used to output the manipulated data.
FPGA 200 also includes a non-reconfigurable memory 210. Non-reconfigurable memory 210 may be used to store an identification key used in the encryption process. FPGA 200 additionally includes a key generator 230 to generate the identification key and to initially configure non-reconfigurable memory 215 with the identification key. In other embodiments, FPGA 200 may not include the non-reconfigurable memory 210 or the key generator 210.
Next, a session key is received 310 from the content provider in response to the content request. This session key can be a bit stream or other type of configuration pattern that is used to configure programmable hardware 170.
Programmable hardware 170 is then configured with a first configuration by using the session key 315. For example, the session key may be input into a configuration port of an FPGA and used to configure the FPGA. The resulting configuration of the programmable hardware is logic that will manipulate data according to an algorithm determined by the configuration.
About the same time, an identification key is generated 320. The identification key may be a random number generated by any type of random number generator well known in the art. It may be used as a unique identifier to limit copying or access of the requested content. In one embodiment, the programmable hardware 170 is an FPGA comprising a random number generator. The FPGA generates the identification key by interacting with a circuit external to the FPGA to seed the generator, such as an analog noise generator.
After the identification key is generated, it is stored 325 for future reference. The identification key may be stored in a restricted area that can only be accessed by the programmable hardware 170 used to obtain the content, or by similar programmable hardware. To ensure the area remains accessible only by programmable hardware, access requests to the restricted area may be monitored and all requests not initiated by programmable hardware may be blocked.
In one embodiment, the restricted area may be an area of the same storage medium that will store the content. This area may be inaccessible to users through normal interface commands. Storing the identification key on the same storage medium as the content may allow any device equipped with a programmable hardware 170 to access the content, but copies of the content that do not have the proper identification key stored in the restricted area may not be accessible. Alternately, the identification key may be stored in an area accessible only to this particular programmable hardware, such as a memory inside the programmable hardware. This may limit playback of the content to only the device or devices that have access to the programmable hardware used to obtain the content.
Programmable hardware is then used to encrypt the identification key 330. The identification key can be streamed through the programmable hardware to produce an encrypted key. The programmable hardware will encrypt the identification key with an algorithm determined by the first configuration of the programmable hardware.
Next, the encrypted identification key is transmitted to the content provider 335. Encrypted content is then received 340. The encrypted content contains the requested content and the identification key in encrypted form. As described elsewhere in this application, the identification key may be used to ensure that the content can only be decrypted by a customer having access to the identification key.
Other information may also be received along with the encrypted content. A content access key may be received to decrypt the encrypted content. If the content is transmitted with two levels of encryption, a transmission key may be received that can be used to decrypt the outer level of transmission. Other keys that may be used in later copying or sharing of the content by the customer may also be received.
Additionally, access rights of the content may be received along with encrypted content or exposed as part of decrypting the outer level of encryption. These access rights may include an expiration date for viewing or accessing the content, an allowed viewing time limiting the total amount of time the content may be viewed or accessed, and an allowed access count limiting the number of times the content may be accessed. These access rights may be written to a restricted area for later use. This area may be the same area used to store the identification key or it may be a different area.
Although
In one embodiment, after the encrypted content is received it may be stored for later access or playback.
Before the content is stored, a determination is made as to whether the content is doubly encrypted 405. If the content is encrypted with a second level of encryption, a transmission key will have also been received 410 from the content provider to decrypt the outermost layer of encryption. The transmission key may have been received as a header to the encrypted content. By way of example, the transmission key can be a bit stream or other type of configuration pattern that is used to configure programmable hardware. Programmable hardware is configured with a second configuration by using the transmission key 415.
The second configuration of the programmable hardware is then used to decrypt the outer level of encryption 420. This may be done by streaming the encrypted content through the data input of the programmable hardware while it is configured with the second configuration. As part of this decryption process, a content access key to decrypt the final level of content and other information, such as access rights, may be exposed. If access rights are exposed, they may be written to a restricted area of the storage medium.
After the outer level of encryption has been removed, or it has been determined that the content is not doubly encrypted 405, the content encrypted with the final level of encryption is stored along with the content access key 425. If the content was not doubly encrypted, the content access key is also received from the content provider along with the encrypted content. Other keys that may be used by subsequent content customers may also be stored. The content may be stored on any type of storage medium, such as a disk, a CD, a tape, or a recordable DVD.
The encrypted content that is stored contains the identification key. By storing the content in encrypted form, access to the unencrypted content is limited to devices having access to the identification key matching the identification key contained in the encrypted content. As described elsewhere, this may only be the device or devices that have access to the programmable device used to obtain the content. If the identification key is also stored on the storage medium, access may be given to any device having access to a programmable device that can be used in the decryption process described in
Next, an encrypted identification key is received 515 from the content customer in response to the session key. The identification key may have been encrypted by the content customer according to an algorithm determined by a programmable hardware configured with the session key.
The content provider has access to the key needed to configure its programmable hardware so that the programmable hardware is configured to decrypt the identification key. Accordingly, the content provider's programmable hardware is configured in a first configuration using the appropriate key 520. It should be appreciated that the logic inside the content customer's programmable hardware may be the same or different than the logic inside the content provider's programmable hardware. Thus, the key used to configure the provider's programmable hardware with the decryption algorithm may be the same as the session key sent to the content customer or it may be different.
After the programmable hardware is configured, the identification key is decrypted according to the decryption algorithm determined by the first configuration 525. The programmable hardware is then configured with a second configuration using another key 520. This second configuration of the programmable hardware is used to encrypt the content 535 requested by the customer.
In one embodiment, while the content is being encrypted, the programmable hardware may also insert the identification key into one or more locations of the content. Alternately, the identification key may be inserted into one or more locations of the content, or appended to the content, before the encryption process. The encrypted content containing the identification key is then transmitted to the content customer 540. A content access key that may be used to configure the customer's programmable hardware to decrypt the encrypted content is also transmitted. An intruder may not be able to intercept content transferred according to the process described above. As will be described further with reference to
In alternate embodiments, other information may be encrypted with the content. For example, copy privilege information specifying the copy privileges of the content and the privileges of any authorized copies of the content may be appended to the content and encrypted along with the content. Keys that allow the content customer to act as a content provider may also be encrypted with the content. Alternately, information, such as the copy privilege information or keys, may be sent separately with the content.
Additionally, the encrypted content and other information, such as access rights, other configuration keys, and the content access key, may be encrypted with a second level of encryption. To perform this second level of encryption, a key is used to configure the programmable hardware with a third configuration. Next, the third configuration of the programmable hardware is used to encrypt the encrypted content and other information. The customer may then receive this doubly encrypted content instead of the first encrypted content. A transmission key that may be used to configure the customer's programmable hardware to remove the outer level of encryption may also be transmitted.
First, an identification key to be used to uniquely identify this media is obtained 605. The identification key may be identical for all media containing the same content, or each media may have its own identification key. The identification key may be generated or it may be obtained from a key library or other location.
Next, programmable hardware is configured. The resulting configuration of the programmable hardware is logic that will manipulate data according to an algorithm determined by the configuration. This configuration of the programmable hardware is used to encrypt the media content 615.
As part of the encryption process 615, the programmable hardware may also insert the identification key into one or more locations of the content. Alternately, the identification key may be inserted into one or more locations of the content, or appended to the content, before the encryption process.
At about the same time, the identification key is written to a restricted area of the media 620. This area is an area that may be inaccessible by a user. In one embodiment, the restricted area may be an area accessible only by a programmable hardware.
The encrypted content containing the identification key is then written to the media 630. A content access key that is to be used to configure the customer's programmable hardware to decrypt the encrypted content may also be written to the media as a header to the content.
As with content received by a content customer, the media content created by this process can be accessed in a process similar to that described below with reference to
Thus, the embodiment described above may subvert illegal copying because the identification key written to the restricted area may not be copied during an unauthorized copying process.
The method begins by obtaining a content access key 705 that will be used as a key to decrypt the content. This key may have been sent or stored as a header to the encrypted content. In one embodiment, the content access key is obtained by removing an outer level of encryption as described with reference to
Next, a programmable hardware is configured using the content access key 710. The resulting configuration of the programmable hardware is logic that will manipulate data according to a decryption algorithm determined by the configuration.
A content identification key that is contained in the encrypted content is then obtained 715. This content identification key may be obtained by streaming a portion of the encrypted content through the configured programmable hardware until the content identification key is located. At about the same time, a user identification key is also obtained 720. The user identification key may be retrieved from a storage area of the programmable device, a restricted area on a storage medium, or other location.
Next, the content identification key is compared to the user identification key 725. If the keys do not match, the content is not decrypted and access to the content is disabled or denied 735. If the content identification key matches the user identification key, the content is decrypted 730 using the configured programmable hardware. This may be done by streaming the encrypted content through a data input of the programmable hardware. The streamed content is then decrypted according to a decryption algorithm determined by the configuration of the programmable hardware. In alternate embodiments, the decrypted content may then be streamed through a digital to analog converter coupled to the programmable hardware so that the unencrypted content is only available in analog format.
Referring to
Using the first configuration of the programmable hardware, a content identification key and copy privilege information are obtained 910. The content identification key may be obtained by streaming a portion of the encrypted content through the configured hardware until the content identification key is located. The copy privilege information may be obtained in a similar manner or it may be obtained from a restricted area or another area on a storage medium. If the copy privilege information is encrypted, it may be decrypted by streaming it through the first configuration of the programmable hardware. Alternate embodiments may not include copy privilege information.
Next, the content identification key is compared to a user identification key 915. The user identification key may be obtained from a restricted area, such as an area on a storage medium inaccessible to users. If the keys do not match 920, a determination is made that copying is not allowed 925.
If the keys match, another check may be made to determine if the copy privileges allow copying 930. The copy privilege information that was obtained in 910 is read to determine what copy privileges are associated with the encrypted content. The copy privileges may grant unlimited copying rights, copying of only a set number of copies, or no copying at all. Other copy privilege information may also be included. For example, the copy privilege information may include copy privileges to be granted to an authorized copy. These privileges may be the same or different than the original content's copy privileges. It should be appreciated that in alternate embodiments that do not include copy privilege information, a determination may be made that copying is allowed if the keys match.
If the copy privileges do not allow copying, a determination is made that copying is not allowed 925. If the privileges allow unlimited copies 935, a determination is made that copying is allowed.
If the privileges allow only a set number of copies, a copy history is read 940. The copy history may be read from a restricted area on a storage medium or other location. The copy history may include a history of the number of copies made and the dates those copies were made. If the copy history is encrypted, it may be decrypted by streaming it through the first configuration of the programmable hardware.
In one embodiment, If the number of copies allowed by the copy privileges is less than the number of copies made 945, a determination is made that coping is allowed. Otherwise, the authorized number of copies have been made and no more copying is allowed 925. If a copy is allowed, the copy history may be updated at some point in the copying process to record the information associated with the making of the new copy.
Returning to
Either after the content is decrypted or as part of the decryption process, the content identification key associated with the content is removed 830. A new identification key to be used in the copy of the content is received 835. This new identification key may be generated by the target device and may be received in a process similar to that described in 510, 515, 520, and 525.
The programmable device is then configured with a second configuration 840 using a key that will configure the programmable hardware with an encryption algorithm. This key may be stored with the content, may be obtained from a key library, or may be obtained from another location. The second configuration of the programmable hardware is used to encrypt the content 845. The new identification key is appended to or inserted in one or more locations of the content, either before the content is encrypted, or as part of the encryption process. Copy privilege information associated with the copy may also be encrypted with the content. Alternately, the copy privilege information of the copy may be appended to the content in unencrypted form.
Next, the encrypted content is sent to the target device to be copied to the copy medium 850. A header containing the content access key and any other keys or information may be sent along with the encrypted content. Additionally, the content may be sent to the target device with a second level of encryption. A process similar to that described in
It should be appreciated that alternate embodiments may include variations to the copying process described above. For example, the original content may not be decrypted and the identification key may not be removed. Instead, the copy may use the same identification key as the original content. The original content identification key may then be transmitted to the target device to be written to a restricted area of the copy medium so the contents of the copy may be accessed. For purposes of security, the content identification key may be encrypted along with the encrypted content in a second level of encryption before being sent to the target device.
Access rights and an identification key associated with the content are then obtained 1010. By way of example, the content identification key may be obtained by streaming a portion of the content through the programmable device. The access rights may be similarly obtained or may be read from a restricted area. If the access rights are stored in encrypted form on the restricted area, the programmable device may be used to decrypt the access rights. The access rights may include an allowed number of times the content can be accessed, an allowed period of time the content may be viewed or accessed, a total elapsed viewing time the content may be viewed, and/or an expiration date for accessing the content. Other access rights may also be included.
Next, the content identification key is compared to a user identification key 1015. The user identification key may be obtained from a restricted area, such as an area on a storage medium that is not accessible to users. If the keys to not match 1020, access to the content is denied 1025.
If the keys match 1020, an access history is read 1030. The access history may be read from a restricted area on the storage medium containing the content or other location. If the access history is encrypted, it may be decrypted by streaming it through the configured programmable hardware. In embodiments where the access rights consist of an expiration date, the access history may not be read or may be read after a determination is made that the expiration date has not yet been reached.
A determination is made if the access privileges have been exceeded 1035. In one embodiment, the access rights include a total number of authorized accesses. If the access history includes information that the content has been accessed less than the number of authorized accesses, access to the content is allowed 1040 as long as no other access privileges have been exceeded. If the access history information states the content has been accessed the authorized number of times, access to the content is denied 1025. A similar check is done if the access privileges consist of a total elapsed viewing time that a viewer may view the content.
In one embodiment, the access rights may consist of an expiration date in addition to or instead of other access rights. The expiration date may be an absolute date or may be a date relative to the date the content was obtained. In this embodiment, the expiration date may be compared to the date code associated with the device accessing the content. If the expiration date has passed, access to the content is denied 1025. For additional security, the date code may be generated by a non-volatile time-keeping circuit that may be part of the programmable hardware. If power is removed from the timekeeping circuit, the circuit may be reset in a state that renders all date-coded content inaccessible.
Access rights other than those described above are also contemplated. The determination on whether the access privileges have been exceeded may vary depending upon the access right to be analyzed. In some embodiments, if the access privileges have been exceeded, the content may be destroyed. This may be accomplished by overwriting some or all of the content. If access to the content is allowed, the access history may be updated to reflect the new access. Before updating the access history, the activity of the user may be monitored to determine a total elapsed viewing time the user viewed the content.
It should be appreciated that there are many ways that the access rights can be stored and obtained. In one embodiment, the access rights may be updatable. Additional security may be provided by encrypting the access rights with an access identification key. A process similar to the process described in
Number | Name | Date | Kind |
---|---|---|---|
6061451 | Muratani et al. | May 2000 | A |
6161179 | Seidel | Dec 2000 | A |
6275588 | Videcrantz et al. | Aug 2001 | B1 |
6289455 | Kocher et al. | Sep 2001 | B1 |
6363357 | Rosenberg et al. | Mar 2002 | B1 |
6381732 | Burnham et al. | Apr 2002 | B1 |
6748537 | Hughes | Jun 2004 | B2 |
20020099663 | Yoshino et al. | Jul 2002 | A1 |
20030041221 | Okada | Feb 2003 | A1 |
20050120232 | Hori et al. | Jun 2005 | A1 |
Number | Date | Country |
---|---|---|
0844550 | Jun 1999 | EP |
1335266 | Aug 2003 | EP |
2276471 | Sep 1994 | GB |
10-207362 | Aug 1998 | JP |
2001-136160 | May 2001 | JP |
WO 0044119 | Jul 2000 | WO |
Number | Date | Country | |
---|---|---|---|
20050021961 A1 | Jan 2005 | US |