KR102029550B1 - Design of hdcp for displayport - Google Patents

Design of hdcp for displayport Download PDF

Info

Publication number
KR102029550B1
KR102029550B1 KR1020170175397A KR20170175397A KR102029550B1 KR 102029550 B1 KR102029550 B1 KR 102029550B1 KR 1020170175397 A KR1020170175397 A KR 1020170175397A KR 20170175397 A KR20170175397 A KR 20170175397A KR 102029550 B1 KR102029550 B1 KR 102029550B1
Authority
KR
South Korea
Prior art keywords
encryption
hdcp
displayport
block
receiver
Prior art date
Application number
KR1020170175397A
Other languages
Korean (ko)
Other versions
KR20190074042A (en
Inventor
강진구
박청대
Original Assignee
인하대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교 산학협력단 filed Critical 인하대학교 산학협력단
Priority to KR1020170175397A priority Critical patent/KR102029550B1/en
Publication of KR20190074042A publication Critical patent/KR20190074042A/en
Application granted granted Critical
Publication of KR102029550B1 publication Critical patent/KR102029550B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/82Protecting input, output or interconnection devices
    • G06F21/85Protecting input, output or interconnection devices interconnection devices, e.g. bus-connected or in-line devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits

Abstract

디스플레이포트용 HDCP 기술에 관한 것이다. 디스플레이포트용 HDCP 시스템은, 디스플레이 인터페이스인 디스플레이포트(DisplayPort)의 보조채널(AUX)에 연결되어 송신기 인터페이스와 수신기 인터페이스가 HDCP(High Definition Contents Protect)를 지원하는 기기인지 인증하고 디지털 데이터의 암호화와 복호화에 필요한 암호 키를 공유하는 인증 블록; 및 상기 디스플레이포트의 메인링크(Main Link)에 연결되어 상기 암호 키를 이용하여 상기 송신기 인터페이스에서 상기 디지털 데이터를 암호화하고 상기 수신기 인터페이스에서 상기 암호화된 디지털 데이터를 복호화하는 암호 블록을 포함하고, 상기 인증 블록을 제어하기 위한 제어부를 MCU(micro controller unit)로 구성하고, 상기 인증 블록은 상기 MCU로부터 제어 신호를 입력받고 상기 인증 블록의 상태 신호를 상기 MCU로 출력하는 제어부 인터페이스를 포함한다.It relates to HDCP technology for DisplayPort. The HDCP system for DisplayPort is connected to the auxiliary channel (AUX) of DisplayPort, which is a display interface, to verify that the transmitter interface and the receiver interface support HDCP (High Definition Contents Protect), and to encrypt and decrypt digital data. An authentication block for sharing an encryption key required for And an encryption block connected to a main link of the display port and encrypting the digital data at the transmitter interface using the encryption key and decrypting the encrypted digital data at the receiver interface. A control unit for controlling the block is configured as a micro controller unit (MCU), and the authentication block includes a control unit interface for receiving a control signal from the MCU and outputting a status signal of the authentication block to the MCU.

Figure R1020170175397
Figure R1020170175397

Description

디스플레이포트용 HDCP 설계{DESIGN OF HDCP FOR DISPLAYPORT}HDCP design for DisplayPort {DESIGN OF HDCP FOR DISPLAYPORT}

아래의 설명은 데이터 암호화 기술에 관한 것이다.The description below relates to data encryption techniques.

최근 저작권과 관련하여 사회적 이슈가 대두되는 가운데 보안의 중요성이 부각되고 있다. 이에 따라 디지털 데이터의 암호화에 대한 요구가 많아지면서 일반 데이터뿐 아니라 HDMI(High Definition Multimedia Interface)나 디스플레이포트(DisplayPort)와 같은 디스플레이 인터페이스에도 데이터 보호가 요구되고 있다.Recently, the importance of security is emerging as social issues are raised regarding copyright. Accordingly, as the demand for digital data encryption increases, data protection is required not only for general data but also for display interfaces such as HDMI (High Definition Multimedia Interface) and DisplayPort.

이러한 요구에 맞추어 데이터 암호화 표준인 HDCP(High Definition Contents Protect)가 발표되었다. HDCP를 필요로 하는 데이터는 HDCP가 지원되지 않는 기기로의 전송이 불가능하며 수신기의 인증여부를 판단하여 데이터를 전송하기 때문에 공격자에 대해서 안전하다. 또한 HDCP는 AES-CTR을 이용한 데이터 암호를 사용하고 있으며 이 암호는 데이터가 전송됨에 따라 바뀌기 때문에 외부에서 쉽게 공격할 수 없으며 비교적 고속의 암호화가 가능하여 고속 인터페이스에 적합하다. 또한 안정성 높은 암호 알고리즘인 RSA를 통해 키 교환을 하여 키 교환 도중의 공격에 대해서도 안전하다. 한 번 키 교환을 한 기기 사이에는 간략화 된 키 교환 방법을 사용함으로써 빠른 키 교환이 가능하며 올바르지 않은 수신기들의 정보를 공유하여 키 교환을 차단함으로써 키 교환 상의 위험을 최소화한다.In response to this demand, High Definition Contents Protect (HDCP), a data encryption standard, has been released. Data that requires HDCP cannot be transmitted to a device that does not support HDCP, and it is safe for attackers because it transmits the data by determining whether the receiver is authenticated. In addition, HDCP uses data encryption using AES-CTR, which changes as data is transmitted, making it difficult to attack from the outside and relatively high-speed encryption makes it suitable for high-speed interfaces. It is also safe against attacks during key exchange by exchanging keys through RSA, a highly reliable cryptographic algorithm. Using a simplified key exchange method between devices that have once exchanged a key, fast key exchange is possible, and the risk of key exchange is minimized by blocking key exchange by sharing information of incorrect receivers.

이렇듯 HDCP의 속도와 안전성으로 인해 HDCP를 지원하는 기기들이 요구되고 있다. HDCP를 지원할 수 있는 인터페이스들은 HDMI, 디스플레이포트, USB(Universal Serial Bus), 이더넷(Ethernet) 등이 있다. 이 중 디스플레이포트는 디지털 영상정보와 음성정보를 전달하는 디스플레이 인터페이스로 최근 증가하는 데이터 전송속도와 4K 이상의 초고해상도 디스플레이 수요에 따라 많은 PC와 모바일 기기에서 채택되고 있다.Due to the speed and safety of HDCP, devices that support HDCP are required. Interfaces that can support HDCP include HDMI, DisplayPort, Universal Serial Bus (USB), and Ethernet. Among these, DisplayPort is a display interface that delivers digital video and audio information, and is being adopted in many PCs and mobile devices due to the recent increase in data transmission rates and the demand for ultra-high resolution displays of more than 4K.

HDCP 지원기기에 대한 수요를 만족하기 위해 디스플레이포트(DisplayPort)에서 전달되는 비디오, 오디오 데이터를 암호화하기 위한 HDCP(High Definition Contents Protect) 구조를 제공한다.In order to satisfy the demand for HDCP-enabled devices, the present invention provides a High Definition Contents Protect (HDCP) structure for encrypting video and audio data transmitted from DisplayPort.

HDCP는 송신기 인터페이스와 수신기 인터페이스에 모두 존재하며 송신기에서 수신기로 전송되는 디지털 내용들을 암호화하여 인증되지 않은 기기가 송신기에서 전송되는 내용들을 알 수 없게 하는 데에 목적이 있다.HDCP exists at both the transmitter interface and the receiver interface and is intended to encrypt digital content transmitted from the transmitter to the receiver so that unauthorized devices cannot see what is being transmitted from the transmitter.

디스플레이 인터페이스인 디스플레이포트(DisplayPort)의 보조채널(AUX)에 연결되어 송신기 인터페이스와 수신기 인터페이스가 HDCP(High Definition Contents Protect)를 지원하는 기기인지 인증하고 디지털 데이터의 암호화와 복호화에 필요한 암호 키를 공유하는 인증 블록; 및 상기 디스플레이포트의 메인링크(Main Link)에 연결되어 상기 암호 키를 이용하여 상기 송신기 인터페이스에서 상기 디지털 데이터를 암호화하고 상기 수신기 인터페이스에서 상기 암호화된 디지털 데이터를 복호화하는 암호 블록을 포함하고, 상기 인증 블록을 제어하기 위한 제어부를 MCU(micro controller unit)로 구성하고, 상기 인증 블록은 상기 MCU로부터 제어 신호를 입력받고 상기 인증 블록의 상태 신호를 상기 MCU로 출력하는 제어부 인터페이스를 포함하는 것을 특징으로 하는 디스플레이포트용 HDCP 시스템을 제공한다.It is connected to the auxiliary channel (AUX) of DisplayPort, which is a display interface, to verify that the transmitter interface and the receiver interface support HDCP (High Definition Contents Protect), and to share the encryption key for encrypting and decrypting digital data. Authentication block; And an encryption block connected to a main link of the display port and encrypting the digital data at the transmitter interface using the encryption key and decrypting the encrypted digital data at the receiver interface. The controller for controlling the block is configured as a micro controller unit (MCU), and the authentication block includes a controller interface for receiving a control signal from the MCU and outputting a status signal of the authentication block to the MCU. Provides HDCP system for DisplayPort.

일 측면에 따르면, 상기 MCU는 상기 디스플레이포트 외부에 연결되며 외부 메모리에 저장된 프로그램 코드에 의해 동작한다.According to an aspect, the MCU is connected to the outside of the DisplayPort and is operated by program code stored in an external memory.

다른 측면에 따르면, 상기 제어부 인터페이스는 상기 MCU의 출력이 바꾸기 전까지 출력 신호를 고정하고 상기 MCU의 출력이 바뀌면 HDCP의 클록에 동기화된 펄스 신호를 생성한다.According to another aspect, the controller interface is fixed to the output signal until the output of the MCU changes, and generates a pulse signal synchronized to the clock of the HDCP when the output of the MCU changes.

또 다른 측면에 따르면, 상기 인증 블록은 메시지 인터페이스를 더 포함하고, 디스플레이포트 송신기용 HDCP의 메시지 인터페이스는 인증 과정에서 생성된 메시지를 AUX 메시지 형태로 변경하여 상기 디스플레이포트의 보조채널(AUX)로 전달하고, 디스플레이포트 수신기용 HDCP의 메시지 인터페이스는 인증 과정에서 생성된 메시지를 수신기의 메모리에 입력하도록 해당 메시지 데이터와 함께 메모리 제어 신호를 출력한다.According to another aspect, the authentication block further includes a message interface, and the message interface of the HDCP for DisplayPort transmitter converts a message generated in the authentication process into an AUX message and delivers it to the auxiliary channel (AUX) of the DisplayPort. In addition, the message interface of the HDCP for the DisplayPort receiver outputs a memory control signal together with the corresponding message data to input the message generated during the authentication process into the memory of the receiver.

또 다른 측면에 따르면, 상기 암호 블록은 암호화 상태 신호를 감지하고 암호화 여부를 결정하는 암호화 제어부와, 암호 데이터열을 생성하는 암호화 구조체를 포함하고, 상기 암호화 제어부는 상기 메인링크의 컨트롤 심볼에 기초하여 상기 암호화 구조체의 동작을 제어한다.According to another aspect, the encryption block includes an encryption control unit for detecting an encryption status signal and determining whether to encrypt, and an encryption structure for generating an encryption data string, wherein the encryption control unit is based on a control symbol of the main link; Control the operation of the encryption structure.

또 다른 측면에 따르면, 상기 암호화 구조체는 상기 메인링크의 클록에 따라 암호 데이터열을 생성하고 상기 암호 데이터열을 메인링크 데이터와 XOR 연산을 하는 동작을 한다.According to another aspect, the encryption structure generates an encrypted data sequence according to the clock of the main link and performs an XOR operation on the encrypted data sequence with the main link data.

본 발명의 실시예들에 따르면, 제안된 HDCP는 인증 블록이 상태 머신이 아니라 MCU(Micro Controller Unit)로 인해 제어되어 동작의 유연성을 높일 수 있다. 또한, 이런 구조로 인해 설계 시 새로운 동작을 시험할 때마다 새롭게 디지털 회로를 합성할 필요 없이 실시간으로 프로그램코드를 변경하여 새로운 동작을 시험할 수 있다. 그리고, 향후 최신 HDCP 표준이 발표될 때 프로그램코드 변경을 통해 동작을 추가 및 개선할 수 있으며 프로그램 코드를 변경하면 디스플레이포트 외에 HDMI와 같은 디스플레이 인터페이스와도 호환할 수 있을 것이다.According to embodiments of the present invention, the proposed HDCP can increase the flexibility of operation because the authentication block is controlled by the microcontroller unit (MCU), not the state machine. In addition, this structure allows the program code to be tested in real time by changing the program code in real time without having to synthesize a new digital circuit every time a new operation is tested in the design. In the future, when the latest HDCP standard is released, program code changes can be added and improved, and changing the program code will be compatible with display interfaces such as HDMI in addition to DisplayPort.

본 발명의 실시예들에 따르면, 제안된 암호화 구조체는 메인링크 데이터와 암호 데이터열이 서로 다른 클록으로 생성됨으로 인해 XOR 연산 시 연산 딜레이로 인해 올바른 암호 데이터열이 메인링크 데이터와 연산되지 않는 문제를 해결하여 고속의 메인링크에서 안정적으로 데이터를 암호화 할 수 있다.According to the embodiments of the present invention, the proposed encryption structure has a problem that the correct encryption data string is not calculated with the main link data due to an operation delay during the XOR operation because the main link data and the encryption data string are generated with different clocks. The solution can reliably encrypt data in high speed main link.

도 1은 본 발명에 따른 디스플레이포트용 HDCP 구조를 도시한 것이다.
도 2는 해시 메시지 인증 코드 알고리즘 블록도를 도시한 것이다.
도 3은 SHA-256 알고리즘 블록도를 도시한 것이다.
도 4는 SHA-256 압축 함수 블록도를 도시한 것이다.
도 5는 SHA-256 압축 함수 라운드 블록도를 도시한 것이다.
도 6은 128bit 고급 암호화 표준 알고리즘 블록도를 도시한 것이다.
도 7은 S-box의 내용을 도시한 것이다.
도 8은 행 이동의 동작을 도시한 것이다.
도 9 내지 도 10은 키 확장 블록도를 도시한 것이다.
도 11은 Km이 저장되어 있지 않은 수신기와의 인증 및 키 교환 과정을 도시한 것이다.
도 12는 Km이 저장되어 있는 수신기와의 인증 및 키 교환 과정을 도시한 것이다.
도 13은 수신기 인증서 서명 검증 과정을 도시한 것이다.
도 14는 지역성 검사 과정을 도시한 것이다.
도 15는 시스템 재개가능성 메시지 내용을 도시한 것이다.
도 16은 디스플레이포트용 HDCP 내 암호 블록의 구조를 도시한 것이다.
도 17은 암호화 구조체 블록도를 도시한 것이다.
도 18은 디스플레이포트 송신기용 HDCP 인증블록의 구조를 도시한 것이다.
도 19는 디스플레이포트 수신기용 HDCP 인증블록의 구조를 도시한 것이다.
도 20은 암호화 구조체의 구성을 도시한 것이다.
도 21은 암호화 상태 신호와 HDCP 암호 동작을 도시한 것이다.
도 22는 8051이 포함된 디스플레이포트 송신기용 HDCP 구조를 도시한 것이다.
도 23은 8051이 포함된 디스플레이포트 수신기용 HDCP 구조를 도시한 것이다.
도 24는 디스플레이포트 송신기용 HDCP 인증 블록의 제어 과정을 도시한 것이다.
도 25는 디스플레이포트 수신기용 HDCP 인증 블록의 제어 과정을 도시한 것이다.
도 26은 PC to MCU 직렬통신 블록의 상태도를 도시한 것이다.
1 illustrates an HDCP structure for DisplayPort according to the present invention.
2 illustrates a hash message authentication code algorithm block diagram.
3 illustrates a SHA-256 algorithm block diagram.
4 illustrates a SHA-256 compression function block diagram.
Figure 5 illustrates a SHA-256 compression function round block diagram.
Figure 6 shows a 128-bit advanced encryption standard algorithm block diagram.
7 shows the contents of the S-box.
8 illustrates the operation of row movement.
9 through 10 illustrate key expansion block diagrams.
11 illustrates an authentication and key exchange process with a receiver in which K m is not stored.
12 illustrates an authentication and key exchange process with a receiver in which K m is stored.
13 shows a receiver certificate signature verification process.
14 illustrates a locality testing process.
15 shows the contents of a system resumability message.
Figure 16 illustrates the structure of a cipher block in HDCP for DisplayPort.
17 illustrates a cryptographic structure block diagram.
18 shows the structure of an HDCP authentication block for a DisplayPort transmitter.
19 shows the structure of an HDCP authentication block for a DisplayPort receiver.
20 shows the configuration of an encryption structure.
21 illustrates an encryption status signal and an HDCP encryption operation.
FIG. 22 illustrates an HDCP structure for a DisplayPort transmitter including 8051.
FIG. 23 illustrates an HDCP structure for a DisplayPort receiver including 8051.
24 illustrates a control process of an HDCP authentication block for DisplayPort transmitter.
25 illustrates a control process of an HDCP authentication block for a DisplayPort receiver.
Fig. 26 shows a state diagram of a PC to MCU serial communication block.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명에서는 HDCP 지원기기에 대한 수요를 만족하기 위해 디스플레이포트 송신기 및 수신기 용 HDCP 구조를 제공한다. 디스플레이포트용 HDCP는 Verilog HDL을 이용해 설계되며 Digital Content Protection LLC에서 발표하는 규격 HDCP 2.2을 기준으로 한다.The present invention provides an HDCP structure for a DisplayPort transmitter and a receiver in order to satisfy the demand for the HDCP support device. HDCP for DisplayPort is designed using Verilog HDL and is based on specification HDCP 2.2, published by Digital Content Protection LLC.

도 1은 디스플레이포트용 HDCP의 구조를 도시한 것이다.Figure 1 shows the structure of the HDCP for DisplayPort.

HDCP는 HDMI, 디스플레이포트, USB 등의 데이터 통신 인터페이스에서 전송 데이터를 암호화 및 복호화하는 블록이다. 도 1을 참조하면, 디스플레이포트용 HDCP는 디스플레이포트의 보조채널(AUX)에 연결되어 기기인증 및 키 교환을 하는 인증 블록(Authentication Block)과, 디스플레이포트의 메인링크(Main Link)에 연결되어 전송 데이터를 암호화 및 복호화하는 암호 블록(Cipher Block)으로 나뉘어서 동작한다.HDCP is a block that encrypts and decrypts transmission data in data communication interfaces such as HDMI, DisplayPort, and USB. Referring to FIG. 1, the HDCP for DisplayPort is connected to an auxiliary channel (AUX) of DisplayPort and is connected to an authentication block (Authentication Block) for device authentication and key exchange, and connected to a DisplayPort main link (Main Link). It operates by dividing into a cipher block that encrypts and decrypts data.

인증 블록(Authentication Block)Authentication Block

송신기의 HDCP에서는 암호화가 필요한 데이터를 보내기 전에 보조채널을 통해 수신기와 통신하여 데이터를 보내도 되는 기기인지 판단하고 데이터 암호에 필요한 키를 교환한다. HDCP 내 인증블록은 이때 필요한 알고리즘 블록과 제어부로 구성된다. 인증단계는 인증 및 키 교환(AKE), 지역성 검사(Locality Check), 세션 키 교환(SKE) 3단계로 나뉜다. 이때 RSA, HMAC-SHA256, AES 총 3가지 암호 알고리즘이 사용된다.Before sending the data that requires encryption, the transmitter's HDCP communicates with the receiver via an auxiliary channel to determine if the device is allowed to send data and exchanges the key for data encryption. The authentication block in the HDCP is composed of a required algorithm block and a controller at this time. The authentication phase is divided into three stages: authentication, key exchange (AKE), locality check, and session key exchange (SKE). In this case, three encryption algorithms, RSA, HMAC-SHA256, and AES, are used.

(1) RSA 암호 알고리즘(1) RSA cryptographic algorithm

RSA 암호 알고리즘은 HDCP 내 암호 알고리즘 중 가장 많은 시간이 소요되면서 안전성이 가장 높은 알고리즘으로, 송신기가 수신기의 인증서와 시스템 재개가능성 메시지(SRM)의 인증여부를 판단할 때, 그리고 처음 통신하는 송신기와 수신기 사이에서 인증 및 키 교환(AKE) 단계에서 송신기가 마스터키를 생성하고 수신기로 보낼 때 사용된다.The RSA cryptographic algorithm is the most time consuming and most secure cryptography algorithm in the HDCP, when the transmitter determines whether the receiver's certificate and system resumability message (SRM) are authenticated, and when the transmitter and receiver first communicate. It is used when the transmitter generates a master key and sends it to the receiver during authentication and key exchange (AKE) phase.

RSA는 모듈로 연산의 성질을 이용하여 암호화하는 키와 복호화하는 키가 서로 다른 비대칭 키 교환 암호 알고리즘이다. 이때 기존 데이터와 키, 암호화된 데이터의 관계는 관계식 1과 같다.RSA is an asymmetric key exchange cryptographic algorithm that uses a property of modulo operation to encrypt and decrypt a key. At this time, the relationship between the existing data, the key, and the encrypted data is shown in Equation 1.

[관계식 1][Relationship 1]

Figure 112017126682142-pat00001
Figure 112017126682142-pat00001

여기서 m은 기존 데이터이고 d는 비밀 키, e와 n은 공개 키, c는 암호화된 데이터이다. 암호화하는 키인 e와 n은 외부로 공개되어 데이터 송신기에서 이 키로 데이터를 암호화할 수 있으며 복호화하는 키인 d는 데이터 수신기의 외부로 공개되지 않기 때문에 제 3자가 암호화된 데이터를 복구할 수 없다.Where m is the existing data, d is the secret key, e and n are the public key, and c is the encrypted data. The encryption keys e and n are disclosed externally so that the data transmitter can encrypt the data with this key, and the decryption key d is not disclosed outside of the data receiver, so the third party cannot recover the encrypted data.

관계식 2와 같은 관계를 e와 d와 n을 정하면 어떤 m과 c에 대해서도 관계식 1이 성립될 수 있다.By setting e, d and n in relation to relation 2, relation 1 can be established for any m and c.

[관계식 2][Relationship 2]

Figure 112017126682142-pat00002
Figure 112017126682142-pat00002

위 식이 성립됨을 증명하면 다음과 같다.Proving that the above equation holds,

[관계식 3][Relationship 3]

Figure 112017126682142-pat00003
Figure 112017126682142-pat00003

(2) 해시 메시지 인증 코드(HMAC-SHA256)(2) hash message authentication code (HMAC-SHA256)

해시 메시지 인증 코드는 인증 및 키 교환(AKE) 단계와 지역성 검사(Locality Check) 단계에서 수신기가 송신기의 메시지를 올바르게 받고 키와 난수를 제대로 복원 했는지를 판단하기 위해 사용된다.The hash message authentication code is used to determine whether the receiver correctly received the transmitter's message and correctly restored the keys and random numbers during the authentication and key exchange (AKE) and locality check phases.

데이터의 적합성을 판단하기 위해서 부수적으로 전송하는 작은 데이터의 코드를 생성하기 위해 사용되며 임의의 길이의 데이터를 암호화키를 이용하여 정해진 길이의 코드로 변환하는 알고리즘이다. 송신기와 수신기는 동일한 암호화키를 공유하며 일반적으로 수신기는 이 알고리즘을 이용하여 전송된 데이터로부터 코드를 추출하고 이 코드가 송신기에서 보낸 코드와 동일한지 판단하여 적합한 송신기가 적합한 암호화키를 가진 상대인지 판단한다. HDCP에서는 이와 다르게 수신기에서 송신기로부터 받은 데이터를 이용해 코드를 생성한 후 송신기가 수신기로부터 코드를 읽고 송신기가 생성한 코드와 비교하여 적합한 암호화키를 가졌는지 판단한다.It is used to generate a code of small data that is additionally transmitted to determine the suitability of data, and is an algorithm that converts data of arbitrary length into a code of a predetermined length using an encryption key. The transmitter and receiver share the same encryption key, and in general, the receiver uses this algorithm to extract a code from the transmitted data and to determine if the code is the same as the code sent by the transmitter to determine if the proper transmitter has a matching encryption key. do. In HDCP, the receiver generates a code using the data received from the transmitter, and then the transmitter reads the code from the receiver and compares it with the code generated by the transmitter to determine whether it has a suitable encryption key.

임의의 길이의 데이터를 정해진 길이의 코드로 압축시키는 해시 함수 알고리즘을 이용하며 사용하는 해시 함수 X에 따라 HMAC-X로 명명된다. HDCP에서는 해시함수 SHA256을 이용하는 HMAC-SHA256을 사용한다. 해시 메시지 인증코드 알고리즘은 도 2와 같다.It uses a hash function algorithm that compresses data of arbitrary length into a code of fixed length and is named HMAC-X according to the hash function X used. HDCP uses HMAC-SHA256, which uses the hash function SHA256. The hash message authentication code algorithm is shown in FIG.

도 2를 참조하면, K+는 256bits의 입력키의 뒤에 256bits만큼 '0'을 채워 512bits가 되게 확장시킨 값이고 ipad는 8bits 숫자 0x36을 64번 반복한 512bits 값, opad는 8bits 숫자 0x5c를 64번 반복한 512bits 값이다. IV는 256bits 길이의 초기 해시 값으로, 3부터 시작하여 가장 작은 소수 8개를 각각 제곱근한 값들의 소수점 자리 수 32bits를 모은 것이다.Referring to FIG. 2, K + is a value obtained by expanding a 256-bit input key of 256 bits to 512 bits, and ipad is a 512-bit value that repeats 8 bits 0x36 64 times, and opad repeats an 8-bit number 0x5c 64 times. One 512bits value. IV is the initial hash value of 256 bits, which is the 32-bit number of decimal places of the least squares starting from 3 and the eight smallest fractions.

K+와 ipad를 XOR 연산한 값을 Si라 하고 이 값의 뒤에 확장된 입력 데이터를 붙여서 해시 함수의 입력으로 넣으면 256bits 길이의 H(Si||M)이 생성된다. The value of XOR of K + and ipad is called Si, and the extended input data is added to the hash function input after this value to generate 256 bits of H (Si || M).

K+와 opad를 XOR 연산한 값을 So라 하고 이 값의 뒤에 H(Si||M)를 512bits가 되도록 확장된 값을 붙여서 해시 함수의 입력으로 넣어 출력코드 HMAC(K,M)을 생성한다.The value of XOR operation of K + and opad is called So, and after this value, H (Si || M) is extended to be 512bits and put as input of hash function to generate output code HMAC (K, M).

이때 쓰이는 해시함수 SHA256의 알고리즘은 도 3과 같다.The algorithm of the hash function SHA256 used at this time is shown in FIG. 3.

입력 데이터는 그 길이가 512bits의 배수가 되도록 확장(padding)되어 해시 함수의 입력으로 들어가는데 그 규칙은 수학식 1과 같다.The input data is padded so that its length is a multiple of 512 bits and entered into the input of the hash function. The rule is shown in Equation 1.

[수학식 1][Equation 1]

Figure 112017126682142-pat00004
Figure 112017126682142-pat00004

입력 데이터의 마지막 bit 다음 bit는 '1'로 하고 다음 수식을 만족하는 k만큼 '0'을 그 뒤에 붙인다. 그 후 원래 입력 데이터의 bit 수를 나타내는 64bits 숫자를 붙여서 512bits의 배수가 되도록 한다. SHA256에 사용되는 압축함수(Compression Function)의 내용은 도 4 내지 도 5와 같다.The next bit after the last bit of the input data is '1', followed by '0' by k that satisfies the following formula. After that, add a 64-bit number that represents the number of bits of the original input data so that it is a multiple of 512 bits. The contents of the compression function used for SHA256 are the same as those of FIGS. 4 to 5.

여기서 sum은 산술연산 덧셈이고 다른 논리 연산들의 정의는 다음과 같다.Where sum is arithmetic addition and the definitions of the other logical operations are

Figure 112017126682142-pat00005
Figure 112017126682142-pat00005

여기서 RotRx(W)는 x-bit만큼 W를 오른쪽으로 회전시키는 연산이고 ShRx(W)는 x-bit만큼 W를 오른쪽으로 이동시키고 왼쪽은 '0'으로 채우는 연산이다.RotRx (W) is an operation that rotates W to the right by x-bit, and ShRx (W) is an operation to move W to the right by x-bit and fill it with '0'.

(3) 고급 암호화 표준(AES)(3) Advanced Encryption Standard (AES)

고급 암호화 표준(AES)는 HDCP의 인증블록과 암호블록 모두 사용되며 특히 암호블록에서는 카운터모드(AES-CTR)로 사용하여 매 128bit마다 새로운 암호데이터가 나오게 한다. 인증블록에서는 송신기와 수신기가 교환한 난수를 이용해 인증에 필요한 키를 생성하는 데에 사용된다.Advanced Encryption Standard (AES) uses both HDCP's authentication block and cipher block. Especially, the cipher block is used in counter mode (AES-CTR) so that new cipher data is released every 128 bits. In the authentication block, it is used to generate a key for authentication using random numbers exchanged by the transmitter and receiver.

데이터 암호화 표준(DES)을 대체하여 미국 표준 기술 연구소(NIST)가 제정한 암호화 방식으로 송신기와 수신기가 같은 암호화키를 공유하는 대칭키 암호 알고리즘이다. 128bit의 입력 데이터와 출력 데이터를 가지며 이용하는 키 길이에 따라 AES-128, AES-192, AES-256으로 나누어진다. 각 뒤에 붙은 숫자가 이용하는 키의 비트 수이며 HDCP에서는 128bit 길이의 키를 이용하는 AES-128을 사용한다.It is a symmetric key cryptographic algorithm that the transmitter and receiver share the same encryption key. It has 128bit input data and output data and is divided into AES-128, AES-192 and AES-256 according to the key length used. The number after each number is the number of bits in the key, and HDCP uses AES-128 with a 128-bit key.

AES는 128bit의 입력 데이터를 4*4의 데이터 행렬로 취급하여 처리하고 이 행렬에 4가지 연산을 반복함으로써 데이터를 암호화 한다. 전체 암호화 알고리즘은 도 6과 같다.AES treats 128-bit input data as a 4 * 4 data matrix and encrypts the data by repeating four operations on the matrix. The entire encryption algorithm is shown in FIG.

Add Round Key(라운드 키 덧셈)은 확장키와 데이터를 XOR 연산을 하는 블록이며 Substitute Bytes(바이트 치환)은 입력 값을 바이트 단위로 S-box의 해당 바이트로 치환하는 블록, Shift Rows(행 이동)은 행을 왼쪽으로 이동시키는 블록, Mix Columns(열 혼합)은 열의 모든 바이트를 특정 연산과정을 통해 섞는 블록이다. S-box의 내용은 도 7, 행 이동(Shift Rows)의 동작은 도 8과 같고 열 혼합(Mix Columns)의 연산은 다음과 같다.Add Round Key is a block that performs XOR operation on expansion keys and data.Substitute Bytes is a block that replaces the input value with the corresponding byte of S-box by byte unit. Shift Rows Is a block that moves a row to the left, and Mix Columns is a block that mixes all the bytes of a column through a specific operation. The contents of the S-box are shown in FIG. 7 and the operations of Shift Rows are the same as those of FIG. 8, and the operations of the Mix Columns are as follows.

Figure 112017126682142-pat00006
Figure 112017126682142-pat00006

확장될 열의 번호가 4의 배수라면 도 9와 같은 연산으로 확장되고 그렇지 않은 경우도 10과 같은 연산으로 확장된다.If the number of columns to be expanded is a multiple of 4, it is expanded to the operation shown in FIG.

(4) 인증 및 키 교환(AKE)(4) Authentication and Key Exchange (AKE)

디스플레이포트 송신기와 수신기가 연결되고 전송데이터가 HDCP 지원이 필요하면 송신기와 수신기는 보조 채널(AUX)을 통해 인증 및 키 교환을 시작한다.When the DisplayPort transmitter and receiver are connected and the transmission data requires HDCP support, the transmitter and receiver begin authentication and key exchange over an auxiliary channel (AUX).

도 11은 Km이 저장되어 있지 않은 수신기와의 인증 및 키 교환 과정을, 도 12는 Km이 저장되어 있는 수신기와의 인증 및 키 교환 과정을 도시한 것이다.11 illustrates an authentication and key exchange process with a receiver that does not store Km, and FIG. 12 illustrates an authentication and key exchange process with a receiver that stores Km.

첫 번째 순서로 송신기가 64bits 크기의 난수 Rtx를 생성한다. 그 후 송신기의 정보를 담고 있는 24bits 값 TxCaps와 함께 Rtx를 수신기로 AUX를 통해 전송한다. 수신기에서는 이 메시지(여기서 송신기와 수신기가 AUX를 통해 교환하는 데이터를 메시지라 한다.)를 읽으면 64bits 크기의 난수 Rrx생성하고 수신기 인증서와 수신기의 정보를 담고 있는 24bits 값 RxCaps를 Rrx와 함께 송신기로 전송한다.In the first order, the transmitter generates a random number R tx of 64 bits. The R tx is then sent to the receiver via AUX with a 24-bits value TxCaps containing the transmitter's information. When the receiver reads this message (here, the data exchanged between the transmitter and the receiver via AUX is called a message), it generates a 64-bit random number R rx and sends a 24-bit value RxCaps containing the receiver's certificate and the receiver's information together with R rx. To send.

송신기에서는 수신기로 메시지를 보내고부터 100ms 뒤에 수신기로부터 메시지를 읽고 수신기의 ID가 수신기 ID 리스트에 있는지 확인한다. 만약 수신기가 리스트에 있다면 해당 ID의 Km, m, Ekh(Km)을 읽는다. 만약 수신기가 리스트에 없다면 인증서의 서명을 검증한다. 인증서의 내용은 표 1과 같고, 서명 검증 과정은 도 13과 같다.The transmitter reads the message from the receiver 100ms after sending the message to the receiver and checks whether the receiver ID is in the receiver ID list. If the receiver is in the list, read the K m , m, E kh (K m ) of the corresponding ID. If the receiver is not in the list, verify the signature of the certificate. The contents of the certificate are shown in Table 1, and the signature verification process is shown in FIG.

이름name 크기(bits)Bits Bit positionBit position 기능function Receiver IDReceiver ID 4040 4175:41364175: 4136 수신기 고유의 ID이며 20개의 1과 20개의 0으로 구성되어 있다.Receiver-specific ID, consisting of 20 1s and 20 0s. Receiver
Public Key
Receiver
Public Key
10481048 4135:30884135: 3088 HDCP 수신기의 고유한 RSA 공개키이며 흔히 kpubrx로 명명한다. 첫 1024bits는 n이며 다음 24bits는 e이다.The unique RSA public key of the HDCP receiver, commonly named kpub rx . The first 1024 bits are n and the next 24 bits are e.
Reserved2Reserved2 44 3087:30843087: 3084 0x0 혹은 0x1의 값을 가진다.It has a value of 0x0 or 0x1. Reserved1Reserved1 1212 3083:30723083: 3072 0x000값을 가진다.It has a value of 0x000. DCP LLC
Signature
DCP LLC
Signature
30723072 3071:03071: 0 위 인증서의 내용을 보안 서명한 값이다. PKCS #1 V2.1: RSA Cryptography Standard에 정의된 RSASSA-PKCS1-v1_5 서명법칙을 따른다.This is the security signed value of the above certificate. PKCS # 1 V2.1: Follows the RSASSA-PKCS1-v1_5 signature rule defined in the RSA Cryptography Standard.

인증서의 하위 3072bits는 인증서의 서명이며 이 서명은 인증서의 상위 1104bits를 해시 함수 계산한 값을 DCP LLC의 개인키로 RSA 암호화 한 값이다. 따라서 올바른 인증서 서명이라면 DCP LLC의 공개키로 RSA 복호화 했을 때 그 하위 256bits 값이 인증서의 상위 1104bits를 해시 함수 계산한 값과 동일하게 된다. 올바른 인증서 서명이 아니라면 인증과정을 중단하고 인증시작 전 으로 돌아간다.The lower 3072bits of the certificate is the signature of the certificate, which is RSA-encrypted with the hash function of the upper 1104bits of the certificate with the private key of the DCP LLC. Therefore, if the certificate is signed correctly, when RSA decrypted with DCP LLC's public key, the lower 256bits value is the same as the hash function calculated from the upper 1104bits of the certificate. If the signature is not correct, it stops the authentication process and goes back to before authentication.

서명 검증이 성공하면 128 bits 크기의 난수 Km을 생성하고 수신기의 공개키를 이용하여 RSA 암호화하고 암호화된 Km(Ekpub(Km))을 수신기로 전송한다. 또한 Km을 입력키로 하여 AES를 통해 128bits 키 dkey0, dkey1을 생성한다. 이것을 입력키로 하여 HMAC-SHA256을 통해 256bits 값 H를 생성한다.If the signature verification succeeds, it generates a 128-bit random number K m , RSA encryption using the receiver's public key, and sends the encrypted K m (E kpub (K m )) to the receiver. Also generates a key 128bits dkey0, dkey1 via AES with a key input for K m. Use this as an input key to generate a 256-bit value H through HMAC-SHA256.

수신기에서는 Ekpub(Km)을 읽은 뒤 수신기의 개인키로 복호화하여 Km을 구하고 송신기와 같은 방법으로 dkey0, dkey1을 생성한다. 이 것을 입력키로 하여 HMAC-SHA256을 통해 256bits 값 H'을 생성하고 이 값을 송신기로 전송한다. 그 뒤 수신기의 개인키를 이용하여 해시함수 SHA256을 통해 kh를 생성하고 이 것을 입력키로 하여 m을 AES 연산을 한 값을 Km과 XOR 연산하여 Ekh(Km)을 생성한다. 여기서 m은 Rtx 뒤에 Rrx을 붙인 128bits 수이다.The receiver reads E kpub (K m ), decrypts it with the receiver's private key, obtains K m , and generates dkey0 and dkey1 in the same way as the transmitter. Using this as the input key, create a 256-bit value H 'through HMAC-SHA256 and send this value to the transmitter. After that, k h is generated through the hash function SHA256 using the receiver's private key, and E kh (K m ) is generated by performing XOR operation with K m on the AES operation of m using the input key. Where m is R tx 128-bits followed by R rx .

송신기는 Ekh(Km)을 전송한 뒤 수신기의 ID가 시스템 재개가능성 메시지에 포함되어 있는지 확인하고 만약 포함되어 있다면 인증과정을 중단하고 인증시작 전으로 돌아간다. 만약 포함되어 있지 않다면 수신기에서 H'을 생성하기까지 대기했다가 H'을 읽고 난 뒤 자신이 생성한 H와 같은지 비교한다. 만약 같다면 수신기가 Ekh(Km)을 생성할 때까지 대기했다가 Ekh(Km)을 읽는다. 그 뒤 수신기의 ID와 Km, m, Ekh(Km)을 수신기 ID 리스트에 저장하고 지역성 검사를 시작한다. 만약 H와 H'이 같지 않거나 대기 시간이 초과되면 인증과정을 중단하고 인증시작 전으로 돌아간다.After transmitting E kh (K m ), the transmitter checks whether the receiver's ID is included in the system resumability message, and if so, stops the authentication process and returns to the start of authentication. If not, wait until the receiver generates H ', read H', and compare to see if it's the same as H. If the same face to which the receiver has to wait for the generation of E kh (K m) reads the E kh (K m). The receiver's ID, K m , m, and E kh (K m ) are then stored in the receiver ID list and the locality check is started. If H and H 'are not equal or the waiting time is exceeded, the authentication process stops and the process returns to before the authentication starts.

송신기가 수신기의 ID를 초기에 수신기 ID 리스트에 가지고 있는 경우 해당 ID의 Km, m, Ekh(Km)을 읽고 Ekh(Km)과 m을 수신기로 전송한다. 수신기는 이 Ekh(Km)와 m을 이용하여 AES를 통해 Km을 구하고 Km을 입력키로 하여 AES를 통해 128bits 키 dkey0, dkey1을 생성한다. 이 것을 입력키로 하여 HMAC-SHA256을 통해 256bits 값 H'을 생성하고 이 값을 송신기로 전송한다.If the transmitter initially has the ID of the receiver in the receiver ID list, it reads K m , m, E kh (K m ) of the corresponding ID, and transmits E kh (K m ) and m to the receiver. The receiver generates a 128bits key dkey0, dkey1 via AES to obtain the K m via AES using the E kh (K m) and the m key inputs for K m. Using this as the input key, create a 256-bit value H 'through HMAC-SHA256 and send this value to the transmitter.

송신기는 Ekh(Km)과 m을 전송한 뒤 수신기의 ID가 시스템 재개가능성 메시지에 포함되어 있는지 확인하고 만약 포함되어 있다면 인증과정을 중단하고 인증시작 전으로 돌아간다. 만약 포함되어 있지 않다면 수신기에서 H'을 생성하기까지 대기했다가 H'을 읽고 난 뒤 자신이 생성한 H와 같은지 비교한다. 만약 같다면 지역성 검사를 시작하고 만약 H와 H'이 같지 않거나 대기 시간이 초과되면 인증과정을 중단하고 인증시작 전으로 돌아간다.After transmitting E kh (K m ) and m, the transmitter checks whether the receiver's ID is included in the system resumability message, and if so, stops the authentication process and returns to before authentication. If not, wait until the receiver generates H ', read H', and compare to see if it's the same as H. If it is the same, start the locality test and if H and H 'are not equal or the waiting time is exceeded, the authentication process is stopped and the process returns to before the authentication is started.

Figure 112017126682142-pat00007
Figure 112017126682142-pat00007

인증 및 키 교환 과정에서 암호 알고리즘의 입력과 결과는 위와 같다. 여기서 왼쪽 항은 "알고리즘의 결과값", 오른쪽 항은 "알고리즘(입력값, 입력키)"이다.The input and result of the encryption algorithm in the authentication and key exchange process are as above. The left term is "the result of the algorithm" and the right term is "the algorithm (input value, input key)".

(5) 지역성 검사(Locality Check)(5) Locality Check

도 14는 지역성 검사 과정을 도시한 것이다.14 illustrates a locality testing process.

도 14를 참조하면, 인증 및 키 교환이 성공하면 송신기는 64bits 크기의 난수 Rn을 생성하고 수신기로 전송한다. 그 뒤 Rn을 입력으로 하여 HMAC-SHA256을 통해 해시코드 L을 생성한다. 수신기는 송신기로 전송받은 Rn으로 송신기와 같은 방법을 통해 해시코드 L'을 생성한다. 송신기는 Rn을 전송시간으로부터 20ms 뒤에 수신기로부터 L'을 읽고 L과 비교하여 같은지를 판단한다.Referring to FIG. 14, if authentication and key exchange are successful, the transmitter generates a 64-bit random number R n and transmits it to the receiver. Then R n is input to generate a hash code L through HMAC-SHA256. The receiver generates a hash code L 'using the same method as the transmitter with R n received from the transmitter. The transmitter reads the L 'from the receiver after the 20ms R n from the transmission time is determined is the same as compared to L.

위 과정에서 알 수 있듯이 송신기에서 Rn을 보내고 짧은 시간 안에 수신기로부터 정상적인 L'을 읽을 수 있느냐를 판단하여 송신기와 수신기가 서로 적절한 거리 안에 존재하는지를 판단한다. 만약 L과 L'이 같다면 지역성 검사가 성공한 것이고 세션 키 교환을 시작한다. 하지만 L과 L'이 같지 않다면 인증과정을 중단하고 인증시작 전으로 돌아간다.As can be seen in the above process, it is determined whether the transmitter and the receiver are within a proper distance from each other by determining whether the transmitter sends R n and can read a normal L 'from the receiver in a short time. If L and L 'are equal, the locality check is successful and the session key exchange begins. However, if L and L 'are not the same, the authentication process is aborted and the process goes back to the start of authentication.

여기서 L과 L'은 수학식 2를 통해 계산된다.Where L and L 'are calculated through Equation 2.

[수학식 2][Equation 2]

Figure 112017126682142-pat00008
Figure 112017126682142-pat00008

왼쪽 항은 "알고리즘의 결과값", 오른쪽 항은 "알고리즘(입력값, 입력키)"이며 [63:0]은 하위 63비트에서 0까지의 값을 말한다.The left term is "the result of the algorithm", the right term is the "algorithm (input value, input key)" and [63: 0] is the value from the lower 63 bits to zero.

(6) 세션 키 교환(SKE)(6) session key exchange (SKE)

지역성 검사가 성공하면 송신기는 64bits 크기의 난수 Riv와 128bits 크기의 세션 키 KS를 생성한다. 그리고 dkey0과 같은 방법으로 dkey2를 생성하고 dkey2를 통해 KS를 암호화한다. 암호화된 KS를 Riv와 함께 수신기로 보내고 수신기는 암호화된 KS를 송신기와 같은 방법으로 복호화하여 KS를 복원한다.If the locality check succeeds, the transmitter generates a 64-bit random number R iv and a 128-bit session key K S. We then create dkey2 in the same way as dkey0 and encrypt K S with dkey2. Sending the encrypted K S to a receiver R iv together with the receiver to decrypt the encrypted K S in the same way as the transmitter to recover the K S.

Figure 112017126682142-pat00009
Figure 112017126682142-pat00009

인증 및 키 교환 과정에서 암호 알고리즘의 입력과 결과는 위와 같다. 여기서 왼쪽 항은 "알고리즘의 결과값", 오른쪽 항은 "알고리즘(입력값, 입력키)"이며 [63:0]은 하위 63비트에서 0까지의 값을 말한다.The input and result of the encryption algorithm in the authentication and key exchange process are as above. The left term is the result of the algorithm, the right term is the algorithm (input value, input key) and [63: 0] is the value from the lower 63 bits to 0.

(7) 재개가능성 검사(7) Resumability test

이론적으로 HDCP가 지원되는 수신기는 절대 개인키가 공개되지 않으며 신뢰성을 가지지만 간혹 개인키가 공개되거나 올바르지 않은 HDCP 수신기가 존재할 수도 있다. 이런 수신기와의 통신을 막기 위해서 DCP LLC에서 제공하는 시스템 재개가능성 메시지가 존재하며 도 15와 같이 구성되어 있다.Theoretically, receivers that support HDCP are never disclosed and have a reliable private key, but sometimes there may be an HDCP receiver whose private key is disclosed or incorrect. In order to prevent communication with such a receiver, a system resumability message provided by DCP LLC exists and is configured as shown in FIG. 15.

HDCP 송신기는 시스템 재개가능성 메시지를 가지고 있으며 인증과정 중에 수신기가 재개가능성 메시지의 revocation list에 있는지 확인하고 만약 있다면 올바르지 않은 HDCP 수신기이기 때문에 인증을 중단한다. 이 시스템 재개가능성 메시지를 읽을 때에는 이 메시지가 올바른지 판단해야 하기 때문에 메시지 하단의 DCP LLC 서명과 메시지 내용을 검증하는 과정을 거친다. 그 과정은 AKE에서 수신기 인증서를 검증하는 과정과 일치하다.The HDCP sender has a system resumability message and during the authentication process it checks to see if the receiver is on the revocation list of the resumability message and if so, suspends authentication because it is an invalid HDCP receiver. When reading this system resumability message, it is necessary to determine if the message is correct, so verify the DCP LLC signature at the bottom of the message and verify the content of the message. The process is consistent with the process of verifying the receiver certificate in AKE.

(8) DPCP 입출력(8) DPCP input and output

디스플레이포트 수신기는 보조채널(AUX)에 DPCD 메모리가 존재하여 송신기의 상태와 수신기의 상태를 저장하고 서로 메시지를 교환할 수 있다. 송신기가 AUX를 통해 수신기의 DPCD에 메시지를 쓰고 읽는 과정으로 메시지 교환을 하며 각 메시지마다 저장 위치가 지정되어 있다.The DisplayPort receiver has a DPCD memory in the auxiliary channel (AUX) to store the state of the transmitter and the state of the receiver and exchange messages with each other. The sender exchanges messages by writing and reading messages to the receiver's DPCD via AUX, with a storage location for each message.

(9) CP IRQ 인터럽트(9) CP IRQ interrupt

인증과정 중 송신기는 수신기로부터 최소 3번, 최대 4번 메시지를 읽어 오는데 그 중 <AKE_Send_Cert>와 <LC_Send_L_prime>은 송신기가 메시지 전송 후 일정시간 뒤에 일방적으로 DPCD에서 읽고 <AKE_Send_H_prime>과 <AKE_Send_Pairing_Info>의 경우 수신기에서 IRQ 인터럽트를 발생시키고 나면 송신기가 DPCD에서 읽는다.During the authentication process, the transmitter reads the message at least 3 times and 4 times from the receiver. Among them, <AKE_Send_Cert> and <LC_Send_L_prime> are read unilaterally from the DPCD after the transmitter sends a message for a certain time, and in case of <AKE_Send_H_prime> and <AKE_Send_Pairing_Info>. After the receiver generates an IRQ interrupt, the transmitter reads from the DPCD.

디스플레이포트 수신기는 자신의 상태를 디스플레이포트 송신기에게 알리기 위해 핫플러그디텍트(HPD) 라인을 짧은 시간동안 그라운드로 다운시켰다가 올리는 IRQ 인터럽트라는 방법을 사용하는데 그 중 HDCP가 필요한 부분에서 사용하는 것을 CP IRQ 인터럽트라 한다. 송신기는 IRQ 인터럽트를 감지하면 DPCD 메모리의 RxStatus 바이트를 읽고 바이트 값에 따라서 적절한 행동을 한다. 수신기는 송신기가 RxStatus 바이트를 읽고 난 뒤 RxStatus 바이트를 0으로 바꾼다.DisplayPort receivers use a method called IRQ interrupt, which shortens the Hot Plug Detect (HPD) line to ground for a short time and then raises it to notify DisplayPort transmitter of its status. Called IRQ interrupt. When the transmitter detects an IRQ interrupt, it reads the RxStatus byte in DPCD memory and acts on the byte value. The receiver changes the RxStatus byte to 0 after the transmitter reads the RxStatus byte.

CP IRQ 인터럽트는 인증과정이 끝난 이후에 데이터 완전성이 좋지 않은 경우 발생되어 인증과정이 재시작할 수 있도록 한다.The CP IRQ interrupt is generated after the authentication process has completed and the data integrity is not good enough to allow the authentication process to restart.

암호 블록(Cipher Block)Cipher Block

도 16은 디스플레이포트용 HDCP 내 암호 블록의 구조를 도시한 것이다.Figure 16 illustrates the structure of a cipher block in HDCP for DisplayPort.

인증 블록에 의해 모든 인증과정이 끝나면 암호 블록에서 세션 키 KS를 이용해 암호 데이터열을 만들고 전송 데이터와 XOR 하여 암호화 한다. 이 과정에서 AES 암호 알고리즘이 사용된다. 암호 블록은 암호화 상태 신호를 감지하고 암호화 여부를 결정하는 암호화 제어부와 암호 데이터열을 생성하는 암호화 구조체로 구성되어 있다. 수신기의 암호화 제어부는 암호화 상태 신호를 감지하는 기능 이외에도 데이터 완전성을 검사하여 완전성 결핍 신호를 생성하는 기능도 한다.After all authentication process is completed by the authentication block, the cipher block uses the session key K S to create a cipher data string and encrypts it by XORing with the transmitted data. AES encryption algorithm is used in this process. The encryption block is composed of an encryption control unit that detects an encryption status signal and determines whether to encrypt, and an encryption structure that generates an encryption data string. In addition to detecting the encryption status signal, the encryption control unit of the receiver also functions to check data integrity and generate a lack of integrity signal.

디스플레이포트의 메인 링크(Main Link)는 데이터를 전송하는 레인 수에 따라 1-lane, 2-lane, 4-lane 이 있고 이 레인 수에 따라 매 링크클록마다 XOR 되는 전송 데이터의 크기가 달라진다. 예로 1-lane에서 데이터가 전송되면 매 링크클록마다 8bits의 암호 데이터가 전송 데이터와 XOR 된다. 이 경우 AES는 16번의 링크클록마다 하나의 암호 데이터열을 생성한다. 전송 데이터가 8bits의 암호 데이터와 XOR되면 다음 전송 데이터는 암호 데이터열의 다음 8bits의 데이터와 XOR 된다.DisplayPort's Main Link has 1-lane, 2-lane, and 4-lane according to the number of lanes transmitting data, and the size of transmitted data is XORed at every link clock according to the number of lanes. For example, if data is transmitted in 1-lane, 8 bits of encrypted data is XORed with the transmitted data for each link clock. In this case, AES creates one encrypted data string every 16 link clocks. When the transmission data is XORed with 8 bits of encrypted data, the next transmission data is XORed with the next 8 bits of data of the encryption data string.

(1) 암호화 구조체(1) cryptographic structure

암호화 구조체는 AES의 카운터모드(AES-CTR)를 사용하며 원리는 다음과 같다.The encryption structure uses the AES counter mode (AES-CTR) and the principle is as follows.

카운터모드는 초기 입력을 받고 암호 알고리즘의 출력이 생성될 때마다 입력 값에 1을 더하고 다음 출력을 생성하는 구조이다. 알고리즘 출력 값인 암호 데이터열과 원본 데이터를 XOR 연산하여 암호화 한다. 이런 식으로 원본 데이터와 XOR 연산되는 데이터를 계속 바꿈으로써 암호키와 원본 데이터를 알기 어렵게 한다. AES-CTR은 이 카운터모드의 동작원리를 따르는데 그때의 암호 알고리즘이 AES인 구조이다.The counter mode is a structure that adds 1 to the input value and generates the next output each time the initial input is received and the output of the encryption algorithm is generated. The encryption data string, which is the algorithm output value, and the original data are encrypted by XOR operation. In this way, the encryption key and the original data become difficult to know by continuously changing the original data and the XOR operation data. AES-CTR follows the operation principle of this counter mode, and the encryption algorithm at that time is AES.

도 17은 암호화 구조체 블록도를 도시한 것이다.17 illustrates a cryptographic structure block diagram.

도 17을 참조하면, 암호화 구조체는 AES의 키로 KS와 128bits 크기의 상수 lc128을 XOR 연산한 값을 사용하며 입력으로 Riv뒤에 64bits 크기의 카운터 수를 붙인 값을 사용한다. 이 카운터 수는 HDCP 인증과정이 끝난 직후 0으로 초기화 되고 암호 데이터열이 생성될 때마다 1씩 증가한다. 암호 데이터열 생성주기는 링크클록에 의존하며 메인 링크의 레인 수가 많아지면 비례하여 짧아진다.Referring to FIG. 17, the encryption structure uses a value obtained by performing an XOR operation on a constant lc128 having a size of K S and 128 bits as an AES key, and using a value obtained by adding a counter number having a size of 64 bits after R iv as an input. This counter is initialized to zero immediately after the HDCP authentication process and increments by 1 each time a cryptographic data sequence is created. The cipher data string generation cycle is dependent on the link clock and becomes shorter in proportion to the number of lanes in the main link.

(2) 암호화 상태 신호(2) encryption status signal

HDCP 인증블록에서 인증과정을 모두 마치면 디스플레이포트 송신기의 SR 생성 블록에서 SR을 CPSR로 바꾼다. 여기서 SR은 메인 링크로 전송되는 컨트롤 데이터로 Enhanced Framing Mode인 경우 0x1c7c7c1c(SR,BS,BS,SR)의 값을 가진다. CPSR은 0x1c3c3c1c(SR,CP,CP,SR)의 값을 가지며 HDCP 암호 블록의 암호화 제어부는 이 값을 감지하여 인증과정이 모두 마쳤음을 인지한다. CPSR이 전송되면 그 다음 메인 링크 데이터는 CPSR 대신 SR이 전송될 때까지 암호화된다. SR이 전송되더라도 암호화 구조체의 암호 데이터열과 카운터 수는 초기화 되지 않고 기존의 값을 계속 유지한다. CPSR이 다시 전송되면 기존의 값부터 시작하여 암호화를 계속 진행한다.After completing the authentication process in the HDCP authentication block, the SR is changed to CPSR in the SR generation block of the DisplayPort transmitter. Here, SR is control data transmitted to the main link and has a value of 0x1c7c7c1c (SR, BS, BS, SR) in Enhanced Framing Mode. CPSR has a value of 0x1c3c3c1c (SR, CP, CP, SR), and the encryption control unit of the HDCP cipher block detects this value and recognizes that the authentication process is completed. Once the CPSR is sent, the next main link data is encrypted until the SR is sent instead of the CPSR. Even if the SR is transmitted, the cipher data string and the counter number of the encryption structure are not initialized and the existing value is maintained. When the CPSR is sent again, encryption continues, starting with the old value.

(3) 데이터 안전성 검사(3) data safety check

HDCP는 암호화 방법으로 카운터모드를 사용하기 때문에 송신기와 수신기의 카운터가 조금만 달라도 암호화된 데이터가 복원되지 않는다. 이런 문제를 해결하기 위해 HDCP 수신기의 암호 블록은 메인 링크의 데이터 완전성을 검사해야 한다. 일정 크기의 데이터가 전송될 때까지 연속적으로 데이터가 제대로 복원되지 않으면 송신기와 수신기의 카운터가 맞지 않는 것으로 판단하고 CP IRQ 인터럽트를 통해 HDCP 송신기에게 이 상황을 알린다. HDCP 송신기는 이 신호를 받으면 새로 인증과정을 시작하고 기존의 키 값들과 카운터를 초기화한다.Because HDCP uses counter mode as an encryption method, even slight differences in the counters of the transmitter and receiver do not restore encrypted data. To solve this problem, the cipher block of the HDCP receiver should check the data integrity of the main link. If the data is not restored correctly until a certain amount of data is transmitted, the transmitter and receiver counters are not matched and the HDCP transmitter is notified of the situation via CP IRQ interrupts. Upon receiving this signal, the HDCP transmitter starts a new authentication process and initializes the existing key values and counters.

HDCP 수신기는 복원된 VB-ID 바이트의 Bit 5 값을 읽고 이 비트가 일정한 시퀀스(0x531F)와 연속적으로 다른 값을 띠면 링크 완전성 검사 실패로 판단한다. 2프레임 동안 연속적으로 링크 완전성 검사 실패가 되면 데이터 완전성 검사 실패로 판단하고 암호화 불가 상태로 바뀐다. 이때 CP IRQ 인터럽트가 발생하게 된다.The HDCP receiver reads the Bit 5 value of the recovered VB-ID byte and determines that the link integrity check failed if this bit has a value that is continuously different from the constant sequence (0x531F). If the link integrity check fails continuously for two frames, it is determined that the data integrity check failed and is changed to the non-encryptable state. At this time, CP IRQ interrupt is generated.

VB-ID 바이트의 구성은 표 2와 같다.The configuration of the VB-ID byte is shown in Table 2.

이름name Bit FieldBit field 정의Justice VerticalBlanking_FlagVerticalBlanking_Flag 00 이 비트는 마지막 active line의 끝에서 1이 되고 vertical blanking period 동안 1을 유지한다. 이 비트는 video stream이 없을 때에도 1이 된다.This bit becomes 1 at the end of the last active line and remains 1 for the vertical blanking period. This bit is 1 even when there is no video stream. FieldID_FlagFieldID_Flag 1One 이 비트는 top field의 마지막 active line 바로 뒤에 0이 된다. bottom field의 마지막 active line 바로 뒤에 1이 된다.This bit is zero immediately after the last active line of the top field. It is 1 immediately after the last active line in the bottom field. Interlace_FlagInterlace_flag 22 이 비트는 main stream이 interlaced video인 경우 1이 된다. non-interlaced video이거나 video가 없으면 0이 된다.This bit is 1 when the main stream is interlaced video. Non-interlaced video or zero if no video. NoVideoStream_FlagNoVideoStream_Flag 33 이 비트는 이전의 BS가 video stream이 전송되지 않을 때 추가된 경우 일 때 1이 된다. 이 비트가 1이면 Mvid 7:0 값은 반드시 "don't care"이 되어야 한다.This bit is 1 when the previous BS was added when the video stream was not transmitted. If this bit is 1, the Mvid 7: 0 value must be "don't care". AudioMute_FlagAudioMute_Flag 44 이 비트는 audio가 mute 되었을 때 1이 된다.This bit is 1 when audio is muted. HDCP SYNC DETECTHDCP SYNC DETECT 55 HDCP 동작에 따라 값을 가지며 특정 시퀀스의 비트 값을 가진다.It has a value according to the HDCP operation and has a bit value of a specific sequence. RESERVEDRESERVED 7:67: 6 모두 0이다.All zeros.

이하에서는 디스플레이포트 용 HDCP의 설계에 대해 설명한다. 더불어 인증 블록의 제어부를 상태 머신에서 8051 MCU로 변경했을 때 이점과 FPGA를 이용해 설계 시 PC에서 8051 MCU로 프로그램 코드를 전송하기 위한 PC to MCU 모듈의 설계에 대해 설명한다.Hereinafter, the design of the HDCP for DisplayPort will be described. In addition, it describes the benefits of changing the control block of the authentication block from the state machine to the 8051 MCU and explains the design of the PC to MCU module for transferring program code from the PC to the 8051 MCU when designing with an FPGA.

인증 블록 설계Authentication block design

디스플레이포트 송신기 용 HDCP의 인증 블록은 도 18과 같이 설계하며 다음과 같이 동작한다. 제어부 인터페이스가 제어부로부터 동작신호를 받고 동작신호에 따라 인증 블록 내 다른 세부 블록들을 제어한다. 또한 각 알고리즘에서 나온 값들을 연산하고 현재 인증단계에 따라 메시지로 묶는다. 각 알고리즘 블록은 각각 키와 입력을 받아 출력 값을 생성하고 저장한다. 내부 메모리는 수신기 ID 리스트(RxID_list)와 시스템 재개가능성 메시지(SRM)을 저장하고 있으며 수신기 ID 리스트에 대한 읽기/쓰기 신호와 SRM에 대한 읽기/쓰기 신호를 개별적으로 받는다. 난수 생성기는 발진기를 이용하여 128bits 길이의 난수를 생성한다. 메시지 인터페이스는 생성된 메시지를 AUX 패킷으로 변경하여 디스플레이포트의 AUX 블록 내 링크 폴리시 메이커로 출력한다.The authentication block of the HDCP for the DisplayPort transmitter is designed as shown in FIG. 18 and operates as follows. The controller interface receives the operation signal from the controller and controls other detailed blocks in the authentication block according to the operation signal. It also computes the values from each algorithm and binds them into messages according to the current authentication level. Each algorithm block takes keys and inputs, respectively, to generate and store output values. The internal memory stores the receiver ID list (RxID_list) and the system resumability message (SRM), and receives the read / write signal for the receiver ID list and the read / write signal for the SRM separately. The random number generator uses an oscillator to generate 128 bits long random numbers. The message interface converts the generated message into an AUX packet and outputs it to the link policy maker in DisplayPort's AUX block.

디스플레이포트 수신기 용 HDCP의 인증 블록은 도 19와 같이 설계한다. 송신기 용 HDCP 인증 블록과는 내부 메모리를 제외하면 대칭적인 구조이며 송신기 용 HDCP 인증 블록과 다르게 복호용 RSA 알고리즘 블록이 사용된다. 또한 메시지 인터페이스는 생성된 메시지를 DPCD 메모리에 쓸 수 있도록 메시지 데이터와 함께 DPCD 메모리 제어 신호를 출력한다.The authentication block of the HDCP for the DisplayPort receiver is designed as shown in FIG. It is a symmetrical structure except for the internal memory with the HDCP authentication block for the transmitter. Unlike the HDCP authentication block for the transmitter, a decoding RSA algorithm block is used. The message interface also outputs a DPCD memory control signal with the message data so that the generated message can be written to the DPCD memory.

(1) AES 블록(1) AES block

AES 블록은 인증 블록과 암호 블록 모두 사용하고 양 블록에서 모두 동일한 AES128을 사용하고 암호 블록에서 데이터 암호화를 하는 중에 인증 블록은 AES를 사용하는 일이 없기 때문에 하나의 AES 블록이 존재하고 이 것을 양 블록이 모두 사용한다.Since the AES block uses both an authentication block and a cipher block, uses the same AES128 in both blocks, and encrypts the data in the cipher block, one AES block exists and it is both blocks because the authentication block never uses AES. I use both of these.

암호 블록에서 AES 블록은 고속의 메인 링크 클록에 따라 동작해야 하기 때문에 설계 시 데이터 처리량이 가장 중요시된다. 높은 데이터 처리량을 보장하기 위해 AES 블록은 하나의 로직 블록으로 설계된다. 즉 입력 클록 없이 입력값과 키만 입력하면 출력값을 생성한다. 이 경우 매 라운드에 해당하는 연산 블록들이 모두 필요하기 때문에 한 라운드에 해당하는 연산 블록만 만들고 매 라운드의의 연산 값을 저장하는 방법에 비해 자원 많이 사용하는 단점이 있다. 하지만 후자의 경우 FPGA 보드로 설계하였을 때 처리량이 디스플레이포트의 메인 링크 처리량에 못 미쳐서 암호화가 안 되는 문제가 발생한다. 이 외에 매 라운드에 해당하는 연산 블록들을 모두 만들고 매 라운드마다 연산 값을 저장하는 방법도 있지만 이 경우 필요이상의 높은 처리량을 가지고 많은 자원을 사용하는 문제가 있다. 따라서 AES 블록은 위의 방법으로 설계되고 출력값은 AES 블록의 후단에서 따로 클록에 따라 저장된다.In the cipher block, the AES block must operate according to the high speed main link clock, so data throughput is paramount in design. To ensure high data throughput, AES blocks are designed as one logic block. In other words, if you input only input value and key without input clock, it generates output value. In this case, since all the operation blocks corresponding to each round are required, there is a disadvantage in that it uses more resources than the method of making only one operation block and storing the operation values of each round. However, in the latter case, when the FPGA board is designed, the throughput is less than DisplayPort's main link throughput, and the encryption cannot be performed. In addition, there is a method of making all the operation blocks corresponding to each round and storing the operation value for each round, but in this case, there is a problem of using a lot of resources with higher throughput than necessary. Therefore, the AES block is designed in the above manner and the output value is stored according to the clock at the back of the AES block.

(2) HMAC-SHA256 블록(2) HMAC-SHA256 Block

HDCP 인증과정 중에는 HMAC의 일부로서가 아닌 SHA256의 동작만이 필요한 때(수신기 인증서의 서명 검증, 시스템 재개가능성 메시지 서명 검증, 수신기에서 kh를 생성할 때)가 있기 때문에 HMAC-SHA256 블록은 이 여부에 따라 SHA256 모드, HMAC 모드로 나뉘어서 동작하도록 설계한다. SHA256 모드의 경우 SHA256의 입력을 외부에서 직접 받도록 하였고 출력도 외부로 직접 나가게 된다. HMAC 모드인 경우 SHA256의 입출력은 HMAC-SHA256 블록 내부와 연결되어 HMAC의 해시함수로 동작한다. HDCP 인증과정 중에서 HMAC의 입력으로 들어가는 값은 그 길이가 AKE인 경우 112bits, Locality Check인 경우 64bits로 고정되어 있기 때문에 확장된 메시지의 하위 비트는 인증과정에 따라 고정되어 있고 해시함수가 반복되는 경우는 항상 두 번이기 때문에 이 값들은 상수로 고정한다. SHA256이 외부로 입출력이 연결되는 경우 외부로부터 반복횟수도 입력받도록 하여 입력 메시지의 길이를 판단하는 기능을 생략한다.The HMAC-SHA256 block does this because during the HDCP authentication process only the SHA256 operation is required, not as part of the HMAC (signer verification of the receiver certificate, system resumability message signature verification, and the generation of k h at the receiver). According to the design, it is divided into SHA256 mode and HMAC mode. In the case of SHA256 mode, the input of SHA256 is directly received from the outside, and the output goes directly to the outside. In HMAC mode, the input / output of SHA256 is connected to the inside of HMAC-SHA256 block and operates as a hash function of HMAC. In the HDCP authentication process, the value of HMAC input is fixed to 112 bits if the length is AKE and 64 bits for the locality check. Therefore, the lower bits of the extended message are fixed according to the authentication process and the hash function is repeated. Since these are always twice, these values are fixed as constants. When SHA256 is connected to the external I / O, the function of determining the length of the input message is omitted by receiving the repetition number from the outside.

(3) 제어부 인터페이스(3) control interface

제어부 인터페이스는 디스플레이포트 외부의 8051 MCU와 연결되어 제어신호를 받고 상태신호를 출력하도록 설계한다. 제어신호는 인증 블록의 세부 블록들의 동작을 시작하는 starting signal과 현재 인증단계를 변경하는 state signal과 전송해야 할 메시지의 종류를 나타내는 message ID signal 등으로 구성되고 상태신호는 세부 불록들의 동작 완료를 나타내는 done signal과 인증동작 중 비교하는 값들(예. H와 H' )의 일치를 나타내는 verifying signal 등으로 구성된다.The controller interface is designed to be connected to an 8051 MCU external to DisplayPort to receive a control signal and output a status signal. The control signal is composed of a starting signal for starting the operation of the detailed blocks of the authentication block, a state signal for changing the current authentication step, a message ID signal for indicating the type of message to be transmitted, and the status signal for completing the operation of the detailed blocks. Consists of a done signal and a verifying signal that indicates a match between the values being compared during authentication (eg H and H ').

MCU와 HDCP는 동작하는 클록이 다르기 때문에 제어부 인터페이스는 MCU와 통신하기 위해서 MCU의 출력이 바뀌기 전까지 출력신호를 고정하고 MCU의 출력이 바뀌면 HDCP의 클록에 동기화된 펄스 신호를 만들어 인증 블록 내 세부 블록이 제어되도록 설계한다.Since MCU and HDCP have different clocks, the controller interface freezes the output signal until the MCU's output changes to communicate with the MCU, and when the MCU's output changes, it creates a pulse signal synchronized to the clock of the HDCP to make the detailed blocks in the authentication block. Design to be controlled.

(4) 메시지 인터페이스(4) message interface

디스플레이포트 송신기 용 HDCP의 메시지 인터페이스는 송신기 인증 블록으로부터 1024bits 길이의 메시지를 입력으로 받아 현재 인증단계와 메시지 ID에 따라 접근할 DPCD 메모리의 주소를 정하고 주소값과 데이터, 메시지 길이를 디스플레이포트의 AUX 내에 있는 링크 폴리시 메이커로 출력하도록 설계한다. 링크 폴리시 메이커는 AUX에서 수신기로 전송할 메시지를 패키징하고 수신기로부터 전송된 패킷을 언패키징하는 역할을 하는 블록이다. 메시지 인터페이스에서 패키징, 언패키징을 하도록 설계하여 HDCP 메시지를 교환할 때에는 링크 폴리시 메이커가 단순히 메시지 인터페이스와 외부를 연결하는 역할을 하도록 한다.HDCP's message interface for DisplayPort transmitters accepts 1024-bits of messages from the transmitter's authentication block as inputs, addresses the DPCD memory to be accessed according to the current authentication level and message ID, and stores the address, data and message length in the DisplayPort AUX. Designed to output to a link policy maker. The link policy maker is a block that packages messages sent from the AUX to the receiver and unpacks the packets sent from the receiver. Designed to be packaged and unpackaged in the message interface, the link policy maker simply connects the message interface to the outside when exchanging HDCP messages.

디스플레이포트 수신기 용 HDCP의 메시지 인터페이스는 수신기 인증 블록으로부터 256bits 길이의 메시지를 입력받아 현재 인증단계와 메시지 ID에 따라 해당 DPCD 메모리 주소에 메시지를 입력하도록 한다. 또한 송신기로부터 메시지가 전송되어 DPCD 메모리에 저장되면 DPCD 메모리에서 메시지 인터페이스로 메시지 도착 신호가 전송되어 그때부터 메시지 인터페이스가 DPCD 메모리로부터 해당 데이터를 읽도록 한다. 송신기에서 전송되는 메시지는 여러 데이터를 포함하는 경우가 많기 때문에 메시지 도착 신호는 송신기로부터 전송되는 마지막 데이터가 저장되었을 때 발생되도록 한다.HDCP's message interface for DisplayPort receivers accepts 256bits of length from the receiver's authentication block and inputs the message into the corresponding DPCD memory address according to the current authentication phase and message ID. In addition, when a message is transmitted from the transmitter and stored in the DPCD memory, a message arrival signal is transmitted from the DPCD memory to the message interface, from which the message interface reads the data from the DPCD memory. Since the message sent from the transmitter often contains several data, the message arrival signal is generated when the last data transmitted from the transmitter is stored.

(5) 수신기 정보 블록(5) receiver information block

디스플레이포트 송신기 용 HDCP의 인증 블록에는 수신기 정보와 시스템 재개가능성 메시지가 저장되어 있는 내부 메모리가 있으며 이 두 내용은 각각 개별적인 읽기/쓰기 동작을 가지도록 설계된다. 즉 수신기 정보를 저장하는 신호가 들어오면 별다른 주소지정이 없어도 수신기 정보를 저장하는 구간에 주소를 할당하여 현재 수신기 정보 목록 마지막에 새로운 수신기 정보를 저장하는 형태이다. 하나의 수신기 정보를 저장할 때 수신기 ID, Km, Ekh(Km), m 순서대로 저장을 하며 수신기 ID의 저장여부를 판단할 때에는 저장된 수신기 ID와 현재 수신기 ID를 비트 하나씩 바로 비교하여 같지 않은 경우 빠르게 다음 수신기 ID를 비교 할 수 있도록 설계한다. 또한 메모리의 첫 주소에는 저장된 수신기 ID의 개수를 저장하고 이 개수만큼만 비교하도록 하여 필요이상의 회수로 비교하는 일이 없도록 한다.The authentication block of HDCP for DisplayPort transmitters has internal memory that stores receiver information and system resumability messages, both of which are designed to have separate read / write operations. That is, when a signal for storing receiver information is received, an address is allocated to a section for storing receiver information even if there is no specific address designation, and new receiver information is stored at the end of the current receiver information list. When storing one receiver information, the receiver ID, K m , E kh (K m ), m are stored in order. When determining whether to store the receiver ID, the stored receiver ID and the current receiver ID are directly compared by one bit and are not the same. If it is designed to be able to quickly compare the next receiver ID. In addition, the number of receiver IDs stored in the first address of the memory is stored and compared only by this number, so as not to compare more times than necessary.

(6) 시스템 재개가능성 메시지 블록(6) System Resumability Message Block

시스템 재개가능성 메시지를 저장하기 위해서 규정상 최소 5kB의 용량이 필요하기 때문에 디스플레이포트 송신기 용 HDCP 인증 블록의 내부 메모리의 하위 5kB 부분을 시스템 재개가능성 메시지 블록 영역으로 설정한다. 또한 수신기 정보 블록과 마찬가지로 revocation list에 수신기 ID가 포함되어 있는지 판단할 때에는 저장된 수신기 ID와 현재 수신기 ID를 비트 하나씩 바로 비교하여 같지 않은 경우 빠르게 다음 수신기 ID를 비교 할 수 있도록 한다. Since the minimum 5kB capacity is required to store the system resumability message, set the lower 5kB portion of the internal memory of the HDCP authentication block for the DisplayPort transmitter as the system resumability message block area. Also, like the receiver information block, when determining whether the revocation list includes the receiver ID, the stored receiver ID and the current receiver ID are directly compared bit by bit so that the next receiver ID can be quickly compared if they are not the same.

암호 블록 설계Cipher block design

HDCP의 암호 블록은 암호화 제어부와 암호화 구조체 두 개로 나누어 구성되고 디스플레이포트 송신기의 메인 링크(Main Link)단에서 SR inserter 뒤, Scrambler 전에 위치하여 scramble전에 암호화 되도록 한다. 수신기의 경우 Descrambler 뒤, stream unpacker 전에 위치한다.The cipher block of the HDCP is divided into an encryption control unit and two encryption structures, and is positioned after the SR inserter and before the scrambler at the main link of the DisplayPort transmitter to be encrypted before the scramble. The receiver is located after the descrambler and before the stream unpacker.

(1) 암호화 제어부(1) encryption control unit

인증 블록에서 세션 키 교환 단계를 완료하면 Encryption Enable signal을 디스플레이포트의 SR inserter에 보내고 SR inserter는 이것을 감지하여 SR 대신 CPSR을 생성한다. HDCP의 암호화 제어부는 메인 링크의 컨트롤 심볼을 읽어서 CPSR인지 아닌지를 판단하고 만약 CPSR이면 Cipher Enable signal을 1로 세팅한다. Cipher Enable signal이 1인 상태에서는 링크클록 카운터가 동작해서 링크클록을 카운트한다. 레인에 따라 정해진 숫자만큼(1-lane인 경우 15, 2-lane인 경우 7, 4-lane인 경우 3) 카운터 값이 올라가면 다시 0으로 초기화되고 이 카운터 값은 암호화 구조체에 들어가서 AES 결과를 저장하는 클록을 생성한다. 또한 컨트롤 심볼에서 SR이 있으면 Cipher Enable signal을 0으로 세팅하고 링크클록 카운터는 초기화되지 않은 상태에서 카운트를 중지한다. 인증 블록으로부터 Reauthentication signal이 들어오면 암호 블록을 모두 초기화한다. 또한 컨트롤 심볼은 암호화하면 안 되기 때문에 데이터 출력부분에 MUX가 존재하여 XOR 연산된 데이터와 원본 데이터 둘 중의 하나가 나갈 수 있도록 한다.When the authentication block completes the session key exchange phase, it sends an Encryption Enable signal to Displayport's SR inserter, which detects it and creates a CPSR instead of the SR. The encryption control unit of the HDCP reads the control symbol of the main link to determine whether or not it is a CPSR. If it is a CPSR, the cipher enable signal is set to 1. When the Cipher Enable signal is 1, the link clock counter operates to count the link clock. Depending on the number of lanes (15 for 1-lane, 7 for 4-lane, 3 for 4-lane 3), if the counter value goes up, it is initialized to 0 again and this counter value enters the encryption structure and stores the AES result. Generate a clock. In addition, if there is an SR in the control symbol, the Cipher Enable signal is set to 0 and the link clock counter stops counting without being initialized. When the Reauthentication signal comes from the authentication block, it initializes all the cipher blocks. In addition, since control symbols should not be encrypted, there is a MUX at the data output, so that either XOR-operated data or original data can exit.

(2) 암호화 구조체(2) cryptographic structure

도 20은 암호화 구조체의 구성을 도시한 것이다. AES128 블록의 입력에 Counter와 출력에 256bit FIFO가 연결된 형태로 메인링크의 클록에 따라 암호 데이터열을 생성하고 이 데이터열을 메인링크 데이터와 XOR 연산을 하는 동작을 한다.20 shows the configuration of an encryption structure. Counter and 256bit FIFO are connected to the input of AES128 block. It generates the cipher data string according to the clock of the main link and performs the XOR operation on the data string with the main link data.

인증 블록으로부터 Encryption Enable signal이 들어오면 암호화 구조체는 Cipher Enable 상태가 되고 링크클록을 분주하여 AES 결과를 저장하는 클록을 생성한다. 이 결과는 256bits 길이의 FIFO에 저장하고 이 FIFO가 다 차면 암호화 제어부로부터 읽는 링크클록 카운터 값으로 AES 결과를 저장하는 클록을 생성한다. 이렇게 같은 속도를 가지는 두 개의 클록을 이용하는 이유는 인증이 끝나고 데이터를 암호화하기 전에 여분의 암호 데이터열을 생성하기 위해서이다. 즉 링크클록 카운터가 동작하기 전에 미리 inputCTR = 0과 inputCTR = 1에 해당하는 암호 데이터열을 생성하고 FIFO에 저장한다.When the Encryption Enable signal comes from the authentication block, the encryption structure is in Cipher Enable state and the link clock is divided to generate a clock that stores the AES results. The result is stored in a 256-bit-long FIFO, and when this FIFO is full, a clock is generated that stores the AES result as a link clock counter value read from the cryptographic controller. The reason for using two clocks of the same speed is to generate an extra sequence of encrypted data before the data is encrypted after authentication. That is, before the link clock counter operates, a cipher data string corresponding to inputCTR = 0 and inputCTR = 1 is generated and stored in the FIFO.

암호 데이터열은 저장될 때는 128bits가 저장되고 사용될 때는 8bits씩 사용되기 때문에 FIFO 쓰기 클록과 읽기 클록이 다르게 된다. 따라서 암호 데이터열을 미리 생성하지 않으면 새로운 암호 데이터열과 링크 데이터를 XOR 연산하기 전에 연산할 암호 데이터열이 제대로 저장되지 않는 이슈가 발생한다. 이런 상황을 방지하기 위해 미리 2개의 암호 데이터열을 생성하는 방법을 사용한다.The encrypted data string is stored at 128 bits when stored and 8 bits when used, so the FIFO write clock and read clock are different. Therefore, if the cipher data string is not generated in advance, an issue occurs in which the cipher data string to be calculated is not properly stored before the XOR operation of the new cipher data string and the link data. To prevent this situation, a method of generating two encrypted data strings in advance is used.

(3) 데이터 완전성 검사 블록(3) data integrity check block

디스플레이포트 수신기 용 HDCP 암호 블록은 데이터 완전성 검사를 해야 하는데 이것은 하나의 상태 머신으로 동작이 가능하다. 상태 머신의 동작은 도 21과 같으며 VB-ID의 bit 5가 현재 링크 검증 패턴과 같은지 판단하고 그렇지 않으면 패턴 오류 카운트를 한다. 두 번의 패턴이 지나갈 때 동안 모두 패턴 오류가 되면 에러 디텍트 상태가 되고 다음 프레임에서도 같은 검사를 진행한다. 2번째 프레임에서도 위와 같은 패턴 오류가 발생하면 완전성 오류로 판단하고 인증 블록에 재인증 요청 신호를 보내고 암호화 비사용 상태가 된다. 인증 블록은 재인증 요청 신호를 받으면 DPCD 메모리의 RxStatus 값을 변경하고 CP IRQ 인터럽트를 발생시킨다. 만약 데이터 완전성 검사 도중 SR 데이터가 들어오면 바로 암호화 비사용 상태가 된다.The HDCP cipher block for DisplayPort receivers must be checked for data integrity, which can be operated as a single state machine. The operation of the state machine is shown in FIG. 21 and determines whether bit 5 of the VB-ID is equal to the current link verify pattern, otherwise a pattern error count. If both patterns pass and a pattern error occurs, an error is detected and the same check is made in the next frame. If the above pattern error occurs in the second frame, it is determined as a completeness error, a reauthentication request signal is sent to the authentication block, and the encryption is not in use. When the authentication block receives the reauthentication request signal, the authentication block changes the RxStatus value of the DPCD memory and generates a CP IRQ interrupt. If SR data comes in during data integrity checking, it is immediately disabled.

MCU 및 직렬통신 블록 설계MCU and Serial Communication Block Design

도 22는 8051이 포함된 디스플레이포트 송신용 HDCP 구조를 도시한 것이고, 도 23은 8051이 포함된 디스플레이포트 수신용 HDCP 구조를 도시한 것이다.FIG. 22 illustrates an HDCP structure for DisplayPort transmission including 8051, and FIG. 23 illustrates an HDCP structure for DisplayPort reception including 8051.

인증 블록은 암호 알고리즘 블록(AES128, HMAC-SHA256, RSA)와 난수 발생기, 메시지 인터페이스, 제어부, 내부메모리(송신기)로 이루어져있다. 암호 블록은 암호화 제어부와 암호화 구조체로 이루어져있다. 메시지 인터페이스는 인증과정에 따라 인증 블록에서 생성되는 난수, 암호 키 등을 AUX 메시지 형태로 만들어 디스플레이포트 AUX로 전달한다. RSA, AES128, HMAC-SHA256은 각 암호 알고리즘에 맞추어 입력과 암호 키를 이용해 암호화된 출력을 생성한다. 난수 발생기는 Oscillator에서 발생하는 noise를 AES128로 암호화한 값을 출력한다. 암호화 제어부는 메인링크의 컨트롤 심볼을 읽어서 암호화 구조체의 동작을 제어한다.The authentication block consists of a cryptographic algorithm block (AES128, HMAC-SHA256, RSA), a random number generator, a message interface, a controller, and an internal memory (transmitter). The cipher block consists of an encryption control unit and an encryption structure. The message interface transfers the random number and encryption key generated in the authentication block in the form of AUX message to DisplayPort AUX according to the authentication process. The RSA, AES128, and HMAC-SHA256 generate encrypted output using inputs and encryption keys for each cryptographic algorithm. The random number generator outputs AES128 encoded noise from the oscillator. The encryption control unit reads the control symbol of the main link to control the operation of the encryption structure.

HDCP 인증 블록은 상태 머신으로 동작하며 인증 블록 내부에 상태 머신 블록을 설계하여 다른 세부 블록을 제어하는 형태로 설계할 수 있다. 이때 상태 머신 블록을 외부 MCU로 대체할 수 있다. 즉 상태 머신 블록에서 제어신호가 나오는 것이 아니라 외부 MCU에서 제어 신호가 나오며 HDCP에서는 제어부 인터페이스가 존재하여 이 제어 신호를 받는 형태로 설계할 수 있다.The HDCP authentication block acts as a state machine and can be designed to control other detailed blocks by designing the state machine block inside the authentication block. The state machine block can then be replaced with an external MCU. In other words, the control signal does not come out of the state machine block, but the control signal comes from an external MCU. In the HDCP, a control interface exists so that the control signal is received.

이렇게 설계하면 첫째, 인증 블록의 동작을 변경하는 데에 용이하다. 상태 머신 블록으로 제어하는 경우 인증 블록의 제어동작이 고정되기 때문에 후에 프로토콜이 바뀌었을 경우 동작을 변경하기가 어렵다. 하지만 MCU에서 제어를 하게 되면 MCU의 프로그램코드를 변경함으로써 손쉽게 동작을 변경할 수 있다. 둘째, 설계 시 동작 설계가 용이해진다. 상태 머신 블록으로 설계하고 동작을 확인하기 위해서는 매번 합성하고 FPGA 보드 테스트를 해야 한다. MCU로 제어하는 경우 MCU와 HDCP를 같이 합성해서 FPGA 보드에 올린 뒤 MCU의 프로그램코드만 별도로 업로드 하기 때문에 실시간으로 동작을 설계하고 확인할 수 있다. 셋째, 실제 디스플레이포트의 경우 다른 디지털 인터페이스와 함께 제어되는 경우가 많기 때문에 실제로 MCU로 인해 제어된다. HDCP의 설계 시에도 제어부를 MCU로 설계함으로써 실제 디스플레이포트 환경에 최적화하기가 용이하다. MCU는 공개소스인 8051 MCU 소스를 변경하였으며 MCU에 PC to MCU 블록이 포함된 구조로 설계한다. 이 MCU가 디스플레이포트의 AUX 블록에 연결되는 구조로 전체 시스템을 구현한다.This design makes it easy to, firstly, change the behavior of the authentication block. In the case of control by the state machine block, the control operation of the authentication block is fixed, so it is difficult to change the operation when the protocol is changed later. However, if the MCU is controlled, the operation can be easily changed by changing the program code of the MCU. Second, it is easy to design the operation when designing. Designing with state machine blocks and verifying operation requires synthesis and FPGA board testing each time. In case of controlling by MCU, synthesize MCU and HDCP together on the FPGA board and upload the program code of MCU separately so that operation can be designed and verified in real time. Third, since the actual DisplayPort is often controlled along with other digital interfaces, it is actually controlled by the MCU. When designing HDCP, the controller is designed as an MCU, making it easy to optimize for actual DisplayPort environment. The MCU has changed its open source 8051 MCU source and is designed to include a PC to MCU block in the MCU. The MCU is connected to DisplayPort's AUX block to implement the entire system.

(1) 송신기용 HDCP 제어(1) HDCP control for transmitter

디스플레이 송신기 용 HDCP 인증 블록은 블록의 상태를 MCU로 출력하고 MCU로부터 제어신호를 받는다. 따라서 제어부 인터페이스를 MCU의 입출력 핀에 연결하여 각 신호를 주고받을 수 있도록 한다. MCU는 8bit의 입력 핀과 8bit의 출력 핀을 가진다. MCU의 제어 동작은 도 24와 같다.The HDCP authentication block for the display transmitter outputs the status of the block to the MCU and receives control signals from the MCU. Therefore, the controller interface is connected to the input / output pins of the MCU so that each signal can be exchanged. The MCU has an 8bit input pin and an 8bit output pin. The control operation of the MCU is shown in FIG. 24.

(2) 수신기용 HDCP 제어(2) HDCP control for receiver

디스플레이 수신기 용 HDCP 인증 블록은 송신기 용 인증 블록과 마찬가지로 블록의 상태를 MCU로 출력하고 MCU로부터 제어신호를 받는다. 따라서 송신기 용 인증 블록과 마찬가지로 제어부 인터페이스를 MCU의 입출력 핀에 연결하여 각 신호를 주고받을 수 있도록 한다. MCU는 8bit의 입력 핀과 8bit의 출력 핀을 가진다. MCU의 제어 동작은 도 25와 같다.The HDCP authentication block for the display receiver, like the authentication block for the transmitter, outputs the status of the block to the MCU and receives control signals from the MCU. Therefore, like the authentication block for the transmitter, the controller interface is connected to the input / output pins of the MCU so that each signal can be exchanged. The MCU has an 8bit input pin and an 8bit output pin. The control operation of the MCU is shown in FIG. 25.

(3) PC to MCU 직렬통신 블록(3) PC to MCU serial communication block

제안하는 HDCP에는 8051 MCU가 디스플레이포트 인터페이스 외부에서 연결되며 8051 MCU는 외부메모리에 저장된 프로그램코드에 의해 동작한다. 인증 블록내의 제어부 인터페이스가 8051 MCU의 PIN으로 연결되어 있으며 인증 블록의 상태를 상태 신호로 만들어 8051 PIN IN으로 입력하고 8051 PIN OUT으로부터 제어 신호를 받아서 인증 블록 내 세부 블록들을 제어하는 신호를 생성한다. UART통신 블록이 존재하여 PC와 UART통신을 통해 프로그램코드를 받으며 이 것을 8x65536 메모리에 저장한다. 8x65536 메모리에 저장된 값을 MCU가 프로그램코드로 인식하여 그에 따라 동작한다.In the proposed HDCP, the 8051 MCU is connected outside the DisplayPort interface, and the 8051 MCU is operated by the program code stored in the external memory. The controller interface in the authentication block is connected to the PIN of the 8051 MCU, and the status of the authentication block is made as a status signal, input to the 8051 PIN IN, and the control signal is received from the 8051 PIN OUT to generate a signal to control the detailed blocks in the authentication block. UART communication block exists to receive the program code through PC and UART communication and store it in 8x65536 memory. MCU recognizes the value stored in 8x65536 memory as program code and operates accordingly.

FPGA에 합성된 MCU 블록에 프로그램코드를 업로드 하기 위해서는 MCU 블록의 ROM에 프로그램코드를 써야 하기 때문에 PC로부터 FPGA로 프로그램코드에 해당하는 데이터가 전송되어야 한다. 또한 전송된 데이터를 MCU의 ROM에 저장하는 별도의 블록이 필요하다.In order to upload the program code to the MCU block synthesized in the FPGA, the program code must be written in the ROM of the MCU block. Therefore, data corresponding to the program code must be transferred from the PC to the FPGA. In addition, a separate block is required to store the transmitted data in the MCU's ROM.

프로그램코드의 작성은 노트패드와 무료 컴파일러인 SDCC를 사용한다. SDCC는 프리웨어로써, 간단한 리포트를 제공하고 c파일을 hex파일로 컴파일 해주고 hex파일은 ihx파일로 변환해주는 기능을 한다. OpenCore에서 제공하는 Rom_Maker 프로그램으로 ihx파일을 OP코드로 변환하여 프로그램코드로 사용한다.Program code is written using Notepad and the free compiler SDCC. SDCC is freeware that provides simple reports, compiles c files into hex files, and hex files into ihx files. Rom_Maker program provided by OpenCore converts ihx file into OP code to use as program code.

PC로부터 FPGA로 프로그램코드를 전송하기 위해서 FPGA의 UART 통신 모듈을 사용한다. 또 별도의 메모리를 생성하고 UART 통신으로 받은 데이터를 자동으로 이 메모리에 저장하는, PC to MCU 직렬통신 블록을 설계하여 전송된 데이터를 저장하도록 한다. 이 메모리를 MCU 블록의 ROM으로 사용하여 결과적으로 PC로부터 MCU로 프로그램코드를 업로드 할 수 있도록 한다. 이때 PC to MCU 직렬통신 블록의 상태 머신은 도 26과 같다.The UART communication module of the FPGA is used to transfer the program code from the PC to the FPGA. In addition, the PC to MCU serial communication block is designed to create a separate memory and automatically store data received through UART communication in this memory to store the transmitted data. This memory is used as the ROM of the MCU block so that the program code can be uploaded from the PC to the MCU. At this time, the state machine of the PC to MCU serial communication block is shown in FIG.

따라서, 제안된 HDCP는 인증 블록이 상태 머신이 아니라 MCU로 인해 제어되어 동작의 유연성을 높일 수 있다. 또한 이런 구조로 인해 설계 시 새로운 동작을 시험할 때마다 새롭게 디지털 회로를 합성할 필요 없이 실시간으로 프로그램코드를 변경하여 새로운 동작을 시험할 수 있다. 그리고 향후 최신 HDCP 표준이 발표될 때 프로그램코드 변경을 통해 동작을 추가 및 개선할 수 있으며 프로그램 코드를 변경하면 디스플레이포트 외에 HDMI와 같은 디스플레이 인터페이스와도 호환할 수 있을 것이다. 또한 제안된 암호화 구조체는 메인링크 데이터와 암호 데이터열이 서로 다른 클록으로 생성됨으로 인해 XOR 연산 시 연산 딜레이로 인해 올바른 암호 데이터열이 메인링크 데이터와 연산되지 않는 문제를 해결하여 고속의 메인링크에서 안정적으로 데이터를 암호화 할 수 있다.Therefore, the proposed HDCP can increase the flexibility of operation because the authentication block is controlled by the MCU rather than the state machine. This structure also allows you to test the new behavior by changing the program code in real time without having to synthesize a new digital circuit every time you test a new behavior in the design. In the future, when the latest HDCP standard is released, program code changes can be added and improved, and changing the program code will make it compatible with display interfaces such as HDMI in addition to DisplayPort. In addition, the proposed encryption structure solves the problem that the correct encryption data string is not calculated with the main link data due to the operation delay during XOR operation because the main link data and the encryption data string are generated with different clocks, thereby making it stable in the high speed main link. Can encrypt the data.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The apparatus described above may be implemented as a hardware component, a software component, and / or a combination of hardware components and software components. For example, the devices and components described in the embodiments may include a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA), a programmable PLU (programmable). It can be implemented using one or more general purpose or special purpose computers, such as logic units, microprocessors, or any other device capable of executing and responding to instructions. The processing device may execute an operating system (OS) and one or more software applications running on the operating system. The processing device may also access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of explanation, one processing device may be described as being used, but one of ordinary skill in the art will appreciate that the processing device includes a plurality of processing elements and / or a plurality of types of processing elements. It can be seen that it may include. For example, the processing device may include a plurality of processors or one processor and one controller. In addition, other processing configurations are possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instructions, or a combination of one or more of the above, and configure the processing device to operate as desired, or process it independently or collectively. You can command the device. The software and / or data may be embodied in any type of machine, component, physical device, computer storage medium or device in order to be interpreted by or provided to the processing device or to provide instructions or data. have. The software may be distributed over networked computer systems so that they may be stored or executed in a distributed manner. Software and data may be stored on one or more computer readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The method according to the embodiment may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. In this case, the medium may be to continuously store a program executable by the computer, or to temporarily store for execution or download. In addition, the medium may be a variety of recording means or storage means in the form of a single or several hardware combined, not limited to a medium directly connected to any computer system, it may be distributed on the network. Examples of the medium include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, And ROM, RAM, flash memory, and the like, configured to store program instructions. In addition, examples of another medium may include a recording medium or a storage medium managed by an app store that distributes an application, a site that supplies or distributes various software, a server, or the like.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited embodiments and the drawings as described above, various modifications and variations are possible to those skilled in the art from the above description. For example, the described techniques may be performed in a different order than the described method, and / or components of the described systems, structures, devices, circuits, etc. may be combined or combined in a different form than the described method, or other components. Or even if replaced or substituted by equivalents, an appropriate result can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are within the scope of the claims that follow.

