APP下载

基于移动设备TEE 和SE JavaCOS 的安全解决方案的研究*

2020-12-23魏贵鹏冯乃琪

通信技术 2020年12期
关键词:银联应用程序终端

魏贵鹏,谢 演,刘 陟,冯乃琪

(成都三零嘉微电子有限公司,四川 成都 610041)

0 引言

当今社会,移动互联网迎来了高速的发展,移动设备的功能愈发强大,不仅为使用者提供基本的通信功能,还为人们带来了新的生活方式,网上购物、移动支付、电子钱包、电子身份认证等功能已经被广泛使用。因此,人们对个人信息安全、支付安全、数据通信安全等信息安全的关注越来越强,安全智能设备已成为人们关注的焦点和新的市场热点。

为了对移动设备提供更高安全级别的保障,SE(Secure Element)被应用到移动设备中,以体积较小的芯片形式嵌入移动设备中,为了使得SE能够满足各种不同的应用情况以及支持不同的服务提供商,SE 采用Java COS 作为自己的系统。同时移动设备中搭载了TEE(Trusted Execution Environment)来使用和管理SE,利用SE 提供的硬件密码功能为移动设备提供更安全的保障。TEE 由GlobalPlatform 定义,它是独立于移动设备操作系统——Rich Execution Environment 的系统,为信息安全提供可信的环境。TEE 存在于移动设备主处理器内的安全区,确保敏感数据在可信的环境里得到存储、处理和保护。TEE 有能力对经授权的安全软件(即可信应用程序)进行安全的执行,可通过实施保护、保密性、完整性和数据访问权限,提供端到端的安全性。虽然TEE 提供了软件上的安全隔离环境,但是实现信息安全所需要的加解密算法则需要更高的主机性能,并且存储敏感数据的空间仍然在移动设备的存储空间中,移动终端设备的系统抗攻击性相比SE 较弱,所以在对安全要求越来越高的今天,TEE 与SE 并存的系统是更安全的。

SE 是提供安全功能的芯片,它为系统提供高效、稳定的加解密算法、数据防篡改以及敏感数据独立于终端设备的存储空间,并且它还提供多种防护措施,如SPA、DPA、DFA 等。Java COS 是运行在SE 上的软件系统,它提供防火墙和上下文安全机制、多应用安全状态和资源管理、数据逻辑保护机制以及其他防攻击机制。

移动设备中的TEE 配合SE 中Java COS 所组成的系统能够满足企业、个人用户在移动支付、信息存储、权限管理、信息传输等方面的安全需求。本文是对移动设备中的TEE 以及SE 中的Java COS 整体方案组成、实现的研究。

1 应用方案说明

图1 展示了一个基于移动设备的TEE 和SE Java COS 应用方案的系统结构,它由发卡银行、银行TSM(Trusted Service Manager),手机厂商TSM 平台,以及其他服务厂家TSM 平台组成。

发卡银行作为应用提供方,根据需要提供发卡行的银行应用;负责进行用户应用申请的审核,审核通过后生成用户银行卡的个人化数据;与银联TSM 平台对接,实现银联TSM 与银行系统的互联接口;用户银行应用状态的管理;提供用户银行卡服务。

银联TSM 平台为各手机厂商、通信运营商、商业银行提供互联互通,提供应用管理、用户管理等相关服务功能。

手机厂商TSM 平台作为载体发行方接入银联TSM,与银联TSM 平台通信,可选调用银联TSM控件为手机APP 提供银联相关的所有服务,同时可与其他服务厂家TSM 平台连接,为其他应用如一卡通、电子票据等提供服务;管理手机内嵌SE 的信息,内嵌SE 的密钥等;管理SE 访问规则,限制APP 访问SE 的权限;提供应用委托管理相关的Token 和收条功能。

其他服务厂家TSM 平台通过接入手机厂商TSM 平台,能够提供自身的各项应用服务。

