查看原文
其他

一种基于 TrustZone 的内生可信执行环境构建方法

The following article is from 信息安全与通信保密杂志社 Author Cismag


摘要针对安全模块扩展技术面临的安全风险以及性能较低的问题,提出了一种基于TrustZone技术构建内生可信执行环境的方法。重点研究了计算资源隔离分配、固件可信度量、安全存储、全信任链构建等关键技术。设计了内生可信执行环境系统结构与可信计算基关键部件,通过对其安全性进行分析,表明基于内生可信执行环境,可以从底层硬件到上层软件,逐级构建自启动到运行整个活动周期的信任链,能够有效地保证系统关键硬件、固件、操作系统文件、应用软件和敏感数据的安全性和完整性,具备内生安全、易扩展、低成本等优点。



内容目录:


1 TrustZone 介绍
2 关键技术
2.1 计算资源隔离分配
2.2 固件可信度量
2.3 安全存储
2.4 全信任链构建
3 系统结构设计
4 可信计算基设计
5 安全性分析
6 结 语



近年来,计算机已成为人们工作生活中必不可少的工具,扮演着越来越重要的角色。计算平台通过处理器内存映射手段,给每个进程配置一个单独的地址空间,来隔离多个进程的代码和数据,通过内核空间和用户空间不同的特权级来隔离操作系统和用户进程的代码和数据,达到保护应用程序和数据的目的。但由于内存中的代码和数据都是以明文方式存在的,外部病毒和木马容易对内存中的代码和数据实施缓冲区溢出、内存注入、数据窃取、拒绝服务等多种攻击。此外,在应对新型安全威胁时,传统“打补丁”的安全技术手段显得力不从心。因此,探寻新的应对新型安全威胁的方法成为当前各机构的研究热点。


为应对新型病毒和木马的安全威胁,行业内通常采用安全模块扩展技术。该技术是将代码和数据送往安全模块,由安全模块对代码实施完整性验证和数据加密处理,从而实现对内存中代码和数据的安全保护,数据的处理交由外部的安全模块实现,这些模块能够保护自身资源和密钥等数据的安全,如 SIM 卡、各种智能卡,以及连接到外部的硬件安全模块等,但其同主芯片的通信线路暴露在外部,容易被监听破解,通信的速率比较低,对系统性能影响较大。


本文研究基于 TrustZone 的内生可信执行环境构建方法,对系统的关键硬件、操作系统文件、应用软件和敏感数据提供主动安全保护和完整性验证。该方法是基于处理器的安全隔离特性,无需额外的安全模块,在处理器中实现安全模块的全部功能,能够主动选择需要保护的数据和进程,保证敏感数据不被恶意软件和黑客窃取 ,与安全模块扩展技术相比,不改变系统设计结构,能够更加高效、可靠地保证系统安全性和完整性,对系统性能影响小,同时降低了系统成本。


1

TrustZone 介绍

TrustZone 技术由 ARM 公司推出伊始,便被产业界积极使用和推广。从早期的苹果公司的 Secure Enclave 技术、三星的 KNOX 技术提供的 TrustZone 的系统级实现,到如今华为荣耀可信指纹识别、小米防刷机技术的应用级实现,TrustZone 技术不断发展成熟,已经形成了一套完整的产业链,构建了相对稳定的产业生态圈。当前,TrustZone 技术在华为、三星、苹果等多家公司,以及 Globalplatform 等标准平台的推动下,已经形成了 TrustZone 的统一标准,大大节省了 TrustZone 开发成本,降低了开发难度。TrustZone 安 全 架 构 的主要安全目标是防止敏感数据的完整性和机密性遭到破坏。通过建立有效的安全隔离执行环境,对系统软硬件资源、运行环境进行划分,得到安全世界(Secure World)和通用世界(Normal World)。安全世界采用独立的安全操作系统处理器,可以同时处理安全环境和非安全环境下的任务,在保证安全性的前提下,将性能的损失降到了最低。通用世界执行独立的通用操作系统,直接与用户交互,用户进程可以通过专用安全认证通道,经过认证授权后,才能访问安全世界提供的安全服务。TrustZone 技术并不是针对所有的安全隐患的,而是提供了一系列的基本模块,让设计者可以针对自己的实际应用和系统环境来选择出自己需要的模块 。TrustZone 安全框架如图 1 所示。

图 1 TrustZone 安全框架


2

关键技术

基于 TrustZone 技术构建内生可信计算环境,涉及诸多软硬件关键技术。本文在计算资源隔离分配、固件可信度量、安全存储、全信任链接构建等方面进行了关键技术的研究,给出了关键技术解决思路。


2.1 计算资源隔离分配

计算资源隔离分配技术是基于 TrustZone 硬件隔离特性而提出的,能够实现针对处理器、内存、数据通道和中断的安全隔离,为内生可信执行环境的构建提供安全基础平台支撑。计算资源隔离分配结构如图 2 所示。

图 2 计算资源隔离分配结构

(1)处理器隔离。TrustZone 实现了多核处理器的安全隔离,将一个处理器的多个核分成了通用执行环境(Rich Execute Environment,REE)和 可 信 执 行 环 境(Trust Execute Environment,TEE)。当处理器处于 REE 时,只能访问非安全的外部和内存资源,而不能访问任何安全资源。当处理器核处于 TEE 时,除了可以访问安全资源,还可以访问非安全资源。


(2)内存隔离。为保证 TEE 与 REE 的内存隔离,使用 TrustZone 地址空间控制器将物理内存划分为安全域内存和非安全域内存,分别运行 TEE 和 REE 程序。为保证用户态程序不能直接访问或破坏内核态数据及代码,利用TrustZone 提供的两个虚拟内存单元,将安全域内存映射到 TEE 的虚拟地址空间,将非安全域内存映射到 REE 的虚拟地址空间。


(3)数据通道安全隔离。为保障数据机密性,通过在 REE 内核层设置加密数据传输通道, 可 防 止 REE 中 直 接 明 文 泄 露。同 时, 在TrustZone 硬件保护下,REE 获取 TEE 的数据途径只有通过专门的安全数据传输通道和共享内存,使得 TEE 不能直接与 REE 通信,从而能够有效保证数据交换的安全。


(4)中断隔离。当 TEE 执行时,CPU 状态寄存器中的对应位置 0,这将会使总线访问信号的对应位电平拉低,使安全内存和安全设备能够响应 CPU 的访问,并通过中断控制器将安全设备的中断信号通知到异常级别 3 的异常机制中。当 REE 执行时,CPU 状态寄存器以及总线信号中的对应位会置 1,安全内存和安全设备不再接受 CPU 的访问请求。TEE 使用快速中断请求,REE 使用中断请求。


2.2 固件可信度量

固件可信度量技术是固件对硬件设备特征数据(硬盘的序列号)、操作系统装载器(OS Loader)、操作系统内核(OS Kernel)、启动配置文件,以及关键文件列表等部件进行度量,保证这些部件的完整性。系统开机启动时,首先,TEE 执行并完成对安全固件的可信度量后,加载安全固件;其次,安全固件调用 TEE 提供的可信度量服务,对系统上的硬件设备进行可信度量,硬件设备可信度量是通过对硬件设备的特征数据的验证,实现对平台中硬件的认证,防止不安全硬件设备在平台上使用;最后,安全固件对 OS Loader、OS Kernel、启动配置文件,以及关键文件列表进行可信度量,检查这些文件的内容是否被篡改,如被篡改,固件将提示错误并记录日志,停止系统启动过程。固件可信度量过程如图 3 所示。

图 3 固件可信度量过程


2.3 安全存储

安全存储技术是 TEE 将敏感数据进行加密后存储到介质中的关键技术。主要采用安全存储结构,安全高效地将敏感数据进行加密,并封装成专门格式的数据报文,再通过文件系统存储到介质中。当 TEE 应用程序进行文件写操作时,会产生可信存储系统调用,通过 TEE 文件操作接口将数据加密后发送到 REE 文件操作接口,再通过 REE 的文件系统将加密后的数据存储到介质上,在进行存储加密的加密密钥产生后,由主密钥加密保护存储,主密钥通过密管产生后直接注入到处理器片内安全存储器区中保存。TEE 安全存储结构如图 4 所示。

图 4 TEE 安全存储结构


2.4 全信任链构建

信任链是可信计算中的重要概念。利用它可以将信任域从信任根扩展到整个计算平台[8]。可信计算联盟组织定义的信任链构建方法是以外部可信平台模块(Trusted Platform Module,TPM)作为可信度量根,使用信任链扩展理论,从 BIOS 固件开始逐级建立信任链 [9]。本文研究基于 TrustZone 的可信执行环境构建全信任链的方法,将可信度量根植入到处理器内部的BootLoader 中作为可信根,BootLoader 作为系统启动时最先加载执行的程序,对 TEE 进行可信度量后加载 TEE;再由 TEE 对安全固件进行可信度量后加载安全固件;安全固件继续对硬件设备、操作系统核心文件进行可信度量后加载REE;最后由 REE 中的可信运行控制模块对可执行程序进行可信度量后,完成系统启动。通过全信任链的逐级扩展,保证了计算平台启动过程安全可信。全信任链构建过程如图 5 所示。

图 5 全信任链构建过程


3

系统结构设计

基于 TrustZone 的安全隔离架构,构建内生可信执行环境,通过构建可信计算基(Trusted Computing Base,TCB)、可信软件栈、可信运行控制和可信应用(Trusted Application,TA),实现可信执行环境对通用执行环境的可信服务和主动管控。基于 TrustZone 的内生可信执行环境系统结构如图 6 所示。

图 6 基于 TrustZone 的内生可信执行环境系统结构


基于 TrustZone 的内生可信执行环境系统架构采用双体系架构,将计算环境划分为 TEE 和REE,自上而下分为:应用层、接口层、系统层和硬件层。客户端应用请求由应用层逐层传递到硬件层的安全监视器,再由安全监视器传递到 TEE 中的可信服务,可信应用以服务的方式处理请求,并将服务结果通过安全监视器传递回 REE 的客户端应用,完成一次交互过程。对于可信应用开发者来说,只需要关注应用层和接口层,系统层和平台硬件层对其是透明的。应用层通过调用统一的 TEE 客户端接口,实现对 TEE 服务的访问,接口层对应用层输入的参数进行安全检查,同时在调用接口功能前,进行认证与鉴权,从而保证应用层对 TEE 服务的安全访问。


4

可信计算基础设施
可信计算基是内生可信执行环境的关键部件,基于可信计算基将安全和可信机制向全系统辐射延伸,提升主动安全防护能力。通过将处理器划分为 TEE 和 REE 的方式,让可信计算基运行在 TEE 上,TEE 占用一个专门的处理器核,与 REE 安全隔离,保证可信计算基安全可信运行的同时,又不影响 REE 的运行性能。REE 确保常规系统服务高效实现,两者一起实现了对当前操作系统的平滑继承和复用。可信计算基充分结合了硬件的最新特性和发展成果,利用处理器提供的 TEE 安全扩展机制,能够较好地实现系统安全性、可靠性与计算性能的平衡。既能够确保敏感应用、隐私数据和敏感信息的安全,还能够检测、监控系统的恶意行为攻击,提高系统抵御威胁的能力。可信计算基由命令解析、可信服务、调度管理及若干度量算法核等模块组成。可信计算基功能组成如图 7 所示。

图 7 可信计算基功能组成

(1)命令解析。命令解析负责解析可信应用下发的命令报文,检测命令报文的合规性、参数的合法性,并将合规的命令报文转发到对应的可信服务功能模块上进行处理,并将处理结果返回给上层应用。(2)可信服务。可信服务是实现可信计算功能的实体,负责处理可信应用各种命令请求,提供可信度量、可信存储、完整性报告、度量服务、资源配置管理和日志审计等功能。当执行度量算法服务时,将数据和资源通过调度管理模块发送到各个度量算法核进行运算处理,并将处理结果返回给命令解析模块。(3)调度管理。调度管理负责多个度量算法核的并行任务调度处理,将可信服务发送的数据、资源,通过操作系统内核态调用接口发送到多个对应的度量算法核上进行处理,并将处理结果返回给可信服务模块。(4)度量算法核。度量算法核是由若干个高速度量算法处理引擎构成的,算法核在国产飞腾处理器独立的核上运行,算法调用接口封装后,由调度管理模块调用。


5

安全性分析

