泰信论坛

标题: 基于NGB标准接口的智能卡CA应用开发 [打印本页]

作者: txca    时间: 2013-7-19 19:09
标题: 基于NGB标准接口的智能卡CA应用开发
        基于NGB标准接口的智能卡CA应用开发是指对于传统的采用智能卡的CA,按照NGB下载CA的Java接口规范将现有的机顶盒CA库或者软件开发成通用的跨平台的APK应用,目的是使得传统封闭的智能卡CA系统向下载CA靠拢,实现终端的平台化和市场化。智能卡CA应用开发的流程和步骤和下载CA应用的开发类似,可参考上一篇帖子《基于NGB标准接口的下载CA应用开发》,这儿主要讲一下二者的区别,如果有错误之处或者考虑不周的地方,欢迎大家拍砖!

       传统智能卡CA应用开发同下载CA应用开发的最大区别是智能卡通讯部分,包括智能卡的复位、初始化、CA信息的获取以及ECM、EMM数据的解密处理以及机卡配对功能等,DTVOS在NGB标准接口的基础上扩展了智能卡设备的接口,通过设备接口结合各CA的具体通讯协议,比如采用什么样的协议T0、T1、T14?各指令的格式是什么,如何打包,收到指令后智能卡多长时间回应,回应的格式是什么,要不要校验,要不要解密,如何解析等,就可以在CA应用中完成传统CA库中同智能卡通讯部分的功能了。

       另外传统智能卡CA应用开发同下载CA应用开发的区别在CW的设置上,由于下载CA采用了层级密钥机制,所以在设置CW时候设置的是加密的CW,同时又设置了各加密的层级密钥,而目前的智能卡CA由于不具备这个机制所以设置时有所区别,结合标准中提供的设置CW的接口:loadCW,

其接口原型为:
public void loadCW(int VendorID, CWKey cwKey, Key[] levelKeys, int schemeId) throws CADriverException;
本方法用于通知终端软件平台向解扰器装入控制字,并向终端安全芯片装入所需密钥。
其中@param cwKey 控制字,如果控制字是明文,levelKeys参数被忽略,如果cwKey为null,,即CA应用没有提供有效的控制字。
    @param levelKeys 用于置入终端安全芯片的多级密钥.密钥数组的索引等于终端安全芯片中的绝对位置,在数组中特定元素值为Null表明终端安全芯片中相应位置不应装入密钥.
@param schemeId 本schemeId用于指定终端安全芯片的加密算法(例如,AES,TDES)
@ChipController接口中定义了方式(scheme)值的列表。如果控制器只支持一种方式,则该值被忽略。
如果不考虑高级安全的环境,智能卡解出CW后设置的CW将是提到的控制字是明文的情况,参考CWKey的定义。
public class CWKey extends Key
{


public static final int PARITY_EVEN = 0;
public static final int PARITY_ODD = 1;


/*
* @param value 密钥的值
* @param真值标识密钥是加密的,假值表示密钥未加密.
* @param 奇偶值,表明控制字的奇偶性.
*/
public CWKey(byte[] value, boolean encrypted, int parity)


/**
* 本方法返回控制字的奇偶性.
* @return 控制字的奇偶性.
*/
public int getParity()


}

假定偶奇CW数组分别是:evencw、oddcw,对应CWKey是ECW[0]、ECW[1],那么
  ECW[0] = new CWKey(evencw, false, 0);
  ECW[1] = new CWKey(oddcw, false, 1);
设置CW的代码为:
try {
          descramblerContext.loadCW(0x1234, ECW [0], null,  ChipController.SCHEME_3DES);
            } catch (CADriverException ex) {
}


try {
          descramblerContext.loadCW(0x1234, ECW [1], null,  ChipController.SCHEME_3DES);
            } catch (CADriverException ex) {
}


完成这两点结合下载CA应用的开发实例,开发一个通用的智能卡CA的应用难度就不大了。

作者: 雨天的太阳    时间: 2013-7-21 09:22
        有道理,研究研究。       
