security - 上下文切换到安全模式的成本是多少(arm trustzone)

标签 security operating-system arm context-switch trust-zone

我试图了解在受信任(安全)和非安全模式之间来回切换的成本。

从非安全世界转向安全世界时究竟需要发生什么?我知道需要设置 ns 位(基于某些特殊指令?),需要刷新和更新页表(?),刷新和更新处理器缓存。还有什么需要发生的吗?

处理器缓存:它们是分段缓存还是共享缓存,还是整个缓存用于每种模式?这决定了转换的成本。

RAM:这必须“分区”并由两种模式使用。所以寻址只是“分区”的一个偏移量。这是正确的吗?

这与用户空间到内核模式的切换或用户空间中进程到进程的切换有什么不同?

从非安全模式转移到安全模式是否会使其比常规进程上下文切换更昂贵?

有没有文章解释到底发生了什么?

编辑:根据下面的回复,我希望了解当进程在 arm 处理器上从非安全模式切换到安全模式(信任区域)时究竟会发生什么。

最佳答案

What exactly needs to happen when moving from non-secure to secure world?



TL-DR;最低限度是保存/恢复安全世界所需的所有 CPU 寄存器并更改 NS 位。通常,R0-R14 以及当前模式和分组的 LR 和 SP(中止、中断等)都在该寄存器组中。其他一切都取决于您的安全模型。

首先,TrustZone 中可以使用许多不同的模型; TrustZone 是一种工具而不是解决方案。最基本的模型是一个带有 API 的库,其中存储了一些安全数据(即解密 key )以供外部源处理(从“正常世界”空间下载一些 DRM)。我猜你不是这个意思。

操作系统可以是可抢占的和不可抢占的。如果您在两个世界中都有两个操作系统,那么如何放弃控制、共享资源和保护安全 Assets 都将在世界切换中发挥作用。

在许多情况下,缓存和 TLB 是全局通用的。设备也可能具有世界意识,并且设计的目的是将上下文内置到设备中。这并不是说某些系统可能以某种方式泄露了信息。
  • Meltdown (2017)
  • Specter (2017)
  • Hyperthreading exploit (2004)

  • 如果您真的很担心这种类型的攻击,那么将安全世界内存标记为需要保护的非缓存可能是合适的。在许多 ARM 系统中,L1/L2 和 TLB 缓存在世界之间是统一的,可以提供旁道攻击。

    在许多 ARM 设备上实现的 TrustZone 带有一个 GIC,它可以在安全世界中运行 FIQ,而在正常世界中可以防止 FIQ 被屏蔽。许多 GIC 功能在世界之间存储,允许两个操作系统在没有“上下文切换”信息的情况下使用它。即,NS 位将根据 NS 位的状态自动更改访问的 GIC 功能(因此它具有存储在设备中的上下文)。许多其他供应商特定设备设计为以这种方式运行。

    如果两个世界都使用 NEON/VFP,那么您还需要在世界切换器上保存/恢复这些寄存器。对于抢占,您可能需要连接到操作系统安全调度程序以允许和正常世界中断抢占安全世界主线(显然这取决于您要保护的 Assets ;如果您允许这样做,安全主线有一个DOS 向量)。

    如果设备出现故障,则您可能需要保存/恢复设备状态。如果普通世界被限制使用FIQ模式,去普通世界时至少还需要清除SP_fiq和LR_fiq(反之恢复安全值)。其中一些寄存器很难保存/恢复,因为您必须切换模式,如果不小心,这本身就是一个安全风险。

    RAM: This must be 'partitioned' and used by both modes. So addressing is just an offset into the 'partition'. Is this right?



    安全启动将根据“NS 位”对内存进行分区。物理内存是否可见取决于分区管理器设备逻辑,通常可以在启动时锁定。即,如果不可见,则与任何不存在的内存一样是总线错误。 NS 位旁边没有“开关”。

    Is there anything in moving from non-secure to secure modes that would make it more expensive than the regular process context switch?



    是的,普通开关仅用于“模式”。一个世界适用于所有 ARM 模式,因此必须切换所有存储区寄存器。根据系统,TLB 和缓存通常不需要切换。

    有关的:
  • How to introspect normal world
  • TrustZone monitor mode switch design
  • Preventing memory access from the normal world
  • How is a TrustZone OS secure?
  • TrustZone scheduler in secure/non-secure OS
  • IMX53 and TrustZone
  • ARM Trusted firmware在 github
  • TrustZone Whitepaper
  • 关于security - 上下文切换到安全模式的成本是多少(arm trustzone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065461/

    相关文章:

    asp.net - 暴力攻击asp.net中的故障安全登录

    python-2.7 - 编译错误: command 'arm-linux-gnueabihf-gcc' failed with exit status 1

    security - 如何验证docker基础镜像的真实性?

    javascript - 安全错误: Blocked a frame with origin from accessing a cross-origin frame

    algorithm - 彼得森的算法

    Java安全漏洞操作系统注入(inject)Veracode

    operating-system - OSError : Unable to locate Ghostscript on paths

    compiler-errors - 链接: Undefined reference to function时出错

    linux - 如何理解内核 panic 转储的ARM寄存器?

    c# - 如何使软件安全?