基于TrustZone的CA认证方案

客户端应用程序的有效认证使用ARM TrustZone

摘要

由于缺乏对客户端应用(CA)的认证,基于ARM TrustZone的传统保护机制可能导致可信执行环境(TEE)内的敏感数据泄露。此外,由于客户端应用与可信应用(TA)之间的会话机制设计缺陷,恶意CA可能占用会话资源。因此,攻击者可通过伪造恶意CA发起请求,读取安全世界中存储的数据,或发起拒绝服务攻击(DoS攻击)。为解决认证问题,本文提出了一种基于ARM TrustZone的客户端应用认证方案。当CA与可信应用建立会话时,将在可信执行环境中执行CA认证,以防止恶意行为者访问敏感数据。同时,TA将关闭会话并释放所占用的资源。该提出的认证方案在基于QEMU和OP-TEE构建的仿真平台上实现。实验结果表明,该方案能够检测客户端应用的内容变更,避免敏感数据泄露,并防止拒绝服务攻击。

关键词

ARM TrustZone,可信执行环境,身份认证

1 引言

随着互联网和移动终端技术的发展,智能手机和物联网已融入人类生活。然而,我们在享受这些技术带来便利的同时,也面临着潜在的安全威胁。它们在提供丰富功能的同时,也带来了信息泄露和恶意行为的机会。recent studies show that the overall trend of sensitive information leakage is increasing year by year. 移动终端的安全问题已引起广泛关注。

基于ARM TrustZone构建可信执行环境为保护敏感数据提供了一种有效的方法。目前,研究人员已利用TrustZone硬件和软件隔离技术构建了多个可信执行环境(TEE),并开发了大量的可信应用(TA)。隔离技术所保护的对象可分为两类:一类是保护安全域中的敏感数据和安全应用。Yang [1]等人提出了一种在可信执行环境(TEE)中进行指纹识别的方法,并在安全区域对指纹数据进行加密,以防止数据窃取和恶意破坏。Zhang [2]等人利用TrustZone和缓存作为RAM技术构建了CaSE,能够有效防止软件攻击和硬件内存泄露攻击。另一种方法是保护非安全域中的普通内核。SPROBES [3]和TIMA [4]通过在可信执行环境中运行应用程序来检测内核的完整性和控制流,从而防止恶意代码注入对内核的攻击。

然而,对客户端应用(CA)的潜在恶意攻击将导致数据泄露。通常情况下,安全服务请求由客户端应用(CA)发起。处理器在接收到服务请求后,切换到安全世界并执行相应的可信应用(TA),然后返回结果并切换回普通世界。存储在安全世界中的可信应用(TAs)和数据在执行前均经过加密和解密,能够有效保护其完整性和机密性。然而,客户端应用(CAs)容易受到攻击。

Shen [5]发现漏洞,攻击者可利用普通世界中的客户端应用在安全世界中执行任意代码。通过读取CA镜像,攻击者可通过逆向工程分析镜像并伪造服务请求,进而访问安全世界中的数据。攻击者还可发起拒绝服务攻击,导致合法请求无法得到响应。

针对上述安全问题,本文详细分析了安全服务执行的实现,并提出了一种基于ARM TrustZone的客户端应用身份认证方案。本文其余部分组织如下:第2节回顾了TrustZone技术、OP-TEE和SHA-1算法。第3节描述了威胁模型和假设。第4节展示了在安全世界中身份认证的设计与实现。第5节给出了评估结果与安全分析。最后,第6节讨论了相关工作,第7节进行了总结。

本文的主要贡献是:

  • 我们提出了一种基于ARM TrustZone的客户端应用身份认证方案,用于检测发起服务请求的客户端应用的合法性。
  • 我们设计并实现了该方案,在由QEMU和OP-TEE构建的仿真平台上进行了多次实验,并展示了实验过程和评估结果。

2 背景

为了保护数据和应用程序的安全,研究人员在移动终端上采取了多种安全措施,如访问控制、数据加密和运行时隔离机制。然而,大量的攻击案例和系统漏洞表明,这些措施无法完全保证敏感数据的安全。开放移动终端平台(OMTP)率先在其标准中定义了可信执行环境(TEE)。2010年7月,GlobalPlatform首次宣布了其自身的TEE标准化方案,包括客户端API、TEE内部API和TEE系统架构,通过隔离执行环境来确保应用程序和数据的完整性和机密性。ARM发布了TrustZone技术,为TEE硬件实现提供了切实可行的途径。

2.1 TrustZone 技术

TrustZone 技术提供了一种系统级安全解决方案 [6],用于构建隔离执行环境,以防范软件攻击和低级别硬件攻击。TrustZone 将系统的软硬件资源划分为两个世界(普通世界和安全世界)。架构如图1所示。