作者: 超级山寨    时间: 2013-7-21 11:17
        非常有参考价值,对于DVB+OTT智能终端的市场化意义深远。       
作者: dvb123    时间: 2013-7-26 17:56
        这个比下载CA有意思,我这搞到一台Android的机顶盒,倒可以自己先试验一下。       
作者: 迷茫之中    时间: 2013-7-27 13:00
        那盒子可以同时支持多种卡吗?       
作者: txca    时间: 2013-7-27 13:37
        可以,同时把对应这几种智能卡的多个CA应用都安装到机顶盒中即可,盒子会自动选择对应的CA应用解密节目。下载CA推出的初衷之一就是实现多种CA的并存与可替换,所以考虑了这种多CA的场景。           
作者: 迷茫之中    时间: 2013-7-29 08:26
        这论坛里有智能卡CA厂家的开发人员吗,能不能给个这样的应用试试?       
作者: 雨天的太阳    时间: 2013-7-29 15:47
        这个技术应该不难,机顶盒厂家的软件工程师也有很多熟悉智能卡CA开发的。       
作者: dvb123    时间: 2013-7-29 23:33
        能不能给介绍下CA应用怎么起来,怎么工作,CA的信息怎么显示? 标准中内容有点多,看得有点头大。       
作者: txca    时间: 2013-7-30 08:26
        每个CA是一个单独的应用,即一个 apk 文件,并且自己拥有界面。CA应用采用 Android 应用基本组件 service 来管理自己的生命周期。它通过监听 Android.intent.action.BOOT_COMPLETED 广播,并在广播后启动自身的 service,在 service 启动中完成如 startXlet 相同的功能:完成自身的初始化(包括智能卡的初始化等),解扰服务可用后,完成向 CASModuleManager 的注册。注册过程如下:


作者: txca    时间: 2013-7-30 08:55
        下边看CA应用的工作流程:        
        如下图当机顶盒检测到当前节目被加扰后,平台调用 CASModuleManager 中的 方 法 startDescrambling, 将 systemid 传 进去,并将自己注册成 CASEventListener 来监听解扰结果的返回情况。CA应用startDescrambling接口被调用后开始接收ecm、emm等数据,完成授权和cw的解密后,调用loadCW接口设置控制字完成节目解扰。其中ecm、emm等数据的接收使用davic的接口。如果你太了解 davic 接口的使用,请访问 www.interactiveweb.org,里面有详细的教程和例子。如果想要较快得到 davic 的接口,请访问www.code4tv.com,里面有封装好的mhp 的全套接口。

作者: 雨天的太阳    时间: 2013-7-30 17:37
        很详细~~~谢谢分享。           
作者: 美丽世界    时间: 2013-7-30 23:29
ecm、emm如何收取,是不是还得先接收到pmt、cat表,解析出ecm、emm对应的的pid才能开始接收?       
作者: txca    时间: 2013-7-31 08:24
  楼上说的对,接收ecm、emm前需要先知道pid,ECM的pid来自 public void startDescrambling(CASSession casSession, CAServiceComponentInfo casci[])接口的CAServiceComponentInfo casci[]参数,获取方法是casci.getCADescriptor().getPid(),此处注意可能会有多个ecm pid的情况;emm的pid确实需要先接收cat,cat的接收一种方式是用标准中的CATNotifier接口从平台获取,另外一种方式是使用davic接口由CA应用申请接收。

作者: txca    时间: 2013-7-31 08:32
        昨天还有一个问题,关于CA信息的显示,我们目前的方法是:采用 Android 的 Activity 来实现CA的图形化管理功能。一类是显示信息的功能,包括授权信息、消费信息、电子q钱包充值信息、白名单信息、邮件信息、CA 基本信息;另一类是操作信息的功能,包括邮件信息的删除、阅读、工作时段的设置、年龄等级的设置、CA PIN 密码的设置。在CA应用的运行过程中会维护一个CA所有相关信息的对象,管理功能所操作的信息均是对该对象的访问和设置。当然,这些信息的显示也可以通过扩展接口或者Android下其他进程通讯       
