A High Definition Multimedia Interface (HDMI) in accordance with the HDMI specification version 1.3 (published Jun. 22, 2005) is used for transferring uncompressed video and audio data between, for example, set-top boxes or digital versatile disk (DVD) players and display devices such as digital televisions. HDMI is based on digital video interface (DVI) technology, but provides a much smaller and flexible solution. It is capable of replacing up to eight audio cables and up to five video cables with a single cable. Widespread adoption of HDMI-enabled televisions and monitors is expected to continue.
The HDMI specification calls out for audio and video data to be protected as per the High-Bandwidth Digital Content Protection System (HDCP) Revision 1.1 (published Jun. 9, 2003). A HDMI sink is given device specific keys. Sinks use these keys to authenticate with a HDMI source and decrypt incoming audiovisual (AV) data over the HDMI interface. Typically the logic and circuitry associated with encryption/decryption can be complex and cost and area intensive.
Architectures in accordance with an embodiment of the present invention support HDCP over an HDMI interface. The HDCP specification outlines sink requirements to ensure robust security of the HDMI interface. The partitioning of logic functions and a core cipher in accordance with an embodiment of the present invention enables easy reuse of cipher hardware, software and/or firmware (e.g., a cipher code base) while meeting these requirements of the specification.
Embodiments may enable a reuse capability. That is, HDMI sources and sinks have very similar functions with respect to HDCP. The core cipher transformation functions are same for both, but the state machines and use of this cipher differs. Embodiments may partition the HDCP logic functions in a way that allows easy reuse of the cipher code. Embodiments may further be scaled to handle multiple HDMI streams. The bulk of the area in a HDCP implementation comes from key storage and the cipher logic. This architecture allows a use case where the cipher can be used by more than one stream handling state machine, and thus the key storage and cipher area need not be duplicated for multiple streams.
Embodiments may also enable achievement of power conservation goals. With this logic partitioning, aggressive power saving techniques may be implemented. For example, when an unencrypted stream is being received, the complete HDCP subsystem can be clock gated, and a single stage in the data path can be clocked to pass data to downstream logic. Further, in cases when the same cipher is used to support multiple streams, the idle state machine (within the cipher module) and the cipher itself can be clock-gated. Besides this, while encrypted streams are being received, parts of idle logic can be clock gated. Data parsing and condition detection is done outside the sub-system and idle logic can be identified, leading to intelligent power conservation.
Referring now to
Video source device 20 and video sink device 30 are both intended to represent a broad range of such devices known in the art. Examples of video source devices include but are not limited to computers of all sizes (from palm size devices to desktop devices, and beyond), set-top boxes, or DVD players, whereas examples of video sink devices include but are not limited to cathode ray tubes (CRT) monitors, flat panel displays or television sets, such as a high definition television (HDTV). Digital video link 25 may be implemented in any one of a number of mechanical and electrical forms, as long as they are consistent with the operating requirement (i.e., speed, bit rate and so forth), and a mechanism (which may be in hardware or through protocol) is provided to allow control information to be exchanged between video source and sink devices 20 and 30 (hereinafter, simply source and sink devices respectively).
After authentication of a sink device 30, source device 20 ciphers video content into a ciphered form before transmitting the video content to sink device 30. Upon receipt of the video content in ciphered form, sink device 30 deciphers the ciphered video content, e.g., via an upstream logic 31 which may parse out control information, which it provides along with stream data to an interface 32 for decryption, and the unencrypted data is provided to, e.g., a display 34.
Referring now to
As shown in
As shown in
As shown in
License key buffer 140 may be used to hold the “secure keys” assigned to each device. In one embodiment, authorization output buffer 134 may be populated within interface 100 in a secure manner that ensures confidentiality of the device private keys. Authentication module 130 may be responsible for authenticating interface 100 with a video source. Interface 100 receives an authentication request over a DDC channel. This DDC channel may use the I2 C protocol and electricals for communication and signaling.
Authentication module 130 provides an authentication state machine 132 and an authentication output buffer 134. Authentication state machine 132 may be a state machine that responds to an authentication request and may adhere to performance requirements specified by the HDCP specification.
On receiving an authentication request, authentication state machine 132 uses the device private keys and cipher 112 to calculate multiple values. Some of these values (e.g., Ro, Ri, Pj) may be provided to a source as part of the authentication process. Frame key calculation module 120 may be used to perform frame key calculations. A video source may signal interface 100 to begin the third part of the authentication protocol through control (CTL0-3) signals. Two different protocols for signaling may be supported, namely OESS and EESS. The ESS decision occurs prior to authentication. HDCP sources assume use of the DVI protocol and OESS in the initial states. A source may then determine the sink's capabilities and make a decision if EESS can be used. In an overall source unit, there are upstream modules that parse through the incoming data and set some flags. These flags are passed to interface 100 along with AV data.
First control state machine 122 and second control state machine 124 implement OESS or EESS behavior as per the HDMI specification. One of these state machines is triggered based on the mode (HDMI or DVI) and CSR setting by software. Based on this decision, the active state machine changes state on every active vertical synchronization signal (VSYNC), calculates the frame key for every new frame (or field) and clocks cipher module 110 to keep it ready for incoming AV data. Note that these functions may be partitioned. In various embodiments, these state machines do not parse incoming data, and do not perform decisions like encoding enabled or data determinations (e.g., VideoData or AudioData). Instead these state machines rely on upstream logic to make these decisions. In this way, validation may be eased because different logic pieces can be stressed independently.
Cipher module 110 may include multiple logic layers that each performs specific functions. Different combinations of these functions may lead to different modes. The modes are requested by authentication or frame key calculation modules 130 and 120. Cipher module 110 responds to their requests by running the cipher for specified clocks with supplied initialization values. Cipher module 110 may include cipher control state machine 114. FSM 114 may receive requests from Authentication or the first and second state machines. These requests instruct FSM 114 to go into one of the 3 modes, block, rekey, or stream cipher, and clock the cipher for a specified number of cycles. FSM 114 decides the initialization values of the cipher and captures cipher outputs after predetermined steps.
Interface 100 is partitioned into logical modules. In this way OESS/EESS state machines may be readily implemented. That is, the HDCP specification outlines the state transitions on specific input conditions, which can be implemented in silicon. With this architecture, cipher 112 may be isolated as a separate logic function. In the embodiment of
Embodiments may also lend themselves to scalable solutions. For a particular device, the keys are unique. Embodiments can use the same set of keys to authenticate multiple sources in parallel. Also, the cipher calculations remain the same. Thus, to support multiple HDMI streams, an interface can be scaled for that implementation, and the main area contributing modules need not be duplicated. That is, to achieve scalability, only the authentication and first and second state machines are duplicated (e.g., via frame key calibration module 160 with FSMs 162 and 164, authentication module 170 with FSM 172 and buffer 174, and logic 168), as these state machines are stream specific, and the multiple duplicate state machines can use cipher 112 for stream specific operations. For such a solution, cipher 110 may be clocked at a higher speed than the rest of the state machines. For example, the maximum incoming rate of one HDMI stream is 165 megahertz (MHz), while cipher 110 may be set at double that rate.
By partitioning of the logic as described above, a cipher in accordance with an embodiment of the present invention may be reused or ported across different product lines. That is, a common cipher can be used across different devices of a product line. Such products can include various source, sink, and repeater devices. In contrast, a more straight forward approach would merge the different functions and detection logic, as it is easier to parse HDMI streams at the same stage as HDCP decryption and further, the HDCP state machines are also very inter-dependent. Thus, an easier design approach would be to reduce the number of FSMs, and reduce the complexity of dependent state machines. However, such an approach would not allow easy reuse and scalability. Thus embodiments may provide a robust, reusable and scalable implementation that meets aggressive power goals.
Referring now to
Still referring to
Embodiments may be implemented in code and may be stored on a storage medium having stored thereon instructions which can be used to program a system to perform the instructions. The storage medium may include, but is not limited to, any type of disk including floppy disks, optical disks, compact disk read-only memories (CD-ROMs), compact disk rewritables (CD-RWs), and magneto-optical disks, semiconductor devices such as read-only memories (ROMs), random access memories (RAMs) such as dynamic random access memories (DRAMs), static random access memories (SRAMs), erasable programmable read-only memories (EPROMs), flash memories, electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, or any other type of media suitable for storing electronic instructions.
While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.