中华人民共和国广播电视和网络视听行业标准
GY
GY/T 255—2024
代替GY/T 255—2012
可下载条件接收系统技术规范
Technical specification for downloadable conditional access system 2024 - 12 - 30发布
2024 - 12 - 30实施
国家广播电视总局 发布
GY/T 255—2024
Ⅰ
目 次
前言 ................................................................................ III
引言 .................................................................................. V
1 范围 ............................................................................... 1
2 规范性引用文件 ..................................................................... 1
3 术语和定义 ......................................................................... 1
4 缩略语 ............................................................................. 2
5 概述 ............................................................................... 3
6 安全机制 ........................................................................... 4
6.1 密钥机制 ....................................................................... 4
6.2 DCAS终端软件安全机制 ........................................................... 6
6.3 DCAS终端硬件安全机制 ........................................................... 6
7 总体要求 ........................................................................... 6
7.1 DCAS前端系统要求 ............................................................... 6
7.2 安全芯片密钥植入模块要求 ....................................................... 6
7.3 DCAS用户端软件要求 ............................................................. 7
7.4 终端安全芯片要求 ............................................................... 7
7.5 终端软件平台要求 ............................................................... 7
7.6 终端安全和鲁棒性要求 ........................................................... 7
8 架构和功能 ......................................................................... 8
8.1 DCAS系统架构和功能 ............................................................. 8
8.2 DCAS前端架构和功能 ............................................................. 9
8.3 DCAS终端架构和功能 ............................................................ 10
8.4 DCAS安全数据管理平台功能 ...................................................... 10
9 终端安全芯片 ...................................................................... 11
9.1 安全芯片工作流程 .............................................................. 11
9.2 根密钥派生模块 ................................................................ 12
9.3 层级密钥模块 .................................................................. 13
9.4 OTP模块 ....................................................................... 14
附录A(规范性) 信任链安全机制 ...................................................... 16
A.1 信任链基本原则 ................................................................ 16
A.2 启动签名验证 .................................................................. 16
A.3 密钥管理 ...................................................................... 17
A.4 启动加载软件安全要求 .......................................................... 18
GY/T 255—2024
Ⅱ
A.5 启动加载软件和安全芯片的性能要求 .............................................. 18
附录B(资料性) TEE信任链安全机制 .................................................. 19
B.1 TEE的DCAS用户端软件 .......................................................... 19
B.2 DCAS_APP安全机制 .............................................................. 19
B.3 DCAS_TAPP安全机制 ............................................................. 19
附录C(规范性) DCAS应用程序接口 ................................................... 22
C.1 Java应用程序接口 .............................................................. 22
C.2 Javascript应用程序接口 ........................................................ 49
C.3 安全芯片层级密钥驱动接口 ...................................................... 70
C.4 其他GP扩展接口 ............................................................... 74
附录D(规范性) 终端安全芯片功能扩展 ................................................ 79
D.1 终端安全芯片对本地内容的保护 .................................................. 79
D.2 终端安全芯片对数据安全的保护 .................................................. 80
D.3 用于扩展功能的根密钥派生模块 .................................................. 80
附录E(规范性) 根密钥派生模块相关要求 .............................................. 82
附录F(规范性) 握手认证流程 ........................................................ 83
GY/T 255—2024
Ⅲ
前 言
本文件按照GB/T 1.1—2020《标准化工作导则 第1部分:标准化文件的结构和起草规则》的规定起草。
本文件代替GY/T 255—2012《可下载条件接收系统技术规范》,与GY/T 255—2012相比,除结构调整和编辑性改动外,主要技术变化如下:
——
更改了密码算法,采用商用密码算法替代原算法(见第7章、第10章、附录A、附录C、附录D,2012年版的第6章、第9章、附录A、附录C、附录F);
——
删除了DCAS用户端软件签名、验签过程(见2012年版的附录B);
——
删除了DCAS用户端软件下载和启动的机制(见2012年版的附录D);
——
删除了DCAS终端生产发放使用和软件签名认证流程(见2012年版的附录E);
——
增加了TEE信任链安全机制(见附录B);
——
增加了DCAS应用程序接口中的Javascript应用程序接口、安全芯片层级密钥驱动接口和其他GP扩展接口(见C.2~C.4)。
本文件由全国广播电视和网络视听标准化技术委员会(SAC/TC 239)归口。
本文件起草单位:国家广播电视总局广播电视科学研究院、北京永新视博数字技术有限公司、北京数码视讯科技股份有限公司、海思技术有限公司。
本文件主要起草人:盛志凡、杨勍、田雪冰、郑力铮、梁志坚、王强、饶丰、张晶、钟振东、魏晔。
本文件及其所代替文件的历次版本发布情况为:
——
2012年首次发布为GY/T 255—2012,本次为第一次修订。
GY/T 255—2024
V
引 言
本文件的发布机构提请注意,声明符合本文件时,可能涉及第6章、第8章~第10章相关的专利的使用。
本文件的发布机构对于该专利的真实性、有效性和范围无任何立场。
该专利持有人已向本文件的发布机构承诺,他愿意同任何申请人在合理且无歧视的条款和条件下,就专利授权许可进行谈判。该专利持有人的声明已在本文件的发布机构备案。
表1中列出的专利权人持有本文件涉及的专利。
表
1 持有本文件涉及专利的专利权人相关信息
专利持有人
地址
联系人
邮政编码
电话
电子邮件
国家广播电视总局广播电视科学研究院
北京市复兴门外大街2号
杨勍
100866
010-86094200
yangqing@abs.ac.cn
中央广播电视总台
北京市复兴路11号
蔡贺
100859
010-68506440
caihe@cctv.com
北京永新视博数字技术有限公司
北京市海淀区上地东路5号京蒙高科大厦B座4层
田雪冰
100085
010-62971199
tianxb@novel-supertv.com
北京数码视讯科技股份有限公司
北京市海淀区上地五街数码视讯大厦
郑力铮
100085
010-82345800
zhenglizheng@sumavision.info
北京安视网信息技术有限公司
北京市朝阳区光华路4号东方梅地亚中心A座2501-2506
梁建
100026
010-85279588
lliang@nds.com
请注意除上述专利外,本文件的某些内容仍可能涉及专利。本文件的发布机构不承担识别这些专利的责任。
GY/T 255—2024
1
可下载条件接收系统技术规范
1 范围
本文件规定了具有双向交互能力的数字电视广播系统中可下载条件接收系统的总体要求、安全机制、系统架构和功能、终端系统、终端安全芯片等内容。
本文件适用于具有双向交互能力的数字电视广播系统中可下载条件接收系统的开发、测试、运行和维护。
2 规范性引用文件
下列文件中的内容通过文中的规范性引用而构成本文件必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本文件;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB/T 32905—2016 信息安全技术 SM3密码杂凑算法
GB/T 32907—2016 信息安全技术 SM4分组密码算法
GB/T 35275—2017 信息安全技术 SM2密码算法加密签名消息语法规范
GY/Z 175—2001 数字电视广播条件接收系统规范
GY/T 308—2017 单向可下载条件接收系统技术规范
ISO/IEC 13818-1:2023 信息技术 运动图像和相关音频信息的通用编码 第1部分:系统(Information technology - Generic coding of moving pictures and associated audio information— Part 1: Systems)
3 术语和定义
下列术语和定义适用于本文件。
3.1
条件接收系统 conditional access system;CAS
数字电视广播业务的授权管理和接收控制系统,能实现只容许被授权的用户使用某一业务,未经授权的用户不能使用这一业务等功能。
3.2
层级密钥 key ladder
一种保证控制字安全传送的结构化多级密钥机制。
3.3
控制字 control word;CW
用于加解扰的控制信息。
3.4
加扰 scramble
在广播前端的条件接收系统控制下改变或控制被传送业务码流的某些特性,使得未经授权的接收者不能得到正确的业务码流的过程。
GY/T 255—2024
2
3.5
解扰 descramble
加扰的逆过程。
3.6
根密钥 root key
用于层级密钥首层的密钥。
3.7
派生 derivation
使用相同输入数据应用不同参数,生成不同输出数据的单向演化过程。
3.8
启动加载软件 bootloader
用于接收终端启动后初始化硬件和加载主软件的程序。
3.9
终端安全芯片 terminal secure chipset
集成在接收终端中,主要实现密钥派生和层级密钥的码流处理芯片。
3.10
握手认证 challenge response
DCAS前端验证终端安全芯片合法性的一种流程。
3.11
随机数 nonce
由DCAS前端发出的用于握手认证的随机或非重复值。
3.12
终端软件平台 terminal software platform
运行于接收终端上,底层集成了各项硬件访问和驱动,向上层包括CA应用在内的各项终端应用提供API,并对上层应用提供按一定安全要求进行应用下载、启动和运行环境的软件平台。
3.13
最终根密钥派生函数 final root key derivation function
用于生成根密钥的一种派生算法。
4 缩略语
下列缩略语适用于本文件。
AES 高级加密标准(Advanced Encryption Standard)
API 应用程序编程接口(Application Programming Interface)
CA 条件接收(Conditional Access)
CAT 条件接收表(Conditional Access Table)
ChipID 芯片标识(Chipset Identification)
CPU 中央处理器(Central Processing Unit)
DCAS 可下载条件接收系统(Downloadable Conditional Access System)
ECB 电子密码本(Electronic Code Book)
ECM 授权控制信息(Entitlement Control Message)
ECMG 授权控制信息发生器(Entitlement Control Message Generator)
EMM 授权管理信息(Entitlement Management Message)
GY/T 255—2024
3
EMMG 授权管理信息发生器(Entitlement Management Message Generator)
EPG 电子节目指南(Electronic Program Guide)
ES 基本流(Elementary Stream)
ESCK 加密的安全芯片密钥(Encrypted Secure Chipset Key)
GP 全球平台组织(Global Platform)
MPEG 运动图像专家组(Moving Picture Expert Group)
OTP 一次性可编程(One Time Programmable)
OSD 屏幕显示(On Screen Display)
PID 包标识码(Packet Identifier)
PMT 节目映射表(Program Map Table)
SCK 安全芯片密钥(Secure Chipset Key)
SCKv 安全芯片密钥厂商派生密钥(Secure Chipset Key Vendor)
Seedv 掩码密钥厂商派生密钥(Seed Vendor)
SI 业务信息(Service Information)
SMK 掩码密钥(Secret Mask Key) TDES 三重数据加密标准(Triple Data Encryption Standard)
TEE 可信执行环境(Trusted Execution Environment)
TVOS 智能电视操作系统(Television Operating System)
TS 传输流(Transport Stream)
UDP 用户数据报协议(User Datagram Protocol)
UUID 通用唯一识别码(Universally Unique Identifier)
Vendor_SysID 条件接收供应商系统标识(Vendor System Identification)
5 概述
DCAS是一套包含安全数据管理平台的端到端的条件接收系统,具有典型条件接收系统的授权控制和管理功能,终端可以通过DCAS用户端软件的下载替换,实现对不同前端的适配切换。
DCAS由前端、终端和安全数据管理平台组成,包括7个功能模块:
a) DCAS前端;
b) DCAS用户端软件;
c) 终端安全芯片;
d) 终端软件平台的DCAS应用程序接口;
e) 安全数据管理平台;
f) 安全芯片密钥植入模块;
g) 可分离安全设备(本文件中暂不做定义)。
DCAS架构见图1。
GY/T 255—2024
4
节目
信息
管理
用户
管理
系统
视频、音频、数据
SI
发生器
复
用
及
加
扰
ECM、EMM
双
向
网
关
广播网络
前 端
双向
接口
终 端
终端软件平台
应用
程序
硬件
平台
视音频内容
及其他信息
握手认证
启动
加载器
EMM
DCAS
前端
a)
安全数据管理平台 e)
DCAS应用程
序接口d)
终端
安全
芯片
c)
安全芯片
密钥植入模块f)
DCAS
用户端
软件
b)
可分离
安全
设备g)
图 1 DCAS 架构
6 安全机制
6.1 密钥机制
6.1.1 密钥模型
DCAS 的密钥机制包括根密钥派生机制、层级密钥机制、安全数据管理机制和业务加解扰机制。DCAS
系统的密钥模型见图2。
GY/T 255—2024
5
层级密钥机制
根密钥派生机制
业务加解扰机制
握手认证多级密钥
根密钥
控制字
业务数据
加扰的业务数据
K1 Kn
根密钥派生机制
层级密钥机制
多级密钥握手认证
业务加解扰机制
K1 Kn
加密解密
认证数据
ESCK
Vendor_SysID
根密钥
业务数据
SCKv
Seedv
前端终端
SMK
终端安全芯片厂商安全数据管理平台
安全数据管理机制
控制字
图2 密钥模型
6.1.2 根密钥派生机制
根密钥派生机制包括前端根密钥派生和终端根密钥派生,根密钥派生的详细流程见9.2,基本流
程如下:
a) 前端根密钥派生:前端用终端安全芯片生产厂商和安全数据管理平台提供的必要数据和相关
算法,在终端使用前为每个终端派生出对应安全芯片的根密钥;
b) 终端根密钥派生:终端利用DCAS 用户端软件,为安全芯片提供相关必要信息,并通过安全芯
片内预置的根密钥派生模块派生出根密钥。
6.1.3 层级密钥机制
层级密钥机制包含大于2 级的多级层级密钥功能和握手认证功能。
多级层级密钥功能是指按照层级方式对CW 进行逐层加密,保证CW 在使用和传输过程中的安全。
DCAS 前端系统生成密钥对CW 逐层加密,终端安全芯片接收密钥逐层解密还原CW,终端安全芯片的层
级密钥具体技术要求应符合9.3.1 的规定。
握手认证功能是在双向系统中对终端安全芯片进行的合法性验证。终端安全芯片对接收到的认证
数据采用层级密钥中的密钥进行处理并返回结果,DCAS 前端对终端安全芯片返回的结果进行认证。具
体技术要求应符合9.3.2 的规定。
6.1.4 安全数据管理机制
安全数据管理机制是DCAS 密钥机制的核心组成部分。它运用安全信息分散管理的方法,将根密钥
派生中所需的信息交由安全数据管理平台、条件接收厂商和芯片厂商分别管理,保证了DCAS 系统的安
全性及中立性。
6.1.5 业务加解扰机制
GY/T 255—2024
6
业务加解扰机制实现业务数据从前端到终端的安全传递,应符合GY/Z 175—2001中的规定。
6.2 DCAS终端软件安全机制
6.2.1 信任链
DCAS终端软件安全机制基于一种自底向上的信任链,从终端安全芯片至启动加载软件、终端软件平台和DCAS用户端软件,采用数字签名技术建立信任链,只有在信任链中的每个环节都通过签名校验后,信任链的后一环节方可启动,信任链安全机制应符合附录A的规定。在TVOS等具备TEE的终端软件平台上使用DCAS时,应使用TEE信任链安全机制,具体技术实现见附录B。
6.2.2 启动加载软件验证
启动加载软件在运行之前由安全芯片对其进行数据来源可靠性验证和数据完整性验证。
安全数据管理平台负责管理启动加载软件的签名。
6.2.3 终端软件平台验证
终端软件平台下载和运行之前由启动加载软件在本地对其进行数据来源可靠性验证和数据完整性验证。
6.2.4 DCAS用户端软件验证
DCAS用户端软件在下载和运行之前应由终端软件平台对其进行数据来源可靠性验证和数据完整性验证。
下载的DCAS用户端软件应按照运营商下发的应用访问权限要求访问终端资源。
6.2.5 DCAS用户端软件数据安全
DCAS用户端软件在终端存储数据时,终端应保证数据存储的安全,避免因为异常断电等因素引起数据丢失。
重要数据加密存储时,可以使用握手认证机制的加密部分对数据进行加密。
6.3 DCAS终端硬件安全机制
DCAS终端硬件安全机制通过终端安全芯片保证。具体技术要求应符合第9章的规定。
7 总体要求
7.1 DCAS前端系统要求
DCAS前端应符合GY/Z 175—2001中第6章的要求,同时应支持回传数据的接收和处理,其要求为:
a) 应支持通过双向信道实现对终端的合法性检查;
b) 应支持通过双向和单向信道实现EMM传输等功能;
c) 应能生成终端根密钥;
d) DCAS前端生成的EMM和ECM应符合GY/Z 175—2001中6.2的要求。
7.2 安全芯片密钥植入模块要求
GY/T 255—2024
7
安全芯片密钥植入模块负责将派生根密钥所需的ChipID、ESCK、BL_KEY0等必要信息植入终端安全芯片中,在安全芯片生产线上使用,其要求为:
a) 应具有足够的安全性和防攻击能力;
b) 应支持安全存储敏感数据;
c) 应支持ChipID、ESCK、BL_KEY0等必要信息的导入和导出。
7.3 DCAS用户端软件要求
DCAS用户端软件是DCAS中可下载、可替换的终端软件模块,其要求为:
a) 应具有足够的安全性和防攻击能力;
b) 应实现和终端软件平台之间的应用程序接口,符合附录C的规定;
c) DCAS用户端软件应通过和终端软件平台交互实现条件接收功能。
DCAS用户端软件应符合GY/Z 175—2001中7.2.1的要求,同时应支持以下功能。
a) DCAS用户端软件下载:终端启动运行后,如果没有在本机的Flash内发现已有的DCAS用户端软件,终端应通过特定的指令或图形界面下载DCAS用户端软件。下载的形式应包含用户自愿下载和运营商强制下载。
b) DCAS用户端软件注册:DCAS用户端软件应具有向DCAS前端系统注册的能力,同时应能报告DCAS用户端软件的运行状态并获取相关信息。
c) DCAS握手认证:终端第一次安装和更换DCAS用户端软件时,DCAS用户端软件应支持使用握手认证。
7.4 终端安全芯片要求
终端安全芯片是集成在接收终端中,实现层级密钥的码流处理芯片,其要求为。
a) 应支持通过派生方式生成根密钥。
b) 应支持层级密钥方式,保证CW在芯片内的安全传输。
c) 应包括码流处理模块。
d) 应包括解扰功能,符合GY/Z 175—2001中的规定。
e) 不论终端安全芯片是否包含主CPU,主CPU都不应读写存储相关安全信息及密钥的寄存器。
f) 应包含OTP模块,并提供根密钥生成及安全数据管理平台根证书的存储功能。
g) 应支持代码签名验证功能。
h) 应支持以下几种加密算法:
1) SM4分组密码算法(应符合GB/T 32907—2016中的规定);
2) SM2椭圆曲线公钥密码算法(应符合GB/T 35275—2017中的规定);
3) SM3密码杂凑算法(应符合GB/T 32905—2016中的规定)。
7.5 终端软件平台要求
终端软件平台是在终端安全芯片硬件及驱动之上的公共软件模块,其要求为:
a) 应支持DCAS用户端软件的下载、更新和替换;
b) 应提供DCAS用户端软件所需的符合附录C规定的应用程序接口;
c) 应保证DCAS用户端软件下载、启动、运行过程中的完整性、可靠性和安全性;
d) 可同时支持运行两个以上DCAS用户端软件。
7.6 终端安全和鲁棒性要求
7.6.1 安全要求
GY/T 255—2024
8
终端安全要求如下:
a) 终端的保密性和完整性:终端设计及生产应能有效地保护本文件中涉及的密钥、证书和软件
的保密性和完整性;
b) 终端的安全性:终端生产应有效地保证终端不被修改或破坏;
c) 终端使用过程中不应通过硬件或软件的方式停止或关闭本文件所规定的业务保护功能,导致
终端中的解密内容可以被输出、篡改、拦截、转发或复制。
7.6.2 鲁棒性要求
终端鲁棒性要求如下。
a) 软件:
1) 终端在使用软件进行业务保护功能时,该软件应采取安全技术手段保证自身安全,安全
技术手段包括软件自身加密、监控执行、在安全物理硬件中实现和执行等;
2) 软件执行过程中,应使用混淆技术和反编译技术,避免软件实现方式被窃取或泄露;
3) 软件应具有完整性检查功能,任何未经授权的修改将导致软件无法运行。
b) 硬件:
1) 终端应采用安全技术手段保证硬件的完整性;
2) 终端安全芯片不应通过普通工具或很难通过专业工具被移除、更换;
3) 终端安全芯片内数据不应通过任一手段修改。
c) 软硬件接口:终端硬件和软件接口应保证无法通过使用通用工具或很难通过使用专业工具进
行破坏或规避。
8 架构和功能
8.1 DCAS 系统架构和功能
DCAS系统功能模块见图3。
安全数据管理平台
DCAS
前端
安全芯片密
钥植入模块
DCAS用户端软件
终端安全芯片
DCAS应用程序接口
DCAS终端
可分离安全设备
图3 DCAS 系统功能模块
GY/T 255—2024
9
DCAS系统功能模块说明如下。
a) DCAS 前端:DCAS 前端对输入的音视频流进行加扰,通过广播信道和双向信道发送条件接收的
授权等信息,完成业务的加密保护传送和合法授权控制管理,是实现各项业务和服务的基础。
DCAS 前端主要包括ECMG、EMMG、密钥管理、下载管理和其他模块等。
b) DCAS 终端:DCAS 终端对用户的授权进行合法性验证,解扰受保护的业务,实现业务的条件接
收。终端软件平台可以安全地下载、更新和替换DCAS 用户端软件。
c) 安全数据管理平台:DCAS 安全数据管理平台负责向终端安全芯片生产厂商提供ChipID、
ESCK、BL_KEY0 等必要信息,向DCAS 前端提供SCKv 和Vendor_SysID 等必要信息。安全芯片
密钥植入模块负责将派生根密钥所需的ChipID、ESCK、BL_KEY0 等必要信息植入终端安全芯
片中,在安全芯片生产线上使用。
8.2 DCAS 前端架构和功能
DCAS前端功能模块见图4。
ECMG
EMMG
节目信息
管理系统
BOSS
加扰器
复
用
器
CW ECM
EMM
其他模块
监管平台
密钥管理
下载管理
安全数据管理
平台
双向网关
节目信息
授权等指令
监管数据
TS/ECM
DCAS前端
图4 DCAS 前端功能模块
DCAS 前端主要模块包括。
a) ECMG:ECMG 实现和加扰器连接,ECMG 接收加扰器送来的CW,生成ECM 信息返回给加扰器,
基本功能应满足GY/Z 175—2001 中附录E 同密技术中的要求。
b) EMMG:EMMG可生成基于群组和个体的EMM 信息,并通过与复用器接口或双向网关接口发送EMM。
EMMG 的基本功能应满足GY/Z 175—2001 中附录E 同密技术中的要求。
c) 下载管理:前端下载管理模块负责将DCAS 终端用户软件存储在下载服务器上。终端下载管理
模块是终端软件平台的一个功能模块,负责对DCAS 终端用户软件进行验证。下载通道的协议
本文件不做定义。下载管理结构见图5。
d) 密钥管理:负责根密钥和各级密钥的管理。根密钥由安全数据管理平台提供的ChipID、SCKv,
终端安全芯片厂商提供的Seedv 和最终根密钥派生函数生成;层级密钥的生成和管理由DCAS
前端自行处理。
GY/T 255—2024
10
e) 其他模块:DCAS 其他模块可包括:网管模块、监管模块、对外接口等。
前端下载管理终端下载管理
终端软件平台
下载服务器下载管理模块
图5 下载管理结构
8.3 DCAS 终端架构和功能
DCAS终端功能模块见图6。
DCAS终端
解调
解复用
加扰业务
加扰业务
EK3(K2)
EK2(K1)
EK1(CW)
显示
终端
清流业务
EK3(K2)
EK2(K1)
EK1(CW)
加扰业务
DCAS
用户端
软件
终端软件
平台
DCAS应用
程序接口
终端
安全
芯片
图6 DCAS 终端功能结构
DCAS 终端主要模块包括:终端安全芯片、终端软件平台的DCAS 应用程序接口和DCAS 用户端软件。
a) 终端安全芯片:接收终端软件平台输入的层级密钥数据和加扰业务,对加扰业务进行解扰和
解码,并输出解码后的视音频,具体实现见第9 章。
b) 终端软件平台DCAS 应用程序接口:实现对DCAS 用户端软件的管理,支撑DCAS 用户端软件实
现ECM/EMM 等数据处理,以及实现DCAS 用户端软件与EPG 等应用之间的数据交互。
c) DCAS 用户端软件:实现对ECM、EMM 等数据解析和处理,其接口描述应符合附录C 的规定。
DCAS 用户端软件通过打包成一个应用后,下载到终端软件平台上,与其他终端软件平台应用
并存。
8.4 DCAS 安全数据管理平台功能
DCAS 安全数据管理平台功能主要包括:
a) 生成 ESCK 功能:生成ChipID 和ESCK 文件,通过安全的方式送到安全芯片密钥植入模块,用
于把密钥写入安全芯片中;
GY/T 255—2024
11
b) 生成 SCKv 功能:生成ChipID 和SCKv 文件,通过安全的方式送到条件接收厂商,用于生成根
密钥,并管理各种参数和所有密钥;
c) 安全芯片密钥植入在芯片厂商生产线上保存安全数据管理平台发来的参数和密钥,根据各芯
片生产线上的系统通讯,向安全芯片中写入参数和密钥。
9 终端安全芯片
9.1 安全芯片工作流程
终端安全芯片功能框图见图7。
解扰及解码模块
层级密钥模块
驱动
解密解密
解密
终端安全芯片
码流处理
解密
解密
业务解扰业务解码
CW
加扰的业务
OTP模块
Nonce
根密钥派生
模块
SCK还原函数
ESCK
ChipID
DA(Nonce)
EK2(K1)
EK3(K2)
EK1(CW)
Vendor_SysID
ChipID
SCK
DK2(K2)=A
K3
K2
K2
K2
K1
握手认证
图7 终端安全芯片功能框图
终端安全芯片包含:OTP、根密钥派生、层级密钥和解扰及解码等模块。
GY/T 255—2024
12
终端安全芯片通过根密钥派生模块生成根密钥K3,通过层级密钥模块保障CW 和其他密钥的安全
传输及终端安全芯片的合法性。
终端安全芯片的功能不应由主CPU 实现。
终端安全芯片工作流程:芯片上电后,OTP 模块通过内置的ESCK 及SCK 还原函数生成SCK,并提
供给根密钥派生模块,用于生成根密钥K3。层级密钥模块接收根密钥K3 用于相关密钥的解密及握手
认证流程。层级密钥模块包含两个方面的功能:对输入的加密密钥实现分层解密;处理握手信息
(nonce),并生成认证响应(DA(nonce))。最终解密获得的CW 被送至解扰及解码模块进行业务解
扰和解码。
采用终端安全芯片对本地内容的保护方法应符合附录D 的规定。
9.2 根密钥派生模块
根密钥派生模块由一组硬件逻辑模块构成,通过其中嵌入的派生机制,并结合输入参数来实现根
密钥的派生。任何一家条件接收提供商均通过此派生机制生成不同的根密钥。此方式规避了嵌入单一
根密钥带来的安全风险。
根密钥派生模块功能框图见图8,根密钥派生模块包括:SCK 初步处理函数、分离函数和根密钥最
终派生函数。根据外部输入的SCK 和Vendor_SysID,派生出某一条件接收提供商的根密钥。
根密钥派生模块
SCK初步处理函数
分离函数根密钥最终派生函数
根密钥 K3
Vendor_SysID
Seedv
SCK
SCKv
图8 根密钥派生模块功能框图
SCK 初步处理函数模块基于SCK 和输入的Vendor_SysID,生成SCKv。该函数中应使用具有一定强
度的密码算法,此强度应保证在已知Vendor_SysID 和SCKv 的情况下,SCK 不能够被还原。SCK 初步处
理函数应由终端安全芯片厂商提供并由安全数据管理平台认证。
分离函数使用Vendor_SysID 和SMK 作为输入值,生成Seedv。该函数中应使用具有一定强度的密
码算法,此强度应保证在已知Vendor_SysID 和Seedv 的情况下,SMK 不能够被还原。分离函数应由终
端安全芯片厂商提供并由安全数据管理平台认证。
根密钥最终派生函数依据SCKv 和Seedv 的输入值派生出根密钥K3。在实施过程中,根密钥最终
派生函数应采用单向函数,使得当知道K3 和任一输入参数时,不能还原另一个输入参数。根密钥最终
派生函数由终端安全芯片厂商提供并由安全数据管理平台认证。
GY/T 255—2024
13
参与根密钥派生的参数:
——Vendor_SysID:用于标识条件接收系统,由安全数据管理平台分配,长度为2 字节;
——SCKv:16 字节;
——SMK:16 字节,芯片厂商提供的门级数据;
——Seedv:16 字节。
终端安全芯片可同时支持多种根密钥最终派生函数。根密钥派生模块相关要求应符合附录E 的规
定。
9.3 层级密钥模块
9.3.1 三层密钥机制
层级密钥模块功能框图见图9。
本文件规定的终端安全芯片应支持三层密钥机制。更多层级的密钥机制,其安全要求和技术细节
不在本文件的描述范围内。
层级密钥模块
解密
解密
解密
DA(nonce)
K2 K2
握手认证
K3
解扰
解密
解密
nonce
DA(nonce)
三层密钥
EK3(K2)
EK2(K1)
EK1(CW)
K2
K1
CW
Dk2(K2)=A
CW
图9 层级密钥模块功能框图
三层密钥机制确保CW 在终端的传输安全。
三层密钥机制通过从根密钥派生模块获得的根密钥K3,依次解密EK3(K2)、EK2(K1)、EK1(CW)获
得解扰所需的CW;同时K2 配合前端发送的握手信息(nonce)与前端完成握手认证。
终端安全芯片应遵循以下流程解密加扰业务:
a) 接收密文EK3(K2),使用K3 解密该密文,并生成K2;
b) 接收密文EK2(K1),使用K2 解密该密文,并生成K1;
GY/T 255—2024
14
c) 接收密文EK1(CW),使用K1 解密该密文,并生成CW;
d) CW 用于解密加扰业务。
EK3(K2)表示用密钥K3 加密的K2。
EK2(K1)表示用密钥K2 加密的K1。
EK1(CW/Key)表示用密钥K1 加密的数据CW。
K3 是派生根密钥,长度为16 字节。
K2 是用于解密K1 的密钥,长度为16 字节。
K1 是用于解密CW 的密钥,长度为16 字节。
CW 是用于解扰业务的密钥,长度为8 字节或16 字节。
层级密钥使用SM4 分组算法,应符合GB/T 32907—2016 中的规定,计算使用128bit,模式为ECB。
9.3.2 握手认证
终端安全芯片应支持握手认证机制,DCAS 前端对终端安全芯片的合法性进行验证,确保授权下发
到合法的终端。同时,握手认证机制也可以被用于其他一些安全功能。
握手认证机制遵循以下流程:
a) 终端安全芯片应通过API 驱动接口接收Vendor_SysID、EK3(K2)和Nonce;
b) 终端安全芯片应利用派生的K3 解密EK3(K2),得到K2;
c) 终端安全芯片应通过K2 解密K2 生成DK2(K2),记为A;
d) 终端安全芯片应使用A 解密nonce,生成DA(nonce);
e) 终端安全芯片可向前端提出DA(nonce);
f) 前端应对DA(nonce)做出响应。
DK2(K2)表示用密钥K2 解密K2 的过程。
A 表示DK2(K2)的结果,长度为16 字节。
nonce 表示握手认证信息,长度为16 字节。
DA(nonce)表示用A 解密随机数nonce 得到的结果。
DCAS 前端与终端安全芯片的握手认证流程应符合附录F 的规定。
9.4 OTP 模块
OTP模块功能框图见图10。
OTP模块
ChipID
ESCK
SCK还原函数
SCK
图10 OTP 模块功能框图
GY/T 255—2024
15
OTP模块用于存储ChipID、ESCK和SCK还原函数等信息。SCK还原函数逻辑电路读取OTP模块中的ESCK,将ESCK还原成SCK,并将SCK提供给根密钥派生模块。
SCK是派生根密钥所需的必要安全信息,SCK不能直接存储在OTP模块中,应符合以下要求:
a) SCK是终端安全芯片密钥,每芯片唯一,长度为16字节,由安全数据管理平台生成;
b) ESCK是加密后的SCK,由安全数据管理平台提供,存储于OTP模块,长度等于SCK长度;
c) ChipID是终端安全芯片的公开标识符,包括了表明芯片厂商和型号的信息,以及芯片的一个全球唯一标识符,长度为8字节,由安全数据管理平台分配,ChipID数据格式见表2。
表
2 ChipID数据格式
数据
长度
数据类型
芯片厂商ID(Chip Manufacturer ID)
8bit
uimsbf
芯片类型(Chip Type)
12bit
保留(Reserved)
12bit
芯片标识
32bit
芯片厂商ID:芯片厂商的唯一标识,8bit。
芯片类型:某一芯片厂商生产的芯片型号标识,由安全数据管理平台分配,12bit。
保留位:12bit。
芯片标识:某一芯片制造厂商生产的某一芯片类型芯片的序列标识,32bit。
GY/T 255—2024
16
附 录 A (规范性) 信任链安全机制
A.1 信任链基本原则
在整个信任链机制中:
a) 每个软件组件都应被签名;
b) 签名应被添加到被签名的软件组件中;
c) 每个软件组件应对后续载入的软件组件进行验证,验证通过后才能启动运行;
d) 验证密钥应在实施验证的软件组件中,并且也被验证过;
e) 用于验证初始的软件组件的密钥应预置在终端安全芯片OTP中;
f) 下载的软件组件应被签名,并被验证后接受安装。
终端软件执行过程中应始终遵循信任链机制。
终端启动加载软件应防止非法软件被终端加载、下载及运行。
CPU应执行一定的安全代码,检查在CPU外部Flash中已签名的启动加载软件。启动加载软件则应验证已签名的主终端软件。
A.2 启动签名验证
启动加载软件验证过程见图A.1。
GY/T 255—2024
17
终端安全芯片
终端Flash存储器
BL_KEY1
BL_KEY0对
BL_KEY1的签名
BL_KEY0
b)终端安全芯片BL_KEY1
验证启动加载器的签名
a)终端安全芯片使用BL_KEY0
验证BL_KEY1的签名
c)启动加载器使用BL_KEY1
验证主软件镜像的签名
主软件镜像
BL_KEY1对
主软件镜像的签名
可下载应用根证书
启动加载器
BL_KEY1对
启动加载器的签名
图A.1 启动加载软件验证过程
终端安全芯片应在芯片安全区域中嵌入由安全数据管理平台分配的公钥,这里记作BL_KEY0。安
全数据管理平台在任何情况下不应泄露BL_KEY0 的私钥。图A.1 中的BL_KEY0 指其公钥。
终端安全芯片在启动时应执行其安全区域中的代码从终端读取额外的公钥,这里记作BL_KEY1,
以及BL_KEY1 的签名,并应使用BL_KEY0 验证BL_KEY1 的签名是否正确。图A.1 中的BL_KEY1 指其公
钥。
在成功验证BL_KEY1 后,终端安全芯片应使用BL_KEY1 对启动加载软件进行验证。
启动加载软件应使用BL_KEY1 对终端主软件的签名进行验证。
可下载的应用应使用从根证书开始的证书链,并遵循本文件中的应用下载、启动的签名验证机制,
由终端主软件完成对可下载的应用签名验证。
上述过程提到的所有签名使用的算法包括SM3 杂凑算法和SM2 椭圆曲线算法。
A.3 密钥管理
启动加载软件密钥说明见表A.1。
GY/T 255—2024
18
表A.1 启动加载软件密钥说明
密钥名称
密钥属主
被签名
用于签名
备注
BL_KEY0
安全数据管理平台
N/A
BL_KEY1
公钥被嵌入芯片
BL_KEY1
运营商
BL_KEY0
启动加载软件
主软件镜像
—
对于BL_KEY0:安全数据管理平台应管理其内部BL_KEY0的数据库,应负责分发BL_KEY0至芯片厂商,用于嵌入指定的芯片组。
对于BL_KEY1:BL_KEY1所有者是运营商,运营商可委托安全数据管理平台进行密钥托管。无论何种BL_KEY1持有情形,为了保证终端软件可以被BL_KEY1正确签名,BL_KEY1所有者应向安全数据管理平台进行密钥托管。
安全数据管理平台应提供使用BL_KEY0签名BL_KEY1的方法和过程。BL_KEY1所有者应向安全数据管理平台提供终端的具体信息,这些信息包括芯片型号、BL_KEY1的公钥。如果安全数据管理平台批准该终端设备,则应将BL_KEY1的公钥使用BL_KEY0的私钥签名,并将签名结果连同BL_KEY1的公钥一并返还给BL_KEY1所有者,用于将BL_KEY1的公钥及签名结果置入终端设备。
A.4 启动加载软件安全要求
启动加载软件安全要求主要针对启动过程和下载过程两个方面。芯片应满足信任链机制,所有由启动加载软件装入、启动、下载和更新的软件组件应被签名和验证。启动加载软件只负责验证平台软件,由平台软件下载的应用软件应由平台软件验证。
对于启动过程:启动加载软件应在成功验证后续软件组件签名后,开始执行其代码。启动加载软件应在每一次后续软件组件重启后重新验证其签名。只有存储在终端Flash中的软件组件可以被执行。验证后的软件组件,如有需要可以进行解压缩然后运行。
对于下载过程:启动加载软件负责验证下载的软件镜像签名,避免降级可升级软件组件。软件下载成功后,终端应立即执行一次完全重启。
A.5 启动加载软件和安全芯片的性能要求
为了保证终端的用户体验,应采用安全芯片为SM3杂凑算法及SM2椭圆曲线算法提供硬件加速。
GY/T 255—2024
19
附 录 B (资料性) TEE信任链安全机制
B.1 TEE的DCAS用户端软件
在TVOS等具备TEE的终端软件平台上使用DCAS时,基于TVOS的TEE安全机制,DCAS用户端软件分为两部分,运行在TEE中的DCAS_TAPP和运行在TEE外的DCAS_APP。
B.2 DCAS_APP安全机制
DCAS_APP运行在TEE之外,按照运营商要求对DCAS_APP的签名校验。
TVOS终端软件平台,内置可下载应用根证书,通过证书链机制保证DCAS_APP的真实性和完整性。
B.3 DCAS_TAPP安全机制
B.3.1 DCAS_TAPP安全要求
DCAS_TAPP运行在TEE之中,符合以下安全要求:
a) 具备TEE信任链机制,只有在信任链中的每个环节都通过签名校验后,信任链的后一环节方可启动;
b) TEE各环节软件在终端上以加密形式存储,运行前进行解密;
c) DCAS_TAPP具备软件版本防回滚机制;
d) DCAS_TAPP可安全的实现动态加载。
B.3.2 TEE信任链的校验
TEE信任链的校验过程见图B.1。
GY/T 255—2024
20
终端安全芯片
终端Flash存储器
TEE_KEY1
TEE_KEY0对
TEE_KEY1的签名
SecureOS镜像
TEE Boot
TEE_KEY1
对SecureOS镜像的签名
TEE_KEY1对
TEE Boot的签名
TEE_KEY0
TEE_KEY2
b)终端安全芯片使用TEE_KEY1
验证TEE BOOT的签名
a)终端安全芯片使用TEE_KEY0
验证TEE_KEY1的签名
c)TEE Boot使用TEE_KEY1
验证SecureOS镜像
DCAS_TAPP镜像
TEE_KEY2
对DCAS_TAPP镜像的签名
d)SecureOS使用TEE_KEY2
验证DCAS_TAPP镜像
图B.1 TEE 信任链校验过程
TEE 信任链的校验过程如下:
a) 终端安全芯片在OTP 模块中嵌入由安全数据管理平台分配的TEE_KEY0 公钥,终端安全芯片使
用TEE_KEY0 对TEE_KEY1 进行验证;
b) 终端安全芯片使用TEE_KEY1 对TEE Boot 进行验证,对于多级TEE Boot 逐级验证;
c) TEE Boot 使用TEE_KEY1 对SecureOS 进行验证;
d) SecureOS 中嵌入TEE_KEY2 公钥,SecureOS 使用TEE_KEY2 对DCAS_TAPP 软件镜像进行验证。
TEE 信任链校验过程中提到的所有签名使用的算法包括SM3 杂凑算法和SM2 椭圆曲线算法。
TEE 密钥说明见表B.1。
表B.1 TEE 密钥说明
密钥名称 私钥归属 被签名 用于签名 公钥存储位置
TEE_KEY0 安全数据管理平台 N/A TEE_KEY1 芯片OTP
TEE_KEY1 安全数据管理平台\芯片厂商\运营商 TEE_KEY0 TEE Boot、SecureOS 终端Flash
TEE_KEY2 安全数据管理平台\芯片厂商\运营商 TEE_KEY1 DCAS_TAPP SecureOS 镜像中
GY/T 255—2024
21
对于TEE_KEY0:安全数据管理平台负责生成TEE_KEY0公私钥,分发TEE_KEY0公钥至芯片厂商,用于写入芯片OTP模块或内置于芯片ROM。写入芯片OTP时可写入TEE_KEY0公钥或其杂凑值。安全数据管理平台使用TEE_KEY0对TEE_KEY1进行签名。
对于TEE_KEY1:TEE_KEY1公私钥根据运营需求可由安全数据管理平台、芯片厂商或运营商负责掌控,掌控方分发TEE_KEY1公钥至芯片厂商。掌控方使用TEE_KEY1对TEE Boot和SecureOS进行签名。
对于TEE_KEY2:TEE_KEY2公私钥根据运营需求可由安全数据管理平台、芯片厂商或运营商负责掌控,掌控方分发TEE_KEY2公钥至SecureOS厂商,一般为芯片厂商,用于制作SecureOS镜像文件。掌控方使用TEE_KEY2对DCAS_TAPP镜像进行签名。
B.3.3 DCAS_TAPP的校验
DCAS_TAPP运行前完成以下校验内容。
a) 解密:DCAS_TAPP在终端上以加密形式存储,运行前进行解密,获得明文数据。
b) 签名校验:DCAS_TAPP镜像中,DCAS_TAPP的解密密钥、版本信息和明文数据都被TEE_KEY2签名,启动前进行校验。
c) 版本验证:终端具备安全存储区记录DCAS_TAPP版本信息,运行前比对镜像中版本信息,实现软件版本的防回滚:
• 当软件镜像中的版本号等于安全存储区中的版本号时,启动DCAS_TAPP;
• 当软件镜像中的版本号低于安全存储区中的版本号时,不启动DCAS_TAPP;
• 当软件镜像中的版本号高于安全存储区中的版本号时,启动DCAS_TAPP并更新安全存储区中的版本号;
• 当安全存储区中不存在软件镜像的版本号时,启动DCAS_TAPP并在安全存储区中写入版本号。
DCAS_TAPP的校验过程中提到的所有签名使用的算法包括SM2椭圆曲线算法、SM3杂凑算法和SM4分组密码算法。
GY/T 255—2024
22
附 录 C
(规范性)
DCAS 应用程序接口
C.1 Java应用程序接口
C.1.1 架构
DCAS 用户端软件是一个运行于支持Java 运行环境终端软件平台上的Xlet 应用;运行已下载的
DCAS 用户端软件,可实现对业务解扰。DCAS JAVA 应用程序接口示意图见图C.1。
DCAS用户端软件
终端软件平台
硬件
实时运行环境+驱动
Java.io DCAS管理器mpeg.sections Java.net
图C.1 DCAS JAVA 应用程序接口示意图
C.1.2 应用程序接口类型
C.1.2.1 CAS管理器API
终端软件平台定义了CAS 管理器(DCAS Manager),来实现管理针对业务解扰的请求。CAS 管理
器包括终端软件平台上层API、终端软件平台底层API、扩展应用API 和可分离安全设备API。
终端软件平台上层API:实现管理针对业务解扰的请求。一个DCAS 用户端软件应用将CAS 模块在
CAS 管理器中注册,用来接收网络中来自终端设备终端软件平台发出的解扰请求。DCAS 用户端软件需
要终端软件平台实现DCAS 终端软件平台上层API。
终端软件平台底层API:实现对于终端安全芯片访问所需的扩展API。
扩展应用API:实现终端软件平台上的CAS 管理器可以同Java 应用进行最基本的CA 信息传输。
DCAS 用户端软件需要终端软件平台为应用实现DCAS 扩展API。
可分离安全设备API:实现DCAS 应用与可分离安全设备通讯。
C.1.2.2 网络API
DCAS 用户端软件可以使用Java 网络API 来访问网络资源,比如与前端CA 服务器的互联。
DCAS 用户端软件需要终端软件平台根据Java.net 中的定义实现现有Java 网络API。
GY/T 255—2024
23
C.1.2.3 MPEG Section过滤API
DCAS 用户端软件使用MPEG Section 过滤API 来载入用于CA 的MPEG Section。CA 相关的数据可
包括ECM、EMM 及CAT 表。
DCAS 用户端软件需要终端软件平台根据org.davic.mpeg.sections 、
org.davic.mpeg.TransportStream 和org.davic.net.tuning.NetworkInterface 中的定义实现MPEG
Section 过滤API。
C.1.2.4 永久存储API
DCAS 用户端软件可以使用现有的Java API 来访问终端存储,包括将数据保存在非易失性存储器
中。
DCAS 用户端软件需要终端软件平台根据java.io 的定义来实现永久存储API。
DCAS 用户端软件可以在永久存储的文件系统中通过使用特定的目录来保存数据。终端软件平台需
要提供适当的函数来读取该存储文件系统的根目录名称。
C.1.3 应用接口调用时序
本条提供了使用DCAS API 的两种情况: CASModule 注册和频道选择切换, CA 模块在
CASModuleManager 中的注册见图C.2,频道选择切换见图C.3。
:CASModuleManager :CASModule
1: getInstance()
2: registerCASModule(CASModule, CASystemId, NetworkCAPriority, XletContext)
3: updateCASystemId (CASModule, CASystemId)
图C.2 CA 模块在CASModuleManager 中的注册
GY/T 255—2024
24
Media Module
DCASAL_stopDescrambling
DCAS App DTV Module DCAS Mamager
sendCommandToTEE
TEE_Client_API
loadCW
DCAS TApp
sendDescramblingEvent
sendCASEvent
loadCW method is called
for each crypto period
registerCASModule
stopDescrambling
DCASAL_startDescrambling
startDescrambling
DTVAL_startFiltering
receiveCASEvent
图C.3 频道选择切换
C.1.4 应用程序接口描述
应用程序接口名称见表C.1。
表C.1 应用程序接口名称
API 名称 包名称
终端软件平台上层API org.ngb.net.cas.module
终端软件平台底层API org.ngb.net.cas.controller
应用扩展API org.ngb.net.cas.event
可分离安全设备API org.ngb.net.cas.detachable
网络API java.net
Section 过滤API org.davic.mpeg.sections
永久性存储API java.io
C.1.5 org.ngb.net.cas.module包
C.1.5.1 概要
org.ngb.net.cas.module包提供了DCAS终端软件平台上层API,TVOS应实现此包。
org.ngb.net.cas.module包概要见表C.2。
GY/T 255—2024
25
表C.2 org.ngb.net.cas.module包概要
类别
名称
描述
接口
CASModule
用于表示请求解扰一组基本流的CASModule对象
CASDataUtils
用来获取和设置CA信息,读写DCAS数据
CADescriptor
提供了CA描述符的信息,给定业务的PMT中的可能提供CA描述符。此外CAT中也会有CA描述符的出现
CAServiceComponentInfo
用于提取特定CA业务成分的信息,如ECM PID和用于装载CW的DescramblerContext
CASPacketListener
DCAS应用通过本接口来接收带外CAS Packets(如EMMs)
CASSession
提供CAS会话相关信息
CAStatus
DCAS应用在每次DescramblerContext中的解扰状态发生变化时发送CAStatus,本状态用来指示解扰成功与否。如果所解扰成分中任何一个发生解扰失败,本状态必须汇报整个业务的解扰请求失败。当终端软件平台收到一个新的CAStatus,它应通过本段描述的CAS事件通知其他应用
CATListener
DCAS应用需实现该接口,使用CAT中的CA描述符来过滤带内EMM
CATNotifier
DCAS应用使用本方法注册用于获取CAT更新通知的监听器
类
CASModuleManager
用来注册所有被DCAS应用实现的CASModule
CASPermission
任一DCAS应用应获取CASPersmission方可访问CASModuleManager,本机制用于确保只有被网络运营商授权的DCAS应用方可使用DCAS API
C.1.5.2 接口org.ngb.net.cas.module.CASModule
C.1.5.2.1 功能
本接口描述用于表示请求解扰一组基本流的CASModule对象。
C.1.5.2.2 方法
C.1.5.2.2.1 startDescrambling
原型:
public void startDescrambling(CASSessioncasSession,CAServiceComponentInfo[]casci)
描述:由终端软件平台调用,请求CASModule解扰给定会话中的一组基本流。DCAS应用从CAS会话中可以得到相关NetworkInterface对象。从NetworkInterface中,可以获取当前TransportStream对象,用于org.davic.mpeg.sectionsAPI进行ECM section过滤。
参数:
——
Cassession:请求解扰操作的会话;
——
casci:CA业务组件信息数组,该数组可以用于获取相关ECM PID和装载CW的DescramblerContext对象。
返回:无。
C.1.5.2.2.2 updateDescrambling
原型:
public void updateDescrambling(CASSessioncasSession,CAServiceComponentInfo[]casci)
GY/T 255—2024
26
描述:终端软件平台调用本方法来更新CASModule中的解扰组件列表。根据请求,CASModule将开始解扰添加到数组的组件,并停止解扰移除的组件。对于更新后不变的成分,不发生任何变化。本方法很少被调用,通常在一个会话中由于PMT变化而发生。终端软件平台还可在CAS会话如会话类型发生变化时通过调用本方法通知CASModule。
参数:
——
casSession:请求解扰操作的会话;
——
casci:CA业务组件信息数组,该数组可以用于获取相关ECM PID,以及用以DCAS装载CW的DescramblerContext对象。
返回:无。
C.1.5.2.2.3 stopDescrambling
原型:
public void stopDescrambling(CASSessioncasSession)
描述:终端软件平台调用本接口请求CASModule停止解扰给定会话中的所有组件。
参数:casSession——请求解扰操作的会话。
返回:无。
C.1.5.2.2.4 getCAInfo
原型:
public String getCAInfo(int cmdId,String data)
描述:终端软件平台调用本接口获取CA信息。
参数:
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
data:查询参数。
返回:CA信息数据。
C.1.5.2.2.5 setCAInfo
原型:
public int setCAInfo(int cmdId,String data)
描述:终端软件平台调用本接口设置CA信息。
参数:
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
data:CA信息数据。
返回:设置成功返回0。
C.1.5.3 接口org.ngb.net.cas.module.CASDataUtils
C.1.5.3.1 功能
本接口描述用于表示获取CA相关信息的通用接口。
C.1.5.3.2 方法
C.1.5.3.2.1 getCAInfo
GY/T 255—2024
27
原型:
public String getCAInfo(int casId,int cmdId,String data)
描述:终端软件平台响应用户操作向DCAS应用获取CA信息。
参数:
——
casId:指定的CAS厂商;
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
data:查询参数。
返回:CA信息数据。
C.1.5.3.2.2 setCAInfo
原型:
public int setCAInfo(int casId,int cmdId,String data)
描述:终端软件平台响应用户操作设置CA信息给DCAS应用。
参数:
——
casId:指定的CAS厂商;
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
data:CA信息数据。
返回:设置成功返回0。
C.1.5.3.2.3 getData
原型:
public String getData(int casId,int cmdId,int[]type)
描述:终端软件平台响应用户操作向DCAS管理器获取数据。
参数:
——
casId:指定的CAS厂商;
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
type:数据类型引用。
返回:获取的数据。
C.1.5.3.2.4 setData
原型:
public int setData(int casId,int cmdId, int type,String data)
描述:终端软件平台响应用户操作设置CA信息给DCAS应用。
参数:
——
casId:指定的CAS厂商;
——
cmdId:命令的唯一标识,可根据实际项目扩展;
——
data:DCAS相关数据;
——
type:数据类型。
返回:设置成功返回0。
C.1.5.4 接口org.ngb.net.cas.module.CADescriptor
C.1.5.4.1 功能
GY/T 255—2024
28
本接口提供了CA描述符的信息,给定业务的PMT中的可能提供CA描述符。此外CAT中也会有CA描述符的出现。
C.1.5.4.2 方法
C.1.5.4.2.1 getCASystemId
原型:
public int getCASystemId()
描述:返回CA描述符的CASystemId。
参数:无。
返回:CASystemId。
C.1.5.4.2.2 getPid
原型:
public int getPid()
描述:返回CA描述符中的PID(ECM PID或EMM PID)。
参数:无。
返回:PID值。
C.1.5.4.2.3 getPrivateData
原型:
public byte[]getPrivateData()
描述:返回CA描述符终端的私有数据数组。
参数:无。
返回:privateData。
C.1.5.5 接口org.ngb.net.cas.module.CAServiceComponentInfo
C.1.5.5.1 功能
本接口用于提取特定CA业务成分的信息,如ECM PID和用于装载CW的DescramblerContext。
C.1.5.5.2 方法
C.1.5.5.2.1 getDescramblerContext
原型:
public DescramblerContext getDescramblerContext()
描述:返回用于DCAS应用装载CW的DescramberContext对象,在PMT的组件循环中出现多次相同CA描述符(相同的ECMPID和私有数据)的情形下,应只存在唯一一个DescramblerContext。
参数:无。
返回:DescramblerContext。
C.1.5.5.2.2 getCADescriptor
原型:
GY/T 255—2024
29
public CADescriptor getCADescriptor()
描述:返回业务组件相关的CA描述符,CADescriptor实例由PMT中的CA信息产生。
参数:无。
返回:一个CADescriptor。
C.1.5.5.2.3 getComponentStreamPIDs
原型:
public int[]getComponentStreamPIDs()
描述:返回一个由PMT中描述的基本流数组,数组元素的顺序应同getComponentStreamType返回的数组元素顺序一致。
参数:无。
返回:ES(基本流)PID数组。
C.1.5.5.2.4 getComponentStreamTypes
原型:
public int[]getComponentStreamTypes()
描述:返回PMT中的流类型数组,数组元素的顺序应同getComponentStreamPID返回的数组元素顺序一致。
参数:无。
返回:流类型数组。
C.1.5.5.2.5 getServiceIdentifiers
原型:
public int[]getServiceIdentifiers()
描述:返回对象所关联的业务标识数组,业务标识的表现形式由具体的使用环境而定。
参数:无。
返回:ServiceID数组。
C.1.5.6 接口org.ngb.net.cas.module.CASPacketListener
C.1.5.6.1 功能
DCAS应用通过本接口来接收带外CAS Packets(如EMMs)。
DCAS应用根据给定的CA系统标识通过CASModuleManager类提供的registerCasPacketListener方法注册本监听器。
CA系统标识由参数casId表示。
CAS包的接收依赖终端软件平台来实现。
C.1.5.6.2 方法——casPacketArrived
原型:
public void casPacketArrived(int casId,byte[ ]casPacketData,byte[ ]casPacketHeader)
描述:DCAS应用通过已注册的监听器来获得CAS包。
参数:
GY/T 255—2024
30
——
casId:CA系统标识;
——
casPacketData:CAS包数据;
——
casPacketHeader:依赖终端软件平台的CAS包头。
返回:无。
C.1.5.7 接口org.ngb.net.cas.module.CASSession
C.1.5.7.1 功能
本接口提供CAS会话相关信息。
C.1.5.7.2 常量域——会话类型
C.1.5.7.2.1 TYPE_PRESENTATION
public static final int TYPE_PRESENTATION=0x00000001。
C.1.5.7.2.2 TYPE_RECORDING
public static final int TYPE_RECORDING=0x00000002。
C.1.5.7.2.3 TYPE_BUFFERING
public static final int TYPE_BUFFERING=0x00000004。
C.1.5.7.3 方法
C.1.5.7.3.1 getType
原型:
public int getType()
描述:返回本会话的操作类型。
参数:无。
返回:操作类型,可以是本接口中定义的值之一或组合。例如本方法返回0x00000003,即类型(0x00000001)和(0x00000002)的组合。
C.1.5.7.3.2 getNetworkInterface
原型:
public org.davic.net.tuning.NetworkInterface getNetworkInterface()
描述:返回同CAS会话相关联的NetworkInterface,DCAS应用从CAS会话中获取相关NetworkInterface对象。使用NetworkInterface,DCAS应用先得到TransportStream对象,用于调用org.davic.mpeg.sections应用接口进行ECM Section过滤。
参数:无。
返回:一个NetworkInterface对象。
C.1.5.7.3.3 getAssociatedService
原型:
public java.lang.Object getAssociatedService()
描述:返回CAS会话相关的业务。
GY/T 255—2024
31
参数:无。
返回:一个Service对象。
C.1.5.7.3.4 getServiceContext
原型:
public java.lang.Object getServiceContext()
描述:返回CAS会话相关的ServiceContext。
参数:无。
返回:一个ServiceContext对象。
注:在某些实现中ServiceContext没有实际意义,本方法将返回null。
C.1.5.8 接口org.ngb.net.cas.module.CAStatus
C.1.5.8.1 功能
原型:
public interface CAStatus
描述:DCAS应用当调用CASModuleManager中的sendDescramblingEvent方法时使用本接口。DCAS应用在每次DescramblerContext中的解扰状态发生变化时发送CAStatus。本状态用来指示解扰成功与否。如果所解扰成分中任何一个发生解扰失败,本状态应汇报整个业务的解扰请求失败。当终端软件平台收到一个新的CAStatus,它应通过本段描述的CAS事件通知其他应用。具体应用接口在扩展应用接口部分说明。
C.1.5.8.2 方法
C.1.5.8.2.1 isSuccess
原型:
public boolean isSuccess()
描述:返回解扰请求的状态。
参数:无。
返回:如果解扰成功返回true,解扰失败返回false。
C.1.5.8.2.2 getCAToken
原型:
public int getCAToken()
描述:返回用于其他应用向DCAS应用查询网络相关信息的参数。
参数:无。
返回:CA令牌。
C.1.5.9 接口org.ngb.net.cas.module.CATListener
C.1.5.9.1 功能
DCAS应用需实现该接口,使用CAT中的CA描述符来过滤带内EMM。
DCAS应用需要通过CATNotifier接口中定义的registerCATListener注册本监听器。
GY/T 255—2024
32
C.1.5.9.2 方法——catUpdate
原型:
public void catUpdate(CADescriptor desc,org.davic.net.tuning.NetworkInterface ni)
描述:本接口用于通知DCAS应用特定网络接口上的CAT更新。DCAS应用可以通过NetworkInterface对象,获取现TransportStream对象。TransportStream对象可用org.davic.mpeg.sections应用程序接口来实现EMM section过滤。终端软件平台将CAT更新通知到跟casId相匹配并且注册过的CAT监听器。如果CAT不再被过滤(在成功过滤后);或者CA描述符在CAT上被删除时,终端软件平台应当调用catUpdate(null,theNetworkInterface)。
参数:
——
desc:The CA descriptor,DCAS应用通过CASDescriptor对象获取EMM PID;
——
ni:CAT更新所在的NetworkInterface。
返回:无。
C.1.5.10 接口org.ngb.net.cas.module.CATNotifier
C.1.5.10.1 功能
原型:
public interface CATNotifier
描述:DCAS应用使用本方法注册用于获取CAT更新通知的监听器。DCAS应用使用CAT信息过滤带内EMM。
C.1.5.10.2 方法
C.1.5.10.2.1 registerCATListener
原型:
public void registerCATListener(int casId,CATListener catListener)
描述:DCAS应用调用本方法注册一个CATListener。
参数:
——
casId:CA系统标识;
——
catListener:注册的CATListener。
返回:无。
C.1.5.10.2.2 unregisterCATListener
原型:
public void unregisterCATListener(CATListener catListener)
描述:DCAS应用调用本方法取消注册某个CATListener。
参数:catListener——需要取消注册的CATListener。
返回:无。
C.1.5.11 类org.ngb.net.cas.module.CASModuleManager
C.1.5.11.1 功能
用来注册所有被DCAS应用实现的CASModule。
GY/T 255—2024
33
C.1.5.11.2 方法
C.1.5.11.2.1 getInstance
原型:
public static CASModuleManager getInstance()throws java.lang.SecurityException
描述:用于获取一个CASModuleManager单例。
参数:无。
返回:CASModuleManager实例。
异常处理:java.lang.SecurityException——当安全策略被强制启用,但调用方没有被赋予一个 org.ngb.net.ca.module.CASPermission,抛出此异常。
C.1.5.11.2.2 registerCASmodule
原型:
public void registerCASModule(CASModuleaModule,int caSystemId,int networkCAPriority,java.lang.Objectcontext)throws java.lang.IllegalArgumentException
描述:用于DCAS应用在终端软件平台上注册一个CASModule。
参数:
——
aModule:需要注册的CASModule;
——
caSystemId:CASModule管理的caSystemId;
——
networkCAPriority:用于在超过一个CASModule在CASModuleManager中注册时使用,运营商可根据每个CASModule决定是否该参数可选,当优先级策略启用时,运营商需要为每个CASModule指定优先级。终端软件平台应选择已注册,具有最高优先级,并且所管理的caSystemId在PMT中有相应CA描述符的CASModule发出解扰请求。当优先级策略禁用时,DCAS应用应给该参数置零,CASModule的决定方法由终端软件平台自行实现;
——
context:希望进行注册CASModule的DCAS应用的Context,用于终端软件平台决定DCAS应用的身份。
返回:无。
异常处理:java.lang.IllegalArgumentException——如果指定的CASModule实例已被注册,抛出此异常。
C.1.5.11.2.3 updateCASystemId
原型:
public void updateCASystemId(CASModule aModule, int caSystemId)throws java.lang. IllegalArgumentException
描述:用于DCAS应用向应用软件平台更新某CASModule中的CASystemId。
参数:
——
aModule:指定CASModule;
——
caSystemId:module管理的新caSystemId。
返回:无。
异常处理:java.lang.IllegalArgumentException——如果给定的CASModule实例尚未注册,抛出此异常。
C.1.5.11.2.4 sendDescramblingEvent
GY/T 255—2024
34
原型:
public void sendDescramblingEvent(CASModuleaModule,CASSessioncasSession, CAStatusaCAStatus)throws java.lang.IllegalArgumentException
描述:本方法被用于DCAS应用向终端软件平台返回一个CAStatus,当某个DescramblerContext每次由于相应服务中的加扰成分的加扰组件改变而变化时,DCAS应用应发送CAStatus用于指示解扰是否成功。如果任何一个组件解扰失败,CAStatus应通知此服务的解扰失败。
当终端软件平台收到一个新的CAStatus时,应继续通过在扩展API中定义的CAS Event继续将该信息传至相应应用。
参数:
——
aModule:指定CASModule;
——
casSession:解扰请求操作的会话;
——
aCAStatus:需要发送的CAStatus。
返回:无。
异常处理:java.lang.IllegalArgumentException——如果所给的CASModule实例没有被注册,抛出此异常。
C.1.5.11.2.5 unregisterCASModule
原型:
public void unregisterCASModule(CASModuleaModule)throws java.lang. IllegalArgumentException
描述:用于DCAS应用从终端软件平台上取消某CASModule的注册。
参数:aModule——需要取消注册的CASModule。
返回:无。
异常处理:java.lang.IllegalArgumentException——如果给定的CASModule尚未注册,抛出此异常。
C.1.5.11.2.6 getChipControllers
原型:
public ChipController[]getChipControllers()
描述:用于DCAS应用从终端软件平台请求可被使用的芯片控制器列表,本方法为每个终端安全芯片返回一个芯片控制器。很多终端只支持单个芯片控制器,这种情况下,返回的数组中只含有一个元素。
参数:无。
返回:一个芯片控制器数组。
C.1.5.11.2.7 setCurrentController
原型:
public void setCurrentController(CASModuleaModule,ChipControlleraChipController) throws ava.lang.IllegalArgumentException
描述:用于设置根据所给CAModule进行解扰操作所缺省使用的芯片控制器。如果本方法没有被调用,在CASModuleManager的选择无需指定。
参数:
——
aModul