转载自 http://blog.csdn.net/andyhuabing/article/details/7714418
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相同含义
3、条件接收系统原理图
三层加密:
发送端:采用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_descriptor()介绍:
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, 下面给个加扰流的具体表数据:
完整接收及播放流程:
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、补充一下这两天调试碰到的问题
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 都会成功,这是机顶盒通用的接口,一般不会出问题