2024年3月24日发(作者:)

HDCP Repeater 工作模式——第一阶段

HDCP认证总共分三个阶段:

1. First Part ——协议认证,如果hdmi连接线两端的设备都有合法的Device Key Set,则第

一步通过。

2. Second Part——适用于存在Repeater的情况下,Repeater设备上报自己下游所连接的

KSVs.

3. Third Part——内容加密

首先了解这么几个单词的基本意思:

Key Selection Vector (KSV). Each HDCP Device contais a set of Device Private

Keys .A set of Device Private Keys is associated with a KSV. Each HDCP Transmitter has

assigned to it a unique KSV from all other HDCP Transmitters. Also ,echo HDCP Receiver

has assigned to it a unique KSV from all other HDCP KSV is a 40-bit binary

value.(密钥选择矢量:每个HDCP设备都包含一个KSV,KSV是一个40bit的二进制数值,

由20个0和20个1组成)

Device Private Keys. A set of Device Private Keys consists of 40 different

56-bit keys are to be protected from exposure outside of the HDCP Device.A

set of Device Private Keys is associated with a unique Key Selection Vector .(设备密钥:

每个HDCP设备都有一组40个56bit密钥组成的合集,这里面每一个密钥都必须是合法的。)

Device Key Set.

Each HDCP Devices has a Device Key Set,which consists of a set of

Device Private Keys along with the associated Key Selectin Vector.(设备密钥集:KSV与

Device Private Keys共同组成了Device Key Set)

不要刻意记中文名,容易产生误解,最好直接以英文理解这几个概念的含义。

(1)第一阶段

将设有两个HDCP设备A,B. A是Transmitter, B是Receiver。当A,B连接后,流程是这样

的:

1. A发送自己的KSV(AKsv)和一个64bit的伪随机码An给设备B; (An由HDCP加密函数

hdcpRngCipher生成 ,64-bit,每次都不一定相同)

2. B收到后,回复自己的KSV(BKsv)和REPEATER bit; (REPEATER bit是Bcaps里的第1位,

为1表明自己的repeater,为0则不是)

3. A收到BKsv和REPEATER bit后, 首先确认BKsv没有被HDCP组织撤销,且必须有20

个0和20个1组成,即必须属于合法的才能继续进行认证。图1.(图片来自网络)

图1. 初始的密钥交换验证

4. 双方都验证KSV合法后,根据对方的KSV和自己的Device Private Keys生成一个56bit

的共享密钥Km(A),km'(B).

Km计算方法:

Km = ∑AKeys Over BKsv

Km' = ∑BKeys Over AKsv

举个例子:

假设BKsv最后12位为0x5A3, 转为二进制 0101 1010 0011,第0,1,5,7,8位都是

1.(KSV总共40位,肯定是0/1各20个,这里举例只挑前12位中的1来说明)

那么Km = Akey(0) + AKey(1) + AKey(5) + AKey(7) + AKey(8) + ...+AKey(i) (把BKsv

为1所指的A的40个key中对应值相加)

最后得到一个56bit的Km

同理Km‘也是如此算的,若AB都合法,则Km=Km' 。 图2.(图片来自网络)

图2. 计算各自的Km Km'

5. 由于直接交换Km不安全,所以还会再进行一次加密运算,得到R0,R0'.

(Ks, M0, R0) = hdcpBlkCipher(Km, REPEATER||An) .这里的“||”不是与,而是类似现

行拼接字符串,把An追加的REPEATERbit的后面,所以REPEATER||An为1+64=65bit

Ks: 56-bit,会在后面加密用到。

M0: 64-bit密钥,用在认证第二部分。

R0: 16-bit,用于最终在收发双方传递,来验证设备合法性

AB双方都计算出各自的R0,R0', A读取B的R0',若R0=R0',则设备合法。图3,4.(图片

来自网络)

图3. 双方各自计算自己的R0

图4. Transmitter读取Receiver的R0'(图片来自网络)

第一阶段在R0比较后完毕,B必须在收到AKsv后的100ms内准备好R0'. A必须在发送

AKsv100ms后才能读取R0'。整个过程如图5所示。

图5. 第一阶段的握手流程