[论文分享]

移动安全 2年前 (2022) admin
592 0 0


本次分享的论文是发表在USENIX ATC ’16上的《Hardware-Assisted On-Demand Hypervisor Activation for Efficient Security Critical Code Execution on Mobile Devices》,作者是来自首尔大学的Yeongpil Cho等人。在这篇文章中,作者提出了一种同时利用TrustZone和Hypervisor的方法,能够在确保安全性的同时保持高性能。最后的结果表明,该系统没有任何明显的延迟(<100微秒)。



01

Introduction


为了确保用户数据等关系数据不被泄露,移动应用需要一个隔离环境运行安全代码(SCC)来处理这些数据。目前常见的TEE可以分为两类,一类是TrustZone这样的硬件辅助TEE,另一类则是借助Hypervisor来进行隔离。但是这两类方法都存在一定的缺陷。


在TrustZone中,Secure World的权限要高于Normal World,所以我们需要确保TCB的规模尽可能小。然而,随着SCC的功能不断增加,为了支持这些功能,Trusted OS需要不断进行功能扩展。TOS代码库的规模和复杂性的上升,不可避免地导致TCB的规模变大。因此,随着越来越多的SCC部署在Secure World,攻击面会不断扩大。许多OEM厂商不允许第三方开发者在Secure World安装SCC,也是因此这个原因。


Hypervisor虽然可以提供隔离环境,并且能够在OS被破坏时确保其他环境不受影响,但是会引起不可避免的性能下降。这种性能下降在移动设备中尤为显著,因为这些设备大多受到严重的资源限制。


为了平衡TCB和性能,作者提出了一种新的方案,即 on-demand hypervisor activation 。该方案的特点在于只有SCC需要在隔离环境中运行时,才会去激活Hypervisor。为了验证该方案的可行性,作者设计了On-demand Software Protection (OSP) 来进行验证。



02


Threat Model


作者假设攻击者可以利用漏洞来获得对Normal World中操作系统的完全控制权。换句话说,他们可以在操作系统内核态和用户态的地址空间中执行任意的内存读取、内存写入和代码执行。有了这种能力,他们可能会试图访问SCC的地址空间,以窃取在运行时产生的重要数据。他们还可能试图获取SCC的二进制文件,以便通过逆向工程提取静态存储的密钥等数据,或通过二进制分析确定SCC的核心算法。此外,SCC还可能由攻击者进行部署,以窃取其他SCC的机密数据。




03


Design


3.1 Overall Design

OSP的整体设计如下图所示。OSP将Normal World分为了两部分,一部分的功能和以前保持一致,另一部分则是OSP World,用来运行SCC。由于OSP World和Normal World是互相隔离的,因此可以在保证SCC安全性的同时,避免Secure World的TCB增大。


[论文分享]



OSP由两个组件构成:OSP Core和OSP Hypervisor。其中,OSP Core位于安全世界中,负责在系统启动时中对OSP初始化,并在运行时部署和控制OSP Hypervisor。


OSP Hypervisor负责为SCC提供隔离的执行环境,通过阻止正常世界的未经授权的访问来保护OSP世界。由于虚拟化的开销,它会对性能造成较大的影响。因此,为了最大限度地减少这种开销,只有当一个或多个SCC正在运行时,OSP才会去激活OSP Hypervisor。此外,OSP Core将Secure World扩展到足以覆盖整个OSP World,以保护它在OSP Hypervisor不在活动时,不受正常世界的恶意访问。


3.2 Execution of SCCs

[论文分享]

在运行时,一旦OSP Hypervisor收到带有加密的SCC文件的注册请求,Hypervisor就会将文件的内容复制到OSP World中,并执行一系列的解密和解析工作。它首先用OSP的私钥对SCC的元数据进行解密,并对其进行解析以提取开发者和SCC ID以及解密密钥。随后,Hypervisor对加密的SCC二进制文件进行解密,并开始将解密的内容加载到OSP World中。它准备了一个空的扩展页表,并将SCC的代码、数据和堆栈的地址空间映射到页表上。然后,它通过将SCC的编号返回给调用者,从而完成注册。


对SCC的调用请求会被传递给OSP Hypervisor。Hypervisor会屏蔽与SCC无关的中断,防止Normal World中的OS中断SCC的执行。此外,Hypervisor还会将准备好的页表应用到系统中,作为SCC的地址空间。最后,它检查所传递的入口函数编号的正确性,并将控制权转移到相应的入口函数。


同时,Hypervisor会进行超时检测,以防止一个有问题的或恶意的SCC长时间占用系统。一段时间后,如果SCC完成了它的工作,OSP Hypervisor会立即恢复之前的状态,并将控制权返回给调用者。当SCC在执行过程中调用其外部处理程序时,也会进行类似的过程。


当一个取消注册的请求被发出,OSP Hypervisor会完全清除SCC的每一个相关状态,例如页表和堆栈区域的内容。如果该SCC需要再次被调用者使用,则必须再次完成上述注册步骤。



3.3 On-demand activation of the OSP hypervisor

OSP由两个组件构成:OSP Core和OSP Hypervisor。其中,OSP Core位于安全世界中,负责在系统启动时中对OSP初始化,并在运行时部署和控制OSP Hypervisor。


当OPS Hypervisor关闭时,OSP Core会通过TZASC将OSP World纳入Secure World。然后会对属于OSP World的缓存项进行清空。最后会关闭拓展页表功能,并利用IPI关闭其他核心的拓展页表。



04


Evaluation


作者首先比较了虚拟化拓展带来的开销。我们可以发现,在开启虚拟化拓展之后,会有较大的性能开销,平均值为6.6%。这些结果反映了按需激活Hypervisor能够有效减少其引起的开销。


[论文分享]



之后,作者测试了OSP在真实应用上的性能开销。以文件加解密为例,与一直开启虚拟化相比,由于激活带来的额外开销,OSP的性能有所下降,且与SCC的调用次数成正比。尽管有按需激活的累积开销,但从整体上来看,OSP比一直开启虚拟化更有效率。


[论文分享]







原文始发于微信公众号(COMPASS Lab):[论文分享]

版权声明:admin 发表于 2022年10月18日 上午11:22。
转载请注明:[论文分享] | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...