示意图0

如图1所示,安全世界运行安全操作系统、可信应用并存储敏感数据。普通世界运行通用操作系统和客户端应用,例如Android和Linux。硬件隔离技术将两个世界隔离开,使得普通世界的组件无法访问安全世界中的资源。同时,ARM引入了一种新的处理器模式(监控模式),用于切换两个世界的状态。

cp15协处理器的安全配置寄存器中的NS位指示当前处理器所处的世界。当NS位被清零时,表示处理器运行在安全世界;当NS位被置位时,处理器运行在普通世界。一旦普通世界需要切换到安全世界,处理器首先通过安全监控呼叫(SMC)或中断进入监控模式。然后,监控模式下运行的代码保存普通世界的上下文,并更改NS位的值以切换到安全世界。安全世界采用类似的方法进入普通世界。如果在普通世界中运行的客户端应用需要安全服务,处理器将切换到安全世界执行相应的安全服务,然后将结果返回给普通世界。

2.2 OP-TEE

OP-TEE [7] 是一种基于 TrustZone 技术的 TEE 开源架构,为整合基于 ARM 芯片组的安全生态系统提供了良好的机遇。自2013年 Linaro安全工作组成立以来,Linaro 和 ST工程师 [8] 一直合作重构代码库,使其具有可移植性,并移除所有过时或 ST 特有的代码。

OP-TEE 由三个部分组成:普通世界客户端API、Linux内核TEE设备驱动程序和可信操作系统。TEE客户端API和TEE内部API符合GlobalPlatform API规范的标准。可信操作系统部分采用BSD许可证,因此可以修改而无需公开修改内容的义务。通过以这种方式抽象平台相关部分,使得在实验室中移植 OP-TEE或将它集成到不同厂商的产品中都相对容易。

2.3 SHA-1

SHA-1 是一种数字签名算法。对于长度小于2^64位的消息,SHA-1 将生成一个 160位(20字节)的消息摘要。输入消息中的任何更改,即使只有1位,也会导致哈希值发生显著变化。两个不同的消息无法通过 SHA-1 产生相同的哈希值。

基于上述特性,SHA-1 被广泛应用于密码学和数据完整性验证,是安全应用和协议(如 SSL、SSH 和 IPsec)的重要组成部分。

3 威胁模型和假设

3.1 威胁模型

在基于TrustZone的可信执行环境中,客户端应用在请求安全服务时通过SMC指令向安全世界发送诸如通用唯一标识符(UUID)和命令等参数。数据泄露的威胁模型如图2所示。

示意图1

如图2所示,安全世界中的操作系统查找并加载相应的可信应用,然后在客户端应用与可信应用之间创建会话。可信应用根据传递的命令执行相关服务,并在最后释放会话。可信应用镜像被加密并存储在安全世界中,在运行前将进行验证。此外,可信应用在运行时受到TrustZone提供的隔离保护,因此很难受到攻击。

然而,客户端应用在普通世界中运行,并存储在外部内存中。攻击者可以通过利用系统漏洞和其他攻击手段读取CA镜像。如图2所示,在读取CA镜像后,攻击者可以通过静态分析获取可信应用的UUID,并构造恶意程序发起安全服务请求。当可信应用接受该服务请求时,将执行安全敏感操作,导致数据泄露,例如读取密钥和个人隐私数据。

此外,攻击者还可以发起拒绝服务攻击。在安全服务请求完成后,应释放服务请求所创建的会话。恶意CA不释放会话并长期占用。然而,安全世界的会话资源是有限的。如果恶意CA发起大量会话请求,将影响安全操作系统的进程调度并耗尽会话资源,导致合法请求无法被响应。

3.2 假设

提出的解决方案旨在验证客户端应用,以防止攻击者执行以下攻击。
- 普通世界中的数据泄露
- 由恶意CA引起的拒绝服务攻击

因此,我们假设当前运行时系统处于安全状态。设备已采用安全启动和其他措施来保障运行时系统的安全。当安全服务执行时,可信应用将读取和修改敏感数据。因此,假设可信应用是受信任的,且不存在数据泄露漏洞。

4 设计与实现

4.1 设计

目前,大多数基于TrustZone的可信执行环境遵循GlobalPlatform TEE系统架构规范。安全服务由客户端应用发起,并由可信应用执行。主要流程如下(图3)。

示意图2

步骤1. 客户端应用调用TEEC_InitializeContext函数以初始化TEEC上下文变量。该变量用于建立客户端应用与可信执行环境之间的连接。

