Abstract:
A secure generic encryption system for nonsecure datapaths comprises a format-specific adaptation layer/data path for receiving and processing nonsecure content data; an authentication engine located within a security perimeter and coupled to an external communication interface for authentication and supplying the format-specific adaptation layer/data path, located outside the security perimeter, with an output signal indicating whether authentication is successful; and a generic encryption module located within the security perimeter and coupled (1) to the authentication engine for receiving from the authentication engine initialization vectors, encryption keys, and the output signal indicating whether authentication is successful, and (2) to the format-specific adaptation layer/data path for (a) receiving a read signal from the format-specific adaptation layer/data path, and (b) providing the format-specific adaptation layer/data path with a data-available signal to indicate whether data is available to be read.

Description:
FIELD OF THE INVENTION 
       [0001]    The present disclosure relates to encryption and content protection for nonsecure datapaths. 
       SUMMARY 
       [0002]    In accordance with one embodiment, a secure generic encryption system for nonsecure datapaths comprises a format-specific adaptation layer/data path for receiving and processing data which is to be encrypted and/or decrypted; an authentication engine located within a security perimeter and coupled to an external communication interface for authentication and supplying the format-specific adaptation layer/data path, located outside the security perimeter, with an output signal indicating whether authentication is successful; and a secure generic encryption module located within the security perimeter and coupled (1) to the authentication engine for receiving from the authentication engine initialization vectors, encryption keys, and the output signal indicating whether authentication is successful, and (2) to the format-specific adaptation layer/data path for (a) receiving a read signal from the format-specific adaptation layer/data path, and (b) providing the format-specific adaptation layer/data path with a data-available signal to indicate whether data is available to be read. 
         [0003]    In one implementation, the generic encryption module provides the format-specific adaptation layer/data path with encrypted data and the format-specific adaptation layer/data path may optionally provide the generic encryption module with custom encryption input data that is format-specific. The authentication engine may provide the generic encryption module with a mode input. 
         [0004]    The foregoing and additional aspects and embodiments of the present disclosure will be apparent to those of ordinary skill in the art in view of the detailed description of various embodiments and/or aspects, which is made with reference to the drawings, a brief description of which is provided next. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0005]      FIG. 1  is a block diagram of a generic encryption system for HDCP content data. 
       
    
    
       [0006]    While the present disclosure is susceptible to various modifications and alternative forms, specific embodiments or implementations have been shown by way of example in the drawings and will be described in detail herein. It should be understood, however, that the disclosure is not intended to be limited to the particular forms disclosed. Rather, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of an invention as defined by the appended claims. 
       DETAILED DESCRIPTION 
       [0007]    There are seven distinct High-bandwidth Digital Content Protection HDCP 2.x specifications, each for a different audio/visual (A/V) transport mechanism: DisplayPort (DP), High-Definition Multimedia Interface (HDMI), Interface Independent Adaptation (IIA), Mobile High-definition Link (MHL), Digital interface for Video and Audio (DiiVA), Wireless Home Digital Interface (WHDI), Wireless High Definition (WirelessHD). They all use the Advanced Encryption Standard (AES) encryption algorithm in counter mode; however the counter is defined slightly differently in each specification. 
         [0008]    The different definitions make it difficult to develop a common hardware module for more than one HDCP specifications, while also adhering to the confidentiality and integrity requirements of HDCP. 
         [0009]    There is a need for an encryption module which can be used for all HDCP 2.x variants and which supports HDCP&#39;s confidentiality and integrity requirements. 
         [0010]    Referring to  FIG. 1 , encryption module  101  can be paired with one or more external format-specific adaptation layer modules and the architecture can be used in the implementation of all HDCP 2.x variants to provide complete separation between the format-specific logic  102  and the elements of the protocol which must be kept confidential. Since the confidential elements of the protocol are kept away from the format-specific logic, the format-specific logic  102  does not need to reside in a trusted security perimeter  103 ; thus increasing design flexibility. 
         [0011]    A key aspect to achieve the security perimeter is in the use of a signal  104  which indicates whether or not HDCP authentication has been achieved (authentication is handled by a separate authentication engine module  105 ). When authenticated, encryption keys  111  and initialization material  112  are used to encrypt a counter sequence. The external format-specific module uses this sequence to encrypt or decrypt the actual A/V stream. As soon as authentication is lost, the encryption module discards any previously encrypted counters. 
         [0012]    One instance of the encryption module can be used to support more than one A/V format. 
         [0013]    Optionally, multiple encrypted data outputs may be provided to efficiently support simultaneous processing of multiple streams, which can be required for DisplayPort, WHDI, and DiiVA. 
         [0014]    The security perimeter  103  is set such that untrusted format-specific modules may be plugged in without compromising security. 
         [0015]    The encryption module  101  has a uni-directional interface with inputs coming from a separate module  105  which implements the HDCP authentication. The authenticated signal  104  is a single-bit signal which indicates whether the system is currently in an authenticated state. If set to 1, then valid key(s)  111  and Initialization Vectors IV(s)  112  are expected on the encryption module  101  inputs. A 0 to 1 transition on the authenticated signal  104  resets the internal block counter which forms part of the AES counter (this is inputCtr in the HDCP specs). In some cases (i.e. DisplayPort) this is all the information that the encryption module needs to encrypt AES blocks. In other cases, additional information from the non-secure side is needed before encryption can begin, which is indicated by the “mode” input  113 . 
         [0016]    A one (1) to zero (0) transition on the authentication signal causes the encryption module to discard any encrypted blocks that have not yet been retrieved by the non-secure side. The module then waits for authentication to be re-established before generating AES-encrypted blocks again. 
         [0017]    The encryption module  101  interfaces with the format-specific adaptation layer  102 . One or more data interfaces  120   a  . . .  120   x  provide encrypted data. In the case of AES, these are 128-bit encrypted AES words. However, different widths and other encryption algorithms are also possible. The encryption module  101  signals whether data is available to be read with the “data available” signal  125 ; the adaptation layer fetches data by asserting the “read” signal  120 . 
         [0018]    For most A/V formats, the adaptation layer generally supplies some information to the encryption module  101 . This is pushed over the “optional custom encryption data” interface  126 , which is a simple FIFO interface onto which the non-secure side pushes format-specific data. Of the HDCP 2.x formats, DP does not need this interface, but the others (HDMI, HA, MHL, DiiVA, WHDI and WirelessHD) generally do, each in slightly different ways. The “mode” input determines the data that must be pushed onto this interface for example: 
         [0019]    HDMI: 38-bit frame number 
         [0020]    HA: 32-bit stream counter 
         [0021]    MHL: 32-bit stream counter 
         [0022]    DiiVA: 32-bit stream counter, audio/video stream selector 
         [0023]    WHDI: 64-bit counter, coarse/fine stream selector 
         [0024]    WirelessHD: 8-bit stream index and 40-bit secure packet counter 
         [0025]    For all modes, one FIFO write triggers the encryption module to produce one data block, using the supplied data, as per the respective HDCP specifications. 
         [0026]    DP is unique among the HDCP 2.x protected formats in using a single-bit “Type” variable in the encryption of the data. The Type variable composes part of the IV used for the AES encryption. Since DP allows for multiple streams to be carried over a single physical interface, each with their own Type, two encrypted counter streams are required to encrypt/decrypt the DP data (one encrypted stream with Type set to zero (0), another one with Type set to one (1)). 
         [0027]    Since both Type streams for DP use a common encryption key, it is possible to economize on HW resources by sharing the AES key expansion logic between the two encryption streams. 
         [0028]    To generalize, for example, only two Type values are currently defined for DP, but Type is actually an 8-bit field; therefore other values of Type may be defined in the future, and the embodiment described can support it. The different encryption streams can share a common key or have distinct keys. 
         [0029]    The encryption module can be extended to multiple authentication sessions supporting several instances of AN streams. 
         [0030]    This description is specific to the HDCP 2.x specs but it is also applicable to any other standards or protocols used for authentication, cryptographic algorithms and other AES modes other than AES-CTR. 
         [0031]    Although the algorithms described above including those with reference to the foregoing flow charts have been described separately, it should be understood that any two or more of the algorithms disclosed herein can be combined in any combination. Any of the methods, algorithms, implementations, or procedures described herein can include machine-readable instructions for execution by: (a) a processor, (b) a controller, and/or (c) any other suitable processing device. Any algorithm, software, or method disclosed herein can be embodied in software stored on a non-transitory tangible medium such as, for example, a flash memory, a CD-ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), or other memory devices, but persons of ordinary skill in the art will readily appreciate that the entire algorithm and/or parts thereof could alternatively be executed by a device other than a controller and/or embodied in firmware or dedicated hardware in a well known manner (e.g., it may be implemented by an application specific integrated circuit (ASIC), a programmable logic device (PLD), a field programmable logic device (FPLD), discrete logic, etc.). Also, some or all of the machine-readable instructions represented in any flowchart depicted herein can be implemented manually as opposed to automatically by a controller, processor, or similar computing device or machine. Further, although specific algorithms are described with reference to flowcharts depicted herein, persons of ordinary skill in the art will readily appreciate that many other methods of implementing the example machine readable instructions may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined. 
         [0032]    It should be noted that the algorithms illustrated and discussed herein as having various modules which perform particular functions and interact with one another. It should be understood that these modules are merely segregated based on their function for the sake of description and represent computer hardware and/or executable software code which is stored on a computer-readable medium for execution on appropriate computing hardware. The various functions of the different modules and units can be combined or segregated as hardware and/or software stored on a non-transitory computer-readable medium as above as modules in any manner, and can be used separately or in combination. 
         [0033]    While particular implementations and applications of the present disclosure have been illustrated and described, it is to be understood that the present disclosure is not limited to the precise construction and compositions disclosed herein and that various modifications, changes, and variations can be apparent from the foregoing descriptions without departing from the spirit and scope of an invention as defined in the appended claims.