泰信论坛

 找回密码
 立即注册
查看: 63829|回复: 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的应用难度就不大了。

0

主题

12

帖子

165

积分

注册会员

Rank: 2

积分
165
沙发
发表于 2013-7-21 09:22:00 | 只看该作者
        有道理,研究研究。       
板凳
匿名  发表于 2013-7-21 11:17:00
        非常有参考价值,对于DVB+OTT智能终端的市场化意义深远。       

0

主题

1

帖子

735

积分

高级会员

Rank: 4

积分
735
地板
发表于 2013-7-26 17:56:00 | 只看该作者
        这个比下载CA有意思,我这搞到一台Android的机顶盒,倒可以自己先试验一下。       

0

主题

0

帖子

17

积分

新手上路

Rank: 1

积分
17
5#
发表于 2013-7-27 13:00:00 | 只看该作者
        那盒子可以同时支持多种卡吗?       

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

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

0

主题

0

帖子

17

积分

新手上路

Rank: 1

积分
17
7#
发表于 2013-7-29 08:26:00 | 只看该作者
        这论坛里有智能卡CA厂家的开发人员吗,能不能给个这样的应用试试?       

0

主题

12

帖子

165

积分

注册会员

Rank: 2

积分
165
8#
发表于 2013-7-29 15:47:00 | 只看该作者
        这个技术应该不难,机顶盒厂家的软件工程师也有很多熟悉智能卡CA开发的。       

0

主题

1

帖子

735

积分

高级会员

Rank: 4

积分
735
9#
发表于 2013-7-29 23:33:00 | 只看该作者
        能不能给介绍下CA应用怎么起来,怎么工作,CA的信息怎么显示? 标准中内容有点多,看得有点头大。       

5

主题

28

帖子

131

积分

版主

Rank: 7Rank: 7Rank: 7

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

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|泰信

GMT+8, 2024-12-23 06:07 , Processed in 0.552756 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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