泰信论坛

 找回密码
 立即注册
查看: 54668|回复: 38
打印 上一主题 下一主题

基于NGB标准接口的智能卡CA应用开发

[复制链接]

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
楼主
发表于 2013-7-19 19:09:00 | 显示全部楼层

基于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的应用难度就不大了。

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
沙发
 楼主| 发表于 2013-7-27 13:37:00 | 显示全部楼层
        可以,同时把对应这几种智能卡的多个CA应用都安装到机顶盒中即可,盒子会自动选择对应的CA应用解密节目。下载CA推出的初衷之一就是实现多种CA的并存与可替换,所以考虑了这种多CA的场景。           

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
板凳
 楼主| 发表于 2013-7-30 08:26:00 | 显示全部楼层
        每个CA是一个单独的应用,即一个 apk 文件,并且自己拥有界面。CA应用采用 Android 应用基本组件 service 来管理自己的生命周期。它通过监听 Android.intent.action.BOOT_COMPLETED 广播,并在广播后启动自身的 service,在 service 启动中完成如 startXlet 相同的功能:完成自身的初始化(包括智能卡的初始化等),解扰服务可用后,完成向 CASModuleManager 的注册。注册过程如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
5#
 楼主| 发表于 2013-7-31 08:24:00 | 显示全部楼层
  楼上说的对,接收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应用申请接收。

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
6#
 楼主| 发表于 2013-7-31 08:32:00 | 显示全部楼层
        昨天还有一个问题,关于CA信息的显示,我们目前的方法是:采用 Android 的 Activity 来实现CA的图形化管理功能。一类是显示信息的功能,包括授权信息、消费信息、电子q钱包充值信息、白名单信息、邮件信息、CA 基本信息;另一类是操作信息的功能,包括邮件信息的删除、阅读、工作时段的设置、年龄等级的设置、CA PIN 密码的设置。在CA应用的运行过程中会维护一个CA所有相关信息的对象,管理功能所操作的信息均是对该对象的访问和设置。当然,这些信息的显示也可以通过扩展接口或者Android下其他进程通讯       

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
7#
 楼主| 发表于 2013-8-4 00:21:00 | 显示全部楼层
        嗯,和硬件平台没有关系,只要是Android系统,扩展了NGB下载CA的Java接口的平台,基于我们所说的方法开发的CA应用都可以跑。       

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
8#
 楼主| 发表于 2013-8-4 00:43:00 | 显示全部楼层
[quote]有没有哪位大侠提供一个这样的APK 试试?[/quote]        简单的demo apk应用可以有,但要apk应用支持具体的CA,还需要了解该CA具体的通讯协议才可以。            

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
9#
 楼主| 发表于 2013-8-6 08:35:00 | 显示全部楼层
        终端的智能化是趋势,OS是基础,泰信DTVOS是泰信在多年数字电视行业经验基础上,融合NGB中间件标准、下载CA标准接口研发而成,目的是推动终端的智能化、市场化,推动行业的快速发展,相信它会得到越来越多行业内外厂家的支持。       

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

积分
131
10#
 楼主| 发表于 2013-8-16 16:13:00 | 显示全部楼层
          非常抱歉,13-15日系统维护没能及时通知大家,对给大家带来的不便表示歉意!    CA应用启动的问题,我们的建议是通过监听Android系统的Android.intent.action.BOOT_COMPLETED广播,在接收到该广播后启动自身的service,在 service启动中  完成完成自身的初始化,并在解扰服务可用后,向CASModuleManager完成注册。           
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|泰信

GMT+8, 2024-5-13 18:55 , Processed in 0.077152 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表