步骤2. 客户端应用调用TEEC_OpenSession函数以与可信应用建立会话。该会话用于在客户端应用和可信应用之间传递参数。安全操作系统查找并加载由UUID确定的可信应用。

步骤3. 客户端应用执行TEEC_InvokeCommand,并通过会话指示可信应用执行指定操作。

步骤4. 客户端应用执行TEEC_CloseSession和TEEC_FinalizeContext以释放会话和TEEC上下文变量。

客户端应用在普通世界中运行,而普通世界的安全性不足。如果在普通世界中执行客户端应用的认证,验证结果将无效,从而导致整个认证过程暴露给攻击者。因此,认证过程应在安全的环境中进行,而可信执行环境满足该环境的要求。如果在可信执行环境中执行客户端应用的认证,则验证结果将是有效且可信的。

4.2 身份认证的实现

认证过程如图4所示。

示意图3

在请求安全服务的过程中,客户端应用通过调用 TEEC_InitializeContext 和 TEEC_OpenSession 与可信执行环境建立连接,并向可信应用传递参数。此时,数据交互是单向的(从客户端应用到可信应用)。实际上,这种情况下不会发生安全世界中存储的数据泄露。然而,客户端应用可以通过 TEEC_InvokeCommand 命令通知可信应用执行指定操作,并将结果写入共享内存。相反,此时的数据交换是双向的,存在数据泄露的可能性。运行在两个世界中的应用程序都可以访问共享内存区域。如果恶意CA向可信应用发送非法的 TEEC_InvokeCommand 指令,可信应用可能会将安全世界中的敏感数据写入共享内存。

为避免安全世界中的数据泄露,客户端应用在执行可信应用之前需要进行验证以确保其合法性。

通常情况下,客户端应用请求安全服务后,会释放会话资源。如果来自攻击者的恶意CA长时间持有会话资源,将耗尽安全世界的资源。为了减少对普通世界性能的影响,设备通常为安全世界分配较小的内存区域。当CA请求安全服务时,安全操作系统会加载相应的可信应用。如果同时加载多个可信应用,安全世界的性能将受到严重影响,合法的安全服务请求也将无法得到响应。一旦检测到非法CA,将立即释放相关资源。

4.3 验证

在客户端应用(CA)与可信应用(TA)建立会话后,TrustZone驱动程序将CA镜像注册为可信应用可访问的共享文件。为了验证客户端应用的合法性,CA镜像的预计算哈希值被存储在可信执行环境(TEE)中,命名为hash_correct。认证过程分为两个步骤:第一步,认证程序读取CA镜像,并使用SHA-1算法计算其哈希值,命名为hash_calculated;第二步,程序读取hash_correct,并将其与hash_calculated进行比较。如果认证验证成功,则客户端应用与可信应用之间的会话将继续执行指定操作;如果认证验证失败,则会话将被关闭,以防止恶意CA长时间占用资源并影响其他安全服务请求。

如果在普通世界中安装了新的客户端应用,将通过构建认证表和相应的更新模块,计算其哈希值并存储在安全世界中。

5 评估

我们使用QEMU和OP-TEE构建了一个模拟的可信执行环境,并实现了对客户端应用的身份认证。该环境模拟Cortex-A15处理器,在普通世界中运行Linux 4.9.0内核,在安全世界中运行OP-TEE OS 2.3.0。

5.1 实验评估

为了验证该认证方案的可行性和有效性,我们设计了以下实验。通过比较实验1与实验2,证明了所提出的方案为合法的客户端应用提供了安全服务。此外,通过比较实验2与实验3,证明了该方案拒绝了由恶意CA发起的安全服务请求。

实验1。 测试程序分为客户端应用和可信应用两部分,分别在普通世界和安全世界中运行。客户端应用通过安全服务请求与可信应用建立会话。可信应用接受该请求以读取数据hello world存储在安全世界中,并将其发送到客户端应用。然后客户端应用在终端打印数据。
实验结果如图5和图6所示。

示意图4
示意图5

如图5和图6所示,安全世界内核在接收到客户端应用发送的请求后,开始查找并加载相应的可信应用。然后,可信应用接收由TEEC_InvokeCommand传递的参数,读取数据hello world并将其返回给客户端应用。在本实验中,可信应用未验证客户端应用的合法性。换句话说,一旦可信应用接收到请求,无论客户端应用是否合法,都会读取并返回数据。因此,敏感数据的安全性无法得到保障。如果客户端应用被篡改,安全服务将产生不同的结果。

实验2。 在实验1的基础上,将客户端应用认证添加到安全世界中。客户端应用的哈希值预先计算并存储在安全域中。实验结果如图7和图8所示。

如图7和图8所示,可信应用通过计算和比较哈希值在读取数据前对客户端应用进行认证。在认证验证成功后,可信应用执行后续操作。

