机顶盒智能卡方案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次验证都失败,终端处在假锁定状态并告警,只有重新上电后,才能继续进行验证工作。
所谓的假锁定,指不用到特定地方完成解锁功能,重新复位终端即可继续使用。
IC卡每次上电都需要完成密钥协商和验证的过程,在密钥协商过程中,IC不理睬任何其它的操作。
密钥认证报文需要MAC进行完整性确认。
5.3 加解密指令在双向认证成功后,读卡设备能够通过发送指令要求卡片做相应的加解密操作,在指令中可以指定算法类型(DES/3DES、RSA等),也可以指定所需要的密钥。
5.4 密文修改指令在双向认证成功后,读卡设备能够通过发送指令要求卡片修改文件中的相应数据,所有操作都是在密文状态下进行。
6 指令描述6.1 GENERATE SESSION KEY命令说明:产生SessionKey,命令具体过程如下:1——终端发送该命令,命令中有一个参数是32字节的随机数,IC卡收到该命令后,也产生一个32字节的随机数,按照IC卡需求规则产生SessionKey,并把自己产生的随机数返回终端。
1、命令格式:SessionKey产生指令格式CLA INS P1 P2 Lc Data Le80h 70h 00h 00h 20h Data 20h其中Data是终端产生的随机数,32字节这条命令不需要加密数据,不需要计算MAC2、响应格式:Response SW1 SW2其中:Response为IC卡产生的随机数,32字节。
SW1和SW2的定义参见ISO 7816-4标准关于状态字节的定义。
应答报文也不对Response加密,不计算MAC由于在T=0的情况下,第4种APDU格式无法在应答报文中返回数据,故需要添加一条新命令Get Response获得数据,上述的响应数据是通过Get Response获得的数据,在该命令的第一次响应中,只包含SW1和SW2,表明报文是否处理成功,这个应答报文也不用加密第一次的响应为0x61XX,主机根据XX通过Get Response指令得到数据6.2 INTERNAL AUTHENTICATE命令说明:该命令用于终端对IC卡的认证,终端产生一个40字节的随机数明文发送到IC卡,IC取前32个字节用SessionKey进行一次3DES加密后,密文后面再补充一个8字节的随机数,构成40字节的验证字信息,然后再计算MAC后,发送回终端。
1、命令格式:内部认证指令格式CLA INS P1 P2 Lc Data Le80h 88h 00h 00h 2Ch Data 2Ch其中:Lc——40字节的随机数+4字节的MAC,Le不参加MAC计算其中Data是终端产生的40字节的随机数+4字节的MAC,明文数据(随机数)是40字节,这个数据是不加密的2、响应格式:Response SW1 SW2其中:Response,密文的验证字(生成方式见本节说明)+4字节的MAC。
SW1和SW2的定义参见ISO 7816-4标准关于状态字节的定义。
由于同样的原因,该应答需要使用Get Response命令获得,应答中的数据需要加密,并计算MAC第一次的响应为0x61XX,主机根据XX通过Get Response指令得到数据6.3 GET CHALLENGE命令说明:从IC卡中获得一个随机数,用于外部认证,该命令调用后必须调用外部认证命令,该命令产生的随机数将保存在IC卡中,供外部认证使用。
1、命令格式:获得IC卡随机数的指令格式CLA INS P1 P2 Le00h 84h 00h 00h 28h说明:该报文不加密,不计算MAC,使用标准的指令2、响应格式:Response SW1 SW2其中:Response,IC卡产生的40字节的随机数+4字节的MAC。
SW1和SW2的定义参见ISO 7816-4标准关于状态字节的定义。
报文的应答数据是40个字节的随机数,不加密,但需要计算MAC6.4 EXTERNAL AUTHENTICATE命令说明:该命令用于IC卡对终端的认证,以确定终端对IC卡操作的合法性。
IC中加一个计数器来保护不被攻击,初值为3。
3次失败后,不响应任何命令,只有重新复位后,才可以再进行认证过程。
外部验证的过程同内部验证。
注:在使用该命令前,必须终端调用Get Challenge命令获得IC的随机数。
1、命令格式:外部认证的指令格式CLA INS P1 P2 Lc Data80h 82h 00h 00h 2Ch Data其中:Lc =40字节的数据+4字节的MACData是根据IC卡提供的随机数加密后的密文+MAC,44字节, 根据IC卡提供的40字节的数据,终端使用3DES完成加密,加密结果回送IC卡,IC卡对自己的随机数前32字节也使用3DES加密,加密结果与报文比较,如果一致,则认为IC卡对SessionKey的验证通过。