关键术语定义
eUICC:嵌入式 UICC,不易访问或更换,用于安全更改订阅。
Profile Package:使用互操作描述格式传输到 eUICC 以加载和安装配置文件的个性化配置文件。
Profile Creator:负责根据 MNO 要求创建 Profile Package,并保护其不被修改和未经授权访问的外部实体。
Profile Package 结构与元素
通用结构:由多个 Profile Elements(PE)组成,使用基于 ASN.1 的通用描述语言,独立于传输协议。每个 PE 有唯一标识号,用于错误报告,且部分 PE 的处理顺序有要求。
元素定义:包含多种类型,如通用目的类型、特定配置文件类型等。
PE Header用于标识 PE 的基本信息,如是否为强制支持、唯一标识等;
Profile header包含配置文件的版本、类型、ICCID 等关键信息,用于对配置文件进行整体描述和 eUICC 的兼容性检查;文件系统相关元素,如 MF、DF CD 等,基于模板或通用文件管理方式创建,模板分为 “Created by default” 和 “Not created by default” 两种类型,可加速文件系统创建。
安全相关设置
NAA 参数:包括 AKA 参数和 CSIM 参数等,用于设置网络访问应用的认证算法参数。
PIN 和 PUK 码:通过 PE-PINCodes 和 PE-PUKCodes 设置,分别用于设置与 MF 或 DF 相关的 PIN 码和 MF 级别的 PUK 码,且对其使用场景和规则有明确规定。
安全域:通过 PE-SecurityDomain 安装,包括 MNO-SD 和 SSDs 等,涉及密钥个性化、SD 个性化等操作,且对相关参数配置有详细说明。
应用加载与其他设置
应用加载与安装:通过 PE-Application 实现,包含 ApplicationLoadPackage 和 ApplicationInstance 等元素,用于加载和安装应用,且对应用代码加载、实例化和个性化等操作有具体规定。
RFM 参数:通过 PE-RFM 设置,用于配置远程文件管理相关参数,如实例 AID、安全域 AID 等。
非标准内容与结束标识:PE-NonStandard 用于发送特定 eUICCs 才能处理的内容;PE-End 用于标识 Profile Package 的结束。
eUICC 响应与错误处理
响应类型:eUICC 通过 EUICCResponse 返回处理结果,包含多个 PEStatus 数据对象,用于报告每个 PE 的处理状态。
错误处理:根据不同错误类型,如不支持的 PE、内存不足等,eUICC 采取相应的处理措施,如终止配置文件安装或忽略不支持的功能继续安装。
附录内容
附录 A:定义了文件结构模板,包括 MF、DF CD 等各级文件系统的模板,对文件的 FID、类型、记录数、大小、访问规则等进行了详细规定。
附录 B:列出了规范中使用的 OIDs 及其含义。
附录 C:给出了 Profile Package 的结构和内容示例,展示了如何构建和使用 Profile Package。
附录 D:定义了 DF SAIP 及其包含的 EFSUCI_Calc_Info_USIM,用于支持订阅标识符隐私和 SUCI 计算。
附录 E:说明了 SUCI 计算的两种方式,即通过注册应用或默认系统应用进行计算。
profile解析
1、类型定义
ASN1START 和 ASN1STOP:是注释标识,表明中间代码段是 ASN.1(一种用于定义数据结构的标准标记法)相关定义。
基本整数类型及大小约束
maxUint8:定义为 **INTEGER 类型**,值为 255 ,代表 8 位无符号整数能表示的最大值。
Uint8:也是 INTEGER 类型,取值范围是 0 到 maxUint8(即 0 - 255 ) ,是 8 位无符号整数类型。
maxUint15:值为 32767 ,是 15 位无符号整数能表示的最大值 。
Uint15:取值范围是 0 到 maxUint15(即 0 - 32767 ) ,为 15 位无符号整数类型。
maxUint16:值为 65535 ,对应 16 位无符号整数的最大值 。
Uint16:取值范围是 0 到 maxUint16(即 0 - 65535 ) ,是 16 位无符号整数类型。
maxUint31:值为 2147483647 ,是 31 位无符号整数能表示的最大值 。
Uint31:取值范围是 0 到 maxUint31(即 0 - 2147483647 ) ,为 31 位无符号整数类型。
在计算机科学和相关技术领域,INTEGER(整数)类型是一种基本的数据类型 :
含义
用于表示没有小数部分的数值。它可以是正数、负数或零 。比如 -5、0、10 等都是整数。
2、profile header定义
Profile header PE 在配置文件开头使用一次,用于对配置文件内容给出各种指示 ,遵循 ETSI TS 102 310 标准。
结构定义(ASN.1 语法)
ProfileHeader 被定义为一个 SEQUENCE(序列),包含以下字段:
major - version:无符号 8 位整数(Uint8),此规范版本中设为 2 。
用于标识主版本号,eUICC 接收配置文件头时会检查该值,若不支持(如版本过旧或过新),eUICC 返回 “unsupported - profile - version” 错误并停止处理配置文件。
minor - version:无符号 8 位整数(Uint8),此规范版本中设为 3 。
是次要版本号,仅起信息提示作用,若配置文件包含 eUICC 无法处理的元素(除非在 PE 头中标记为强制),eUICC 会忽略这些元素。
profileType:UTF8 字符串,长度 1 - 100,可选字段,用于指示配置文件发行者名称和配置文件类型等。
iccid:长度为 10 的八位位组字符串(OCTET STRING),包含配置文件的 ICCID 。
在当前规范版本中,eUICC 不检查其与 EFccid 中值的一致性,也不使用该值。需按 ITU E.118 表示法编码,位数不足时用 F 填充。
pol:八位位组字符串,可选,包含配置文件内的策略规则 。
若配置文件包中未提供,eUICC 将其值设为全 0。
eUICC - Mandatory - ServicesList:强制字段。
eUICC - Mandatory - GFSTELis:对象标识符序列(SEQUENCE OF OBJECT IDENTIFIER ),强制字段。
connectivityParameters:八位位组字符串,用于连接参数。
eUICC - Mandatory - Aids:序列的序列(SEQUENCE OF SEQUENCE ),
每个子序列包含 aid(应用标识符,ApplicationIdentifier 类型)和长度为 2 的八位位组字符串 version,是强制字段。
处理规则
eUICC 接收 Profile header 时,会检查 major - version 。若不支持该版本,返回错误并停止处理;minor - version 仅作提示,若配置文件含 eUICC 无法处理元素(非强制),将被忽略。
在 ASN.1(Abstract Syntax Notation One,抽象语法标记 1 )语法中:
定义:SEQUENCE 是一种构造类型 ,用于将多个不同类型或相同类型的值组合成一个有序的集合。它类似于编程语言里的结构体,可把相关数据元素整合在一起,使数据表示更结构化、层次化。
结构特点:集合内元素有明确顺序 ,每个元素按声明顺序在 SEQUENCE 中占据特定位置。比如在ProfileHeader ::= SEQUENCE { major - version Uint8, minor - version Uint8 } 中,major - version 排在minor - version 之前,在解析和编码时都要遵循此顺序。
3、ApplicationInstance定义
介绍了 ApplicationInstance 用于实例化和个性化应用程序,它基于 GlobalPlatform Card Specification(全球平台卡规范,简称 GP CS)的 INSTALL 命令。为简化和优化个性化过程,添加了额外参数,这些参数将在本章节描述。
ApplicationInstance 被定义为一个 SEQUENCE(序列)类型 。
成员字段:
applicationLoadPackageAID:类型为 ApplicationIdentifier ,标签是 [APPLICATION 15] ,用于标识应用加载包。
classAID:同样是 ApplicationIdentifier 类型及 [APPLICATION 15] 标签,代表应用类别标识符。
instanceAID:也是 ApplicationIdentifier 类型和 [APPLICATION 15] 标签,用于实例标识符。
extraditeSecurityDomainAID:类型为 ApplicationIdentifier ,标签 [APPLICATION 15] ,且是可选(OPTIONAL)的,可能与安全域相关。
applicationPrivileges:2 字节的 OCTET STRING(八位字节串) ,用于表示应用特权。
lifeCycleState:3 字节的 OCTET STRING ,默认值为 '07’H ,编码遵循 GP 生命周期状态规范。
applicationSpecificParametersC9:类型为 [PRIVATE 9] 的 OCTET STRING ,可能是特定于应用的参数。
systemSpecificParameters:类型是 [PRIVATE 15] 的 ApplicationSystemParameters ,且为可选,可能是特定于系统的参数。
applicationParameters:类型为 [PRIVATE 10] 的 UICCApplicationParameters ,可选,可能是通用集成电路卡(UICC)相关的应用参数。
processData:是一个大小在 1 到最大值之间的 OCTET STRING ,为可选,可能用于处理数据。
4.1、PE header定义
定义了 PEHeader 结构,它是一个 SEQUENCE(序列 )类型。其中包含两个字段:
mandated :是可选的 NULL 类型。若设置为特定值,表明对该 PE 的支持是安装此配置文件时必需的。
identification :类型为 Uint15,是此 PE 的唯一标识号,用于在配置文件中识别 PE,也用于向配置文件发送方报告错误。
4.2、Security domains PE定义
安全域 PE(Security Domain PE)相关内容:
安装方式:安全域(SDs)使用 “ApplicationInstance” 类型进行安装,该类型也用于应用程序安装,且补充 SDs 有标准化的值 。
**PE 定义:**定义了 “PE-SecurityDomain” ,它是一个序列(SEQUENCE)结构,包含多个组成部分,
如 sd-Header(PEHeader 类型 )、
instance(应用实例,详见 8.7.3 节 )、
keyList(可选的密钥对象序列,详见 8.6.3 节 )、
sdPersoData(可选的八位字节字符串序列,详见 8.6.4 节 )、
openPersoData(包含 restrictParameter、contactlessProtocolParameters 等可选参数,详见 8.6.6 节 )、
catTpParameter(包含 catTpMaxSduSize、catTpMaxPduSize 等参数 )。
还提到使用规则,从 MNO-SD 开始,每次创建 SD 都要使用此 PE 。
讲述了 SD 和 MNO SD 创建:
MNO-SD 创建:第一个创建的 SD 相当于 UICC 的 ISD(发卡行安全域) ,是其他 SD 层次结构的根,即 MNO-SD 。它需要通过 “PE-SecurityDomain” 在配置包内显式安装 。MNO-SD 要在其他 SD 之前安装,且要在创建任何应用之前设置或配置其 RFM 参数 。由于 MNO-SD 没有标准化的包 AID 和类 AID,eUICC 可忽略相关值,使用供应商特定值 。符合 GlobalPlatform 卡规范的配置文件,MNO-SD 需遵循特定的安全通道协议 。后续 SD 安装类似补充 SD,依据 GlobalPlatform 卡规范 [GP CS] 。