首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 电子制作
基于DisplayPort接口的HDCP软件实现及应用
来源:本站整理  作者:佚名  2009-07-28 16:20:04




在中继器内部计算V’可以通过两种方式来完成,由设计在芯片内部的逻辑电路或者驱动部分软件计算来完成。硬件计算优点在于速度快,驱动程序设计简单。但是牺牲了一定的硬件电路空间和芯片功耗,不同的客户对此需求不同,所以芯片的驱动内也需要采用软件计算哈希算法。


安全哈希算法(Secure Hash Algorithm)是主要应用于数字签名标准领域定义的数字签名算法。SHA1有如下特性:不能从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。HDCP协议中V(V’)计算如下:V(V’)=SHA1(ksv_list||binfo||M0(M0’))。


KSV list存储于中继器DPCD地址0x6802C~0x6803A的FIFO中,FIFO中有15字节,每个设备的KSV是40比特,也就是5字节,所以FIFO中每次读取出来的是3个设备KSV。DisplayPort的中继器最多支持下游有127个设备,也就是说FIFO最多需要读取127/3次。每次读取完后硬件会自动清掉被读走的数据,同时用下一组KSV填满。Binfo是存储下游设备拓扑结构的16比特数据,包括拓扑深度等。M0(M0’)是64比特的私钥。也就是说计算V(V’)时,系统传输给SHA1的消息长度最大为127×40+16+64=5160(0x1428H)比特,对于长度小于2^64(0x40000000000000H)位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,这时候就会产生不同的消息摘要。 SHA1算法只接受位输入。字符串“KSV list||Binf||M0”消息摘要需转换成位字符串如下:01100001 01100010 01100011……010011010(5160位),SHA1根据这个消息来计算MD5。


(a)补位
SHA1对输入的消息必须进行补位以使其长度在对512取模以后的余数是448。如果长度已经满足对512取模后余数是448,同样需要补位。先补一个1,然后再补0,直到长度满足对512取模后余数是448。至少补一位,最多补512位。


(b) 补长度
将原始数据的长度补到已经进行了补位操作的消息后面,用一个64位的数据来表示原始消息的长度。由于HDCP中的消息程度最大可达到5160位,所以需要对过长的消息进行分块,SHA1算法中将长度超过512位的原始消息补成512的倍数。然后将整个消息分成一个一个512位的数据块,分别处理每一个数据块,从而得到消息摘要。


(c)常量定义
计算中需要定义一系列的常量字M0, M1, ... , M79,如果以十六进制给出,定义如下。

 

(d)函数定义
在SHA1中需要一系列的函数。每个函数ft(0≤t≤79)都操作32位字B,C,D(B,C,D为32位的函数形参)并且产生32位字作为输出。ft(B,C,D)定义如下。

 

(e) 计算消息摘要
SHA1使用补位和补长度后的消息来计算消息摘要。计算需要两个缓冲区,每个都由5个32位的字组成,还需要一个80个32位字的缓冲区。第一个5个字的缓冲区被标识为A,B,C,D,E。第一个5个字的缓冲区被标记为H0, H1, H2, H3, H4。80个字的缓冲区被标记为W0,W1,..., W79,另外还需要一个字的TEMP缓冲区。

                                                           
为了产生消息摘要,首先处理前面定义的16个字的数据块M1, M2,..., Mn,处理每个数据块Mi包含80个步骤。在处理每个数据块之前,缓冲区被初始化为下面的值(十六进制):

处理Mi包括以下步骤:
(I)将 Mi分成16个字W0,W1,…, W15,W0是最左边的字。
(II)对于t=16~79令

(III)令A=H0, B=H1, C=H2, D =H3, E=H4。
(IV)对于t=0~79,执行下面的循环
 ;
E=D; D=C; C=S30(B); B=A; A=TEMP;
(V)令H0=H0+A,H1=H1+B, H2=H2+C, H3=H3+D, H4=H4+E
在处理完所有的Mn后,得到一个160位的字符串,也就是最后得到的V(V’)。中继器会将V’发送给发送端,发送端通过比较本地计算的V与接收到的V’是否相等来判断认证结果。


● 协议第三步:加密完整性检测
在解密过程中,HDCP在HDMI与DisplayPort中的应用所不同。在HDMI的解密过程中,HDCP系统会每2s中进行一次连接确认,同时每128帧画面进行一次发送端和接受端同步识别码,确保连接的同步,所有这些都是由发送端发起。而在DisplayPort的解密过程中, DisplayPort的Link Layer负责确认两台设备之间的连结效能与正确的沟通,以其参数值(0=完整、1=不完整)作为沟通的语言,该参数是发送端通过辅助通道读取接收端的DPCD的某一位的值来获取,也就是说,解密的完整性验证完全是由接收端来执行的。

DisplayPort实现软件HDCP的实例
ANX9805是硅谷数模半导体公司设计的DisplayPort发送芯片,其完全符合DisplayPort 1.1a标准,支持HDCP1.3标准和NVIDIA Upstream Protocol。


接收端使用目前市场上唯一的一款带有DisplayPort接口的Dell显示器3008WFP,其DP接口支持HDCP。支持HDCP的源端设备ANX9805可以通过黑屏、蓝屏或者低画质图像的方式使不支持HDCP或者HDCP不合法的设备无法播放音视频数据,这里采用完全蓝屏的方式,如图6、图7所示。

图6 软件HDCP认证成功的图像

图7 软件HDCP认证失败图像


实际测试证明通过软件实现的HDCP占用时间与硬件HDCP在相邻的数量级,在HDCP规范中规定所有认证时间容许范围内,所以其对硬件时序无任何影响。

结论
软件实现认证的优势在于其节省芯片内部资源,从而使芯片有更高的集成度。现今对IC设计集成度的要求越来越高,所以多数厂商都希望芯片提供商能给出软件代替硬件认证的方案。本文在充分利用硬件加密系统的基础上实现了软件对数字内容的加密协议,使HDCP在实际应用中有更高的灵活性和选择性,可以根据不同要求来规划芯片驱动结构。实际测试表明其易于实现,可代替部分硬件认证模块,整个软件认证过程对芯片工作流程无时序影响,具有较高的实际应用价值。


芯片内部的硬件认证速度高于外部MCU通过控制寄存器来认证的速度,所以需要通过提高MCU与芯片之间的I2C总线速度和MCU的工作频率来减少其时序差别,这也是有待于进一步研究的工作。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:232,527.30000 毫秒