Android 9.0 SecureElementService 初始化流程分析

1. 相关名词解释

NFC

Near Field Communication,近场通信,一种基于13.56 MHz 的短距离通信技术。

NFCC

NFC Controller,NFC 控制器,负责 NFC 无线信号的调制解调

SE

Secure Element,安全芯片,拥有独立的内存、ROM、CPU,可以认为是一种微型计算机。

eSE

Embedded Secure Element,焊在主板上的安全芯片,与主CPU独立

applet

SE 中的应用程序

TEE

Trusted Execution Environment,可信执行环境,存在于主 CPU 中的一块安全运行环境

REE

Rich Execution Environment,富执行环境,普通 Android 运行环境,区别于 TEE

I2C

一种总线, 连接 REE 和 NFCC 之间

SPI

Serial Protocol Interface,一种总线,用于连接 TEE 和 eSE

APDU

特指发送给 SE 的指令

TSM

Trusted Service Management,可信服务管理,接收来自客户端的关于管理 SE 内容的请求,包括在 SE 安装、个人化、删除 applet 等操作,生成相应的 APDU

CAP

特指 applet 的安装文件,类似 PC 上的 jar 包

AID

Application Id,SE 中对象的标识符,类似 java 语言中的类名。

OMA

Open Mobile API,由 simalliance 组织定义的一套访问 SE 的接口

JCOP

Java Card Open Platform,泛指 SE 中的 Java 操作系统

2. ESE 简要介绍

什么是SE?

安全元件(Secure Element)简称SE,通常以芯片形式提供。为防止外部恶意解析攻击,保护数据安全,在芯片中具有加密/解密逻辑电路。SE是一个CPU卡,可以运行智能卡应用程序。SE可封装成各种形式,常见的有智能卡和嵌入式安全模块(eSE)等。

什么是ESE?

嵌入式安全元件(embedded Secure Element)简称ESE,焊在主板上的安全芯片,与主CPU独立。eSE能实现银行卡的作用,可在手机中模拟实现一张或多张智能卡,简单的说,就是可以将按GP(GlobalPlatform)卡片规范编写的Java卡应用程序Applet运行在手机的eSE环境中,实现一机替代多张传统物理卡片,每个Applet由唯一的AID标识符来识别,可以是银行卡、储值卡、公交卡等。

ESE与SE的关系?

ESE是SE的一种实现形式,一般由手机制造厂商在手机出厂前集成在手机内部。

还有两种常见的实现为:一种是UICC 通用集成电路卡,就是我们平时所使用的手机SIM卡;另外一种是Micro SD SD存储卡的形式存在,通过插入SD卡槽集成到手机上。由独立的SE制造商制造和销售。

ESE与NFC的关系?

嵌入式安全模块(eSE)是针对NFC终端产品开发的产品,采用了满足CCEAL5+安全等级要求的智能安全芯片, 内置安全操作系统,满足终端的安全密钥存储、数据加密服务等需求。可广泛应用于金融、移动支付、城市交通、医疗、零售等领域,既能保护线上支付的安全,又能配合NFC作为线下支付的钱包使用。

ESE与TEE(Trusted Execution Environment)的关系?

SE千般好,但受限于硬件隔离,独立的计算和存储资源,导致SE的计算性能差、数据传输速度慢,限制了SE的应用场景。而当今移动互联网发展迅速,迫切需要一个更好的安全生态。因此TEE应运而生。TEE OS是一个硬件安全执行环境,提供了代码和数据的安全防护、外置设备的安全访问等功能,可以安装和卸载执行其中的安全应用TATEE Application)。跟SE相比,是一个相对不那么安全,但运行速度更快、功能更丰富的安全环境。如Android手机中的指纹访问,起指纹存储和校验就在运行速度更快的TEE OS中完成。

3. ESE 框架介绍

    2.1  Android app 到 SE applet调用流程整体框架

Android 9.0 SecureElementService 初始化流程分析_第1张图片

带有NFC功能的Android设备大多都支持NFC卡仿真,在Android设备中加入eSE安全芯片也就是为了给模拟卡提供更高级别的安全保障;另外移动运营商提供的SIM卡中大多也有集成支持安全元件;且在Android4.4版本开始引入了另一种HCE(基于主机的卡仿真)安全元素,这允许Android通过应用程序模拟卡并直接与NFC读卡器对话。

当用户使用安全元件提供NFC卡仿真时,手机中的NFC控制器将来自读卡器的所有数据直接路由到安全元件SE中,SE本身执行与NFC终端读卡器通信,并且交易中根本不涉及Android应用程序。事务完成后,Android应用程序可以直接查询安全元素以获取事务状态并通知用户,app可以通过OMAPI发送APDU指令来与SE中的Applet通信交互。

当用户使用HCE模拟NFC卡时,数据将路由到直接运行Android应用程序的主机CPU。相比SE卡仿真,使用HCE需要在手机屏幕亮起时才能进行刷卡操作,因为当设备的屏幕关闭时HCE服务是不起作用的。

Android 9.0 SecureElementService 初始化流程分析_第2张图片

    2.2 OMAPI的整体框架及接口定义

早在Android2.3.4中就已经引入了访问内置SE的API,但这些API在SDK中一直是隐藏状态的,而且使用需求系统级权限,这就意味着只有手机制造商才能发布使用SE的应用程序,限制了SE应用程序的发展。

在Android 9中Google将GlobalPlatform OpenMobile API的实现添加至平台中,统一了SE的相关访问接口。在支持的设备上,应用可以使用OMAPI API访问安全元素(SE),以启用智能卡支付等安全服务。硬件抽象层(HAL)提供了必要的API,用于枚举多种可用的Secure Elements(如eSE,UICC等)。

Android 9.0 SecureElementService 初始化流程分析_第3张图片

    2.3 Transport API的框架

Android 9.0 SecureElementService 初始化流程分析_第4张图片

具体关系类图如下:

 

Android 9.0 SecureElementService 初始化流程分析_第5张图片

4. ESE初始化流程

Android 9.0 SecureElementService 初始化流程分析_第6张图片

 

你可能感兴趣的:(Android开发笔记)