文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

关于TEE,你需要知道的五大要素

2024-12-02 02:44

关注

1.TEE和安卓架构

首先,我们从整体大方向上,先看一下安卓系统和TEE系统是如何并存的。如下图 1 TEE和安卓系统并存架构所示:

图 1 TEE和安卓系统并存架构

上图中的左半部分非安全侧(Non-secure)就是大家熟悉的安卓系统,通常我们称之为REE,右半部分安全侧(Secure)就是TEE系统,目前市场上存在多种TEE系统,如高通的QSEE,Trustonic,开源的OPTEE等。

图中的EL0,EL1,EL3是ARM架构中的异常等级,其中EL0和EL1是必须实现的,可以粗略的认为EL0是应用层,EL1是系统内核层,其中最重要的是REE侧EL1中需要部署TEE相关驱动,REE侧最后是通过该驱动,同后面提到的EL3进行通信,进而完成一些功能的。EL2主要提供对虚拟化的支持,在本文中先忽略EL2。EL3是比较重要的部分,提供了REE侧(Non-secure)和安全侧(Secure)的功能切换。从图中也可以看出,只有EL3横跨REE侧和安全侧,从而为这两个系统提供了通信的接口,比如我们常用的指纹功能和支付功能就需要REE侧和安全侧交互的,后面内容中我会给大家具体阐述两个系统的通信。

在ARM提供的Trustzone白皮书中有提到,为了使系统更加健壮,建议EL3中的Monitor模式在执行时,关闭中断。

2.SMC

在此我首先强调一点,TEE系统和安卓系统是两个完全独立的系统,这两个系统独立运行。但在实际实用中,这两个系统需要进行通信,比如我们手机锁屏或者使用指纹进行解锁时,均需要安卓系统和TEE系统共同配合完成,其通信是通过SMC指令来完成的,其本质上就是触发一个SMC的中断(如下图2中红色框中所示),从而让安卓或者TEE跳转到Monitor模式(下图中的Monitor/Firmware),而SMC的中断处理类似于系统中的上下文切换。

图 2 环境切换

至此大家应该对SMC有了简单的认识,但在此我需要明确一点,进入Monitor模式并非只有SMC一种方式,比如直接写寄存器CPSR等。

3. REE/TEE传输方式

上面简单说明了SMC,那当REE和TEE侧要进行数据传输时,又该如何处理呢?在现有的处理方案中采用了共享内存,包括静态的共享内存和动态的共享内存。由于静态的共享内存是REE侧和TEE侧约定好的一块共享内存,不管是否需要,都会预留一块区域,比较浪费内存。动态共享内存,操作步骤较复杂,需要我们先申请内存,再进行mmap映射(TEE侧和REE侧都需要进行映射)),然后通过共享内存进行数据传输。

那大家再思考一个问题, TEE侧传输数据到REE侧和REE侧传输数据到TEE侧时,其共享内存分别是由谁申请的?解答此问题前,我需要引入一个Session的名词,TEE侧和REE侧通信前都需要建立一个Session,在REE侧建立Session时,共享内存就准备好了,之后不管数据是从哪边传递到哪边,均使用的是之前已经准备好的共享内存。

大家有机会看CA(REE侧的一个可执行程序)的代码,会发现都会先建立Session,之后就可以进行响应的业务处理。目前市场有不同的TEE厂商,他们实现细节会存在一些差异,但其思路都是一致的。

4. 库

一般TEE厂家会给我们提供TEE相关的库,这个库里面会通过调用TEE对应驱动进而完成各项功能。通常在开发需要TEE环境的程序时,最好可以找对应TEE厂家索要Demo,有这个Demo后,我们就知道该如何基于对应的TEE进行程序开发。

5.GP

我在同一些从事安卓的朋友交流时,发现他们要么是不知道TEE,要么是知道TEE,但不知道GP。试想一下,市场上存在很多TEE厂商,比如我们熟悉的豆荚,Trustonic等,每一家都有他们独有的API接口,那对于一些基于TEE的功能,如指纹,支付等,那是不是需要针对每一个TEE,要进行不同的适配?而GP全称是Global Platform,它提供了一些安全相关的API要求,假如所有项目上均采用GP的方式,那基于TEE的模块(如常见的指纹,支付等),就无需做很大的改动,且在同这类供应商沟通时,需要告知供应商,当前项目上是否采用GP接口的方式。

总结

至此,我已经介绍了我们需要知道的五大要素,此时,我们来思考一下,假如我的项目上需要增加指纹功能,我需要做什么工作呢?

本文中,我把TEE拆分为五要素,但实际上,TEE系统远比本文介绍的要复杂,希望大家可以通过本文对TEE有一个大框架的认识,在此基础上,可以继续深入研究。

作者介绍

赵青窕,51CTO社区编辑,从事多年驱动开发。研究兴趣包含安全OS和网络安全领域,发表过网络相关专利。

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