实验3。 在实验2的基础上,修改客户端应用镜像以模拟一次攻击。实验结果如图9和图10所示。

由于修改后的CA镜像,认证验证失败。如图9和图10所示,客户端应用无法读取存储在安全世界的数据。然后可信应用释放资源(例如,会话、内存),以防止会话资源被占用。

如表1所示,提出的客户端应用认证方案能够有效检测客户端应用的完整性。在该方案中,可信应用为合法的客户端应用提供安全服务,并拒绝攻击者伪造或篡改的恶意CA发起的请求。此外,该方案还会释放占用的资源。因此,该方案是可行且有效的。

实验 描述 被篡改的 认证 合法性 结果
1 普通CA 未知 安全服务
1 普通CA 未知 未知服务
2 普通CA with 认证 安全服务
3 恶意CA 拒绝

5.2 安全分析

提出的认证方案通过计算并比较CA镜像的哈希值来检测其是否被修改。我们从以下三个方面分析该提出方案的安全性。

认证程序在安全世界中运行,并与普通世界隔离,受到TrustZone的保护。这意味着客户端应用无法看到认证过程,因此恶意CA无法访问认证。可信应用根据验证结果决定是否维持安全服务的会话或释放资源。因此,认证过程是安全的。

为了计算哈希值,CA镜像由TrustZone驱动程序注册为共享文件。TrustZone驱动程序在普通世界系统的特权级别下运行。由于安全内核的有效保护,TrustZone驱动程序是安全的。实际上,认证程序通过发起安全服务请求来计算CA镜像的哈希值。因此,当TrustZone驱动程序注册共享文件时,攻击者无法使用合法的客户端应用镜像替换恶意镜像。

通过SHA-1计算出的哈希值是唯一且不可逆的。两个镜像不会具有相同的哈希值。即使攻击者仅修改了CA镜像中的一个比特,哈希值也会发生巨大变化。由于合法的客户端应用镜像的哈希值被加密并存储在安全内存中,恶意CA无法读取或修改该值。因此,该认证算法是安全的。

6 相关工作

一系列基于TrustZone技术的受信任的操作系统已被开发出来,例如T6、OP-TEE、ANDIX OS [9]等。TrustICE [10]及其他解决方案增强了可信应用的运行时安全。约翰内斯 [11]等人基于著名的开源QEMU平台模拟器,提供了用于ARM TrustZone实验的全面开源软件环境。上述工作为本提案奠定了基础。

罗兰 [12]等人提出了一种用户与可信执行环境交互的概念模型。该模型可用于分析用户与可信执行环境之间交互的安全性。他们还提出了用户如何确认自己正在与可信执行环境进行交互的问题。实际上是在处理一个在受信任应用和非受信任应用之间共享的显示屏上的可信应用。为了保护快速在线身份验证(FIDO)免受恶意攻击,罗布 [13] 引入了TrustZone,该技术提供了硬件隔离以确保基于FIDO的认证安全。

张 [14]等人提出了一种增强SeCReT中会话安全性的方法。他们通过加密客户端应用与可信应用之间交换的消息,建立了一个安全通信通道,从而防止攻击者伪造安全服务请求以访问安全世界内的数据。然而,安全服务请求通常涉及多次处理器状态转换和参数传递,可能导致更高的性能开销。赵 [15]等人提出了一种针对客户端应用的认证方法。他们在普通世界中构建了输入输出驱动模块来计算客户端应用的哈希值,并在安全世界中构建了身份认证模块进行验证。由于普通世界中的安全保护效果较弱,该方法容易受到攻击。

此外,赵[16]等人提出了TSSP以解决恶意CA长时间占用会话资源导致的拒绝服务攻击。他们通过计算等待队列中会话的优先级和执行队列中会话的残余值来抵御拒绝服务攻击,从而确保重要会话的执行。尽管该方法保证了高优先级会话的执行,但并未释放恶意CA所占用的会话资源。如果这些资源长时间未被释放,系统将产生更大的性能开销。

7 结论

本文中,我们提出了一种基于可信执行环境(TEE)的客户端应用认证方案,以解决由恶意CA引起的安全敏感数据泄露和拒绝服务攻击问题。我们在基于QEMU和OP-TEE的仿真实验环境中设计并实现了该方案。实验结果表明,该身份认证能够防止恶意CA通过服务请求读取安全世界中的敏感数据,并在拒绝请求后释放所占用的资源。因此,所提出的方案能够检测客户端应用的内容变更,避免敏感数据泄露并防止拒绝服务攻击。从而,我们提出的方案可有效提高移动终端和物联网使用过程中的安全水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值