Claims (6)

디스플레이 인터페이스인 디스플레이포트(DisplayPort)의 보조채널(AUX)에 연결되어 송신기 인터페이스와 수신기 인터페이스가 HDCP(High Definition Contents Protect)를 지원하는 기기인지 인증하고 디지털 데이터의 암호화와 복호화에 필요한 암호 키를 공유하는 인증 블록; 및
상기 디스플레이포트의 메인링크(Main Link)에 연결되어 상기 암호 키를 이용하여 상기 송신기 인터페이스에서 상기 디지털 데이터를 암호화하고 상기 수신기 인터페이스에서 상기 암호화된 디지털 데이터를 복호화하는 암호 블록
을 포함하고,
상기 인증 블록을 제어하기 위한 제어부를 MCU(micro controller unit)로 구성하고,
상기 인증 블록은 상기 MCU로부터 제어 신호를 입력받고 상기 인증 블록의 상태 신호를 상기 MCU로 출력하는 제어부 인터페이스를 포함하고,
상기 인증 블록은 메시지 인터페이스를 더 포함하고,
디스플레이포트 송신기용 HDCP의 메시지 인터페이스는 인증 과정에서 생성된 메시지를 AUX 메시지 형태로 변경하여 상기 디스플레이포트의 보조채널(AUX)로 전달하고,
디스플레이포트 수신기용 HDCP의 메시지 인터페이스는 인증 과정에서 생성된 메시지를 수신기의 메모리에 입력하도록 해당 메시지 데이터와 함께 메모리 제어 신호를 출력하는 것
을 특징으로 하는 디스플레이포트용 HDCP 시스템.
It is connected to the auxiliary channel (AUX) of DisplayPort, which is a display interface, to verify that the transmitter interface and the receiver interface support HDCP (High Definition Contents Protect), and to share the encryption key for encrypting and decrypting digital data. Authentication block; And
An encryption block connected to a main link of the display port and encrypting the digital data at the transmitter interface using the encryption key and decrypting the encrypted digital data at the receiver interface
Including,
The control unit for controlling the authentication block is configured by a micro controller unit (MCU),
The authentication block includes a control unit interface for receiving a control signal from the MCU and outputting the status signal of the authentication block to the MCU,
The authentication block further comprises a message interface,
The message interface of the HDCP for the DisplayPort Transmitter converts the message generated during the authentication process into an AUX message and transmits the message to the AUX of the DisplayPort.
The message interface of HDCP for DisplayPort receivers is to output a memory control signal along with the corresponding message data to input the messages generated during authentication into the receiver's memory.
HDCP system for DisplayPort.
제1항에 있어서,
상기 MCU는 상기 디스플레이포트 외부에 연결되며 외부 메모리에 저장된 프로그램 코드에 의해 동작하는 것
을 특징으로 하는 디스플레이포트용 HDCP 시스템.
The method of claim 1,
The MCU is connected to the outside of the DisplayPort and operated by program code stored in an external memory.
HDCP system for DisplayPort.
제1항에 있어서,
상기 제어부 인터페이스는 상기 MCU의 출력이 바꾸기 전까지 출력 신호를 고정하고 상기 MCU의 출력이 바뀌면 HDCP의 클록에 동기화된 펄스 신호를 생성하는 것
을 특징으로 하는 디스플레이포트용 HDCP 시스템.
The method of claim 1,
The control unit interface is fixed to the output signal until the output of the MCU changes, and if the output of the MCU is changed to generate a pulse signal synchronized to the clock of the HDCP
HDCP system for DisplayPort.
삭제delete 디스플레이 인터페이스인 디스플레이포트(DisplayPort)의 보조채널(AUX)에 연결되어 송신기 인터페이스와 수신기 인터페이스가 HDCP(High Definition Contents Protect)를 지원하는 기기인지 인증하고 디지털 데이터의 암호화와 복호화에 필요한 암호 키를 공유하는 인증 블록; 및
상기 디스플레이포트의 메인링크(Main Link)에 연결되어 상기 암호 키를 이용하여 상기 송신기 인터페이스에서 상기 디지털 데이터를 암호화하고 상기 수신기 인터페이스에서 상기 암호화된 디지털 데이터를 복호화하는 암호 블록
을 포함하고,
상기 인증 블록을 제어하기 위한 제어부를 MCU(micro controller unit)로 구성하고,
상기 인증 블록은 상기 MCU로부터 제어 신호를 입력받고 상기 인증 블록의 상태 신호를 상기 MCU로 출력하는 제어부 인터페이스를 포함하고,
상기 암호 블록은 암호화 상태 신호를 감지하고 암호화 여부를 결정하는 암호화 제어부와, 암호 데이터열을 생성하는 암호화 구조체를 포함하고,
상기 암호화 제어부는 상기 메인링크의 컨트롤 심볼에 기초하여 상기 암호화 구조체의 동작을 제어하는 것
을 특징으로 하는 디스플레이포트용 HDCP 시스템.
It is connected to the auxiliary channel (AUX) of DisplayPort, which is a display interface, to verify that the transmitter interface and the receiver interface support HDCP (High Definition Contents Protect), and to share the encryption key for encrypting and decrypting digital data. Authentication block; And
An encryption block connected to a main link of the display port and encrypting the digital data at the transmitter interface using the encryption key and decrypting the encrypted digital data at the receiver interface
Including,
The control unit for controlling the authentication block is configured by a micro controller unit (MCU),
The authentication block includes a control unit interface for receiving a control signal from the MCU and outputting the status signal of the authentication block to the MCU,
The encryption block includes an encryption control unit for detecting an encryption status signal and determining whether to encrypt the encryption block, and an encryption structure for generating an encryption data string.
The encryption control unit controls the operation of the encryption structure based on the control symbol of the main link.
HDCP system for DisplayPort.
제5항에 있어서,
상기 암호화 구조체는 상기 메인링크의 클록에 따라 암호 데이터열을 생성하고 상기 암호 데이터열을 메인링크 데이터와 XOR 연산을 하는 동작을 하는 것
을 특징으로 하는 디스플레이포트용 HDCP 시스템.
The method of claim 5,
The encryption structure generates an encrypted data string according to a clock of the main link and performs an XOR operation on the encrypted data string with main link data
HDCP system for DisplayPort.
KR1020170175397A 2017-12-19 2017-12-19 Design of hdcp for displayport KR102029550B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170175397A KR102029550B1 (en) 2017-12-19 2017-12-19 Design of hdcp for displayport

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170175397A KR102029550B1 (en) 2017-12-19 2017-12-19 Design of hdcp for displayport

