Armv8-M的TrustZone技术之内存属性单元

如果处理器包含Armv8-M安全扩展,则内存区域的安全状态由内部安全属性单元(SAU,Secure Attribution Unit )或外部实现定义的属性单元(IDAU,Implementation Defined Attribution Unit)的组合控制。SAU区域的数量在处理器实现期间定义。在复位时,SAU处于禁用状态。

如果未定义任何SAU区域,或者SAU被禁用,并且系统中没有包含IDAU,则整个内存地址空间被定义为安全,并且处理器无法切换到非安全状态。任何尝试切换到非安全状态都会导致故障。这是处理器的默认状态。

SAU在安全状态下可编程,具有类似于内存保护单元(MPU)的程序员模型。SAU的实现可由设计人员配置。SAU始终存在,但设计人员定义了区域的数量。设计人员还可以使用IDAU定义固定的内存映射,并使用SAU来覆盖内存的某些部分的安全属性。一个简单的用法是使用IDAU将内存分割为500Mb的交替安全和非安全内存块。

微控制器或SoC器件的设计者将内存空间划分为安全和非安全区域。软件使用安全属性单元(SAU)或通过连接到特殊实现定义的处理器上的属性单元(IDAU)接口特定于设备的控制器逻辑来定义一些区域。内存分区还用于将外设定义为安全或非安全。

SAU和IDAU还为每个内存区域定义了区域号。区域号是8位的,并且由Test Target(TT)指令使用,以允许软件确定内存中对象的访问权限和安全属性。

只有在处理器中包含Armv8-M安全扩展时,才会实现SAU。包含在SAU中的区域的数量可以配置为0、4或8。

SAU只能在安全状态下进行编程。使用SAU区域编号寄存器(SAU_RNR)、SAU区域基地址寄存器(SAU_RBAR)和SAU区域限制地址寄存器(SAU_RLAR)对区域进行编程。可以使用SAU控制寄存器(SAU_CTRL)启用SAU。

【注意】:在对SAU的非安全区域进行编程时,必须确保不将安全数据和代码暴露给非安全应用程序。

处理器中的安全属性和内存保护由可选的SAU和可选的内存保护单元(MPU)提供。对于指令和数据,SAU返回与地址关联的安全属性。

对于指令,该属性确定了处理器在执行指令时允许的安全状态。它还可以识别是否可以从非安全状态调用安全地址的代码。它通过应用NSC属性来实现。

对于数据,该属性确定是否可以从非安全状态访问内存地址,以及外部内存请求是否标记为安全或非安全。

如果从非安全状态进行数据访问到标记为安全的地址,则处理器会触发安全故障异常。如果从安全状态到标记为非安全的地址进行数据访问,则相关的外部内存访问将被标记为非安全。

相关推荐
代码改变世界ctw3 个月前
Armv8/Armv9的Pstate寄存器介绍
汇编·arm开发·trustzone·atf·tee·寄存器·secure
代码改变世界ctw4 个月前
Armv8/Armv9架构的学习大纲-学习方法-自学路线-付费学习路线
arm·trustzone·soc·芯片·armv8·armv9·周贺贺
代码改变世界ctw5 个月前
TEE的存储系统是如何实现的?如何保证其安全的?
安全·trustzone·optee·tee·安全存储·storage·trustonic
安全二次方security²5 个月前
ARM-V9 RME(Realm Management Extension)系统架构之系统安全能力的RAS
arm安全架构·cca·机密计算·ras·领域管理扩展·rme·系统安全能力
安全二次方security²5 个月前
ARM-V9 RME(Realm Management Extension)系统架构之系统能力的设备隔离和保护
系统架构·arm安全架构·cca·机密计算·领域管理扩展·rme·设备隔离和防护
安全二次方security²6 个月前
ARM架构安全特性之防御执行技术
分支目标识别·侧信道攻击·栈溢出攻击·arm安全架构·指针认证·内存标记扩展·推测屏障指令
CyberSecurity_zhang6 个月前
汽车信息安全入门总结(2)
信息安全·汽车·密码学·trustzone·hsm
CyberSecurity_zhang6 个月前
汽车信息安全--如何理解TrustZone(2)
汽车·trustzone·hsm
安全二次方security²7 个月前
ARM FVP平台的terminal窗口大小如何设置
arm·optee·arm安全架构·fvp·窗口大小设置·fixed virtual·fast models
安全二次方security²8 个月前
Riscure TrueCode静动态代码分析工具介绍
arm安全·静态代码分析·代码分析·动态代码分析·代码安全·riscure·truecode