基于 TrustZone 的内生可信执行环境的安全性主要体现在系统启动、运行的各个阶段,因此安全性分析主要是分析系统启动、运行各个阶段的可信机制的安全性。系统启动过程的执行周期可分为 5 个阶段,其中每个阶段的安全性都是建立在前一阶段信任链扩展的基础上。系统启动、运行各个阶段的安全性分析如下文所述。


(1)可信执行环境阶段。该阶段 CPU 片内的飞腾引导只读存储器(Phytium Boot ROM,PBR)的代码首先执行,由于 PBR 及相关资源是存储在 CPU 片内 ROM 安全存储区,外部无法访问获取,因此,将 PBR 作为系统的初始可信根,利用 PBR 验证存储在片外的飞腾基础固件(Phytium Base Firmware,PBF),如果验证成功则继续执行 PBF,当信任链扩展到 PBF,由 PBF加载 TEE 执行,并利用 PBF 验证第三方 BIOS 固件,如果验证成功,则将信任链扩展到 BIOS 固件。在整个执行过程中,PBR 固件作为可信根始终是在处理器芯片内部执行,外部无法篡改,因此该阶段基于 PBR 构建的启动信任链是安全的。(2)安全验证阶段。该阶段是通用计算环境执行的第一个阶段,其主要功能是对 CPU、Cache、内存控制单元、内存等部件进行初始化,为代码的执行准备资源。该阶段的所有执行代码都是 BIOS 固件的一部分,由于整个 BIOS 固件都是经过 PBF 成功验证后,才加载执行的,因此该执行阶段也是安全的。(3)驱动程序执行阶段。该阶段开始大规模地加载设备驱动,这是 BIOS 工作的主体阶段。执行完成之后,整个系统基本准备就绪,机器的控制开始逐步转交给上层的系统软件。由于整个 BIOS 固件都是经过了 PBF 成功验证后,才加载执行的,因此该执行阶段也是安全的。(4)启动设备选择阶段。设备授权启动模块及用户认证、完整性验证功能在该阶段开始执行,在用户认证通过后依次读取硬件外设特征信息和 REE 系统核心文件数据,并进行完整性验证。该阶段对硬件外设、REE 操作系统核心文件进行完整性验证,保证了硬件外设、REE操作系统不被篡改。(5)通用执行环境阶段。该阶段加载执行经完整性验证通过的通用操作系统,同时执行可信运行控制机制,保证了所有加载的内核模块、动态链接库、可执行文件等不被篡改,该阶段执行完成后,通用执行环境及整个系统的信任链构建完成。


6

结语
面对日益复杂的网络环境,针对计算平台面临的安全威胁,基于国产处理器 TrustZone 安全架构,研究了内生可信执行环境构建方法和若干关键技术,提出了内生可信执行环境系统结构。通过构建 TEE 与 REE 两个具备安全隔离特性的执行环境,将安全任务与非安全任务划分到不同的执行环境中运行,不仅保证了多用户多任务的安全执行,也保证了对系统敏感资源的安全访问,提高了计算环境整体安全性。同时,在系统启动与运行过程中,通过构建从启动到运行的完整信任链,对各个环节实施完整性验证,可以有效地防止外部病毒和木马对系统的基础软硬件实施注入攻击,为计算平台提供了一种安全可信的运行环境解决方案。

引用格式:庞飞 , 唐六华 , 谢小赋 , 等 . 一种基于 TrustZone 的内生可信执行环境构建方法 [J]. 信息安全与通信保密 ,2022(6):102-110.

选自《信息安全与通信保密》2022年第6期


END
作者简介:
庞 飞,男,硕士,高级工程师,主要研究方向为信息安全;唐六华,男,硕士,高级工程师,主要研究方向为信息安全;谢小赋,男,硕士,高级工程师,主要研究方向为信息安全;孙夏声,男,硕士,高级工程师,主要研究方向为信息安全

往期推荐


联邦学习顶会论文及开源框架汇总

Tetrad: 面向安全训练和推理的主动安全四方计算

异质性联邦学习综述

ACL Findings 2022 | THE-X: 通过同态加密实现Transformer的推断隐私安全





欢迎投稿
邮箱:pet@openmpc.com
参与更多讨论,请添加小编微信加入交流群

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存