好久没有写博客,最近打了一些有趣得比赛,来记录一下相关得学习内容
RWCTF-OPTEE
这次比赛出了两个关于OPTEE得题目,后来查了一下也是一个手机上用的比较常见得概念了,为了能够更好的做题目,这边首先先简单的对这个玩意儿进行简单的学习:
关于TEE
运行 Linux 或 Android 的典型嵌入式系统在内核和用户空间包中都存在大量安全漏洞。漏洞可能允许攻击者访问敏感信息和/或插入恶意软件。TEE 增加了一个额外的安全层,其中运行在 TEE 上的代码/数据不能从正常的世界操作系统(例如:Linux/Android)访问/篡改。在 TEE(安全世界)上运行的软件通常涉及一个面向安全的微型操作系统(例如:OP-TEE OS)以及受信任的应用程序。受信任的应用程序旨在处理机密信息,例如信用卡 PIN、私钥、客户数据、受 DRM 保护的媒体等。
在硬件方面,基于 ARM 的处理器使用 TrustZone 技术实现 TEE。TrustZone 使单个物理处理器内核能够安全有效地执行来自正常世界(如 Linux/Android 等富操作系统)和安全世界(如 OP-TEE 等安全操作系统)的代码。这允许高性能安全软件与正常的世界操作环境一起运行。TrustZone 实现了基于“状态”的内存和 IO 保护。即当处理器在安全状态/上下文(安全世界)中运行时,它对系统有不同的看法,并且可以访问通常无法从非安全状态/上下文(正常世界)访问的内存/外围设备. 当更改当前运行的虚拟处理器时,两个虚拟处理器上下文通过监控模式切换。
对于运行环境(软件层面)而言,此时会同时运行两种操作系统。我们常用的操作系统们被称为Rich Execution Environment (REE)
富执行环境,而安全运行环境则称为Trusted Execution Environment (TEE)
可受信任的执行环境。这两类环境都会以特权模式运行,而这上面的程序都是以用户模式的形式运行。当他们需要交互的时候,就会使用系统提供的API进行相互的调用。
TEE 需要软件和硬件(内置于处理器中)支持。这边主要就是介绍其中得软件实现——OPTEE
OPTEE介绍
在现代得计算机场景下(尤其是手机)有可能会出现如下得场景:手机可能存储了很重要得个人信息,比如说个人得指纹,虹膜等等重要数据。这类数据得安全性和普通数据不能相提并论。为了解决这个问题,在这类机器上可以安装两个不同得OS:我们在同一个CPU上运行两个OS,其中一个OS只负责一些安全存储或者计算的操作,比如存储我们的指纹数据等。另一个OS就是我们平时用的OS,比如安卓系统,对于这个OS来说,安全OS是不可见的,所以根本没有权限获取到安全OS中的隐私数据。
OP-TEE,open source project Trusted Execution Environment (TEE), 开源可信执行环境。TEE
与Rich Execution Environment (REE)
相对应。REE
中运行的是non-secure OS
,我们所看到的系统,安卓,Linux系统等都运行在REE。TEE中运行的是secure OS
,他需要Arm TrustZone
技术的支持,依赖硬件设计,REE中的系统和应用是无法直接访问TEE中的资源的,只能通过TEE提供的接口获取一个结果,其间的运算和存储等操作对REE中的系统和应用都是不可见的,从而来保证安全性。
OPTEE本质上是在模仿进程间的交互,两个OS之间也需要交互,因此我们需要一种机制来访问安全OS的服务,也就是CA/TA这种调用机制。
参考网站
https://timesys.com/security/trusted-software-development-op-tee/