基于DVD-ROM应用的内容加扰系统的VLSI设计
引 言
DVD-ROM的视频和音频数据是经过加密编码的,加扰的源是标题密钥(Tittle Key),同时标题密钥被光盘密钥(光盘密钥)加密,主机在播放影碟的时候必须拿到这两个密钥才能顺利播放。在密钥从DVD驱动器传送到主机的过程中,为了保证数据传输通道的安全性,即保证光盘密钥和标题密钥能够被安全地传输,CSS建立了一道认证机制(Authentication Mechanism),通过总线密钥(BUSKEY)对光盘密钥和标题密钥进行加扰。由于能够有效地防止对DVD光盘的非法拷贝,CSS几乎被所有的商业DVD设备所使用。
当DVD播放机读取数据时,伺服控制芯片中的CSS将进行复杂的密码校验。如果密码校验成功,数据才可以还原成MPEG-2格式和转换为视频信号和音频信号。本文介绍了一种完成认证过程、光盘密钥和标题密钥的加扰和传输的CSS的设计,它用于DVD伺服控制芯片中。
CSS 的原理及系统分析
根据DVD标准以及CSS的相关的规范,CSS主要包含两部分:
(1)DVD驱动器和主机之间的授权认证。
其认证流程为:主机发送一个随机码流到驱动器,驱动器对其加密后返回主机,主机解密后确认是否和原码流相同,如果相同则驱动器被授权。主机的授权过程与驱动器的授权过程相同。交互授权的结果是产生总线密钥用于对在主机和驱动器之间传输的数据进行加密。只有主机和驱动器可以产生用于解密的密钥。
(2)光盘密钥和标题密钥的加扰。加扰过程为:
①驱动器用总线密钥对光盘密钥和标题密钥加扰。CSS对密钥的加扰开始于伺服控制芯片从DVD 光盘读取包含光盘密钥和标题密钥的扇区数据。数据先读入UPI(微处理器接口)寄存器然后传送到存储区管理模块(BM-Buffer Manager)并生成CSS内存指针以用于CSS读取数据。CSS 从BM 中一次读取一个字节的密钥,加扰后储存到BM 中由微处理器内存指针所指向的区域。密钥加扰完成后,CSS发出CSS DONE中断。
②通过微处理器内存指针,UPI寄存器读取加扰后的密钥并传送至主机。
③主机接收到加扰后的光盘密钥和标题密钥用其进行解扰。采用正确的光盘密钥和标题密钥主机可对光盘上的音频、视频数据解扰。
图1 CSS结构图
CSS的系统结构及主要模块硬件实现
图1表示CSS系统结构图,它由四个模块组成:
① CSS_PROC:处理CSS数据输入输出,它是CSS与DVD伺服控制芯片中BM和UPI的接口;
② CSS_RAND_GEN :产生80-bit伪随机数用于DVD驱动器对主机的认证,伪随机数的产生用到了42位线性反馈移位寄存器(LFSR-LinearFeedback Shift Register);
③ CSS_AUTH:CSS中最为关键的认证运算模块;
④CSS_SM:控制CSS_AUTH模块的认证过程,并且在CSS_PROC中开启密钥传输。
由以上这些模块构成的CSS系统实现DVD驱动器和主机之间的交互授权认证以及光盘密钥和标题密钥的加扰两大功能,系统时钟为100MHZ 。
数据通路设计
CSS最关键的地方在于主机和DVD驱动器之间的认证,因而认证运算模块CSS_AUTH成为设计重点。根据图1的认证过程,它由5个子模块来完成,如图2所示:
图2 CSS_AUTH结构图
在图2中,DRV_AUTH得到驱动器对主机的响应值DRV_RES,返回到主机以完成主机对驱动器的认证并产生总线密钥,而DEC_AUTH则和KEY_SHARE 共同完成驱动器对主机的认证;DEC_AUTH 取回主机对驱动器的响应值以后,通过和主机相反的过程得到一个参考值,将它和DEC_RES比较后验证主机,验证成功产生连接数,送给KEY_SHARE 最终产生用以加密的总线密钥。为了使CSS_AUTH的面积最优,如图2所示,将CSS_DRV_AUTH、CSS_DEC_AUTH和CSS_KEY_SHARE 三个模块中共同包含的逻辑部分抽出形成一个单独的模块CSS_AUTH_COMMON ,同时设计一个多路选择模块AUTH_MUX_COMMON 来选择到AUTH_COMMON的数据源。这种模块多路复用结构很好的节省了电路面积,提高了运算速度。
在这些模块中,被复用的模块AUTH_COMMON 包含着最复杂的数据路径,设计时划分为四个子模块,如图3所示:
图3 AUTH_COMMON结构图
在图3中,KEY模块中存放通过L ICENSE 得到的AK,通过XOR 模块与PCD[79:40] (对于DRV_AUTH)来说PCD为从主机发送过来的80bit 随机码流;对于DEC_AUTH 来说PCD为驱动器自身产生的用以对主机进行认证的80_bit 随机数;而对于KEY_SHARE PCD来说则为DEC_AUTH模块的运算结果,即驱动器对主机认证过程产生的中间连接数)进行异或,然后经过SCHEDULER模块(由两个LFSR、一个一位全加器和一些XOR门及寄存器组成)得到IAK,最后送到SUBSTITU TOR模块得到AUTH三个子模块各自的运算结果。
设计中最困难的部分在于SUBSTITUTOR的设计,其硬件结构如图4所示,由30个SBOX、10个TBOX 和一系列XOR门组成。它是基于CSS加扰算法的,采用5X6运算阵列实现。整个运算按列进行,即先在第0列从第0行开始一直算到第4行,再在第1列从第0行开始一直算到第4行,这样一直运算到第5列。运算时SBOX的行列地址由专门的控制电路来选择。