Method and system for encrypting and decrypting data using an external agent
A communication system including a transmitter, a receiver, a communication link (for example, a TMDS-like link), and preferably also an external agent with which the transmitter and receiver can communicate, in which video data (or other data) are encrypted, the encrypted data are transmitted from the transmitter to the receiver, and the transmitted data are decrypted in the receiver, a transmitter and a receiver for use in such a system, a cipher engine for use in such a transmitter or receiver, a method for operating such a transmitter or receiver to encrypt or decrypt data, and a method for distributing keys to the transmitter and receiver. The receiver can be a player coupled to a downstream receiver by a TMDS-like link, and configured to re-encrypt the decrypted data (for example, using an AES or HDCP protocol) and send re-encrypted data over the link to the receiver. Optionally, the player is a repeater which translates the decrypted data from the transmitter, and then re-encrypts the translated data for transmission to the downstream receiver. The transmitter can itself be a player that receives and decrypts encrypted data from an upstream source. In preferred embodiments, the system implements a content protection protocol including a challenge-response procedure. After a new key is supplied to the receiver (and the same new key should have been supplied to the transmitter) and before the receiver can use the new key, the challenge-response procedure requires that the receiver validate the transmitter by verifying that the transmitter has proper knowledge of the new key.
Latest Patents:
The invention pertains to encryption of data (e.g., data to be transmitted over a TMDS link or other serial link), and to decryption of encrypted data (e.g., encrypted data that has been transmitted over a TMDS link or other serial link). Some embodiments of the invention are methods and systems for content protection using a transmitter that encrypts data, a receiver that receives and decrypts the encrypted data, and an external agent that communicates with at least one of the transmitter and receiver to facilitate the encryption and decryption.
BACKGROUND OF THE INVENTIONThere are various, well-known serial links for transmitting video data and other data. One conventional serial link is known as a transition minimized differential signaling interface (“TMDS” link). This link is used primarily for high-speed transmission of video data from a set-top box to a television, and also for high-speed transmission of video data from a host processor (e.g., a personal computer) to a monitor. Among the characteristics of a TMDS link are the following:
1. video data are encoded and then transmitted as encoded words (each 8-bit word of digital video data is converted to an encoded 10-bit word before transmission);
-
- a. the encoding determines a set of “in-band” words and a set of “out-of-band” words (the encoder can generate only “in-band” words in response to video data, although it can generate “out-of-band” words in response to control or sync signals. Each in-band word is an encoded word resulting from encoding of one input video data word. All words transmitted over the link that are not in-band words are “out-of-band” words);
- b. the encoding of video data is performed such that the in-band words are transition minimized (a sequence of in-band words has a reduced or minimized number of transitions);
- c. the encoding of video data is performed such that the in-band words are DC balanced (the encoding prevents each transmitted voltage waveform that is employed to transmit a sequence of in-band words from deviating by more than a predetermined threshold value from a reference potential. Specifically, the tenth bit of each “in-band” word indicates whether eight of the other nine bits thereof have been inverted during the encoding process to conect for an imbalance between running counts of ones and zeroes in the stream of previously encoded data bits);
2. the encoded video data and a video clock signal are transmitted as differential signals (the video clock and encoded video data are transmitted as differential signals over conductor pairs without the presence of a ground line);
3. three conductor pairs are employed to transmit the encoded video, and a fourth conductor pair is employed to transmit the video clock signal; and
4. signal transmission occurs in one direction, from a transmitter (typically associated with a desktop or portable computer, or other host) to a receiver (typically an element of a monitor or other display device).
It is foreseeable that a common use for encryption will be to encrypt video data for transmission over a serial link from a set-top box to a television, and it has been proposed to encrypt video data for transmission over a TMDS serial link (e.g., from a set-top box to a television). For example, it has been proposed to use the cryptographic protocol known as the “High-bandwidth Digital Content Protection” (“HDCP”) protocol to encrypt digital video data to be transmitted over the “Digital Video Interface” (“DVI” link) adopted by the Digital Display Working Group, and to decrypt the encrypted video data at the DVI receiver.
A DVI link can be implemented to include two TMDS links (which share a common conductor pair for transmitting a video clock signal) or one TMDS link, as well as additional control lines between the transmitter and receiver. We shall describe a DVI link (that includes one TMDS link) with reference to
As shown in
As noted above, it has been proposed to use the cryptographic protocol known as the “High-bandwidth Digital Content Protection” (“HDCP”) protocol to encrypt digital video to be transmitted over a DVI link and to decrypt the data at the DVI receiver. The HDCP protocol is described in the document “High-bandwidth Digital Content Protection System,” Revision 1.0, dated Feb. 17, 2000, by Intel Corporation, and the document “High-bandwidth Digital Content Protection System Revision 1.0 Erratum,” dated Mar. 19, 2001, by Intel Corporation. The full text of both of these documents is incorporated herein by reference.
A DVI transmitter implementing the HDCP protocol asserts a stream of pseudo-randomly generated 24-bit words, known as cout[23:0], during the video active period (i.e. when DE is high). Each 24-bit word of the cout data is “Exclusive Ored” (in logic circuitry in the transmitter) with a 24-bit word of RGB video data input to the transmitter, in order to encrypt the video data. The encrypted data are then encoded (according to the TMDS standard) for transmission. The same sequence of cout words is also generated in the receiver. After the encoded and encrypted data received at the receiver undergo TMDS decoding, the cout data are processed together with the decoded video in logic circuitry in order to decrypt the decoded data and recover the original input video data.
Before the transmitter begins to transmit HDCP encrypted, encoded video data, the transmitter and receiver communicate bidirectionally with each other to execute an authentication protocol (to verify that the receiver is authorized to receive protected content, and to establish shared secret values for use in encryption of input data and decryption of transmitted encrypted data). More specifically, each of the transmitter and the receiver is preprogrammed (e.g., at the factory) with a 40-bit word known as a key selection vector, and an array of forty 56-bit private keys. To initiate the first part of an authentication exchange between the transmitter and receiver, the transmitter asserts its key selection vector (known as “AKSV”), and a pseudo-randomly generated session value (“An”) to the receiver. In response, the receiver sends its key selection vector (known as “BKSV”) and a repeater bit (indicating whether the receiver is a repeater) to the transmitter, and the receiver also implements a predetermined algorithm using “AKSV” and the receiver's array of forty private keys to calculate a secret value (“Km”). In response to the value “BKSV” from the receiver, the transmitter implements the same algorithm using the value “BKSV” and the transmitter's array of forty private keys to calculate the same secret value (“Km”) as does the receiver.
Each of the transmitter and the receiver then uses the shared secret value “Km,” the session value “An,” and the repeater bit to calculate a session key (“Ks”) and two values (“M0” and “R0”) for use during a second part of the authentication exchange. The second part of the authentication exchange is performed only if the repeater bit indicates that the receiver is a repeater, to determine whether the status of one or more downstream devices coupled to the repeater requires revocation of the receiver's authentication.
After the first part of the authentication exchange, and (if the second part of the authentication exchange is performed) if the receiver's authentication is not revoked as a result of the second part of the authentication exchange, each of the transmitter and the receiver generates a 56-bit frame key Ki (for initiating the encryption or decrypting a frame of video data), an initialization value Mi, and a value Ri used for link integrity verification. The Ki, Mi, and Ri values are generated in response to a control signal (identified as “ctl3” in
During each horizontal blanking interval (in response to each falling edge of the data enable signal DE) following assertion of the control signal ctl3, the transmitter performs a rekeying operation and the receiver performs the same rekeying operation to change (in a predetermined manner) the cout data words to be asserted during the next active video period. This continues until the next vertical blanking period, when the control signal ctl3 is again asserted to cause each of the transmitter and the receiver to calculate a new set of Ki and Mi values (with the index “i” being incremented in response to each assertion of the control signal ctl3). The Ri value is updated once every 128 frames. Actual encryption of input video data (or decryption of received, decoded video data) is performed, using the cout data words generated in response to the latest set of Ks, Ki and Mi values, only when DE is high (not during vertical or horizontal blanking intervals).
Each of the transmitter and receiver includes an HDCP cipher circuit (sometimes referred to herein as an “HDCP cipher”) of the type shown in
Module 80 consists of four linear feedback shift registers (having different lengths) and combining circuitry coupled to the shift registers and configured to assert a single output bit per clock interval to block module 81 during each of a fixed number of clock cycles (e.g., 56 cycles) commencing on each assertion of the signal “ReKey” when DE is low (i.e., in the horizontal blanking interval of each line of video data). This output bit stream is employed by block module 81 to re-key itself just prior to the start of transmission or reception of each line of video data.
Block module 81 comprises two halves, “Round Function K” and “Round Function B,” as shown in
Each of linear transformation units K and B outputs 56 bits per clock cycle. These output bits are the combined outputs of eight diffusion networks in each transformation unit. Each diffusion network of linear transformation unit K produces seven output bits in response to seven of the current output bits of registers Ky and Kz. Each of four of the diffusion networks of linear transformation unit B produces seven output bits in response to seven of the current output bits of registers By, Bz, and Ky, and each of the four other diffusion networks of linear transformation unit B produces seven output bits in response to seven of the current output bits of registers By and Bz.
In Round Function K, one bit of register Ky takes its input from the bit stream asserted by module 80 when the ReKey signal is asserted. In Round Function B, one bit of register By takes its input from the bit stream asserted by module 80 when the ReKey signal is asserted.
Output module 82 performs a compression operation on the 28-bit keys (By, Bz, Ky and Kz) asserted to it (a total of 112 bits) by module 81 during each clock cycle, to generate one 24-bit block of pseudo-random bits cout[23:0] per clock cycle. Each of the 24 output bits of module 82 consists of the exclusive OR (“XOR”) of nine terms as follows: (B0*K0)+(B1*K1)+(B2*K2)+(B3*K3)+(B4*K4)+(B5*K5)+(B6*K6)+(B7)+(K7), where “*” denotes a logical AND operation and “+” denotes a logical XOR operation.
In the transmitter, logic circuitry 83 (shown in
Throughout the specification and in the claims the expression “TMDS-like link” will be used to denote a serial link, capable of transmitting digital video data (and a clock for the digital video data) from a transmitter to a receiver, and optionally also transmitting one or more additional signals (bidirectionally or unidirectionally) between the transmitter and receiver, that is or includes either a TMDS link or a link having some but not all of the characteristics of a TMDS link.
There are several conventional TMDS-like links. One type of TMDS-like link is the set of serial links known as Low Voltage Differential Signaling (“LVDS”) links (e.g., “LDI,” the LVDS Display Interface), each of which satisfies the TIA/EIA-644 standard or the IEEE-1596.3 standard. In each system including an LVDS link, the data are sent on a high-speed differential link with a synchronous clock. There is a single clock line with a four to three duty cycle and several different combinations of data lines depending on the data rate and bit depth. An LVDS link is a serial and differential video link, but the video data transmitted over an LVDS link is not encoded.
Other TMDS-like links encode input video data and other data to be transmitted into encoded words comprising more bits than the incoming data using a coding algorithm other than the specific algorithm used in a TMDS link, and transmit the encoded video data as in-band characters and the other encoded data as out-of-band characters. The characters need not be classified as in-band or out-of-band characters based according to whether they satisfy transition minimization and DC balance criteria. Rather, other classification criteria could be used. An example of an encoding algorithm, other than that used in a TMDS link but which could be used in a TMDS-like link, is IBM 8b10b coding. The classification (between in-band and out-of-band characters) need not be based on just a high or low number of transitions. For example, the number of transitions of each of the in-band and out-of-band characters could (in some embodiments) be in a single range (e.g., a middle range defined by a minimum and a maximum number of transitions).
The data transmitted between the transmitter and receiver of a TMDS-like link can, but need not, be transmitted differentially (over a pair of conductors). Although the differential nature of TMDS is important in some applications, it is contemplated that some TMDS-like links will transmit data other than differential data. Also, although a TMDS link has four differential pairs (in the single pixel version), three for video data and the other for a video clock, a TMDS-like link could have a different number of conductors or conductor pairs.
The primary data transmitted by a TMDS link are video data. What is often significant about this is that the video data are not continuous, and instead have blanking intervals. However, many TMDS-like serial links do not transmit data having blanking intervals, and thus do not encode input data (for transmission) in response to a data enable signal. For example, the audio serial links known as I2S and S/PDIF transmit continuous data.
We shall refer to content protection protocols other than the HDCP protocol as “non-HDCP” protocols. Not only content protection protocols that closely resemble the HDCP protocol (but differ therefrom in one or more respects), but also content protection protocols very different from the HDCP protocol, shall be referred to as “non-HDCP protocols.”
Aspects of the present invention employ (or are useful in implementing) encryption and/or decryption of data in accordance with the HDCP protocol, or non-HDCP protocols that are modified versions of the HDCP protocol in which the transmitter and receiver obtain the shared secret value (“Km”), directly or indirectly, from an external agent. Other aspects of the present invention employ (or are useful in implementing) encryption and/or decryption of data in accordance with other non-HDCP protocols.
Some embodiments of the invention contemplate that encrypted data is transmitted over a serial link. Other embodiments do not require that encrypted data are transmitted over a serial link. Examples of serial links include the above-mentioned DVI, TMDS, and TMDS-like links, ethernet links, fiberchannel links, serial ATA links used by disk drives, and others.
SUMMARY OF THE INVENTIONIn a class of embodiments, the invention is a communication system including a transmitter, a receiver, and a serial link (e.g., a TMDS-like link) in which data (e.g., video data or audio data) are encrypted, the encrypted data are transmitted over the link from the transmitter to the receiver, and the transmitted data are decrypted in the receiver. Other aspects of the invention are transmitters and receivers for use in such systems, cipher engines for use in such transmitters or receivers, encryption and decryption methods, and methods for authenticating receivers prior to transmission of encrypted data to such receivers over a serial link.
Conventional encryption methods and systems often use keys that are either captive (contained wholly within a transmitter or receiver, and seldom or never changing) or limited in number (sometimes distributed with the media that stores the encrypted content). In a class of embodiments, the invention is a system including a transmitter, a receiver, at least one TMDS-like link between the transmitter and receiver (and optionally a translating router or other router coupled to the transmitter or receiver by one such TMDS-like link), and an external agent which provides at least one key to at least one of the receiver and transmitter, so that the system can operate using more keys, the keys can be changed frequently, and the keys can be limited either in scope (allowable use), in time (with an expiration date), or in some other way (for a particular person or family, for example). The external agent is itself a system or device distinct from the receiver and the transmitter. In preferred embodiments, the external agent accomplishes key distribution in a refined manner to allow for very strong cryptographic security, and to support encryption at the high data rates required for fast digital connections. More generally, an external agent is employed in such a system including a TMDS-like link in accordance with the invention to perform at least one encryption, decryption, or authentication function, such as:
verification of the identity of at least one of the receiver and transmitter by examination of a cryptographically secure digital signature;
generation of key material for use by at least one of the transmitter and receiver in an encryption and/or decryption process. The key length can vary on-the-fly, for example to suit the needs of the application or to satisfy export control requirements. The key value can also vary on an as-needed basis, and can contain qualifiers (such as expiration dates, expected uses, copy permissions, or specific contents);
maintenance of a revocation list (or other database) which identifies devices that are not authorized to perform encryption or decryption. A revocation database is kept in a central location (and optionally also in a small number of reflector locations) so that it is manageable (even if very large) and easily updated. A revocation database can also contain additional information and can allow revocation based on product make or model, date of manufacture, or other criteria; and
maintenance of an audit trail of accesses and behaviors, and use of this information to help improve overall security. For example, the external agent can detect accesses that are too frequent, or that follow suspicious patterns, or that seem to show that one device ID is being simultaneously used in multiple locations.
In some embodiments, the receiver is a player that forwards the decrypted data (or a translated version of the decrypted data) to a downstream device. Optionally, the player translates the decrypted data in some way, re-encrypts the translated data, and then forwards the re-encrypted, translated data. The player can be coupled to a decrypting display by a TMDS-like link, and configured to re-encrypt the decrypted data (for example, using an AES or HDCP protocol) and send re-encrypted data over the link to the decrypting display.
In preferred embodiments, the system of the invention implements a symmetric content protection protocol including a challenge-response procedure. After a new key is supplied to the receiver (and the same new key should have been supplied to the transmitter) and before the receiver can use the new key, the challenge-response procedure is performed to allow the receiver to validate the transmitter by verifying that the transmitter has proper knowledge of the new key.
Other aspects of the invention are methods implemented by any of the embodiments of the inventive system and apparatus.
BRIEF DESCRIPTION OF THE DRAWINGS
It should be appreciated that the term “transmitter” is used herein in a broad sense to denote any unit capable of transmitting data over a communication link (and optionally also encoding and/or encrypting the data to be transmitted), and the term “receiver” is used herein in a broad sense to denote any unit capable of receiving data that has been transmitted over a communication link (and optionally also decoding and/or decrypting the received data). Unless otherwise specified, the link can, but need not, be a TMDS-like link or other serial link. For example, the term transmitter can denote a transceiver that performs the functions of a receiver as well as the functions of a transmitter.
In another example, the term “transmitter” denotes a processor programmed with software for implementing a variation on the HDCP protocol to communicate with a graphics controller (with the graphics controller functioning as a “receiver”). Such a processor can send video data to the graphics controller after executing an authentication exchange (in accordance with this version of the HDCP protocol). The processor and graphics controller can be elements of a personal computer configured to send encrypted video data from the graphics controller to a display device. The graphics controller and display device can be configured to execute another encryption protocol (e.g., the standard HDCP protocol discussed above) to allow the graphics controller (this time functioning as a “transmitter”) to encrypt video data and send the encrypted video to the display device, and to allow the display device (functioning as a “receiver”) to decrypt the encrypted video.
We shall use the abbreviation “KSV” herein to denote “key selection vector.”
Other expressions employed herein include the following:
-
- Asymmetric Key Encryption: A type of encryption (also called “public-key encryption”) that employs two keys: a public key and a private key. The public key is published in a public directory and the corresponding private key is kept secret. The sender of the data encrypts the data with the public key of the receiver. The data can be decrypted only with the private key of the receiver. Public-key encryption is more computationally intensive than symmetric key encryption, and so is not often used for large amounts of data.
- Advanced Encryption Standard (or “AES”): A cryptographic algorithm (sometimes referred to as the “Rijndael” algorithm) specified by a recent Federal Information Processing Standards (FIPS) Publication, for use by U.S. Government organizations to protect sensitive information. The National Institute of Standards and Technology (NIST) has indicated that it anticipates that the AES algorithm will be widely used on a voluntary basis by organizations, institutions, and individuals.
- Counter (CTR) Mode Encryption: A technique for using a block cipher to generate pseudo-random numbers, which can in turn be used to encrypt or decrypt data. In essence, the block cipher processes a sequence of count values (from counter circuitry) using a secret key, to produce a sequence of pseudo-random numbers. This technique is conceptually simple, and yet very secure if the block cipher is a good one. The count values do not need to be kept secret, but they must not be re-used. The inputs to the block cipher do not depend on the block cipher's outputs when this technique is employed, which offers two major advantages. First, the implementation can be readily parallelized for best performance. Second, transmission errors remain localized to the specific bits where the error occurred. They do not cascade or propagate.
- Downstream: Toward the device (e.g., display device) that is the final destination of decrypted data.
- Upstream: Toward the source of a stream (or other quantity) of encrypted data.
- HDCP Repeater: A device, employed in a system implementing the High-bandwidth Digital Content Protection (“HDCP”) protocol or a modified HDCP protocol (e.g., a modified version of the HDCP protocol in which the transmitter and receiver obtain the shared secret value (“Km”) directly or indirectly from an external agent), that receives HDCP-encrypted data (e.g., video data) and transmits the data downstream to another device of the system. The HDCP protocol allows up to seven levels of repeaters, and a maximum of 128 devices (including repeaters), to be attached to a host DVI port.
- HDCP Receiver: A device, employed in a system implementing the High-bandwidth Digital Content Protection (“HDCP”) protocol or a modified HDCP protocol (e.g., a modified version of the HDCP protocol in which the transmitter and receiver obtain the shared secret value (“Km”) directly or indirectly from an external agent), that receives and decrypts HDCP-encrypted data (e.g., video data).
- HDCP Transmitter: A device, employed in a system implementing the HDCP protocol or a modified HDCP protocol (e.g., a modified version of the HDCP protocol in which the transmitter and receiver obtain the shared secret value (“Km”) directly or indirectly from an external agent), that transmits HDCP-encrypted data.
- Key Exchange The process by which secret key material is distributed to both sides of a link. This is a requirement for any symmetric key mechanism.
- KL: A shared secret key used by both sides of a TMDS-like link, in a class of embodiments of the invention, for video encryption and decryption. It is a symmetric key, and must remain absolutely confidential. If it were ever revealed, the link security would be thoroughly compromised for the duration of the session. It must be changed from time to time to maximize security (when Counter Mode encryption is employed, the encryption sequence will repeat if the same combination of KL and count values is used).
- Key Sequence Code (KSC): A number, assigned to each KL value (typically by a content authority), that is used to identify the KL value. When the KSC values are assigned by a content authority, the correspondence between each KSC value and the corresponding KL value is at the discretion of the content authority (but the KSC value should not be a hash or other function of the corresponding KL value). The KSC values are non-secret, and can be readily exchanged in the open.
- Receiver: A device (which can be a set-top box) that receives encrypted data and generates decrypted data by decrypting the encrypted data. In a class of embodiments, the inventive system includes a receiver authorized by a content authority to receive and decrypt encrypted data, and optionally also to translate the decrypted data in a pre-approved manner. This translation can include conversion of the data into analog form for immediate display, and can also include limited copying or retransmission.
- Router: A device that receives encrypted content (e.g., digital data) and forwards the content, or receives encrypted content, decrypts (or otherwise modifies or translates) the encrypted content, and then forwards the translated (e.g., modified) content. One type of router (sometimes referred to herein as a “switch”) receives encrypted data and forwards the encrypted data without decrypting or translating it in any way. A switch buffers the forwarded data to allow for longer links, and can be coupled between at least two transmitters and at least two receivers and configured to selectively forward data from any of the transmitters to all of the receivers or to any selected one (or subset) of the receivers (all the downstream links coupled to the selected upstream link will have the same resolution and timing characteristics).
- Translating Router: a router that decrypts, modifies, or otherwise translates encrypted data to produce translated data, and then forwards the translated data. The translation can include re-encryption.
- Repeater: a device that is a receiver and a translating router, and that receives and decrypts encrypted data, then translates (e.g., modifies) the decrypted data in some way, then re-encrypts the translated data, and then forwards the re-encrypted, translated data. A repeater can implement features such as video scaling, format translation, “picture-in-picture”, on-screen displays, translation of non-HDCP-encrypted data to HDCP-encrypted data, and so on. Note that data asserted by a translating router to different downstream links can have different resolution and timing characteristics.
- Player: a receiver that retransmits the decrypted data that it generates; or translates the decrypted data in some way (e.g., by converting decrypted video data into analog form for display, or re-encrypting decrypted data, or modifying decrypted data in some way and re-encrypting the modified data) and transmits the translated data. In a class of embodiments, the inventive system includes at least one player authorized by a content authority to receive and decrypt encrypted data, translate the decrypted data in a pre-approved manner, and retransmit the translated data. A player that decrypts encrypted data, translates the decrypted data in some way, and transmits the translated data is one example of a “translating router” (as defined above).
- Content Authority: A system, organization, or other entity responsible for approving the designs of receivers, certifying their compliance with a set of predetermined criteria, assigning an identifier to each approved receiver, and typically also registering public keys for approved receivers. A content authority typically also keeps a list of receivers (or categories of receivers) that are known to be compromised, and provides a certificate and revocation database.
- TMDS Cipher: A block of logic that either encrypts a data stream (which can but need not be a video data stream) for transmission over a TMDS-like link, or decrypts a data stream received over a TMDS-like link. This includes the actual cipher, shared key distribution logic, and scheduling circuitry.
- Decrypting Display: a receiver that is (or includes) an integrated television, monitor, or similar device that includes: a cipher engine (configured to decrypt video data), additional support circuitry, and a video display. Preferably, the integration is accomplished such that it is difficult or impossible for a user to obtain access to an unencrypted video signal generated by the decrypting display, and the decrypting display does not have any video outputs.
- RSA protocol: A public-key content protection protocol that offers both encryption and digital signatures (authentication). Ronald Rivest, Adi Shamir, and Leonard Adleman developed the RSA protocol in 1977.
- Symmetric Key Encryption: A type of encryption (sometimes referred to as “private-key encryption”) in which the transmitter and receiver of a message share a single key (e.g., the above-described KL key) that is a shared secret of the transmitter and receiver, and is used both to encrypt and decrypt the message. Symmetric key encryption is simpler and faster than public-key encryption, but requires that a mechanism is provided for the transmitter and receiver to exchange the shared secret key in some secure way. Public-key encryption does not require a key exchange because the private keys used in public-key encryption are never transmitted or disclosed.
- Ticket: Data, delivered to a transmitter or receiver (e.g., by a content authority, or by a content owner after consulting a content authority) in response to an associated request, that enables the receiver that receives the ticket (or a receiver that is coupled to the transmitter receiving the ticket) to decrypt an encrypted version of content specified in the request. A ticket contains each key necessary for decrypting the content (or it enables the receiver to obtain each such key), but the ticket itself (or one or more keys or other elements of the ticket) itself is optionally encrypted. Typically, a ticket is valid only when used by a specific receiver, and optionally only during a specific time interval. Typically, each ticket request includes at least limited information about the capabilities of the receiver for whom the ticket is requested, at least to the extent that such capabilities can affect the decision as to whether to grant the request.
The “key exchange” function of
The “key exchange” function can receive externally supplied keys (e.g., encrypted keys) or externally supplied “seeds” for use in generating or selecting keys. There are many ways to deliver such keys or seeds to the “key exchange” function. One employs an external data entry system such as a password, bar code, or smart card; another employs a private and very secure channel between the source and recipient of the key or seed. In a class of embodiments of the invention, a trusted third-party agent (distinct from both the transmitter and receiver) delivers a key (or sequence of keys) to both sides of the link. If each key can be delivered securely to both sides of the link, the protocol will closely approximate a “one-time-pad”, which is the only truly perfect cipher.
In the description of those embodiments of the invention employing a trusted third-party agent (sometimes referred to herein as a “content authority” or “external agent”), the content authority has the capability to perform a particular function that is described in the context in which the content authority is mentioned. In some preferred embodiments, the content authority uses public-private key pairs to securely deliver keys to all devices that will use the keys to encrypt (or decrypt) content. In some such embodiments and in other embodiments, the content authority performs the functions of a conventional “certificate authority.” A conventional “certificate authority” is a trusted third-party agent that issues digital certificates that are used to create or verify digital signatures and public-private key pairs (e.g., for secure communication over the internet), to guarantee that the individual granted the unique certificate is, in fact, who he or she claims to be. Usually, a certificate authority has access to some specific information (delivered or maintained separately) that allows it to confirm an individual's claimed identity.
The key exchange function of
Still with reference to
The “reversible function” (indicated as a separate block of
In a class of embodiments of the invention, the content protection protocol employed includes the following features:
-
- an efficient, high-quality block cipher for the PRNG function;
- a mode of operation for the block cipher that guarantees that its successive inputs will not be dependent on either the input data stream or the cipher outputs. This allows the block cipher to be implemented in a highly pipelined manner, which offers good speed and prevents (or reduces) the tendency for errors to propagate; and
- a simple “reversible” function (separate from the block cipher PRNG function). Since this function is its own inverse (e.g., it is an XOR operation), it can be implemented with logic circuitry that can be used either to encrypt or decrypt data.
Such a block cipher PRNG function and “reversible” function can be implemented to have superior error characteristics, so that bit-errors that occur during transmission over the link are (or tend to be) confined to their original location, and do not propagate far.
Among the many block ciphers, both standardized and proprietary, that can be employed in different embodiments of the invention are those implementing the conventional DES algorithm, Triple DES algorithm, or Advanced Encryption Standard (“AES”) algorithm, or any one of the AES candidate algorithms. The best choice for a particular application will depend on the goals to be achieved and the allowable cost. The AES algorithm has a number of advantages, and will be the preferred choice in many applications.
For each algorithm, there are typically several possible operational modes. In general, the cipher outputs and inputs are connected in different ways in different operational modes. Among the operational modes for the AES algorithm are “Counter” (CTR) and “Output Feedback” (OFB) modes. The CTR mode of AES (or a variant of the CTR mode) is particularly well suited for encryption of data transmitted over a DVI or TMDS link (and for decryption of the transmitted data) because it is easily pipelined, and its security characteristics are both good and verifiable. In some embodiments of the invention, the cipher operates in a sequence of CTR and OFB modes. For example, in some embodiments in which video data is encrypted (or decrypted), the cipher is operated during active video intervals in a CTR mode with a reduced number of “rounds” (each “round” is a cycle of data processing performed by the cipher to generate a pseudo-random value), and in an OFB mode during blanking intervals. More generally, some embodiments of the invention employ a cipher that operates intermittently in a CTR mode (e.g., with a reduced number of rounds), with intervals of OFB mode operation interspersed between the times of CTR mode operation. The principal advantage of such interspersed (CTR and OFB) mode operation is to reduce the computational requirements (by reducing the number of rounds) when operating at high speeds, while retaining some of the security benefits associated with a full number of rounds.
In general, when implementing the invention, a trade-off must always be made to determine the number of rounds used to randomize the stream of pseudo-random values generated by the PRNG function. Typically, if only one round is performed, the resulting stream of “pseudo-random” values is not be adequately randomized. Also typically, if hundreds of rounds are performed to generate each pseudo-random value, the resulting stream of pseudo-random values will be very random, but the PRNG function will have done a lot more work than necessary to achieve an adequate degree of randomness. There is typically an optimal number of rounds somewhere between the extremes.
Even very good ciphers are vulnerable to attack if the PRNG function does not perform a sufficient number of rounds to generate each pseudo-random value. However, each round has a cost associated with it, and this cost can be particularly high if the cipher is run at a high speed. Some balance must be found. The result may depend on the type of content. Content that is “randomly” accessible (such as a computer file) can be slowed down as necessary to meet the cipher's capabilities. However, streaming content (such as audio or especially video) cannot be easily slowed or interrupted.
One compromise, employed in a class of embodiments of the invention, is to vary the number of rounds to match the throughput needs. When encrypting video data (for transmission over a typical TMDS or DVI link), there are bursts of data (video lines, also known as active video periods) separated by periods of inactivity (blanking intervals). In this case, the PRNG function can be implemented to perform a full number of rounds in each blanking interval, and only a very few (e.g., five) during each active video period.
There are other solutions too. For example, if a large number of rounds are necessary, the cipher can be run faster (e.g. using a faster clock or more pipelining) or more data can be processed during each interval of time (e.g., the size of each block of pseudo-random values generated during a processing period of N clock cycles can be doubled, to double the throughput of the PRNG function). Or, additional cipher blocks can be added to process more data at the same time.
In cryptography, encryption and decryption most often occur at different times (this is known as “asynchronous” operation), which requires that some kind of synchronization is included in the message transmitted over the link. This can be accomplished by transmitting a data structure (or signal) indicating the start of a message, or by transmitting special characters or sub-messages. “Instantaneous” links (or links with known or predictable delays) can be implemented to operate asynchronously in this way, but they can alternatively be implemented to operate “synchronously” so that the encryption and decryption happen at the same time (in the logical sense). Synchronous operation (established by a “synchronizing function” as shown in
In some embodiments of systems that employ the
Synchronous encryption and decryption can be implemented in any of several ways. Prior arrangement is one choice (for example, to encrypt and decrypt video data, the first full vertical sync pulse of the unencrypted video can be used as a reference by the encryption unit, and the first full vertical sync pulse of the encrypted video can be used as a reference by the decryption unit). Another choice is a handshake of some sort (e.g., to encrypt and decrypt video data, the encrypting unit and decrypting unit can exchange information and agree that the next sync pulse will be the reference). Preferably, synchronous operation is established with a handshake, since a handshake can be arranged to accommodate any setup time needed and can be easily repeated.
The handshake procedure should be reliable. The handshake itself can be the timing reference, but it is typically better for the handshake to determine some other timing reference. Typically, the handshake's timing can be “loose” and non-critical, or less predictable than that of the timing reference to which the handshake points (e.g., where the handshake requires some exchange or agreement that is difficult to bound, or requires coordination with other link requirements) and the accuracy needed can be supplied by the reference to which the handshake points.
The handshake can be implemented in a simple manner, with each side (or one side, in the case of a one-sided handshake) transmitting a single dedicated pulse, a predefined bit location, or other simple electrical signal. Such a simple handshake has a number of advantages (high speed and low cost being among the most important), but it also has some important disadvantages. For example, glitches or other errors or interference conditions might hinder accurate communications. There might also be timing differences too, even within the bounds of a specification.
Preferably, each side (or one side, in the case of a one-sided handshake) transmits a more accurately distinguishable signal during the handshake, such as an actual message (some collection of bits), a pulse-train or other more complex electrical signal, or a combination of pulses or signals (e.g., on different wires or in different time slots). If each side transmits a pulse-train during a handshake, the pulse-train should have distinct characteristics so as to be discernible against even the worst case background “noise” (including bit-errors in the link). It can be fatal to either miss a handshake, or to detect an extra one, so the handshake should guard against both.
Even after synchronous operation has been established, it is unlikely to continue over an extended period of time without interruption, either due to errors, “channel changes,” or other circumstances. Thus, typical embodiments of the invention are capable of performing re-synchronization. Ideally, re-synchronization is performed in the background, without interrupting the flow of data over the link any more than necessary. One technique for performing re-synchronization includes the steps of delivering new key material to each side of the link, and reaching a new agreement about when both sides will use the new key material. Another technique for performing re-synchronization includes the steps of saving occasional “checkpoint” states (copies of the system state when the synchronization is known or assumed to be good) and then going back to the last checkpoint state when necessary (again, at a mutually agreed point in time). These and other re-synchronization methods are not mutually exclusive. Indeed, often a combination of approaches or capabilities gives the best performance. In some preferred embodiments, the system is placed in a known initial state by the key delivery operation (which preferably includes the challenge-response operation discussed below), and a counter (in each cipher engine) increments in such a way that its next state (e.g., at various video boundaries) is immune (or relatively immune) to events that have occurred since the most recent key delivery operation.
Preferred embodiments of systems that employ the
One verification approach is to examine the “plaintext” output (the decrypted output of the downstream side of the link in response to a predetermined input, such as a sequence of identical bits or a sequence of bits that determine a simple pattern). The source of the input data can include additional or special information that makes this test even more definitive (such as a checksum of the data, or a watermark). Another way to perform verification is to capture some secondary result from the cipher (e.g., on each side of the link), and then compare this result to an expected value (either self-calculated or exchanged with the other party in the transfer). One example of such an expected value secondary result is another result from the cipher (either from a different round, or some otherwise unused bits, or from a special (additional) calculation, etc. Another way to perform verification is to somehow send the encrypted and then decrypted data back to its original source (either in original form, or somehow re-packaged yet again).
We next describe another class of embodiments of the invention with reference to
The conventional HDCP protocol, and many other conventional content protection protocols, are typically implemented by a standalone (self-contained) system in which a transmitter communicates directly with a receiver over a serial link. Such a standalone system is subject to attacks by an end-user. A malicious user can probe the entire system unobserved, looking for weaknesses, and they can alter any part of it to exploit that weakness.
However, the world is better connected than ever before, and proliferation of the internet, cell phones, and wide-area and local-area network technologies means that very little is “standalone” anymore. It is becoming more common for systems that contain high-speed serial links between devices also to contain connections to the outside world. In a class of embodiments, the present invention employs connections to an external agent to prevent system users from setting or modifying usage rules, and to allow each device or subsystem that sets usage rules to be maintained in a controlled and more-easily defended environment. The product that a user buys or installs no longer makes usage decisions, but merely enforces them. While this may seem a subtle difference, the implications are extensive. First, there are fewer points in a product that must be kept secure, and those points can usually be buried deeper inside a chip or subsystem. Second, the architecture employed in accordance with the invention unifies content protection throughout the media distribution chain: where conventionally there are many different mechanisms (each protecting a different “layer”), there now can be a single mechanism (protecting all layers). Finally, the usage rules can adapt to meet the particular needs of the content provider or end-user, and this change can occur quickly and uniformly. This also extends the useful life of the content protection system (and hence the products that incorporate it) because it provides an upgrade path.
In a class of embodiments of the invention, a system that performs data encryption and decryption is not implemented as a standalone system comprising a transmitter, a receiver, and a link between the transmitter and receiver. Rather, at least one of the transmitter and receiver is connected to the outside world, and more specifically to an external agent (e.g., content authority 16 of
Note that the term “connected” is not used herein to denote “connected all the time” (continuously connected). In some embodiments, a transmitter (or receiver) is continuously connected to an external agent. However, in other embodiments neither the transmitter nor the receiver is connected continuously to an external agent. For example, connection to the external agent can occur at installation (or “registration”) time, or it can occur whenever there is a change in the system, or at regular intervals, or with each use.
In a class of embodiments, the invention is a system having the architecture shown in
Content authority 16 of
There are several different communication paths in the
In many implementations of the
The “handshake” paths of the
In preferred embodiments, both handshake paths A and C are required and will always be present, and optionally handshake path B is also present. However, paths A and C (or A, B, and C) need not be separate. For example, all direct communication with content authority 16 can be through one of units 11, 13, and 15 (with the other units communicating indirectly with content authority 16), if provision is made in the communication scheme to prevent outside interference with indirect communication between any of units 11, 13, and 15 and content authority 16. Although a transaction to be implemented over handshake paths A and C can be initiated by either source 11 or receiver 15, both source 11 and receiver 15 must ultimately synchronize their efforts to accomplish the handshake transaction. Handshake path B is required in some implementations of the
If router 13 a “forwarding router” (a router whose function is merely to forward content without otherwise processing the content in any way) then router 13 need not know what the content is, should not be provided with the key required for altering or reading the content, and should be prevented from substituting different content for that which it receives (e.g., by ensuring that the original content asserted from source 11 is securely “signed” by source 11). If router 13 is a forwarding router, then router 13 need not communicate with content authority 16 (although it could be implemented to do so, and this might be desirable in some cases). In some implementations of the
In a class of preferred embodiments, router 13 is a “translating” router which decrypts the encrypted data it receives, processes the decrypted data in some way, and then re-encrypts the processed data (and optionally also performing additional re-packaging of the processed data) and sends it to the next device in the delivery path chain (which could be receiver 15, or another router). In order to perform such operations, the translating router can communicate with content authority 16, for example to obtain two keys (one key for decrypting the data, and another for re-encrypting the data) or one key (for decrypting and re-encrypting data). Since the translating router must process the content in its vulnerable (decrypted) state, the translating router must be a trusted device. Consider the specific case that router 13 is a translating router implemented as a set-top box, delivery path 21 is a satellite link, and delivery path 22 is a TMDS-like link (e.g., a TMDS or DVI link). The satellite link typically transmits compressed audio and video on many channels, whereas the TMDS-like link typically transmits a single channel of non-compressed video (and perhaps audio). The set-top box includes a decoder that translates data (e.g., by expanding it, such as from MPEG2 compressed form to non-compressed form) from one selected channel of the satellite link into the necessary format for transmission over the TMDS-like link. The set-top box could also perform other processing on the data (in addition to expansion). For example, the set-top box could scale the picture to a different size (or aspect ratio) or add text overlays for instructions or programming guides. In order to perform any of these operations, the translating router would first decrypt the encrypted data from delivery path 21, then process the decrypted data, and then re-encrypt the processed data.
Content router 13, when implemented as a translating router, would typically be similar in the following respects to a “repeater” as defined in the HDCP protocol: in typical implementations both the translating router and the HDCP repeater would have more than one upstream port and more than one downstream port; and in typical implementations both the translating router and the HDCP repeater would be capable of processing an input at one upstream port and then copying the processed input to multiple downstream ports (outputs); and in typical implementations both the translating router and the HDCP repeater would be capable of processing multiple inputs (received at multiple upstream ports) and directing each processed input to one or more of at least two downstream ports.
There are no special security requirements on any of the delivery paths and handshake paths in the
In a system having the
-
- the consumer sends either a request to view the movie, or a request to purchase a ticket to view the movie, to content authority 16 (e.g., by causing receiver 15 to send the request to content authority 16 over handshake path C). The request contains information about the content requested and the requester, and typically also about the requestor's equipment capabilities;
- the request is received by content authority 16, and something or someone processes the request. In some embodiments, content authority 16 processes the request, but in other embodiments some other device (e.g., content source 11, using information provided to it by content authority 16), system, or person processes the request. The entity that processes the request depends on the business model, infrastructure, and other features of the relevant implementation of
FIG. 7 . Preferably, in each case, content authority 16 uses cryptographic techniques to verify the content and origin of the request (regardless of which entity rejects, approves, or conditionally approves the request); and - if the request is approved, content source 11 is informed of the approved request (preferably via handshake path “A”), unless content source 11 has itself processed the request. In response to being informed of an approved request, content source 11 uses information regarding the receiver (e.g., information received over handshake path “A” from content authority 16) to select the content, attach any qualifications to it, encrypt it, and send a packaged version of the requested content to receiver 15. The format of the packaged content (and the packaging) depends at least in part on specific information about the receiver. For example, the packaged content is encrypted using a public key associated with (e.g., allocated to) receiver 15 so that receiver 15 can use a private key (e.g., a private key stored in receiver 15) to decrypt it, or the packaged content is encrypted in accordance with a symmetric protocol and includes sufficient information to allow receiver 15 to generate, look up, or otherwise obtain the necessary key for decrypting the content, or the packaged content is encrypted in a manner that requires a session key (that varies from one transaction to the next) in order to decrypt it.
Content source 11 can custom-tailor the requested content for delivery to receiver 15, in a manner determined by information that is either explicit or implicit in the receiver's request. For example, the content might be delivered without commercials to premium customers, or with specific kinds of commercials for specific kinds of customers. High definition versions could be made available, or versions dubbed in other languages, or versions edited for television (toned down), or “original and uncut.” If content source 11 delivers a “pre-packaged” and pre-encrypted version of the content, content source 11 will not be able to use the receiver's public-key to encrypt the content, but will have to provide the necessary key to the receiver to allow the receiver to decrypt the pre-encrypted content (such as by transmitting an encrypted version of such key to the receiver) or the receiver must otherwise be enabled to decrypt the pre-encrypted content.
Once the content is packaged, receiver 15 may need additional information in order to open and decrypt it. Generally speaking, this information includes an entire key or information that determines a key. Content authority 16 can be the middleman in an exchange in which the additional information is provided to receiver 15 (e.g., by source 11), or content authority 16 can merely give receiver 15 enough information to verify the digital signatures of the source of the additional information. A public-key protocol can typically be used to secure the exchange of the additional information.
Content source 11 delivers the packaged content to receiver 15. The packaged content is safe from eavesdropping or tampering. It could still be re-routed, lost, or otherwise hijacked, but if so it need only be sent again.
If there is at least one translating router in the delivery path (e.g., if router 13 is present as shown in
In a class of embodiments, the invention is a system having the architecture shown in
verify the identity of at least one of the receiver and transmitter by examination of a cryptographically secure digital signature;
generate key material for use by at least one of the transmitter and receiver in an encryption or decryption process. The key length can vary on-the-fly, for example to suit the needs of the application or to satisfy export control requirements. The key value can also vary on an as-needed basis, and can contain qualifiers (such as expiration dates, expected uses, copy permissions, or specific contents);
maintain a revocation list (or other database) which identifies devices that are not authorized to perform encryption or decryption. Thus, the revocation database is maintained in a central location (and optionally also in a small number of reflector locations) so that it is manageable (even if very large) and easily updated. The revocation database can also contain additional information, and is optionally implemented to revoke authorization of entire classes of devices (e.g., based on product make or model, date of manufacture, or other criteria) when appropriate;
maintain an audit trail of accesses and behaviors, and use this information to help improve overall system security. For example, the external agent can detect accesses that are too frequent, or that follow suspicious patterns, or that seem to show that one device ID is being simultaneously used in multiple locations; and
perform some or all of the functions performed by a conventional certificate authority.
For example, in one implementation of
While the noted functions of the external agent in systems having the
There is another major advantage of implementing a content protection system to have the architecture shown in
In another class of embodiments, the inventive system has the architecture shown in
In
In variations on the embodiments having the
With reference to
Typically, each of receivers 114 and 115 sends a ticket request to content authority 116, over handshake paths 126 and 128, respectively. In response, content authority 116 either rejects the request, or grants the request. When content authority 116 grants the request, it sends an appropriate ticket to the appropriate one of receivers 114 and 115. Alternatively, handshake path 128 is omitted, receiver 114 sends two ticket requests (one on behalf of itself, and another on behalf of receiver 115) to content authority 116 over handshake path 126, and content authority 116 either rejects or grants the requests. When content authority 116 grants the requests, it sends appropriate tickets to receiver 114, and receiver 114 keeps its own ticket and forwards the other ticket to receiver 115. Typically, each ticket request includes at least limited information about the capabilities of the receiver originating the request, at least to the extent that such capabilities can affect the decision as to whether to grant the request. For example, if the ticket request indicates that receiver 114 is a set-top box with capability to decrypt AES-encrypted data that it receives (e.g., over path 122) and then re-encrypt the data in accordance with a non-HDCP protocol and assert the re-encrypted data at a digital output, the content authority could allow receiver 114 access to some (but not all) types of content, and if the ticket request indicates that receiver 114 is a set-top box with capability to decrypt AES-encrypted data that it receives and then re-encrypt the data in accordance with the HDCP protocol and assert the HDCP-encrypted data at a digital output, the content authority could allow receiver 114 access to other types of content.
In some embodiments, the inventive system having the
When player 114 of the
the digital output is suitably difficult to reach or decode by an unauthorized user or device (e.g., the digital output is asserted at a timing controller interface to an LCD panel);
the digital output is suitably protected by an extension of the content protection protocol used to encrypt the data for transmission from source 111 to player 114 (the “primary” protocol). To implement such an extension of the primary protocol, player 114 would first decrypt the data it receives and then re-encrypt the data using an appropriate mechanism for assertion at its digital output. Player 14 can but need not translate the data in some way between these two operations. In some implementations, the two separate operations will trigger the need for two separate keys or key sequences (e.g., player 114 needs a first key to decrypt the data received on link 122, and receiver 115 needs a second key to decrypt the re-encrypted data received on link 123) and optionally also two separate identification values (one for each of player 114 and receiver 115) and two authentication exchanges (between content authority 116 and each of player 114 and receiver 115); and
the digital output is suitably protected by a content protection protocol different than the primary protocol (e.g., player 114 re-encrypts decrypted digital video in accordance with the HDCP or DTCP protocol for transmission to receiver 115, where receiver 115 is a display device, after player 114 has decrypted AES-encrypted digital video received over link 122).
In some embodiments of the invention, player 114 re-encrypts decrypted data in accordance with a modified version of the HDCP protocol, in which player 114 and the intended recipient of the re-encrypted data (e.g., an implementation of receiver 115) obtain the shared secret value (“Km”) directly or indirectly from an external agent (e.g., content authority 116). The re-encrypted data are decrypted by another device (e.g., receiver 115) in accordance with the same modified version of the HDCP protocol.
An implementation of player 114 with an analog video output but no digital video output is equivalent to a pure display device, and will not be further discussed.
If player 114 has an output that asserts unencrypted digital data (e.g., decrypted video data), potential attacks are possible in which the unencrypted digital data are tapped from such output. The strength or weakness of the content protection protocol employed becomes a moot point if it can be easily bypassed. Such attacks can be prevented from succeeding in accordance with the invention, as follows:
incorporate analog circuitry or other circuitry at the output of player 114 to detect tapping or other tampering. Such circuitry can include threshold detectors that look for unusual signal reflections, line impedance or capacitance values, or voltage levels; and/or
use additional encryption and decryption on the data stream, to prevent assertion of unencrypted data at the receiver output. The new encryption function could be implemented in source 111 (or upstream from source 111), and the new decryption function could be implemented downstream from player 114 (e.g., in receiver 115 or downstream from receiver 115). Ideally, the extra encryption and decryption engines are more difficult to “tap”, either because each is somehow integrated, or because it is far-removed (e.g., at the remote end of an internet connection).
It is often useful to think of units 114 and 115 of
Among the solutions to the general problem of providing security in a system including a distributed receiver are two categories of solutions: a first category in which a set-top box of the distributed receiver employs AES (e.g., AES-128) decryption and uses a “legacy” interface (implementing some other content protection protocol) to assert encrypted data to a display of the distributed receiver; and a second category in which AES content protection is employed both to protect the data transmitted to the set-top box and from the set-top box to the display. In either solution category, the distributed receiver can be implemented with multiple levels of AES content protection. For example, the distributed receiver can be a home theater system including multiple units (at least one set-top box, at least one display, and an AV receiver connected between at least one set-top box and a display) that receives data that has been encrypted multiple times according to AES protocol by the content provider, decrypts the data once in one of the units in accordance with an AES protocol, and then further decrypts the data in a second one of the units in accordance with an AES protocol.
We first consider a distributed receiver having a set-top box that employs AES decryption to decrypt AES-encrypted data (from a transmitter), re-encrypts the data in accordance with a non-AES content protection protocol (e.g., the HDCP protocol), and asserts the re-encrypted data at digital outputs coupled to a DVI, TMDS, or other TMDS-like link for transmission over the link to a display device. The non-AES content protection protocol protects the digital outputs of the set-top box. However, the overall system including the content provider, distributed receiver, and content authority preferably allows the content provider to restrict or deny access (to some or all types of content) by set-top boxes having certain digital outputs (e.g., digital outputs for coupling to a display device via a DVI link) or operating (or capable of operating) in certain modes (e.g., a mode in which the HDCP protocol provides content protection between the set-top box and a display device). The use of the HDCP protocol for content protection between a set-top box and a display device does not preclude the alternative (or even simultaneous) use of other mechanisms (such as AES encryption) for content protection between the same set-top box and display device. For example, a set-top box can be implemented to be operable in any of several modes to protect the content asserted at its digital outputs (e.g., a mode using AES encryption, and another mode using HDCP encryption), for example to allow operation in any of the modes depending on factors such as the capabilities of the display to which the set-top box is coupled, the type of content, and so on.
We next consider a distributed receiver having a set-top box that employs AES decryption to decrypt AES-encrypted data (from a transmitter), and also employs AES content protection to protect data transmitted from the set-top box to a display device. In a class of preferred implementations, the set-top box employs the AES-128 CTR protocol (where “CTR” denotes the “counter” mode of the AES-128 protocol) to decrypt data from the transmitter and AES-128 CTR encryption to re-encrypt the data for transmission over a DVI link (or other TMDS-like link) to the display device, and the display device employs AES-128 CTR decryption to decrypt the data received over the link from the set-top box. Use of the AES-128 CTR protocol would allow streaming (pipelined) implementations. A ticket (or set of key data) used to decrypt data in the set-top box could have the same form as the ticket (or set of key data) used to decrypt data in the display device, and could be provided to both devices (and optionally decoded in each device) in the same way. In some embodiments, each ticket provides (or allows the relevant device to generate) the shared secret value (cipher key) used symmetrically in the AES-128 CTR encryption and decryption circuitry.
In embodiments in which the distributed receiver communicates with a content authority over a network (distinct from its link with the transmitter), the ticketing mechanism can be implemented over the network. For example, in some implementations each ticket is transmitted over the network from the content authority directly to the relevant unit of the distributed receiver. However, in other implementations it would be impractical or unfeasible to transmit each ticket over the network directly to the relevant unit of the distributed receiver. For example, in the case that the distributed receiver includes a set-top box (including AES encryption circuitry) having a network connection, and a television set (including AES decryption circuitry) coupled to the set-top box but not having a direct connection to the network, the only practical ticketing mechanism for the television set might be for the television set to include circuitry for propagating ticket requests “upstream” (e.g., from the television set via the set-top box to the transmitter, or from the television set via the set-top box and the network to the content authority) and circuitry for receiving ticket results propagated “downstream” (e.g., from the transmitter to the television set, either directly or via the set-top box, or from the content authority to the television set via the set-top box). By ensuring that a ticket for a downstream device (e.g., the television set) is never decrypted or inspected by an upstream device (e.g., the set-top box), security is maintained.
The AES-128 CTR mode of the AES-128 protocol is a symmetric block cipher in which each iteration of the block (in which one 128-bit block of input data is processed) produces 128 bits of output data. 128 bits of output data can determine five encrypted (or decrypted) RGB pixels (each comprising 24 bits) plus one extra byte. The extra byte can be indicative of synchronization signatures and/or auxiliary data. To encrypt (or decrypt) a 128-bit block of input data, AES-128 essentially requires 40 operations (10 rounds of 4 steps each). To produce the necessary data rate for encrypting or decrypting video data, the AES engine would need to be pipelined, or multiple AES engines would need to be implemented in parallel, or the AES engine would need to be clocked at a very high rate, or some combination of approaches would need to be implemented. Regardless of its design, when using an AES engine (or multiple AES engines in parallel) for video decryption or encryption, the AES engine (or engines) should be implemented to be capable of completing an average of one iteration (to decrypt or encrypt one 128-bit block of data) every five pixel clocks.
With reference to
Counter circuitry 221 and block cipher 222 together form a Pseudo-Random Number Generator or PRNG (an example of the PRNG of
The overall strength of the cipher engine of
-
- the upstream device (e.g., player 114) is ultimately responsible for the content delivered to it. It should monitor the link (e.g., a TMDS-like link between receivers 114 and 115) over which it sends encrypted video data, and shut down the video stream if trouble develops;
- secret values must be kept secret, and must be secure against electronic and physical attacks;
- “keys” must not be re-used. For example, a KL and count value combination should not recur;
- “keys” should be changed on a regular basis to limit the damage should any be exposed; and
- vulnerability to attacks in which the attacker asserts known input data to the cipher engine (“known-text” opportunities) must be limited where possible.
The cipher engines at both sides of each link must use the same key for encrypting and decrypting the data. This symmetric key approach is necessary because of the high data rates associated with video data transmission, but requires that all cipher engines involved must somehow exchange this value. Typically that means that the key is either transmitted, or simultaneously deduced. In either case, the overall security of the system is only as good as the security of the key exchange mechanism.
The cipher engine of
Key input unit 220 of
Although the KSC value can be transmitted to the cipher engine in an unencrypted (clear) state, a copy of the KSC value is preferably also contained in the encrypted portion of the key message asserted to the cipher engine. This provides additional verification and tamper resistance.
Key input unit 220 tracks two KL values (with the two corresponding KSC values) at all times: the “current” key (including the KL value currently in use in block cipher 222) in register 227; and the “next” key (including the KL value that will be switched into use at some specific moment in the future) in register 226. This double-buffering structure allows unit 220 to update, decode and verify a new key (held, or to be held, in register 226) without imposing strict time constraints on such updating, decoding and verification (i.e., while operating block cipher 222 in response to the key held in register 227), and thus improves flexibility and lowers cost.
The KL values are not specifically and exclusively tied to any particular content. This is an important feature of the invention. If the video stream being input to one of the cipher engines changes for any reason, the cipher engine does not need to wait for a new KL value to be delivered. The current KL value will continue to work, and will continue to be secure, until it is replaced by a new key KL value. This decouples the key delivery and the content delivery chains, and prevents one from being a bottleneck for the other.
The cipher engine can be implemented so that two specific KSC values (each a multi-bit word) have special meaning:
a KSC value consisting entirely of “1” bits in register 227 (or 226) indicates that there is no corresponding KL value in unit the register. When a KL value in register 227 is asserted to block cipher 222, unit 220 can transfer the KL and KSC values in register 226 to register 227, and set the KSC value in register 226 to consist entirely of “1” bits. This allows a receiver (in which the cipher engine is included) to determine when register 226 is able to accept a new key; and
a KSC value consisting entirely of “0” bits (KSC=0) in register 227 indicates that the cipher engine does not alter the incoming video stream (i.e., XOR unit 223 passes through the data at its input to its output without altering the data), regardless of the KL value in register 227. Preferably, block cipher 222 remains active at this time and the cipher engine continues functioning in all other respects, to allow clear video to be passed through when necessary, and also to enable various test modes. Table 2 (set forth below) provides more information about these KSC values.
Alternatively, one or more of these or other bit patterns of KSC values is (or are) employed to indicate that there is no corresponding KL value in unit register 227 or 226, to indicate that the cipher engine does not alter the incoming video stream data regardless of the KL value in register 227, or to convey some other specific meaning.
Asymmetric key decoder 225 does not use any cryptographic means to verify the source of new key material. The public key of decoder 225 is typically not widely known (and is kept by the content authority), but even if it becomes widely known this would not reduce security. It might be possible in the worst case to use a discovered public key to disrupt system operation (e.g., by delivering bogus encrypted KL values to a decoder), but that would not help to decrypt any true encrypted KL value sent by the content authority or to decrypt the content protected by any of the true KL values). Further, the scope of this disruption would be limited to the single user's domain.
Since the KSC values can be used to switch cipher engines (of the type described with reference to
With reference again to
Table 1 shows a preferred format for the register of counter circuitry 221 (register 143 of
This register is 128 bits long, and stores a count value having four fields. Three of these fields (a Pixel count, a Line count, and a Frame count) relate to video formats. They are included because there are certain error modes in which the cipher engines at each end of a link can count a different number of pixels or lines (one might get “ahead” or “behind”). Counter circuitry 221 is preferably implemented to resynchronize its counters on a line or frame boundary, which helps the encryption/decryption state-machines remain synchronized.
More specifically, counter circuitry 221 is preferably implemented to include circuitry as shown in
The fourth field of the count value stored in register 143 is a 64-bit randomizer/OFB field, which is updated to be a 64-bit “randomizer” value each time a new key is provided to the transmitter. Preferably, the randomizer value is a pseudo-random value. Also preferably, the randomizer value is generated by circuitry of the transmitter's cipher engine (e.g., control circuitry 224 of the cipher engine of
The fourth field of the count value stored in register 143 is updated to be a 64-bit Output FeedBack (“OFB”) value as a result of each OFB operation (to be described below). A specific cipher function using the OFB value is performed at each VSYNC interval, in a manner described below.
One important consideration is that the count value asserted by counter circuitry 221 to block cipher 222 should not be allowed to roll over (to a previous value) during assertion of a single KL value to block cipher 222. This is because such a roll over, is configured to include the pseudo-random value as a field of at least one of the count values would cause block cipher 222 to repeat the same sequence of values again to XOR unit 223, which would in turn reduce security. Therefore it is important to change the KL value on a regular basis. The frame and randomizer field widths determine the maximum time between changes of the KL value.
Since the pixel count (in register 143 of counter circuitry 221) is updated once per pixel clock cycle, and block cipher 222 accepts a new value from counter circuitry 221 only once per five pixel clock cycles, it will appear to block cipher 222 that the difference between successive pixel count values is five. Block cipher 222 will not see or use the intermediate pixel count values.
The maximum value of the pixel and line counts provides useful information about the video resolution in use. The rate of change of the frame count provides useful information about the refresh rate. It is contemplated that some of these counters could also be used to generate other useful signals (such as a data enable signal that indicates to the receiver whether active video is being transmitted).
We next describe block cipher 222 of
The AES algorithm has four levels, and the AES-128 CTR algorithm specifies ten rounds for each of the four iterations (each “round” is a loop through the entire algorithm). Multiple rounds can be used to add more variability. Thus, block cipher 222 performs about forty steps all together for every five pixels encrypted (or decrypted), and if implemented in a fully pipelined manner, block cipher 222 performs two steps per pixel. It is assumed that each step requires one clock period. Therefore block cipher 222 could operate in response to a clock whose frequency is twice the pixel clock frequency, or could include duplicated logic (if it operates in response to a clock whose frequency is the pixel clock frequency). Both of those are expensive options. Thus, in a preferred, pipelined, implementation of block cipher 222, block cipher 222 uses only five rounds per iteration (i.e., five rounds to generate each 128-bit output value) during video streaming (and operates in response to a clock whose frequency is the pixel clock frequency), and at all other times block cipher uses the full ten rounds per iteration.
In response to the leading edge of each VSYNC signal, and after the non-OFB components of the count value in the register of counter circuitry 221 have been updated, block cipher 222 performs an OFB (Output Feedback) operation. This will spin the cipher exactly once (using the full number of rounds), and at least some of the bits of the resulting 128-bit block of data are used to further randomize the encryption data for the following frame. In a preferred implementation, the 64 least-significant bits of the 128-bit block (resulting from each OFB operation) are written to the “OFB” field of register 143 of counter circuitry 221, for use as input to block cipher 222 during processing of the rest of the frame. In the preferred implementation, the 32 most-significant bits of the 128-bit block (resulting from each OFB operation) are latched into SyncVal register 228 (shown in
Of course, the
The pipeline within block cipher 222 must be filled before block cipher 222 can assert data useful by XOR unit 223 for encrypting (or decrypting) video data, because it has a fixed latency and must assert useful data to XOR unit 223 by the time that unit 223 receives the first pixel of each quantity (e.g., each line) of video data to be encrypted. Block cipher 222 is “primed” (its pipeline is filled) during each interval from the leading edge of each HSYNC signal (when the pixel count asserted by counter circuitry 221 is cleared), except the first HSYNC signal after a VSYNC signal, to the leading edge of the active video following each such HSYNC signal. Since block cipher 222 performs the above-described OFB operation in response to each VSYNC signal (and may be performing such OFB operation when the first HSYNC signal after a VSYNC signal occurs), the priming operation following each VSYNC signal occurs after the count value (including the OFB field) in the register of counter circuitry 221 has been updated. Preferably, each priming operation uses the reduced number of rounds (five rounds to generate each 128-bit block of output data in response to one 128-bit key and one 128-bit count value), and thus must perform 20 steps to generate each 128-bit block of output data.
XOR unit 223 performs an Exclusive Or operation with the input video data stream as one input and the stream of pseudo-random values asserted by block cipher 222 as the other input, to encrypt (or decrypt) the input video data. The Exclusive Or function is used because it is easily reversible (it is its own inverse), and because it is value-neutral (it does not change the distribution characteristics of a pseudo-random stream).
In preferred implementations, the TMDS-like link between units 114 and 115 is synchronous, which means that the encryption operations at one end of the link and the decryption operations at the other end are essentially simultaneous. Proper data transmission can only occur if the two sides establish and maintain proper synchronization. A real-time reference is required for synchronous operation. This reference must retain its relationship to the data at each end, even if there is a small (but finite and constant) latency involved. Moreover, this reference must be readily distinguishable at each end of the link. The clock signal conventionally transmitted over a TMDS link is synchronous with the data transmitted over the TMDS link. (Strictly speaking, the clock signal transmitted over a TMDS link is a frequency reference only. It does not control or determine when the transmitted data are sampled, and each of the three data channels in the link must separately decide when to sample the data transmitted over such channel, for maximum skew tolerance.) Such a clock signal can be used as the real-time reference for synchronous encryption and decryption where appropriate, and it does mark the division between pixels, but it is not sufficient for this purpose in all cases. In some cases, the real-time reference value must enable the encryption (and decryption) circuitry on both sides of the link to begin or end an operation at a specific point in time.
As described, preferred implementations of the
The position and width of the video synchronization signals employed by encryption and decryption circuitry on both sides of a synchronous TMDS-like link (in accordance with the invention) can vary slightly from one frame of video data to the next, due to synchronization errors and specifics of the TMDS-like link. The position and width of the video synchronization signals can also vary significantly in position and width from one video mode to another. Therefore these signals are not used as a critical timing references, but only for operations that have less critical timing. For example, the above-described OFB operation of counter circuitry 221 is triggered by a VSYNC signal and the above-described encryption “priming” of block cipher 222 is triggered by an HSYNC signal. Neither of these operations has critical timing requirements.
In typical embodiments of the inventive system, some encryption (or decryption) operations require a real-time synchronization signal that is less regular or less frequent than a video sync signal, yet still require precise synchronization. For example, transitions to new keys (e.g., KL values) occur only vary rarely (compared to the video pixel rate), and yet must take effect at both sides of the link at exactly the same pixel. In implementations of the inventive system that employ a TMDS link (e.g. link 123 of
For another example, control and synchronization circuitry 224 of
Many variations on the described embodiments are contemplated. For example, in some variations, a sequence of out-of-band words (in turn indicative of a sequence of values of the bit CTL2, or a sequence of values of some control bit other than CTL3) is asserted during each vertical blanking interval to determine the value of the synchronization signal.
In typical implementations in which AES-128 CTR encrypted video data are transmitted over a TMDS-like link, and decrypted at the other end of the link, the encryption and decryption need to be synchronous, and to occur simultaneously (so that the encrypted data can be decrypted for display without the need to use buffer memory capable of storing more than a small quantity of the encrypted data). The synchronization mechanism employed to maintain synchronization on the link should accomplish the following:
allow the count values (used by the AES-128 CTR block cipher) to be initialized to the same values on each side of the link;
choose the moment when encryption (and decryption) with a certain shared secret value is enabled; and
verify that synchronization has been achieved and is currently maintained (to ensure that the link is operating properly).
In some embodiments (in which the link is a TMDS or DVI link), the first two of these functions are combined by causing each of the transmitter and receiver to respond to assertion of a control pulse (e.g., the CTL2 signal discussed above with reference to
As noted above with reference to
In order to reduce the cost of implementing AES encryption and decryption of video data transmitted over a TMDS, DVI, or TMDS-like link, fewer AES rounds (or fewer iterations, when using the output feedback mode of AES) can be used to encrypt (or decrypt) all or some (e.g., most) of the pixels of each line of video. This allows less pipelining and/or lower frequencies of operation. The full number of rounds (or multiple iterations, such as when using the output feedback mode of AES) can be used for some time commencing during each horizontal blanking interval to introduce more randomness into the encryption process.
Preferably, the shared secret values (keys) used to implement AES encryption of video data are double buffered. After one key has been loaded into the cipher engine of one device (a receiver or transmitter), for example, into a register of the cipher engine, the device can receive or generate the next key (e.g., request and decode another ticket to learn the next key). The next key can be loaded into another register of the cipher engine. In preferred implementations, a portion of each ticket (e.g., a “verification” field or other portion of the ticket, such as the above-discussed KSC value) distinct from the secret key determined by the ticket, is employed by the system to verify that the shared secret key (that corresponds to such verification portion) is correct on each side of the link. The system should not be able to verify directly that the shared secret key on one side of the link matches that on the other side of the link because each side should keep the secret key confidential, but the system can perform such verification indirectly. The upstream device (transmitter) can be implemented to: read, at the appropriate time, from the downstream device (receiver) the verification portion of the ticket most recently received by the downstream device; and verify, using such verification portion (and typically also the verification portion of its own ticket), that the latest shared secret key in each of the upstream and downstream devices is correct.
Preferably, new tickets (that can be processed to determine shared secret key values) are distributed in the background, and each cipher engine switches the new shared secret key values (determined by the tickets) into use “on the fly.” This allows keys to be changed on a regular basis during decryption and display of video data, without disrupting the visual experience. It also allows a transmitter and receiver to establish data transfer over a link in the first place, and to reestablish data transfer over the link if necessary and appropriate.
With reference again to
Elements 114, 123, 129, 123A, and 115 of
Elements 114, 123, 130, 123A, and 115 of
In variations on the
The receiver of
-
- no two input ports may be connected together;
- any output port may be connected to at most one input port at a time;
- an input port may be connected to more than one output port;
- an output port need not be connected to any input port. If it is not, the switch can either drive an informational display to the output port, or leave the output port neutral. The latter is typically preferable since it allows the corresponding display to power-down; and
- whenever a TMDS link (or other multi-channel link) at an input port is connected to a TMDS link (or other multi-channel link) at an output port, the corresponding communication channels must always be connected together.
Compliance with these rules results in an active system that can have an inverted “tree” structure, starting with exactly one player (e.g., player 114 of
In preferred implementations in which the switches of the
Although not shown in
In a system having the
-
- it must be able to individually address player 114, receiver 115, all other receivers in the currently configured tree, and all translating routers in the currently configured tree;
- it always provides a communication channel path that follows the protected content path;
- it must be able to (or include specific mechanisms to) detect and respond quickly to changes in the current configuration (and preferably includes “hotplug” capabilities);
- it must be able to detect and/or negotiate the capabilities and desired modes of all connected devices;
- it must have sufficient bandwidth to handle the necessary message traffic, including the messages (which can be relatively large) used for key exchange;
- it provides for transmission of status information, such as “error state”, “authentication state”, and so on; and
- it need not be perfectly reliable, if higher-level protocols verify proper receipt of a message and can cause retransmission if necessary.
- Nonetheless, it should be reliable enough that its unreliability does not pose an undue burden either on the channel's bandwidth, or on the higher-level protocol.
We next consider other aspects of systems having the
If a pre-defined reset operation is needed for any specific application, it should be provided either internally within each receiver and transmitter or transmitted by the communication channel. It should not use or assume any specific relationship of the clock, synchronization, data, or control signals.
Prior to transmitting encrypted data, the transmitter preferably uses the communication channel to determine identification values for all devices in the current system, to determine the capabilities of each device, and then negotiate selected operating modes with all devices in the current system. The choice of mode can affect the permissions received from the content authority, and the final choice of mode will often be a compromise between what the user (the ultimate recipient of the protected content) wants, what the system prefers, and what the content authority allows.
The system is desirably operable in an “unencrypted” mode in which it sends unencrypted data, and in which all encryption and decryption circuitry is bypassed or disabled. It may be desirable to implement the system (or some or all of the transmitters and receivers thereof) to operate in such an unencrypted mode to ensure backwards compatibility with conventional devices, or to allow operation in a system initialization period (before valid keys are delivered), or to allow operation following a system failure (when proper, encrypted operation cannot be recovered by any other means). Preferably during “unencrypted” mode operation of a portion of an overall system, each transmitter and receiver upstream of such portion blocks protected content before the protected content can reach any device operating in the unencrypted mode. A repeater should not be able to connect an unencrypted downstream port to an encrypted upstream port under any circumstances, to prevent protected content from ever being transmitted without the necessary encryption but to allow unprotected content (such as error displays or menu selections) to get through.
Unencrypted mode operation, as well as operation in other modes, can be signaled by the above-discussed KSC values as shown in Table 2.
Table 2: Key Sequence Code (“KSC”) Value Definitions
We next consider the normal operating mode (encrypted operation) of systems having the
We consider the following phases of encrypted operation of this class of embodiments of the invention: key exchange; authentication (also referred to as challenge-response); revocation; synchronization; link integrity verification; and mode (channel) changes.
To implement the key exchange phase, devices (e.g., displays) that merely receive and decrypt data and do not transmit encrypted data, and repeaters, can be implemented as relatively dumb devices that do not know or understand the details of the key exchange process. In preferred implementations, they merely receive the appropriate key (and any necessary synchronization signals) and begin to decrypt received data using the received key (and any necessary synchronization signals).
In preferred implementations, the transmitter is responsible for implementing a key exchange in which the transmitter receives the keys from the content authority, caches them as necessary, and then distributes them at the appropriate time. The rules governing this behavior should include certain basic elements:
-
- the transmitter must collect information about the system to include in its ticket requests to the content authority. This information can include identification values, capabilities, and current modes for all devices to receive keys;
- the transmitter cannot decode the keys meant for any other device in the system, but it can read the KSC value associated with each of the keys. The transmitter can use the KSC values to distribute the keys and verify that they are properly in place, before they are switched into use;
- the transmitter can request a block of related keys (from the content authority) for all devices in the system tree, or all devices that might be in the tree in the conceivable future. For example, if the transmitter knows that it is sometimes connected to a particular video projector, it can request a key for that projector even if it is not currently attached. This reduces or eliminates the need to request new tickets when there is a configuration change, and is especially useful when there are switches and repeaters in the system;
- the transmitter can request a set of generic keys for use at times when other key sets are not available, or when there might be a significant delay in obtaining them. For example, previously requested generic keys could be used at system boot time.
Preferably, each transmitter keeps track of the repeaters and decrypting displays that have been included in a system with the transmitter, by storing identification values of the repeaters and displays. A caching algorithm can be used to make room for a new device in the identification list if a maximum list size has been exceeded.
In preferred embodiments, after keys have been distributed to a transmitter-receiver pair, the transmitter and receiver execute an authentication procedure (sometimes referred to herein as a “challenge-response” procedure) before the transmitter transmits encrypted data to the receiver. This procedure is useful to prevent replay attacks, and transmission (to the receiver) of key data provided by an invalid or unauthorized source. The challenge-response procedure requires that, before a new key (a KL value that has been supplied to the receiver, and should also have been supplied to the transmitter) can be used, the receiver (which is typically a repeater or decrypting display) must validate the transmitter by verifying that the transmitter has proper knowledge of this new key. Receiver 115 of
The receiver decrypts the encrypted result from the transmitter (using cipher engine 144), and verifies whether the decrypted result satisfies a predetermined criterion (using challenge-response circuitry 144A), preferably thereby determining whether the receiver key has a predetermined relation with the transmitter key. If the decrypted result does satisfy the predetermined criterion, the randomizer field value (or other additional data transmitted with the encrypted result) is stored for use (e.g., by cipher engine 144 in decrypting data from the transmitter) at the proper time. If the decrypted result does not satisfy the predetermined criterion, the new key (the KL value most recently supplied to the receiver) is treated as being invalid. For example, when the new key has been sent to the receiver in encrypted form by the content authority, and the decrypted result does not satisfy the predetermined criterion, the receiver indicates to the transmitter that the key decoding sequence has failed so that both the receiver and transmitter know that the receiver will not use the new key.
In preferred implementations of the described example of the challenge-response procedure, each of the messages transmitted between the transmitter and receiver contains a pseudo-random value than cannot be known or predicted by the other side unless the encryption and decryption operations work properly using a shared key (the new key) known to both the transmitter and receiver. The procedure thus provides proof that each side knows the correct shared key, and it also prevents “known plaintext” attacks by outside agents.
Another aspect of encrypted operation is revocation of a device's authorization to receive tickets (the device can be a transmitter, receiver, or router). In typical implementations of the inventive system, the content authority examines each device identification value included in a ticket request, and the content authority decides (at its discretion) whether or not to grant the ticket request if any of the identification values in the request are suspect. In some implementations, if the content authority determines that a transmitter is valid but that a receiver requesting encrypted content from the transmitter has an identification value on a revocation list (or does not have a valid identification value), the content authority rejects the request. Optionally, the content authority also instructs the transmitter to include the relevant receiver identification value in a revocation list cached in the transmitter, although in many contemplated implementations the transmitter will not maintain a revocation list. The “suspect” device (the device having the suspect identification value) may not be in the current configuration coupled to the transmitter, or may be otherwise expendable. If it is expendable, and the transmitter has forwarded the ticket request to the content authority on behalf of multiple devices (including the suspect device), the transmitter may choose to remove the suspect device's identification value from the ticket request and resubmit the modified request. The content authority may grant the modified request, but is not required to do so. In any case, the suspect device will not be able to receive or view the protected content because it will not receive the necessary key material. Other aspects of encrypted operation are key distribution, and synchronization of encryption and decryption operations on both sides of a link. In preferred implementations, the transmitter implements the following process for getting and distributing keys:
the transmitter makes a list of all identification values of devices in the current tree (of which the transmitter is the root), and of any other devices that may be in such a tree in the near future;
the transmitter includes this list in a ticket request that it sends to the content authority;
if and when the transmitter receives the requested tickets, it will distribute them to the relevant devices. Each ticket must go to a specific device, and only that device will be able to decode it;
the transmitter will allow each device sufficient time to decode the tickets. The time spent here is not a bottleneck and does not delay playing protected content, except in the case that it is the first ticket sent to a device. In every other case, the previous ticket can continue to be used until the new ticket is delivered;
each repeater and decrypting display (in the tree) that receives a ticket performs a challenge-response operation (of the type described above) to authenticate the transmitter. As a result of this operation, the transmitter distributes an initial randomizer value to each repeater and decrypting display;
the transmitter then examines the KSC values (key sequence codes) received in the challenge-response operations to verify that all tickets have been delivered and decoded properly, and that each challenge-response sequence has been completed successfully. If this is true for all of the repeaters and decrypting displays, authentication is complete;
when satisfied that authentication is complete, the transmitter issues the appropriate code (e.g., the above-described sequence of CTL3 values) to switch the new key into use;
when necessary and appropriate, the transmitter can issue two successive key switch codes, without authenticating or delivering new key material, to empty the current key and next key registers in the repeaters and decrypting displays. When this occurs, the transmitter should synchronously cease to encrypt data, and should not transmit protected content when it has ceased to encrypt data.
Another aspect of encrypted operation is link integrity verification. The above-described OFB operation is performed by each device in the relevant tree, to generate a 32-bit link integrity value which is loaded into a register (e.g., SyncVal register 228 of
If a difference is detected between any two such link integrity values, the transmitter construes this to indicate that the relevant cipher state machines are no longer synchronized, and that the link is not operating properly. Under these conditions, the transmitter preferably initiates a recovery procedure in which it either attempts to re-deliver the current keys, requests and delivers new keys, or blocks protected content and enters an unencrypted mode of operation.
Optionally, link integrity verification is performed for some but not all devices of a tree. Also optionally, where a system implements at least two content protection protocols, link integrity verification is performed independently for each of at least two different subsets of the devices (each of the subsets implementing a different one of the protocols). For example, in a system including a transmitter, a player coupled to the transmitter, and a decrypting display coupled to the player (where the transmitter transmits data encrypted in accordance with a first protocol, the player is configured to decrypt data from the transmitter using the first protocol and to transmit data encrypted in accordance with a second protocol, and the decrypting display is configured to decrypt data from the player using the second protocol), the transmitter and player can perform link integrity verification using link integrity values generated in accordance with the first protocol, and the player and decrypting display can independently perform link integrity verification using link integrity values generated in accordance with the second protocol.
Other aspects of encrypted operation are mode (“channel”) changes. The normal usage scenarios for a video interface include disruptive events such as channel changes, pause or slow motion or fast forward operations, changes in the system configuration, and so on. Any content protection mechanism must be capable of either surviving these events or recovering quickly, because otherwise it becomes burdensome to the user.
Embodiments of the invention having the
In preferred embodiments, the inventive system is configured to maintain some of the described values as secrets. Other values can be public. For example, the described OFB field stored in counter circuitry (such as counter circuitry 221 of
The negotiation for capabilities and modes need not be performed in secret, but it should be designed to prevent interference from the outside. This prevents spoofing, or lying, to obtain a ticket that a hacker should not have.
Preferably, a transmitter, receiver, or system configured to implement a content protection protocol in accordance with the present invention is configured to implement more than one (and preferably as many as practical) of the features disclosed herein. The described embodiments are, in general, not exclusive, and in some applications the best performance will be achieved when using some combination of these approaches.
It should be understood that while certain forms of the present invention are illustrated and described herein, the invention is defined by the claims and is not to be limited to the specific embodiments described and shown. For example, although some of the specific embodiments are described herein as being methods or apparatus for encrypting video data, variations on these embodiments are contemplated in which audio data (or other data) rather than video data are encrypted.
Claims
1-36. (canceled)
37. A communication system including:
- a transmitter including a cipher engine;
- a receiver including a second cipher engine; and
- a serial link coupled between the transmitter and the receiver, wherein the transmitter and the receiver are configured to implement a symmetric block protocol in which the transmitter sends encrypted data over the link to the receiver, and the second cipher engine decrypts the encrypted data in response to a key and a sequence of count values, wherein the cipher engine is configured to generate a randomizer value, the transmitter is configured to transmit the randomizer value to the receiver, and the receiver is configured to include the randomizer value as a field of at least one of the count values.
38. The system of claim 37, wherein the randomizer value is a pseudo-random value.
39. The system of claim 38, wherein the second cipher engine is configured to decrypt the encrypted data in response to the sequence of count values and a sequence of keys including said key, the cipher engine is configured to generate a sequence of pseudo-random values including the pseudo-random value, the transmitter is configured to transmit the sequence of pseudo-random values to the receiver, and the receiver is configured to include each pseudo-random value of the sequence of pseudo-random values as a field of a different one of the count values.
40. The system of claim 37, wherein the serial link is a TMDS-like link including at least one encrypted data transmission channel and a communication channel, and the transmitter is configured to transmit the randomizer value over the communication channel to the receiver.
41. A cipher engine for use in a receiver of a communication system, wherein the system includes a transmitter having a cipher engine and a serial link coupled to the transmitter, the receiver is configured to be coupled to the serial link to receive encrypted data transmitted over the serial link from the transmitter, and the receiver is configured to be coupled to receive a pseudo-random value from the transmitter, said cipher engine including:
- counter circuitry configured to generate a sequence of count values, wherein each of the count values has a field determined by the pseudo-random value value; and
- a block cipher, coupled to receive a key and coupled to the counter circuitry to receive each of at least a subset of the count values, and configured to generate a pseudo-random output value, for use in decrypting the encrypted data, in response to the key and each of the count values received from the counter circuitry.
42. A cipher engine configured to implement a symmetric block protocol, said cipher engine including:
- counter circuitry configured to generate a sequence of count values; and
- a block cipher, coupled to receive a sequence of keys, coupled to the counter circuitry to receive each of at least a subset of the count values, and configured to generate a sequence of pseudo-random output values in response to the count values received from the counter circuitry and the keys, wherein the block cipher is configured to generate each of a first subset of the pseudo-random output values by performing X rounds of a cipher algorithm and to generate each of a second subset of the pseudo-random output values by performing Y rounds of the cipher algorithm, where X is an integer and Y is an integer greater than X.
43. The cipher engine of claim 42, wherein the first subset of the pseudo-random output values but not the second subset of the pseudo-random output values is for use in decrypting blocks of encrypted video data, and each of the pseudo-random output values in the first subset is sufficient for decrypting a block of Z pixels of the encrypted video data, where Z is an integer.
44. The cipher engine of claim 43, wherein the symmetric block protocol is the AES-128 CTR protocol, and wherein X=5, Y=10, and Z=5.
45. The cipher engine of claim 43, wherein the symmetric block protocol is the AES-128 CTR protocol, the block cipher operates in response to a pixel clock, the block cipher is configured such that no more than one cycle of the pixel clock is required to perform each of the rounds of the cipher algorithm, and Z=5.
46. The cipher engine of claim 42, wherein the block cipher is configured:
- to generate an initial pseudo-random output value by performing rounds of a cipher algorithm in response to an initial one of the count values received from the counter circuitry and one of the keys,
- to include at least a subset of bits of the initial pseudo-random value as a field of a subsequent one of the count values, and then
- to generate a sequence of the first subset of the pseudo-random output values by performing rounds of the cipher algorithm in response to at least one of: said subsequent one of the count values and an incremented version of said subsequent one of the count values.
47. The cipher engine of claim 46, also including a register, and wherein the cipher engine is configured to cause the block cipher to write to the register at least some of the bits of the initial pseudo-random value.
48. The cipher engine of claim 42, also including:
- double buffering circuitry coupled to the block cipher, wherein the double buffering circuitry is configured to hold at least two keys of the sequence of keys and to assert either one of said two keys to the block cipher, whereby the block cipher can employ one of the keys held in the double buffering circuitry to generate a subset of the pseudo-random Output values while another key is written to the double buffering circuitry or another one of the keys held in the double buffering circuitry is decoded or verified.
49. A communication system, comprising:
- a transmitter and a receiver, each of the transmitter and the receiver including a cipher engine; and
- a serial link coupled between the transmitter and the receiver, wherein the transmitter and the receiver are configured to implement a symmetric block protocol in which the transmitter sends encrypted video data over the link to the receiver, and the cipher engine of the receiver decrypts the encrypted video data in response to a sequence of keys and a sequence of count values, wherein the cipher engine of the receiver includes:
- counter circuitry configured to generate the sequence of count values; and
- a block cipher, coupled to receive the sequence of keys, coupled to the counter circuitry to receive each of at least a subset of the count values, and configured to generate a sequence of pseudo-random output values in response to the count values received from the counter circuitry and the keys, wherein the block cipher is configured to generate each of a first subset of the pseudo-random output values by performing X rounds of a cipher algorithm and each of a second subset of the pseudo-random output values by performing Y rounds of the cipher algorithm, where X is an integer and Y is an integer greater than X.
50. The system of claim 49, wherein the first subset of the pseudo-random output values but not the second subset of the pseudo-random output values is for use in decrypting blocks of the encrypted video data, and each of the pseudo-random output values in the first subset is sufficient for decrypting a block of Z pixels of the encrypted video data, where Z is an integer.
51. The system of claim 50, wherein the symmetric block protocol is the AES-128 CTR protocol, and wherein X=5, Y=10, and Z=5.
52. The system of claim 50, wherein the symmetric block protocol is the AES-128 CTR protocol, the block cipher operates in response to a pixel clock, the block cipher is configured such that no more than one cycle of the pixel clock is required to perform each of the rounds of the cipher algorithm, and Z=5.
53-57. (canceled)
58. A cipher engine, including:
- control circuitry configured be coupled to a TMDS-like link to receive a synchronization signal from said link; and
- circuitry, coupled to receive a stream of data having active data periods separated by blanking intervals, and configured to perform at least one of an encryption operation and a decryption operation on the data in response to a control signal from the control circuitry,
- wherein the control circuitry generates the control signal in response to the synchronization signal, the synchronization signal is received in one of the blanking intervals, the synchronization signal is indicative of a sequence of code words, and the control circuitry is configured to determine a value of the synchronization signal from the number of code words in the sequence.
59. The cipher engine of claim 58, wherein the sequence of code words comprises N code words, where N is an integer, and the control circuitry is configured to determine said value of the synchronization signal by determining whether N has a value in a predetermined range.
60. The cipher engine of claim 59, wherein the control circuitry is configured to recognize the synchronization signal as a key change signal by determining that N has a value in said predetermined range.
61. The cipher engine of claim 58, wherein the sequence of code words comprises N code words, where N is an integer, and the control circuitry is configured to determine said value of the synchronization signal by determining whether N satisfies L<N<M, where L is an integer, M is an integer greater than L, (M−L)=kN, and k is a predetermined proportionality constant.
62. The cipher engine of claim 61, wherein the control circuitry is configured to recognize the synchronization signal as a key change signal by determining that N satisfies L<N<M.
63. A cipher engine configured to implement a symmetric block protocol, said cipher engine including:
- control circuitry configured be coupled to a TMDS-like link to receive at least a first control signal and a second control signal from said link;
- counter circuitry coupled to the control circuitry and configured to generate a sequence of count values under control of the control circuitry; and
- a block cipher, coupled to receive a sequence of keys, coupled to the control circuitry, and coupled to the counter circuitry to receive each of at least a subset of the count values, and configured to generate a sequence of pseudo-random output values in response to the count values received from the counter circuitry and the keys,
- wherein the control circuitry is configured to trigger initialization of the counter circuitry in response to the first control signal, and the control circuitry is configured to respond to the second control signal by causing the block cipher to accept the next one of the keys.
64. A communication system including:
- a transmitter;
- a receiver; and
- a serial link coupled between the transmitter and the receiver, wherein the transmitter and the receiver are configured to implement a symmetric block content protection protocol, the transmitter is operable in an encryption mode in which it generates encrypted data and transmits the encrypted data over the link to the receiver, the receiver is operable in a decryption mode in which it generates decrypted data by decrypting the encrypted data, and each of the transmitter and the receiver includes a cipher engine that implements the protocol, each said cipher engine including:
- counter circuitry configured to generate a sequence of count values;
- a register; and
- a block cipher coupled to receive a sequence of keys, and coupled to the counter circuitry to receive each of at least a subset of the count values, wherein the cipher engine is configured to cause the block cipher to generate an initial pseudo-random output value by performing rounds of a cipher algorithm in response to an initial one of the count values received from the counter circuitry and one of the keys, and to write at least a subset of bits of the initial pseudo-random value to the register, wherein said subset of bits determines a link integrity value, and wherein
- the transmitter is configured to perform a link integrity check, by accessing the link integrity value in the register of the receiver's cipher engine and processing said link integrity value with the link integrity value in the register of the transmitter's cipher engine.
65. A translating router, including:
- decryption circuitry, configured to be coupled to a first serial link and to generate decrypted data from encrypted data received over the first serial link in accordance with a content protection protocol;
- translation circuitry coupled to the decryption circuitry and configured to generate translated data by processing the decrypted data; and
- encryption circuitry coupled to the translation circuitry, and configured to generate re-encrypted data from the translated data, in accordance with a second content protection protocol, and to assert the re-encrypted data to the second serial link.
66. The translating router of claim 65, wherein the at least one of the first serial link and the second serial link is a TMDS-like link.
67. The translating router of claim 65, wherein the second symmetric content protection protocol is different than the symmetric content protection protocol.
68. The translating router of claim 65, wherein the second symmetric content protection protocol is identical to the symmetric content protection protocol.
69. The translating router of claim 65, wherein at least one of the content protection protocol and the second symmetric content protection protocol is a symmetric content protection protocol.
70-87. (canceled)
Type: Application
Filed: Jun 6, 2007
Publication Date: Oct 11, 2007
Applicant:
Inventor: James Lyle (Santa Clara, CA)
Application Number: 11/810,644
International Classification: H04L 9/12 (20060101);