HDCP认证过程-收集网上的,作为记录

HDCP 是High-bandwidth Digital Content ProtectionSystem 的简称,即:高清数字内容保护系统。HDCP 是用于保护DVI(Digital Visual Interface)视频发送器和接收器之间的传输的视频信号。除此之外HDCP还可以用于DVI 视频发送器和视频转发器(Repeater)之间以及DVI视频转发器和视频接收器之间传输的视频信号的保护。本规范只涉及DVI视频发送器和接收器之间的传输的视频信号的HDCP。

 

                                        图 1

实现方法:

如图1所示,在DVI发送端和DVI接收端都有一个DVI加密器,在发送端将24位的图像数据A与DVI加密器产生的24位伪随机数B,进行异或运算,完成了加密。将得到的值A(XOR)B送入TMDS调制器调制后送出,这样在传输过程中的图像数据就被加密过了,在接收端将收到的信号进行解调,解调后的信号将再与B进行异或运算,根据逻辑运算(A(XOR)B)(XOR)B =A,这样就将图像信号A 还原出来了,完成了解密。

这个加密方法关键之处在于要保证DVI发送端和接收端的加密数 B 是实时相同的,那么HDCP系统就能正常工作了。为什么说是“实时相同的”呢?因为24位伪随机数B,是实时变化的,在每到来一个场同步信号,发送端和接收端的DVI加密器都将产生一个新的B,且发送端和接收端各自产生的新的 B 数值是相同的。如何保证发送端和接收端的B同步变化呢?如图1,我们可以看到发送端和接收端的DVI加密器硬件是相同的,要让它们输出的B 相同,那就要保证给它们的输入都相同。

如图1DVI加密器输入有 AN,Aksv,BKsv和CTL3,An是一个随机,由DVI发送端产生的, AKsv是发送端的密钥选择向量,BKsv是接收端的密钥选择向量。每次在HDCP建立时,发送端都会产生一个新的AN,之后将An和AKsv通过DDC 写到接收端,再将接收端的BKsv读到发送端。这样就完成了“密钥选择向量”的交换。使得接收端和发送端都有相同的AN,AKsv, BKsv,而CTL3其实是一个同步信号,如图1所示接收端的CTL3 是与发送端的CTL3连接在一起的。这样有了相同的输入,就可以保证有实时相同的 B了。

KEY(密钥)的来源:

不论是接收端还是发送端,都有一个唯一的KEY(密钥),公司的HDCPKEY是由技术管理部统一向DDWG购买的,且由技术管理部统一管理、发放,以保证生产的每一台机器的KEY是唯一的。生产部门根据订单的数量向技术管理部申请一定数量的KEY,并保证生产的每一台机器的KEY都是唯一的。在调试时用到的的KEY,也要单独向技术管理部申请。另外有的带HDCP的IC内部已经固化了KEY,KEY的唯一性由IC厂家来保证。

    如果DDWG在市场上发现有相同HDCP KEY的机器,那么这些KEY将被屏蔽。生产厂家也会受到相应的惩罚。

 

接收端:

对于HDCP,接收端要比发送端简单一些。而且在电视中的DVI接口中大部也只是用到接收端的部分。

硬件:

                                     图 2

1.  确保DDC通路的通畅。

因为HDCP要交换密钥选择向量等信息都是通过DDC通道来完成的。

在所有能支持HDCP 的芯片都有用于访问 HDCP 模块 的 SCL和SDA,。要保证输入口的DVI 接口的SCL和SDA 与之对应连接,因为DVI  DDC是5V电平的,如接收端芯片是3.3V 那就要进行电平转换,典型电路如图3。

 

2.       确保CTL3正确连接。

对与CTL3,一些TMDS解调芯片就带有HDCP解密功能的芯片,它在芯片内部就已经连接好了。如TI的TFP501,但是对于TMDS解调和HDCP解密模块不在同一个芯片内,如AD9887只有TMDS解调功能,而PW181内部有HDCP解密模块,就要保证AD9883的CTL3要与PW181的CTL3的脚相连接。

 

