1、名词概念:
接收控制系统/条件接收系统 :该系统的任务是保证DVB业务仅被授权接收的用户所接收,其主要功能是对信号加扰,对用户电子密钥的加密以及建立一个确保被授权的用户能接收到加扰节目的用户管理系统
控制字或密钥:CW (Control Word )
节目映射表:PMT (Program Map Table )
条件接收表:CAT (Conditional Access Table )
授权控制信息:ECM (Entitlement Control Message )
授权管理信息:EMM (Entitlement Management Message )
脉冲式按次付费电视或者即时付费电视:IPPV(Impluse Pay-per-View )
模拟电视:采用模拟信号调制,中间很容易引入干扰,一套节目使用一个频点
数字电视:采用数据信号调制,抗干扰性好,一个频点传输6-8套节目,容易加密
2、条件接收系统的组成
整个条件接收系统包括前端码流加扰加密、传输、终端通过条件接收系统进行解扰解密这三大部分,其中关键技术就在前端和终端。
前端码流加扰加密部分包括有:
→EMM加密器
→ECM加密器
→CW发生器
→TS流加扰器
→复用器
终端条件接收系统进行解扰解密部分包括有:
→解复用器
→CA系统
→智能卡
→解扰器
→解密器
加扰控制字段:
可以在ts包中的 transport_scrambling_control 值:2b位,ts header第四个字节处
位值 描述
00 不加扰
01 保留
10 用偶密钥加扰ts包
11 用奇密钥加扰ts包
PES包中使用 PES_scrambling_control值,其控制与ts相同含义
CA解扰的那点事
发送端:采用PDK对SK进行加密,传输加密后的EMM数据
接收端:PDK是存储在智能卡上的,是智能卡的ID,这是唯一的,机顶盒收到EMM数据采用PDK解出SK
4、条件接收系统工作原理(文字描述)
前端码流加密加扰工作原理:
1、在信号的发送端,首先由控制字发生器产生控制字(CW),将它提供给加扰器和加密器A。控制字的典型字长为64bit,每隔2~30s改变一次(CW变化为5-10s,各家值有所不同)。
2、加扰器根据控制字发生器提供的控制字,对来自复用器的MPEG-2传送比特流进行加扰运算。此时,加扰器的输出结果即为经过扰乱了以后的MPEG-2传送比特流,控制字就是加扰器加扰所用的密钥。
3、加密器接收到来自控制字发生器的控制字后,则根据用户授权系统提供的业务密钥对控制字进行加密运算,加密器A的输出结果即为经过加密以后的控制字,它被称为授权控制信息(ECM).
4、用户管理信息(Management Message)被密钥EMMK1加密形成授权管理信息(EMM),用户管理信息由信息提供商的用户管理系统形成,用户管理系统用来建立有关用户的名称、地址、智能卡号、账单的信息和当前授权的数据库等等.
5、经过这样一个过程产生的ECM和EMM信息均被送至MPEG-2复用器或复用器,与被送至同一复用器的图像、声音和数据信号比特流一起打包成MPEG-2传送比特流输出
终端解扰解密部分工作原理:
1、在信号的接收端,解码器首先在传送流中查找到PMT和CAT表,从中获取到EMM_PIDS,ECM_PIDS,CASystemIDS等信息.
2、根据EMM_PID,找到相应的加密的EMM信息,智能卡中存有加密系统号和ECM密钥,EMM密钥等,智能卡首先使用EMM密钥对加密的EMM解密,根据解出的EMM信息来确定本智能卡是否被授权看该套节目,如没授权则不能进行后续的解密,也不就不能收看该节目.
3、如该卡已被授权,则利用ECM_PID,找到相应的加密的ECM信息,利用智能卡的ECM密钥对ECM进行解密,得到控制字CW.
4、由解密得出来的CW对加扰的传送流进行解密,得到正常的MEPG-2传送流,由解码器解码后得到所需的电视,广播或数字信号.
加扰和加密的区别:
加扰是加扰器使用控制字通过函数运算产生伪随机序列,对数据进行一些与或运算将数据扰乱。接收终端只有得到控制字才能通过反函数运算将数据还原进行解码。而加密是为了有效的保护控制字进行的,通过密钥或算法对控制字进行加密。终端设备需要得到密钥或反算法,解出或算出控制字,再进行解扰解密工作。
TS层的加扰:
TS层的加扰只针对TS数据码流的有效负载(payload),而TS码流中的PSI信息,包括PAT、PMT、NIT、CAT以及私有分段(包括ECM、EMM)都不应该被加扰。当然,TS流的头字段(包括调整字段)也不应该被加扰。经过加扰后的TS码流应该在头字段中定义加密控制值。
5、PSI数据接收
接收到相应的PMT和CAT表,这两个表中可能会存在CA_descriptor()的描述符,通过该描述符号,可以获取到对应的EMM_PIDS,ECM_PIDS,CASystemIDS。
CA_system_ID : 表示适用于相关ECM和EMM流的相关的CA系统类型(CA厂家标识符).
CA_PID : PMT表中的该描述信息为ECM的PID,CAT 表中的该描述信息为EMM的PID.
一般来说,ecm table id为0x80/0x81,emm table id为0x82~0x8F这个值是由ca厂家决定的。
ca_descriptor 描述字值为0x09, 下面给个加扰流的具体表数据:
CA解扰的那点事
完整接收及播放流程:
1、锁定指定频点
2、搜索PAT表
3、搜索CAT及PMT表
4、解析PMT表得到ECM PID值,解析CAT表得到EMM PID值
5、将ECM及EMM送到智能卡解密
6、智能卡返回CW值,机顶盒将CW值设到demux descrambler解扰模块,还原原始码流
7、设定音频pid,视频pid进行解码和播放
6、集成ca lib工作
一般利用现有的中间件中CA模块进行集成,说明一下这种最通常的工作流程
1、提供编译器及编译参数,ca厂商提供ca lib/ca header及ca test stream
2、实现descrambler,smartcard,demux, flash 等模块接口
3、实现ca lib需要实现的接口函数,一般包含os,filter,descrambler等接口
4、开发一套应用调用ca lib提供函数实现业务呈现
5、调通加扰节目的播放及业务的呈现ok
6、到ca公司进行ca认证,测试ok后进入运营阶段
7、通讯概述
1、码流加扰
1)、加扰过程是在发送端用一个伪随机序列(CW,Control Word)对复用后的TS流进行实时扰乱控制,使用加扰序列控制对打包的图像信号进行扰乱
2)、接收端必须获得CW,再次对码流进行位运算才能将码流还原
3)、只有授权用户才能获取CW,才能对码流进行解扰(授权条件:UID和HID)
4)、CW如果明文传输,则很容易被破解,因此提出需要对CW进行加密,在码流中传送的是密文信息。
如何保密传输CW?如何使只有授权用户才能获取CW?
2、访问控制(CW加密)
1)、发送端:采用SK(加密密钥)对CW进行加密,传输加密后的数据(ECM)
2)、接收端:必须先获取SK,然后运用SK对ECM进行解密,得到CW
如何保证只有授权用户才能得到SK?
3、授权管理(SK加密)
每一授权用户将获得一张IC卡,在卡内保存有一个或多个PDK(个人密钥),在发送端运用PDK对SK进行加密,生成数据以EMM的形式打包进码流中。这样保证只有拥用该PDK的用户才能解密得到SK。
CA与智能卡是配合使用的,即一个运营环境中,机顶盒上的智能卡与局端配合的CA是同一公司的产品,是成套使用的。原因是产生ECM与EMM的算法都是CA厂家的核心机密,不可能外露
流程整理概述:
首先用CW对复用后的TS流进行扰乱控制,CW不能明文传送,用SK对CW进行加密,变成ECM在网络中传输,而对于SK,局方再用PDK进行加密变成EMM传输,而终端智能卡中保存有PDK,这样收到EMM数据后,用PDK解密就能得到SK,再用SK对传输中的ECM解密就得到CW,把CW设置到解扰器这样就可以观看加扰的节目了。
为何引入SK?
假如直接用PDK加密CW,由于PDK的数量巨大,而CW的变更较快,加密后产生的数据很大,由于SK是针对产品(节目)的,数据量小,采用SK加密CW生成的ECM数据量相对较小,由于SK变化缓慢,采用PDK加密SK生成的EMM数据量相对较小,根据CW和SK的轮播周期,你可以大致比较一下,引入SK以后,ECM+EMM的数据量与直接采用PDK加密CW的数据量,就应该明白了为什么要引入SK。
假如有10个pdk,再假设某节目CW字每分钟变化100次,这样一分钟就需要100*10个数据量,而如果假设用SK再对CW进行加密,这段时间内SK是不变的,面传输的数据量就变成了1*10。也就是把CW字的变化给透明化了。
基本概念解析:
一个用户(智能卡)拥有一个唯一的PDK
一个产品(或者说套餐)在一长段时间内对应一个SK
一个加扰单元(被加扰对象)在某一瞬时对应一个CW
emm的pid从CAT表中得到的, ECM的pid通过检测pmt表中descriptor_tag为0x09的字段得到的,有了这些PID,就可以从码流中检出EMM流和ECM流,
EMM流是包含了所有智能卡的EMM数据的(因为不知道用户所用的智能卡),数据量比较大。因此智能卡从EMM流中,根据自身的卡地址,过滤出是发送给自己的EMM信息,然后解得SK。
ECM流是一个加扰单元(即被加扰的对象)对应一个ECM流(只是用户当前所选择频道的,所以切台的时候ecm_pid会变化),因此当取得SK后,就可从ECM流中解出CW,从而对码流进行解扰。
CA过程通过CW控制字(节目流进行解扰的钥匙)将TS加密,终端通过它解密.
前端将CW加密后送到终端.
终端通过智卡,解出CW控制字,并将控制字送解码器还原TS的过程.
前端:
ECM内容:
1.由SK加密的CW.
2.节目来源、时间、内容分类和节目价格等信息
EMM内容:
1.PDK加密过的SK.(PDK: Personal Distribute Key,与智能卡一致)
2. 地址、用户授权信息.
EMM与ECM在TS流中传输.
终端:
1.解CAT表,获得CA_system_id,获得CA系统类型.
2.解CAT表,获得CA_PID获得EMM_PID,从TS中过滤EMM.
3.解PMT的CA_PID,获得ECM_PID,从TS流中过滤ECM.
4.智能卡通本身的PDK,从EMM中将业务密钥SK解出来.
5.用SK对ECM解密出CW控制字.
6.将CW控制字填入解码芯片的相应寄存器中,就可以对码流数据进行解扰,恢复出原始信号。
8、补充一下调试碰到的问题
a、机卡通讯有问题
出现sc_send数据成功但无法接收数据,总是报超时错误,可能原因
1、与智能卡设定的波特率有关,一般设定为4800bits/s或者9600bits/s,而在收到ATR消息一般以atr[2]&0x0f作为baud factor的调节因子
【波特率校正因子1、2*n (n=1~16) ,具体设置参考协议D因子和卡特性 】
2、与智能卡设定的时钟率因子有关 【时钟转率因子372~2048 ,具体设置参考协议的F因子和卡特性】
b、智能卡配对失败
请保证智能卡,码流及CA库统一,不要用错了
c、授权信息出现”access denied “,即未授权
请确认ca卡是不授权且其未过授权时间,其流里面有授权信息
d、ecm&emm数据未收到或超时
请先确认码流中和pid及过滤参数是否正确,可以录码流通过专业软件查看,再 确认demux接口的filter过滤参数是否有问题
e、set key失败
一般只要set pid(av)成功,基本上set key 都会成功,这是机顶盒通用的接口,一般不会出问题