中国联通WCDMA USIM卡Java OTA平台技术规范.docx
《中国联通WCDMA USIM卡Java OTA平台技术规范.docx》由会员分享,可在线阅读,更多相关《中国联通WCDMA USIM卡Java OTA平台技术规范.docx(49页珍藏版)》请在冰豆网上搜索。
![中国联通WCDMA USIM卡Java OTA平台技术规范.docx](https://file1.bdocx.com/fileroot1/2022-12/14/2a9d68c4-7f0c-495b-947a-f9934f03fc90/2a9d68c4-7f0c-495b-947a-f9934f03fc901.gif)
中国联通WCDMAUSIM卡JavaOTA平台技术规范
中国联通公司发布
××××-××-××实施
××××-××-××发布
中国联通WCDMAUSIM卡
JavaOTA平台技术规范
(V1.0)
QB/CU××—2008
中国联通公司企业标准
目次
6.3应用删除7
7.1.2响应安全头12
8系统管理19
9.3.1硬件要求21
1前言
本标准是中国联通WCDMAUSIM卡JavaOTA平台系列技术规范之一。
该系列标准的名称及结构如下:
本标准由中国联通提出
本标准由中国联通技术部归口。
本标准主要起草单位:
本标准主要起草人:
本标准的修改和解释权属中国联通公司。
中国联通WCDMAUSIM卡
JavaOTA平台技术规范
11 范围
本规范主要定义中国联通WCDMAUSIM卡JavaOTA平台技术规范。
本规范结合联通移动网络的发展情况和业务需要,规定了USIM卡的JavaOTA业务,其中包括业务概述及业务架构、卡片管理、应用管理、密钥管理、业务流程、系统设备性能等要求,是中国联通WCDMAUSIM卡JavaOTA平台建设和维护的重要依据。
12 规范性引用文件
下列文件中的条款通过本标准的引用而成为本标准的条款。
凡是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。
凡是不注日期的引用文件,其最新版本适用于本标准。
[1].中国联通Java卡互操作性技术要求(V1.0)
[2].中国联通Java卡互操作性测试规范(V1.0)
[3].中国联通GSM/WCDMA数字蜂窝移动通信网UICC-终端(Cu)接口技术要求第一部分:
UICC
[4].中国联通GSM/WCDMA数字蜂窝移动通信网UICC-终端(Cu)接口技术要求第二部分:
应用特性
[5].中国联通GSM/WCDMA数字蜂窝移动通信网UICC-终端(Cu)接口技术要求第三部分:
USAT
[6].ETSITS102.127,TransportProtocolforCATapplications
[7].ETSITS102.221,SmartCards;UICC-Terminalinterface;Physicalandlogicalcharacteristics,Release6
[8].ETSITS102.223,CardApplicationToolkit(CAT),Release7
[9].ETSITS102.225SecuredpacketstructureforUICCbasedapplicationsV7.3.0
[10].ETSITS102.226RemoteAPDUstructureforUICCbasedapplicationsV7.2.0
[11].GlobalPlatformCardSpecificationv2.1.1
13 缩略语
WCDMA
WidebandCodeDivisionMultipleAccess
HTTP
HyperTextTransferProtocol
OTA
OvertheAir
BIP
BearerIndependentProtocol
CAT_TP
TransportProtocolforCATapplications
14 业务概述与系统结构
14.1 业务概念
JavaOTA平台主要用于向已发放到用户手中的USIM卡进行Java卡应用程序的发行,同时实现对卡上应用的生命周期管理。
14.2 业务范围
中国联通手机JavaOTA下载业务的用户群是联通WCDMA网的后付费和预付费用户。
14.3 业务架构
14.3.1 系统架构
JavaOTA平台的系统架构如图一所示:
图一:
JavaOTA平台系统结构图
14.3.2 网络结构图
JavaOTA平台网络结构如图所示。
图二:
JavaOTA平台网络结构图
JavaOTA平台通过可通过卡商数据管理系统以及运营支撑系统获取卡片及用户数据,完成对卡片进行远程管理的数据准备。
应用提供商系统与JavaOTA平台相连接以提供供下载的Java卡应用。
JavaOTA平台通过移动通信网络的短消息网关、GPRS/PDSN网关与移动终端通信。
15 JavaOTA平台功能
15.1 数据加载
数据加载功能主要用于向JavaOTA平台加载对卡片进行应用管理所必需的数据,这些数据包括卡片数据、用户数据及应用数据。
Ø卡片数据:
JavaOTA平台应提供接口给卡商或制定操作人员,用于上载已发行卡片的出厂属性,属性包括但不限于:
●卡片操作系统信息
●卡片芯片信息
●卡上文件信息
●卡片密钥信息
●已下载的应用AID
●已下载的应用的状态(是否个人化)
●卡剩余空间(参考值)
●IMSI
●卡商代码
●Java版本号
●应用权限标识
●批次号
Ø用户数据主要包括:
用户的MSISDN、IMSI数据
Ø应用数据:
平台应提供接口允许应用开发商加载应用下载文件,文件以CAP方式上传。
同时平台应允许应用提供商提供应用的安装参数文件,用于配置应用的下载参数。
应用属性包括:
●应用安装文件
●应用AID
●应用的类型
●应用的大小
●应用的下载参数
平台应能够存储同一应用的多个版本,并维护应用与卡片的兼容关系,保证为卡片
提供适当版本的应用进行下载。
15.2 卡片管理
JavaOTA平台应具备卡片管理功能,负责卡片、卡片上应用通信的安全管理,同时也负责管理用户数据及卡片基本数据,并为应用管理提供相应支持。
卡片管理的主要功能包括:
Ø提供用户信息:
卡片管理服务器能够根据给定的用户标识号(通常是用户手机号码),提供该用户的主要相关信息。
Ø更新用户信息:
卡片管理服务器能够根据对USIM卡的相应操作,例如:
安全域的创建、应用的下载等,来更新它内部存储的用户信息。
Ø提供卡片信息:
根据指定的用户及卡片标识,卡片管理服务器能够提供相应的卡片信息。
Ø备份卡片内容:
卡片管理服务器会保留一份卡片内容的备份信息,此备份信息的目的是为了使得系统管理人员可以在任何时候都能够清楚地了解卡片的内容及状态。
Ø卡片生命周期管理:
卡片管理对卡片的整个生命周期也可实现终身的管理,包括对卡片的锁定及解锁,并且记录变更情况。
Ø操作权限控制:
卡片管理服务器同时也控制所有对USIM卡的内容变更操作(例如应用下载和个人化操作等)。
Ø卡片的批次管理:
对各个批次的版本信息进行管理,并且能够对卡片的各个模块进行升级和管理。
15.3 应用管理
应用管理主要负责应用数据及用户卡上应用的管理:
Ø应用生命周期管理:
应用管理服务器负责下载应用到相应的安全域,对应用的整个生命周期也可实现终身的管理,其中包括启用,禁用,暂停,删除,修改,对应用状态进行跟踪,并控制应用的状态变化,保证应用按照应用提供者的要求运行于相应的状态。
Ø应用供应商管理:
应用服务器负责管理所有应用供应商的信息,要求各应用代理商以安全的方式上载应用,以保证应用的合法性及安全性。
应用提供商反馈相关应用的修改信息给发行商,并按照发行商的要求对应用的状态进行修改。
Ø应用状态管理:
对用户的应用状态能够进行总体的记录和管理,并且提供相关信息给应用下载系统及相关系统。
15.3.1 应用下载
应用下载功能是JavaOTA平台的主要功能,JavaOTA平台通过相应的下载指令将应用安装文件下载到用户卡片上并完成相应的安装过程。
应用的安装通过短消息或IP通道进行。
15.3.2 应用锁定/解锁
对于临时需要进行禁用的应用,可以通过JavaOTA平台对应用进行锁定或解锁操作。
在应用被锁定后,终端用户将被临时禁止使用此应用,但是相关的个人数据不会被删除;在应用被解锁后,终端用户可继续使用此应用。
15.3.3 应用删除
对于已经失效的应用,可以通过JavaOTA平台从卡片上删除应用,释放卡片空间以供其他应用使用。
在应用删除时,相关的个人化数据也会被删除。
15.3.4 应用状态查询
JavaOTA平台可以远程查询卡片上应用的状态,以确认操作结果。
15.4 密钥管理
为保证远程操作的安全性,卡片需要对所有OTA操作进行验证。
操作的验证通过相应的签名数据来保证,因此JavaOTA平台需要管理卡片上的密钥信息,并根据这些密钥的属性在进行远程OTA操作时生成相应的签名数据,对敏感数据进行加密。
密钥管理系统具备以下主要的功能:
Ø保证会话安全:
密钥管理系统可以为一个新创建的会话生成一个临时的会话密钥,以保证整个会话的安全性。
Ø数据加密:
使用同一个会话密钥对同一会话中的一系列命令数据进行加密,保证数据能够被安全地传送到目标用户。
Ø数据解密:
将从用户卡片发回的响应数据进行解密。
Ø密钥导入:
密钥管理系统允许第三方进行密钥的导入操作。
当新的卡片被提交给用户后,如果这些卡片的密钥不是通过对一个给定的主密钥的分散操作后获取的话。
系统允许用户直接为这些卡片导入一组全新的密钥。
15.4.1 密钥生成算法
密钥长度16字节,主密钥有5个,随机选取一个主密钥,分散因子为“00+ICCID后14位”,算法为PBOC。
参照《中国联通OTA卡技术规范第二部分》7.2.1.3密钥分散算法。
15.4.2 密钥存储要求
主密钥存储于加密机中,由加密机完成相关密钥的算法。
15.5 并发处理
USIM卡和JavaOTA平台要求只支持1个BIP通道。
JavaOTA平台在无确认要求时,不对下行数据的并发做控制。
在有确认要求时,需要等接收到每条指令的确认后时才下发后一条命令。
15.6 重发处理
对于应用下载未成功的情况,JavaOTA平台应支持重发,重发的最大次数为3次。
重发时下行计数器与之前的一致。
16 业务流程
16.1 通道控制
通道控制主要用于建立卡片与JavaOTA平台之间的安全通道,可用的通道有三种:
Ø短消息
ØBIP
Ø读卡器
在使用短消息及读卡器实现平台与卡片的通信时,无须进行通道的初始化,由平台直接将业务指令发送给卡片,卡片在执行完指定操作后将操作结果以短信的方式返回给平台。
读卡器采用标准的PCSC读卡器。
在使用BIP通道时,平台在发送真正的业务指令之前必须进行通道的初始化。
通道的初始化指令由平台发起并通过短消息进行发送。
BIP通道的初始化过程如下:
图三:
通道控制流程
1)JavaOTA平台查找用户卡片属性确定用户是否支持BIP通道;
2)JavaOTA平台生成BIP通道初始化指令:
PUSH;
3)JavaOTA平台利用短消息将PUSH指令发送到卡片,并等待IP连接;
4)卡片收到PUSH指令后,向手机发起与平台建立连接的请求;
5)手机发起GPRS连接到JavaOTA平台;
6)连接建立完成后,卡片发送卡片标识号(ICCID)到平台;
7)JavaOTA平台开始发送业务指令,进入业务流程。
16.2 应用下载
JavaOTA平台可以将一个新的应用下载到卡片上并进行安装。
根据网络条件,应用的下载可以选择短信下载或基于TCP/IP连接的高速下载。
图四:
应用下载流程
1)用户申请下载指定应用;
2)JavaOTA平台查找用户的卡片属性;
3)JavaOTA平台根据用户属性查找与用户卡片兼容的应用下载文件;
4)JavaOTA平台根据用户卡片属性生成相应的应用下载指令;
5)JavaOTA平台向卡片发送下载指令;
6)卡片完成安装过程并将执行结果返回给JavaOTA平台;
7)JavaOTA平台更新卡片属性。
16.3 应用删除
在应用的生命周期结束后,JavaOTA平台可以删除应用并释放空间供其他应用使用。
应用的删除同时会删除与应用相关的任何个人化信息。
图五:
应用删除流程
1)用户申请删除指定应用;
2)JavaOTA平台查找用户的卡片属性;
3)JavaOTA平台根据用户卡片属性生成相应的删除指令;
4)JavaOTA平台向卡片发送删除指令;
5)卡片完成删除过程并将执行结果返回给JavaOTA平台;
6)JavaOTA平台更新卡片属性。
16.4 应用锁定
如果用户希望暂时关闭应用的交互功能,则仅需要修改应用状态即可达到目标,此时用户的个人信息仍然保留在卡片中,但是应用已经不能被选择并对相应的通信指令做出响应。
图六:
应用锁定流程
1)用户申请锁定指定应用;
2)JavaOTA平台查找用户的卡片属性;
3)JavaOTA平台根据用户卡片属性生成相应的锁定指令;
4)JavaOTA平台向卡片发送锁定指令;
5)卡片完成锁定过程并将执行结果返回给JavaOTA平台;
6)JavaOTA平台更新用户卡片属性中的应用状态。
16.5 应用解锁
如果用户希望暂时恢复被暂停的应用的交互功能,则可以通过解锁应用来达到目标,此时保留在卡片中的用户个人信息仍然有效,应用可以被选择并对相应的通信指令做出响应。
图七:
应用解锁流程
1)用户申请锁定指定应用;
2)JavaOTA平台查找用户的卡片属性;
3)JavaOTA平台根据用户卡片属性生成相应的解锁指令;
4)JavaOTA平台向卡片发送解锁指令;
5)卡片完成解锁过程并将执行结果返回给JavaOTA平台;
6)JavaOTA平台更新用户卡片属性中的应用状态。
16.6 应用状态查询
JavaOTA平台可以主动发起指令查询卡片上的应用的状态,用于确定应用是否可以接受某个特定操作。
图八:
应用状态查询流程
1)JavaOTA平台根据用户卡片属性生成相应的应用状态查询指令;
2)JavaOTA平台向卡片发送应用状态查询指令;
3)卡片获取应用状态信息并发送给JavaOTA平台;
4)JavaOTA平台比较用户卡片属性中的应用状态并更新。
17 接口要求
17.1 安全数据
空中安全机制建议采用TS102.225[9](ETSI)或03.48(3GPP)所定义的安全机制,此安全机制在GP2.2规范中也得到支持(SCP=’80’)。
每一个命令及响应头必须包含相应的安全头数据。
17.1.1 命令安全头
命令数据指由服务器主动发送到USIM卡片的各种指令。
其安全头格式如下:
项目
名称
长度(字节)
值
说明
TPDU_Head
X
HEX
TP-UDHI为1
UDL
1(基于短信)
2(基于BIP)
HEX
后续数据的长度
安全应用数据
UDHL
1
0X02
Iela
1
CPI=0X70
IEIDLa
1
0X00
CPL
2
HEX
后续数据总长度
CHL
1
0X11
从SPI到CC的数据长度
SPI
2
0Xxxxx
KIC
1
0Xxx
KID
1
0Xxx
TAR
3
HEX
ToolkitApplicationReference,参照TS102.220中的定义
CNTR
5
HEX
与密钥集相关的计数器,用于重发检测以及完整性检查
PCNTR
1
0X00
填充比特数。
用于表示在加密过程中在用户数据之后填充的比特的个数。
CC
0-8
HEX
MAC值。
针对DES/TDES算法
用户数据
包含用户数据以及为加密而填充的比特
CC的计算应包含CPL,CHL,SPI,KIC,KID,TAR,CNTR,PCNTR以及用户数据。
如果同时需要进行加密,应首先计算出加密时需要的PCNTR的值,再进行CC的计算。
要求加密时,应首先计算CC的值,然后进行加密,需要被加密的数据域包括:
CNTR,PCNTR,CC,用户数据以及相应的填充比特。
如果SPI指定某些域没有被用到,这这些域的内容应设为0。
卡片应忽略这些域。
如果SPI指定不需要CC,则CC的长度应设为0。
17.1.1.1 SPI
SPI用于指定命令数据所使用的安全级别,由两个字节组成,低字节位按照如下格式编码:
为保证足够的安全性,不建议使用CRC安全校验。
高字节按如下格式编码:
17.1.1.2 KIC
KIC用于指定加密所使用的密钥以及算法,按照如下格式编码
17.1.1.3 KID
KID指定用于计算MAC的密钥以及算法。
在使用CRC冗余校验和使用加密算法进行计算时,KID的编码方式有所不同,本文档仅指定使用加密算法计算MAC时KID的编码方式,具体内容请参考TS102.225[9]。
当SPI低字节的b1b2设为‘10’时,KID按照如下格式编码:
17.1.2 响应安全头
响应安全头用于传输卡片向服务器发送的命令执行结果。
其安全头如下表:
项目
名称
长度(字节)
值
说明
TPDU_Head
X
HEX
TP-UDHI为1
UDL
1(基于短信)
2(基于BIP)
HEX
后续数据的长度
安全应用数据
UDHL
1
0X02
Iela
1
CPI=0X71
IEIDLa
1
0X00
RPL
2
HEX
后续数据总长度
RHL
1
0X11
从SPI到CC的数据长度
TAR
3
HEX
ToolkitApplicationReference,参照TS102.220中的定义
CNTR
5
HEX
PCNTR
1
0X00
StatusCode
1
CC
8
HEX
响应数据
17.1.2.1 状态字
状态字用于表示命令执行的结果,取值如下表:
状态码(Hex)
描述
00
执行成功
01
MAC错误
02
计数器值过小
03
计数器值过大
04
计数器被锁定
05
加密错误
06
不支持安全头。
当卡片无法识别安全头时返回此状态码。
07
内存不足
08
卡片忙,需要等待
09
未知的TAR值
0A
安全级别过低
0B-FF
保留
17.1.3 计数器管理
如果SPI低字节的b4b5=00(不检查计数器),则卡片将不会检查安全头中的计数器,也不会更新计数器。
如果SPI低字节的b5设为1,为防止重传攻击并保证计数器的同步,卡片应按照如下规则管理计数器:
✓服务器应在安全头中加入计数器的值,并且计数器值只能递增
✓在接收到命令并完成安全校验之后,卡片应更新卡上的计数器
✓卡片应使用在命令数据安全头中所设定的计数器值来更新卡片上的计数器
✓当计数器值达到最大值时,计数器应当被锁定
如果有多个服务器需要向卡片发送安全数据,必须能够保证计数器值在多个服务器之间的同步。
17.2 BIP管理命令
BIP指令用于实现JavaOTA平台与USIM卡之间的IP通道的管理。
JavaOTA平台通过此命令通知卡片建立数据通道。
可参考TS102.226[10]中的定义。
17.2.1 申请建立BIP通道
JavaOTA平台通过此命令要求USIM卡片打开一个到手机的BIP通道,卡片在接收到此命令后,应向手机发送OPENCAHNNEL命令(参照TS102.223[8])打开BIP通道,然后手机通过GSM/GPRS或者UMTS/Packets与服务器建立数据通道。
当卡片接收到手机返回的响应信息,此命令的执行结束。
17.2.2 申请建立CAT_TP通道
在BIP通道已经建立的情况下,CAT_TP连接的建立有主动模式和被动模式两种。
在JavaOTA平台主动发起连接请求的情况下,卡片工作在被动模式,在被动模式下卡片处于LISTEN状态,监听从服务器发来的连接请求。
JavaOTA平台通过发送连接请求命令要求USIM卡片打开一个到JavaOTA平台的CAT_TP通道。
当CAT_TP链接的状态为OPEN或者链接由于错误而关闭时,此命令的执行结束。
17.2.3 命令编码
PUSH命令按照如下格式编码:
代码
值
CLA
‘80’
INS
‘EC’
P1
‘01’
‘08’保留为应用自定义
P2
‘01’请求打开BIP通道
‘02’请求建立CAT_TP通道
Lc
数据长度
Data
数据参数
注意:
本表中数据值仅适用于P1为01的情况
17.2.4 数据参数
17.2.4.1 用于打开BIP通道的数据参数
在TS102.223[8]中为OPENCHANNEL命令所定义的任何COMPREHENSION-TLV数据都可以包含在PUSH命令的数据参数中。
卡片在接收到这些数据后根据参数构造OPENCHANNEL命令并提交到手机。
对于OPENCHANNEL指令,必须遵守与传输通道相关的两个规则:
✓“Otheraddress(localaddress)”参数不应当包含在参数中
✓“Login”和“Parameter”两个参数要么同时存在,要么同时不存在
如果这两个条件不符合的话,卡片应当拒绝执行PUSH命令并返回错误代码“6A80”。
17.2.4.2 用于打开CAT_TP通道的数据参数
关于CAT_TP的具体使用,请参照TS102.127[6]。
用于打开CAT_TP通道时,PUSH命令需包含以下参数,这些参数对应于TS102.223[8]中所定义的参数格式:
参数名
对应的TS102.223[8]格式
是否必选
CAT_TP目的端口号
UICC/terminalinterfacetransport
Level
必选
最大SDU大小
Buffersize
必选
标识数据
ChannelData
可选
Alphaidentifier
可选
Bearerdescription
必选
Datadestinationaddress
对于CAT_TP而言,目的端口号参数中所包含的协议类型不重要,应当设置为0;端口号为JavaOTA平台的CAT_TP端口号。
如果在PUSH命令中设定了最大SDU的大小,而且卡片支持这个值,则卡片应使用PUSH命令中所制定的值;如果PUSH命令未设定最大SDU的大小或者卡片不支持设定值,则卡片应另选择一个适当的大小值。
PUSH命令参数中的标识数据用于设定由USIM发出的SYNPDU中的标识数据。
如果在PUSH命令中标识数据的长度为0,则在卡片上发的SYNPDU中的标识数据的长度也必须设定为0。
如果在PUSH命令中未设定此值,则卡片上发的SYNPDU中的标识数据应使用卡片的ICCID。
从JavaOTA平台发送到卡片的SYN/ACKPDU中的数据标识应设为空。
Bearerdescription用来设定是通过GPRS还是UMTS..
Datadestinationaddress用来设定JavaOTA平台的IP地址,可能还包括login/password
如果CAT_