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

Security 上下文切换到安全模式(arm trustzone)的成本是多少,security,operating-system,arm,context-switch,trust-zone,Security,Operating System,Arm,Context Switch,Trust Zone,我试图了解在arm中在受信任(安全)和非安全模式之间来回切换的成本 从一个不安全的世界到一个安全的世界,到底需要发生什么?我知道需要设置ns位(基于某些特殊指令?),需要刷新和更新页表(?),处理器缓存刷新和更新。还有什么需要发生的吗 处理器缓存:它们是分段和共享的缓存,还是每个模式都使用整个缓存?这决定了交换机的成本 RAM:必须对其进行“分区”,并由两种模式使用。所以寻址只是“分区”中的一个偏移量。是这样吗 从用户空间到内核模式的切换或用户空间中的进程到进程的切换有什么不同 从非安全模式到安

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

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

处理器缓存:它们是分段和共享的缓存,还是每个模式都使用整个缓存?这决定了交换机的成本

RAM:必须对其进行“分区”,并由两种模式使用。所以寻址只是“分区”中的一个偏移量。是这样吗

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

从非安全模式到安全模式的转变是否会比常规流程上下文切换更昂贵

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

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

从一个不安全的世界到一个安全的世界,到底需要发生什么

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,那么您还需要在世界交换机上保存/恢复这些寄存器。对于抢占,您可能需要挂接到OS secure scheduler以允许和正常世界中断抢占secure world主线(显然这取决于您试图保护的资产;如果允许,则安全主线具有DOS向量)

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

RAM:必须对其进行“分区”,并由两种模式使用。所以寻址只是“分区”中的一个偏移量。是这样吗

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

从非安全模式到安全模式的转变是否会比常规流程上下文切换更昂贵

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


相关的:

  • 关于github

你能把你的问题缩小到一个特定的范围吗?这样你就可以增加得到答案的机会了吗?@Tony,我想了解当一个进程在arm处理器上从非安全模式切换到安全模式(信任区)时会发生什么。你想了解更多细节吗?现在更好了,我不知道具体的架构。但是,当您触发系统调用时,它是在当前进程的上下文中以特权模式执行的。没有开关。