现在的位置: 首页 > 综合 > 正文

HDCP Repeater工作模式流程总结 ——第一阶段

2014年09月05日 ⁄ 综合 ⁄ 共 2291字 ⁄ 字号 评论关闭
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 Receivers.The 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 values.These 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. 第一阶段的握手流程

抱歉!评论已关闭.