APP下载

一种基于密钥迭代的条件接收系统技术*

2010-06-07潘长勇

电视技术 2010年6期
关键词:主程序机顶盒解密

潘长勇,韩 凯

(清华大学 电子工程系;微波与数字通信国家重点实验室;清华大学信息技术国家实验室,北京 100084)

1 引言

在数字电视系统中,条件接收技术是保障其增值业务的核心技术,它能够实现数字电视各项业务的统一管理、授权和控制。数字电视运营商依靠条件接收系统(CAS)来管理用户。

2 CAS的破解原理

CAS的工作原理[1-3]如图1所示。

传统的CAS对于解扰控制字(CW)的传输是没有保护的,盗版集团在智能卡将透明的CW传回机顶盒时将其截获,通过对CW明文和密文的分析对比,解出机顶盒的产品密钥,收集了所有或部分密钥后,制作盗版卡。随着加密算法的不断进步,CAS厂家都对机卡通信进行了加密,但依然无法阻止盗版集团获取CW,因为CW最终要在机顶盒的动态存储区中以明文的形式出现。随着互联网的普及,盗版集团开始提供网上共享CW的服务,即将透明的CW截获后通过互联网进行特定用户群的发送,非法用户利用盗版集团提供的共享机顶盒从互联网获取CW对节目进行解密,从而免费收看。

3 机顶盒加密的高级安全技术

为了杜绝CW共享和其他盗版方式,需要在传统的CAS体系中加入高级安全技术。笔者针对如何提高系统加密的安全性,提出在多个方面强化安全设计的方法,包括芯片级CW加密、安全启动、JTAG口保护等。

芯片级CW加密是指CW在机卡通信时以密文形式存在,在机顶盒的程序空间和内存中也始终以密文的形式存在,避免机卡通信软加密后内存中透明的CW被窃取。为了避免通过机卡通信数据分析出任何与CW相关的信息,采用随机数和密钥迭代相结合的算法设计。智能卡在每次传送CW之前,利用随机数发生器产生2个128 bit的密钥K3和 K4,用机卡通信密钥K1和K2对K3,K4进行迭代加密后传输,然后用K3,K4对CW迭代加密后传输给机顶盒。机顶盒端在机顶盒芯片中增加AES128解密算法模块和2个128 bit的密钥空间(ROM),2个128 bit的CW寄存器用来存储当前加扰周期和后续加扰的CW,该空间机顶盒主程序不能读取。由一片内部RAM空间来存储K3和K4,这2个密钥的作用是对已加密的CW进行解密,该空间不能被读取,只能根据地址对RAM的数据进行芯片内的操作,从而保证CW的整个解密过程对机顶盒主程序是不透明的。

机顶盒对CW的解密流程分为3个步骤,前面的步骤为后面步骤的前提条件。 其中,K1,K2,K3和K4表示密钥;EK2K3表示由 K2加密的 K3;EK3(EK1K4)表示对 K4进行了2层加密,第1层密钥为K1,第2层密钥为K3;EK3(EK4CW)表示对CW进行了2层加密,第1层密钥为K4,第 2 层密钥为 K3。

第1步:解密EK2K3。由K2解密得到K3,并将K3存储在内部RAM中,其流程如图2所示。

第2步:解密EK3(EK1K4)。先由K3完成第1层解密,再通过K1解密EK1K4得到K4,并将K4存储在内部RAM中,解密流程如图3所示。

第3步:解密EK3(EK4CW)。先由K3完成第1次解密,再通过K4解密EK4CW得到CW,最后用CW设置解扰器,该流程如图4所示。

安全启动是指每次机顶盒开机启动时都对机顶盒程序进行合法校验,如果是合法机顶盒程序则正常启动,否则不进入启动程序。在机顶盒芯片的ROM区中预置一个2048 bit的RSA公钥K0用来验证Flash中代码的合法性,但不直接用K0对代码进行签名,为了降低被攻破的风险,采用密钥迭代的方法,先用一个2048 bit的RSA私钥K1对代码进行签名,然后用K0的私钥对K1签名,利用 K0验证 K1,利用 K1验证代码[4-5](见图 5)。 给不同的机顶盒芯片厂商分配不同的K0,不同的机顶盒厂商分配不同的K1,由CAS厂家控制K0和K1对应的私钥,机顶盒厂家只能在软件定版并通过CAS厂家确认后,由CAS厂家对代码和K1进行签名,而不能擅自改动机顶盒软件。

验证流程具体如下:1)上电时由启动代码开始运行;2)读取 K1签名,用 K0解密,算法为 RSA;3)读取 K1,用SHA-1进行Hash运算,结果与上一步结果比较,一致则继续,否则启动失败;4)读取代码签名,用K1解密,算法为RSA;5)对代码用SHA-1算法进行Hash运算,结果与上一步结果比较,一致则继续,否则启动失败;6)跳转到代码运行,同时关闭启动区,不允许再访问;7)若前述验证失败,则芯片必须尝试再重新启动。