3. 确保HDCP接收端芯片能够读到正确的KEY。

    每一个KEY都是由一个40bit的KSV(密钥选择向量)和40个56bit的key值组成。共285个byte。每台接收机中的KEY都是唯一的。一般情况这KEY是存放在接收端单独的EEPROM中的,以便于生产时每台机器的烧写,一些HDCP芯片有专门的 I2C通道用于连接存放KEY的EEPROM。如TFP501、AD9880。KEY是不能以明码的方式存在EEPROM中的,以防止被盗取。所以我们必须将KYE加密后,再烧写到EEPROM中。IC厂家会提供用于加密的软件。例如AD9880 ,ADI提供了一个KEY加密程序,285byte的原始KEY经过加密后,变成了一个大约300byte大小的BIN 文件,然后我们将其烧入EEPROM中即可。用于存放BKsv的EEPROM要至少为24C04。对于TFP501,明码的加密是由IC自动完成的,我们只要将未加密的KEY直接烧入EEROM中即可。当芯片第一次上电时,TFP501会检测到EEPROM放置的是明码时,于是就会将其读出,进行加密后写回EEPROM,原来只有285个BYTE 的明码经过加密后将生成约300个BYTE 的加密码。另外还有一些带HDCP模块的芯片,如PW181,它的KEY存放在与程序共用的EEPROM中,厂家提供了一个用于加密,并将加密后的KEY烧入EEPROM中的程序。还有一种情况是带HDCP模块的IC 内部已经固化了KEY,例如SII9993,每一块芯片都已经含有了唯一的KEY。

4.热插拔电路

DVI输入口的热插拔识别脚要通过一个1K电阻上拉到5V电源,以供HDCP发送端设备检测。

软件:

HDCP的交换密钥选择向量和校验等工作都是由发送端的软件来完成的。对于接收端,软件基本上不用做什么事情。例如 TFP501就完全不用接收端的 MCU 来控制。

对于PW181,由于在切换SOURCE 时PW181内部的CTL3有时会被断开,这样就造成HDCP不同步。于是软件要将HDCP的 I2C DISABLE 后,再 ENABLE 促使发送端检测到对HDCP模块的 I2C读写出错,从而触发发送端重新发起鉴证过程,重新同步。

 

发送端硬件:

1.  确保 DDC 通道的畅通。

确保DVI线中的DDC(SDA,SCL)与主控CPU的I2C 相连。且I2C的电平必须是5V,若为3.3V则也要用图1 的电路将3.3V电平转成5V电平。这组I2C总线必须是单独的一组I2C ,不能与整机系统的I2C 共用,因为考虑到DVI的引线很长,而且要与接收设备相连,有可能出现短路等情况,独立的总线可以避免这一组I2C出现短路等情况时,不影响发送端的系统I2C,从而保证整个电路的正常工作,保证整个系统的可靠性。

2.保证主控CPU能读到正确的密钥KEY。

同接收端相同,每个KEY也是唯一的,有的也是经过加密后放置再外部的EEPROM中。而较常用的带DHCP的TMDS发送端芯片如SII170,它的KEY是由IC厂家预先固化在芯片中的。

3.       热插拔电路。

DVI中的热插拔线,与主控CPU 的一个中断请求脚(或者为IO口)相连。为了防止这个脚的损坏,要求该脚外加一个由74系列构成的缓冲器,以保护该脚(见图4)。平时为低电平,当有HDCP接收设备插上时,该脚变成高电平,于是发送端CPU能立刻知道,然后开始启动HDCP的鉴证过程。

                    


图4

发送端软件:

发送端CPU是HDCP的主控设备,HDCP的监证和校验过程都是由它来完成的。

下面详细说明发送端HDCP的过程。

A、监证过程(参见图5)

1、  打开芯片随机数发生起,生成一个伪随机An。

2、  从HDCP发送端芯片读取An和AKsv。

3、 通过DDC的I2C 通道读取接收端的BKsv。

4、 检查BKsv是否合法。

5、 将BKsv写入发送端芯片。

6、 将An和AKsv写入接收端芯片。

7、 延迟一段时间,等待双方HDCP模块计算R0。

8、 从接收芯片读出R0’,从发送芯片读出R0,比较R0’和R0是否相等。

9、 若相等则将发送端芯片加密开关打开,开始加密数据。否则从 1、重新开始。

B、检查连接完整性

1、每隔两秒种,读取发送端的R0和接收端的R0。进行比较。

2、若两R0不等,则重新发起监证过程。

猜你喜欢

转载自blog.csdn.net/qq_27516841/article/details/80365831