移动设备终端可以是智能手机、平板电脑等当前主流的移动设备,在设备终端的REE 中存在由各TSM 平台发行的各类APP。在TEE 中存在为各类APP 提供安全支持的TA(Trusted Application)。TA 能够与移动设备终端中的SE 进行通信,获取安全功能的支持。在SE 存在不同TSM 平台的安全域,各安全域间不能相互访问,安全域中存在不同的Applet(Java COS 应用程序),能够通过获取TA 发送的命令及数据,使用SE 提供的密码、安全功能进行处理或存储。

2 设备终端软件系统结构

移动设备终端软件系统主要由两部分组成——运行于应用处理中的REE 和TEE 以及运行于SE 中的Java COS。在当今的移动设备终端的REE 中运行着满足用户日常需要的各种APP,其中一些APP如电子钱包有高安全的需要,它将调用TEE 中的为它服务的可信应用来获取加密、解密、身份认证等安全功能。而可信应用的这些功能则是通过与SE中Java COS 应用程序Applet 通信,从而调用SE 硬件功能来实现的。图2 描述了带TEE 及SE 的设备终端系统组成,表1 则对此种设备终端系统的软件组成进行了描述。

3 TEE 实现研究

本文中描述的TEE 实现是基于ARM 平台TrustZone 技术,它是基于SoC 的系统级的安全设计,其核心原理是从硬件上将安全和非安全区域进行隔离,防止非安全软件直接访问安全区域资源(如内存、屏幕、键盘和指纹等外设)。基于TrustZone 技术,移动设备的处理器的一颗核可虚拟出两颗核,Non-Trusted 核和Trusted 核,Non-Trusted 核运行REE,它只能访问非安全的内存空间,而Trusted 核运行TEE,它不仅能够访问安全内存空间,而且能够访问非安全的存储空间。

如图3 所示,系统的REE 运行在Non Trusted空间,而TEE 则运行在Trusted 空间[6]。

3.1 REE 与TEE 间的通信接口

REE 与 TEE 间的信息交互是通过各自系统中的Communication Agent 来实现,它们是一组交互命令的封装,交互的命令是基于ARM TrustZone 的SMC(Secure Monitor Call)指令或一系列的安全异常机制[7],REE 中的应用程序通过函数接口调用SMC 指令,产生能够被TEE 中Communication Agent处理的异常,并将参数和返回值写入寄存器中,这样TEE 中的应用通过访问寄存器就能够获取REE中的应用程序想要传递的数据。由于TEE 能够访问REE 中的非安全的存储空间,待TEE 中的应用处理完数据后,可以将数据直接返回到REE 中的内存空间。

表1 设备终端软件系统结构

图2 设备终端系统结构

图3 ARM TrustZone 示意图

3.2 TEE 与SE 间的通信接口

SE 可通过SPI、UART、7816 等接口同移动设备处理器连接,运行在处理器中可信区域的TEE 就可以通过硬件接口给SE 发送命令、获取数据。通过硬件接口TEE 发送APDU 格式的命令和数据到SE 中的Java COS。

3.3 GPD TEE Client API

3.3.1 Client API 关键数据结构实现

表2 列举了Client API 关键数据结构的实现和说明。

3.3.2 Client API 关键函数

表3 中列举了Client API 关键函数说明。

3.4 GPD TEE Internal API

Internal API 包含了SE API、Internal Core API、Trusted Interface API,其中SE API 是可信应用程序与SE 交互密切相关的接口。

3.4.1 SE API 关键数据结构实现

表4 列举了与SE API 相关的关键数据结构及其实现。

3.4.2 SE API 关键函数

与SE API 相关的重要函数及功能如表5 所示。

表2 Client API 关键数据结构实现

表3 Client API 关键数函数说明

表4 SE API 关键数据结构实现

表5 Client API 关键数函数说明

4 Java COS 实现研究

4.1 SE 的主要功能

