网站首页 > 汽车百科 >

icc虚拟货币托管的真实内幕是什么

2023-07-23 03:56:31 汽车百科 阅读 0

Bitget下载

注册下载Bitget下载,邀请好友,即有机会赢取 3,000 USDT

APP下载   官网注册

一、RSP架构简介

RSP(Remote SIM Provisioning),指远程SIM配置。利用eUICC/eSIM技术,移动用户可以在没有实体SIM卡的情况下,下载运营商配置文件并激活运营商服务。GSMA规定的RSP架构如下:

关于LPA初步研究

图 1 RSP架构


SM-DP+(Subscription Manager - Data Preparation +),签约数据准备模块。SM-DP+ 负责根据运营商的请求,创建、生成、管理和保护运营商生成的配置文件。它还负责在绑定配置文件包内交付配置文件,使绑定配置文件包可用于安全交付。


SM-DS(Subscription Manager - Discovery Server),签约数据发现服务模块。SM-DS提供一种机制,使SM-DP+可以与任何设备内的LDS进行通信。SM-DP+将目标设备的事件注册消息发送到SM-DS,目标设备中的LDS轮询根SM-DS,当SM-DS有目标设备的事件id,则会响应SM-DP+的地址。


LPA(Local Profile Assistant),本地签约数据文件辅助管理。分为LPAe(eUICC上的LPA)和LPAd(设备上的LPA)。LPA包括三个部分:本地发现服务(LDS, Local DisCovery Service)、本地签约数据文件下载(LPD, Local Profile Download)以及本地用户接口(LUI, Local User Interface)。它们的作用分别是:

(1) LDS: 从SM-DS获取SM-DP+登记的关于该eSIM的事件记录。

(2) LPD: 作为eSIM与SM-DP+之间的代理,从SM-DP+获取Profile数据包,再转移到eSIM中。

(3) LUI: 向用户提供Profile管理的功能,包括Profile的激活、去激活、删除等。


eUICC的内部高层架构如下:

关于LPA初步研究

图 2 eUICC示意图


ECASD(Embedded UICC Controlling Authority Security Domain),eUICC控制权限安全域,负责eUICC上安全域所需证书的安全存储。一个eUICC上有且仅有一个ECASD。


ISD-P(Issuer Security Domain-Profile),是用于托管配置文件的安全容器(安全域)。ISD-P与Profile Package interpreter(配置文件解释器,负责对接受的绑定配置文件包进行解码/解释)和作用于配置文件的下载与安装。ISD-P是SM-DP+在eUICC上的代表。


ISD-R(Issuer Security Domain-root),负责ISD-P的生成,并管理ISD-P的生命周期。


LPA Services,提供对 LPA 功能所需的服务和数据的必要访问:

(1) 根SM-DS地址

(2) 可选择存储的默认SM-DP+地址。

(3) 促进从 LPA 传输的绑定配置文件包的接收。

(4) 提供有关已安装配置文件及其配置文件元数据的信息。

(5) 提供本地配置文件管理。

(6) 为 LPA 提供与 SM-DS 进行身份验证和交互的功能。

(7) 确保对 EID 的访问仅限于 LPA。



二、流程简介

1. LPA发起下载


关于LPA初步研究

LPA发起下载


2. 通过激活码下载配置文件


关于LPA初步研究

通过激活码下载配置文件


3. 本地配置文件管理

3.1 激活配置文件

关于LPA初步研究

激活配置文件

3.2 去激活配置文件


关于LPA初步研究

去激活配置文件

3.3 删除配置文件

关于LPA初步研究

删除配置文件


三、开发LPA

1. LPA要求

(1) eUICC上的LPA和操作系统必须支持最低 2.0 或 2.2 版的 GSMA RSP。

(2) 与(1)相匹配的RSP版本的SM-DP+ 和 SM-DS 服务器。

(3) 设备的调制解调器,见针对 eSIM 支持的调制解调器要求



2. LPA实现

LPA 是一款独立的系统应用,应包含在 Android 构建映像中。Android 框架可自动发现可用的最佳 LPA 并与之连接,然后通过 LPA 实例路由所有 eUICC 操作。LPA 由两个独立的组件(可在同一 APK 中实现)组成:LPA 后端以及 LPA 界面(即 LUI)。


实现LPA后端,需要扩展 EuiccService 并在清单文件中声明。此服务必须请求获得 android.permission.BIND_EUICC_SERVICE 系统权限,确保只有系统才能与之绑定。此服务还必须包含具有 android.service.euicc.EuiccService 操作的 intent 过滤器。应将该 intent 过滤器的优先级设置为非零值,以防设备上存在多个实现。清单文件声明如下:

