机顶盒智能卡方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
机顶盒智能卡方案
1 技术背景简要说明
1.1 条件接收
条件接收是指对播出的数字电视节目内容进行数字加扰以建立有效的收费体系,从而保障节目提供商和电视台的利益。条件接收技术主要有三大技术组成:加解扰技术,寻址技术和加解密技术,简单的说来,加解扰技术是对节目信息数据流的加入随即的扰动信息,加解密技术是对加解扰的扰动信息的加解密。在发送端,用控制字对节目信息加扰,而控制字通过加密的方式传输给接收端,在接收端,先解密得到控制字,再用控制字解扰得到原始节目信息。
1.2 控制字CW
在DVB系统中,控制字发生器生成控制字CW,再用CW生成一个伪随即序列,用此伪随即序列来加扰TS流。CW一般是每隔2-3S变化一次,通过加密的方式传送给接收端,接收端解密还原得到CW后解扰节目信息流,因此有条件接收的核心就是对控制字传输的控制。
1.3 授权控制信息ECM
条件接收系统(CA)产生控制字CW后,用授权密钥SK加密得到授权控制信息ECM,ECM插入到TS流中传送给接收端。
1.4 授权管理信息EMM
对用户地址信息、授权信息、SK组合加密形成的授权管理信息EMM。EMM主要是用来确定用户是否被授权收看节目。
1.5 加解扰、加解密
在机卡分离的条件接收系统中,一般是机顶盒将EMM和ECM传给智能卡,智能卡通过
解密得到KS,用KS解密得到CW,CW传给机顶盒后,由机顶盒对节目做解扰工作。因此解扰工作由机顶盒完成,而解密操作由智能卡完成。
2 智能卡安全性设计分析
2.1 芯片物理安全性
1、存储区域加密:芯片的内部的ROM及EEPROM都进行了地址扰乱和数据加密;
2、安全检测与防护单元,高低电压检测,防止频率攻击;
3、每个芯片具有一个唯一的芯片序列号。
4、其他芯片特有安全机制,例如防止DPA/SPA攻击、布线优化、时钟脉冲加扰、总线
加扰等,不同的芯片有不同的安全级别。所提供的ATMEL芯片具有EAL4+安全认
证。
2.2 操作系统安全性
1、密钥文件为芯片操作系统(COS)内部管理文件,密钥文件存储口令和算法密钥,
只能在应用初始化时建立,不能删除,不能修改,只能添加密钥,添加密钥要有密钥文件的添加权限,修改密钥由密钥自身的修改权限控制;
2、所有的密钥和口令都是加密存储的,16字节加密密钥(称之为K1)分八字节存储在
ROM中,八字节存储在EEPROM中,且密文数据与芯片序列号相关,因此相同的密钥在不同的芯片上存储数据不一样;
3、能够建立只读、只写以及加密控制读写的文件;
4、对于支持非对称算法芯片,COS在上电后对EEPROM数据做RSA签名验证,只有通
过了签名验证的芯片才允许执行操作指令,芯片EEPROM数据的签名与芯片唯一序列号相关,因此能够有效的防止克隆卡片。
5、除了公钥(用于非对称算法),所有的密钥是不可以读出的。
3 生产流程安全性分析
工厂生产采用授权KEY操作方式,EEPROM中的密钥(K1)通过授权KEY生成,
每个卡片的K1都是不一样的。
对EEPROM数据签名的RSA私钥存储在授权KEY中,RSA的签名操作在授权KEY 中完成,从而保证签名的有效性和保密性。
4 安全性总结
支持非对称算法的芯片能够有效防止克隆卡的出现,即使攻击者能够获得ROM和EEPROM中的所有数据,也不能获得可用的卡片,因为卡片的序列号是唯一的,而且签名的私钥没有出现在ROM和EEPROM中。
5 操作流程简要介绍
5.1 上电复位
芯片上电后,COS首先会检查签名数据的有效性,如果签名检查失败,拒绝后续所有操作指令。
5.2 双向认证
为了保证对IC卡操作的可靠性,防止第三方读写IC的内容,在对IC卡操作前对操作方进行验证,验证方法分为两个过程:
一、协商通信密钥
采用随机数+私有算法协商。
终端和IC卡都保留一个根密钥,该密钥在卡发行前写入,不可更改,对外不可读;
(说明:如果该密钥由IC卡厂商提供,则厂商应该提供一条命令,在IC卡发行前,更改该密钥)
终端和IC卡各产生一个随机数,并互相交换随机数,每个随机数为32字节;
终端和IC卡把双方产生的的随机数和根密钥作为输入,采用私有算法,产生相同的密钥SessionKey;
说明:私有算法如下:双方的随机数先进行异或(终端生成的随机数XOR IC卡生成的随机数),得到一个32字节的数据,然后使用通信根密钥对该数据进行3DES运算,
得到一个32字节的加密结果。把这个32字节的加密结果分为4个部分,最高的8字节为Part1,次高的8字节为Part2,第3个8字节为Part3,最后8字节为Part4,然后Part1和Part3相连接(Part1||Part3),得到一个16字节的数据,该数据就是SessionKey。Part2和Part4相连接(Part2||Part4),得到另外一个16字节的数据,用来做MAC的Key。
二、验证通信密钥的合法性
定义两个操作实体:IC卡和终端。
IC卡对终端的验证
终端向IC卡发送获得随机数的命令;
IC卡产生一个随机数(40字节);
IC卡把该随机数明文发送给终端;
终端使用SessionKey对该随机数的前32字节进行加密,得到密文Data,然后再产生一个8字节的随机数Rand,把密文和随机数相连接,得到Data||Rand,共40字节;
把上述40字节作为数据发送给IC卡进行验证;
IC卡解密该密文的前32字节,得到随机数,与自身产生的随机数的前32字节进行比较,如果一致,则说明IC卡对终端的验证通过,返回OK,否则,返回验证失败。
验证的次数最多有3次,如果3次验证都失败,IC卡处在假锁定状态,只有重新上电后,才能继续进行验证工作。所谓的假锁定,指不用到特定地方完成解锁功能,重新复位IC卡即可继续使用。
2、终端对IC卡的验证
(1)终端生成一个随机数40字节。
(2)终端把该数据明文发送给IC卡。
(3)IC接收到该数据,用协商的密钥加密前32字节,并再创建一个8字节的随机数放在密文后面,密文+随机数返回终端。
(4)终端对密文(数据的前32字节)解密后,把结果与本身的随机数前32字节进行比较。如果一致,则说明终端对IC卡的验证通过,终端可以继续工作,否则,终端拒绝工作。并重新产生一个随机数,再次尝试验证。
(5)验证的次数最多有3次,如果3次验证都失败,终端处在假锁定状态并告警,只有重新上电后,才能继续进行验证工作。所谓的假锁定,指不用到特定地方完成解锁功能,重新复位终端即可继续使用。