(1)运行Java COS 以及相关Applets。SE 存储了JavaCOS 虚拟机、运行时库、Applet 应用程序和应用数据,为JavaCOS 和Applet 的运行提供硬件环境。下载不同的Applet 到SE 中可以支持各种不同的应用场景。

(2)提供硬件级的各种密码算法。SE 通过硬件电路的方式实现了一系列高效、可靠、安全的密码算法,以满足数据加解密运算、敏感数据的密文传输和数据防篡改等需求。

(3)数据的安全存储及保护。SE 为各种应用场景提供了密钥和数据的安全存储。通过密钥的安全存储可建立完善的密钥管理体系,保证密钥不可被读取。信息安全存储则通过严格的用户和文件访问权限机制以及可靠的认证算法和流程得以保证[5]。

4.2 Java COS

4.2.1 Java COS 的系统结构

目前,Java COS 的设计需要满足Oracle 及其合作伙伴制定的Java Card 3 Platform 系列的规范。Java COS 的系统结构如图4 所示。

图4 Java COS 的系统结构

4.2.2 Java COS 各组成部分功能

Hardware 为硬件层,这里指SE 芯片。

HAL 为硬件抽象层,是对SE 功能的封装。

Java Card Virtual Machine 是Java COS 的核心,它包含了执行引擎和运行时环境。

GlobalPlatform API,Java Card API,Third Part API 分别为GlobalPlatform、Oracle、第三方(行业)定义的API,以支持各种不同领域的应用。

Applet 为Java COS 中运行的应用程序,可由不同的厂商提供,其中Installer 为一种特殊的Applet,它由设备厂商提供,用于向Java COS 中安装其他Applet 或库。

4.2.3 Installer

Installer 可以采用多种方式(Java 语言或C 语言),它主要的功能是CAP 文件解析和应用管理[8]。图5 展示了Installer 的组成。

图5 Installer 组成示意图

文件解析功能是对获取到的CAP 文件进行解析,并将其存放在SE 的非易失硬件存储模块中。

应用管理功能是对应用程序或包的信息及对应的存储地址进行管理,检查、校验从数据通信模块获取到的CAP 文件中应用程序或包的信息,判断是否可以安全或更新应用程序或包,同时具备删除已安装的应用程序或包的功能。图6 展示了Installer的工作流程。

4.2.4 执行引擎

执行引擎的核心功能是对字节码的解释执行[9],图7 展示了执行引擎的工作流程。

4.2.5 运行时环境

运行时环境对逻辑通道进行管理,也管理Java COS 中应用程序的调用、权限和生命周期,它由加载器、内存管理模块及安全管理模块组成[9]。运行时环境的组成如图8 所示。

加载器负责加载、执行的应用程序的类,在执行的过程中将类方法的字节码以及操作数传递给执行引擎。同时,加载器还对应用程序与外部通信的逻辑通道进行管理。

安全管理模块管理应用程序的运行权限,判断数据的访问及函数的调用是否合法。

内存管理模块按类实例变量来分配虚拟机堆,根据类方法执行时所需要的参数和变量创建栈帧。

图6 Installer 工作流程

图7 执行引擎工作流程

图8 运行时环境组成示意图

5 结语

本文描述了基于移动设备和SE 的安全解决方案,介绍了方案中移动设备端软件系统的组成,并阐述了各个模块的实现思路。

移动设备上运行的TEE 有效地保证了移动设备上应用程序的安全权限,同时SE 上的Java COS使SE 能够提供有保证的安全服务给移动设备,在未来的市场中,硬件和软件相结合的安全解决方案将得到更为广泛的使用。

猜你喜欢

银联应用程序终端
银联优惠日 油惠享不停
复杂线束在双BCI耦合下的终端响应机理
“云闪付”一站式健康出行银联
沈阳桃仙机场 :1元停车权益银联
X美术馆首届三年展:“终端〉_How Do We Begin?”
删除Win10中自带的应用程序
基于声波检测的地下防盗终端
谷歌禁止加密货币应用程序
银联钱包
“吃人不吐骨头”的终端为王