摘 要:本文介绍了一种基于DVD-ROM应用的内容干扰系统(CSS)的设计和实现。该系统可有效防止对DVD盘片的非法拷贝。文中通过对其工作原理和实际应用的分析,给出其最终实现方案,并用Verilog HDL完整整个系统的设计。功能仿真和FPGA验证表明,设计成功。
关键词:内容加扰系统;DVD;Verilog HDL;FPGA验证
引 言
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的行列地址由专门的控制电路来选择。
图4 SUBSTITUTOR硬件结构图
其中,T代表T_BOX ,只在5X6结构的第三四列出现,主要对输入数据进行XOR 运算及相应的置位;SBOX硬件结构如图5所示:
图5 SBOX硬件结构图
其中,PRE_TABLE 和POST_TABLE 均为查找表,用8X8ROM 实现,这样完成整个认证过程需要32 个这样的ROM。从图中可以看到,ROM地址由输入数据决定,按址查找后即得到输出结果。查找表和AK一样需向DVD协会申请许可证才能得到具体数据。
状态机设计
根据系统分析,CSS有6种工作模式,分别为:
①计算DVD驱动器的响应值DRV_RES ;
②产生对主机认证的呼叫DEC_CHAL 用于对主机的认证;
③产生主机的参考值DEC_REF,并与主机的响应值DEC_RES作比较,若相同则主机通过DVD驱动器认证并产生连接数;
④产生总线密钥:
⑤用总线密钥对光盘密钥进行加扰;
⑥用总线密钥对标题密钥进行加扰。
图6 状态转换图
CSS中采用MOORE类型的状态机,围绕这些工作模式进行状态转换。其状态转换图如图6所示。
功能仿真和FPGA 验证
按照上述设计思想,用Verilog HDL对CSS进行RTL描述。使用Synopsys VCS对其6种模式进行仿真,通过Debussy的PLI接口生成波形文件(.fsdb),在Debussy中对波形进行分析。光盘密钥共有2048 个字节,DVD 扇区中包含光盘密钥的数据区在第13个到2060个字节。在测试脚本里预先设定总线密钥的值并导入2352个字节的DVD扇区数据到BM以便对CSS进行功能测试。在这里只针对光盘密钥加扰模式的仿真波形进行说明。
其中,CSS_BM_RD_REQ_CNT为CSS向BM发出的读请求信号,DISC_KEY_XFER_EN为光盘密钥传输使能信号,均为高电平有效。BM_CSS_DATA[7:0]为光盘密钥数据,存储于BM的FIFO中。当上述两个使能信号都为“1”时,光盘密钥就从BM传输至CSS中,每个时钟周期传送一个字节。TOTAL_OFFSET_CNT是从BM传输来的数据的总的字节偏移量,当TOTAL_OFFSET_CNT=11时DISC_KEY_STARTLOC置位,标志着开始加扰光盘密钥。每传送一个字节数据的光盘密钥,就用总线密钥对其进行异或运算,并在下一个时钟周期将加扰的结果送出并产生数据有效标志。分析CSS_BM_DATA_OUT[7:0]可知,总线密钥对光盘密钥进行了正确的加扰及传输。
为了保证CSS系统设计的正确性,我们选用Xilinx Spartan2的XC2S50器件做FPGA验证。我们在Synplify中生成网表文件(.edf),然后通过XilinxISE生成单元网表文件(.v)和线延时文件(.sdf)以用于VCS 进行后仿真,最后生成FPGA下载文件(bit)。XC2S50硬件占用情况如表1所示:
表1 FPGA资源分配表
结束语
本文介绍了一种内容干扰系统(CSS)的设计和实现。在分析了其工作原理和系统结构后我们给出了数据通路和状态机的设计方法,重点说明了SUBSTITU TOR的设计,这是整个系统设计中的难点。该系统在DVD伺服控制电路中的应用表明,它确保了DVD驱动器到主机的光盘数据传输通道的安全性,可以有效防止对DVD盘片的非法拷贝,达到了设计要求。
|