<service
android:name=".EuiccServiceImpl"
android:permission="android.permission.BIND_EUICC_SERVICE">
<intent-filter android:priority="100">
<action android:name="android.service.euicc.EuiccService" />
</intent-filter>
</service>


实现 LUI,需为以下操作提供一个 Activity:

android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS

android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION

每个 Activity 也都必须获得 android.permission.BIND_EUICC_SERVICE 系统权限,而且都应当包含具有适当操作的 intent 过滤器,并属于 android.service.euicc.category.EUICC_UI 类别以及非零优先级。选择这些 Activity 的实现方案与选择 EuiccService 实现方案所使用的逻辑是相似的。清单文件示例如下:

<activity android:name=".MyLuiActivity"
android:exported="true"
android:permission="android.permission.BIND_EUICC_SERVICE">
<intent-filter android:priority="100">
<action android:name="android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" />
<action android:name="android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.service.euicc.category.EUICC_UI" />
</intent-filter>
</activity>


实现与eUICC之间的通信,需要调用EuiccCardManager。

EuiccCardManager提供了 ES10 方法。这里的ES10可见图1和图2中的ES10a、ES10b、ES10c。

ES10a(LDS-LPA Services):设备中的LDS使用ES10a接口获取来自eUICC的已配置根SM-DS地址和可选的默认SM-DP地址。

ES10b(LPD-LPA Services):设备中的LPD和LPA Services使用ES10b将绑定配置文件传输到eUICC。

ES10c(LUI-LPA Services):设备中的LUI和LPA Services使用ES10c接口为终端用户提供本地配置文件管理功能。


获取EuiccCardManager实例:

EuiccCardManager cardMgr = (EuiccCardManager) context.getSystemService(Context.EUICC_CARD_SERVICE);


LPA使用EuiccCardManager获取eUICC上的配置文件:

ResultCallback<EuiccProfileInfo[]> callback =
new ResultCallback<EuiccProfileInfo[]>() {
@Override
public void onComplete(int resultCode,
EuiccProfileInfo[] result) {
if (resultCode == EuiccCardManagerReflector.RESULT_OK) {
// handle result
} else {
// handle error
}
}
};

cardMgr.requestAllProfiles(eid, AsyncTask.THREAD_POOL_EXECUTOR, callback);


在内部,EuiccCardManager 会通过 AIDL 接口绑定到 EuiccCardController(在Phone进程中运行),而且每个 EuiccCardManager 方法均会通过不同的专用 AIDL 接口从电话进程接收回调。使用 EuiccCardManager API 时,调用方 (LPA) 必须提供 Executor 对象,以便通过该对象调用回调。此 Executor 对象可以在单个线程上运行,也可以在线程池上运行。


大多数 EuiccCardManager API 都具有相同的使用模式。以下是另一些使用 EuiccCardManager与eUICC进行通信的方法。


将绑定的配置文件包加载到 eUICC:

...
cardMgr.loadBoundProfilePackage(eid, boundProfilePackage,
AsyncTask.THREAD_POOL_EXECUTOR, callback);


切换为具有指定ICCID的其他配置文件:

...
cardMgr.switchToProfile(eid, iccid, true /* refresh */,
AsyncTask.THREAD_POOL_EXECUTOR, callback);


通过eUICC获取默认的SM-DP+地址:

...
cardMgr.requestDefaultSmdpAddress(eid, AsyncTask.THREAD_POOL_EXECUTOR,
callback);


检索指定通知事件的通知列表:

...
cardMgr.listNotifications(eid,
EuiccNotification.Event.INSTALL
| EuiccNotification.Event.DELETE /* events */,
AsyncTask.THREAD_POOL_EXECUTOR, callback);


3. LPA测试

AOSP中不提供端到端的CTS测试用例,只提供基本的测试用例,以确保公开的eUICC API在Android build有效,见:针对eUICC API的CTS测试用例

LPA 则应进行更严格的测试,见:RSP测试规范:SGP.23-v1.4.pdf


四、参考文献

实现eSIM

eSIM白皮书

RSP架构:SGP.21_v2.2.pdf

RSP测试规范:SGP.23-v1.4.pdf

相关内容

icc虚拟货币托管的真实内幕是什么文档下载.: PDF DOC TXT

猜你喜欢