芯片冷启动后,系统将检测安全启动功能是否被使能。如安全启动没有使能,安全启动ROM区域将被隐藏以保护ROM中的签名算法及密钥,CPU将从外部管脚选择的设备开始执行。如果安全启动被使能,安全启动ROM内的代码首先被执行,用于验证外部引导装载程序的完整性。首先使用ROM中保存的RSA2048公钥对存储在外部Flash上的引导装载程序签名进行解密。与此同时,使用SHA-1算法计算引导装载程序的Hash值。如两值相等,签名验证通过,CPU将跳转至外部的引导装载程序开始执行;如不相等,CPU将进入死循环。无论签名是否成功,安全启动ROM都将被隐藏。

为了防止利用JTAG口进行攻击,在启动时默认被打开一个Watchdog Timer,系统在签名验证完成后关闭Watchdog Timer。如果在规定的时间内安全启动过程不能完成,则系统将自动重启。关闭Watchdog Timer也需要输入相应的密码。

4 系统实现方法

图6给出了上述高级安全技术的实现方法。

图6 高级安全机顶盒芯片结构示意图

CW解密引擎包括1个AES128解密模块、128 bit×2的ROM空间用来存储对称密钥K1和K2,大于128 bit×2的内部RAM用来存储K3和K4,一个128 bit×2×4的队列寄存器用来存储4组CW1和CW2,整个解密引擎的内部都不允许机顶盒主程序访问,内部的解密操作全部封装到原来的解扰函数中,机顶盒主程序不需要任何改动。

安全启动ROM包括1个SHA1的签名模块,1个RSA2048的解密模块,2048 bit的ROM空间用来存储RSA公钥K0,1片ROM空间用来存储启动校验过程,在机顶盒Flash中有签名后的应用程序、引导装载程序和2048 bit RSA公钥K1。整个启动ROM在机顶盒启动时执行,不受机顶盒主程序的干预,保证了主程序的安全和合法性。

JTAG口保护包括在机顶盒芯片中增加ROM空间存储1个与芯片唯一编号(UID)对应的密钥。在机顶盒部署前关闭JTAG口,如需重新打开,则需要输入与芯片UID对应的密钥。在通用的机顶盒芯片构架中可以采用Debug I2C来完成这一功能,在JTAG口被关闭的同时,Debug I2C对总线的访问被禁止,只允许其访问JTAG密码输入寄存器。芯片冷启动后,JTAG口被关闭,需要重新输入密码。这样做能有效防止JTAG口执行非法程序或非法访问芯片内部资源。

在不影响主观图像质量的前提下,电视编码器通过水印算法在最终输出的模拟图像上叠加智能卡卡号和芯片的UID号,以避免模拟视频输出被复制引发的版权纠纷,有效打击盗版活动。

视频流在解扰后被写入外部SDRAM中等待解码,在此过程中可能通过非法程序窃取未解码的视频流。为对其进行保护,将SDRAM和主芯片进行堆叠封装(SIP),并关闭可能的高速输出接口如SPI,Parallel Interface等。

5 小结

该方法已经通过实验室原形样机验证,实验室测试表明该方法对于控制字共享、JTAG攻击、非法代码植入均具有良好的抗攻击性能,可以应用于各种对系统安全性要求较高的数字电视广播系统和网络中。以上各种技术的实现成本在量产芯片中不到0.1美元,只占芯片总成本的很小一部分,几乎可以忽略不计,但可以大大提高整个CAS的安全性,最大程度地打击盗版,保证数字电视运营商的利益。目前,该方案已由中天联科和意法半导体验证通过并进行量产。集成了该方法的条件接收系统MediaCraft V2.0已于2009年6月通过国家广播电影电视总局的CAS入网认证,取得A级证书,并且已在贵阳铁路局拥有3万用户,运行稳定。

[1]ETSI TS 103197,Digital video broadcasting (DVB);head-end implementation of DVB simulcrypt[S].2000.

[2]ETSI TS 101197,Digital video broadcasting (DVB);DVB simulcrypt;head-end architecture and synchronization[S].1997.

[3]ETSI EN 300468,Digital video broadcasting (DVB);DVB specificationfor service information (SI)in DVB systems[S].1995.

[4]VISA and MasterCard.Secure electronic transaction (SET)supplement for the v1.0 internet open trading protocol[EB/OL].[2009-04-15].http://www.faqs.org/rfcs/rfc3538.html.

猜你喜欢

主程序机顶盒解密
炫词解密
解密“一包三改”
炫词解密
浅谈数控铣削技术代码程序的嵌套方式研究
机顶盒上别盖布
安全使用机顶盒注意五点
电控冰箱软件模块化设计
时光倒流 换回PotPlayer老图标
有线电视高清数字电视机顶盒测试系统的构建
What is Apple Watch All About?