作者: admin    时间: 2013-8-1 09:50
        [img=24,24]Images/Emoticons/7.gif[/img]       
作者: dvb123    时间: 2013-8-1 10:53
        多谢版主详细解答!
作者: 红房子绿衣裳    时间: 2013-8-1 10:59
        太好了           
作者: choice    时间: 2013-8-1 13:01
        [quote]这个比下载CA有意思,我这搞到一台Android的机顶盒,倒可以自己先试验一下。[/quote]        问下楼上的Android盒子支持广电的信号吗,是什么方案的?       
作者: 雨天的太阳    时间: 2013-8-1 13:13
        有没有哪位大侠提供一个这样的APK 试试?       
作者: dvb123    时间: 2013-8-1 13:34
        嗯,dvb+ott的盒子,方案是海思3716的。       
作者: 雨天的太阳    时间: 2013-8-2 21:16
        这个应用应该是跨平台的吧?比如在海思3716和在博通7245上都可以用吧?       
作者: txca    时间: 2013-8-4 00:21
        嗯,和硬件平台没有关系,只要是Android系统,扩展了NGB下载CA的Java接口的平台,基于我们所说的方法开发的CA应用都可以跑。       
作者: txca    时间: 2013-8-4 00:43
[quote]有没有哪位大侠提供一个这样的APK 试试?[/quote]        简单的demo apk应用可以有,但要apk应用支持具体的CA,还需要了解该CA具体的通讯协议才可以。            
作者: 雨天的太阳    时间: 2013-8-5 11:35
        问题是智能卡CA公司是不是支持DTVOS.       
作者: txca    时间: 2013-8-6 08:35
        终端的智能化是趋势,OS是基础,泰信DTVOS是泰信在多年数字电视行业经验基础上,融合NGB中间件标准、下载CA标准接口研发而成,目的是推动终端的智能化、市场化,推动行业的快速发展,相信它会得到越来越多行业内外厂家的支持。       
作者: dvb123    时间: 2013-8-6 23:07
        呵呵,利用这些接口,智能卡初始化成功了,下边试验收表。           
作者: 雨天的太阳    时间: 2013-8-10 19:05
        谁有开发好的APK贡献一下?       
作者: dvb123    时间: 2013-8-16 10:57
         终于登上了,这几天怎么论坛登不了了?有个问题请教一下,CA的应用什么时候启动?        
作者: txca    时间: 2013-8-16 16:13
          非常抱歉,13-15日系统维护没能及时通知大家,对给大家带来的不便表示歉意!    CA应用启动的问题,我们的建议是通过监听Android系统的Android.intent.action.BOOT_COMPLETED广播,在接收到该广播后启动自身的service,在 service启动中  完成完成自身的初始化,并在解扰服务可用后,向CASModuleManager完成注册。           
作者: yfkwh    时间: 2013-8-30 12:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: zamhf    时间: 2013-8-30 16:36
LZ辛苦了,支持一下!












http://www.housewh.com
作者: ysj113    时间: 2013-8-31 10:31
泰信值得尊敬,免费开放源代码,为数字电视行业做出了贡献!
作者: GreenDream    时间: 2013-9-3 10:11
态度是好的,赞一个!
作者: 真奇怪    时间: 2013-9-5 20:02
[attach]19[/attach][attach]19[/attach]千呼万唤始出来,从CCBN泰信发布了接口开始试着开发,终于搞定了,根据最新的接口做了修改,支持基本所有主流智能卡CA的NGB智能卡应用,纯属个人爱好,欢迎大家测试。
作者: taiping    时间: 2013-9-7 10:59
顶顶顶............................!!


作者: 雨天的太阳    时间: 2013-9-12 22:57
机顶盒终于通用了
作者: hfkuu    时间: 2013-9-26 11:14
支持一下吧!












www.nbhw.com.cn
作者: 496361700    时间: 2014-11-17 09:06
真的可以用哦




欢迎光临 泰信论坛 (http://taixin.com.cn/bbs/) Powered by Discuz! X3