Publications (2)

Publication Number Publication Date
KR20190074042A KR20190074042A (en) 2019-06-27
KR102029550B1 true KR102029550B1 (en) 2019-10-07

Family

ID=67057317

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170175397A KR102029550B1 (en) 2017-12-19 2017-12-19 Design of hdcp for displayport

Country Status (1)

Country Link
KR (1) KR102029550B1 (en)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101743776B1 (en) * 2010-09-28 2017-06-05 엘지전자 주식회사 Display apparatus, method thereof and method for transmitting multimedia
US8856515B2 (en) * 2012-11-08 2014-10-07 Intel Corporation Implementation of robust and secure content protection in a system-on-a-chip apparatus
KR101485790B1 (en) * 2013-01-28 2015-01-28 삼성전자주식회사 source device, contents providing method using the source device, sink device and controlling method of the sink device

Also Published As

Publication number Publication date
KR20190074042A (en) 2019-06-27

Similar Documents

Publication Publication Date Title
US7900047B2 (en) Method and apparatus for encrypting data transmitted over a serial link
US11533297B2 (en) Secure communication channel with token renewal mechanism
US10164947B2 (en) Methods and apparatus for protecting digital content
US7242766B1 (en) Method and system for encrypting and decrypting data using an external agent
KR101725847B1 (en) Master key encryption functions for transmitter-receiver pairing as a countermeasure to thwart key recovery attacks
JP6030103B2 (en) Data protection apparatus and method
AU2015335689B2 (en) Efficient start-up for secured connections and related services
KR101499924B1 (en) Method, apparatus and system for pre-authentication and processing of data streams
KR101483536B1 (en) Method, apparatus and system for pre-authentication and keep-authentication of content protected ports
TWI583190B (en) Method, system and apparatus for mechanism for internal processing of content through partial authentication on secondary channel
CN106165353B (en) Efficient routing of encrypted streams using point-to-point authentication protocol
US20160380770A1 (en) System and Method for Hash-Based Data Stream Authentication
US11212671B2 (en) Method and system for securing communication links using enhanced authentication
US8245307B1 (en) Providing secure access to a secret
CN107690773B (en) System and method for secure data transfer via inter-chip frequency hopping bus
KR102029550B1 (en) Design of hdcp for displayport

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant