什么是上下文切换到安全模式的成本(arm trustzone)

时间:2018-01-02 17:42:34

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

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

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

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

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

从用户空间到内核模式切换或用户空间中处理切换的进程有何不同?

是否存在从非安全模式转为安全模式的任何问题,这会使其比常规流程上下文切换更昂贵?

是否有任何文章可以解释到底发生了什么?

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

1 个答案:

答案 0 :(得分:2)

  

从非安全世界迁移到安全世界时究竟需要发生什么?

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

首先,可以在TrustZone中使用许多不同的模型; TrustZone是一种工具而非解决方案。最基本的模型是具有API的库,其中存储一些安全数据(即解密密钥)以由外部源(来自正常世界'空间的一些DRM下载)进行处理。我认为你不是这个意思。

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

在许多情况下,缓存和TLB都是全世界都知道的。设备也可以是世界意识的,并且设计的目的是将上下文内置到设备中。这并不是说某些系统可能以某种方式泄露信息。

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

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

如果两个世界都使用NEON / VFP,那么您还需要在世界交换机上保存/恢复这些寄存器。对于抢占,您可能需要挂钩操作系统安全调度程序以允许和普通世界中断抢占安全世界主线(显然这取决于您尝试保护的资产;如果您允许,安全主线有一个DOS矢量)。

如果设备中存在毛刺,则可能需要保存/恢复设备状态。如果正常世界被限制使用FIQ模式,则仍需要在进入正常世界时至少清除SP_fiq和LR_fiq(并以另一种方式恢复安全值)。其中一些寄存器很难保存/恢复,因为必须切换模式,如果不小心,这本身就是一种安全风险。

  

RAM:必须进行分区'并由两种模式使用。因此,寻址仅仅是对“分区”的偏移。这是对的吗?

安全启动将根据&#NS;位'对内存进行分区。物理内存将基于分区管理器设备逻辑可见或不可见,分区管理器设备逻辑通常可以在引导时锁定。即,如果不可见,它就像任何不存在的内存一样是总线错误。没有'开关'在NS位旁边。

  

是否存在从非安全模式转为安全模式的任何问题,这会使其比常规流程上下文切换更昂贵?

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

相关: