Armv8-M的TrustZone技术在不同攻击场景下的安全性

在讨论安全系统设计时,一个常见的问题是:“它有多安全?”在Armv8-M的TrustZone技术开发中考虑了许多攻击场景的各个方面,例如:

软件访问:

        通过额外的系统级组件,内存可以在安全和非安全空间之间分区,并可以禁止非安全软件访问安全内存和资源。

分支跳转到任意的安全地址位置:

        SG指令和NSC内存属性确保只能在有效入口点处进行从非安全到安全的分支。

二进制数据中的意外SG指令:

        NSC内存属性确保只有预期用作入口点的安全地址空间才能用于将处理器切换到安全状态。在未标记为NSC的地址位置上分支到意外的SG指令会导致故障异常。

在调用安全API时伪造返回地址:

        当执行SG指令时,函数的返回状态存储在链接寄存器(LR)中返回地址的最低有效位。在函数返回时,此位与返回状态进行比较,以防止Secure API函数(从非安全侧调用)返回到指向安全地址的伪造返回地址。

尝试使用FNC_RETURN(函数返回代码)切换到安全侧:

        从不可返回的安全代码(例如安全引导加载程序)切换到非安全时,必须使用BLXNS指令以确保存在有效的返回堆栈。然后可以使用返回堆栈进入错误处理程序。

        这可防止非安全恶意代码尝试使用FNC_RETURN机制将处理器切换到安全代码,并在安全堆栈中没有有效返回地址的情况下使安全软件崩溃。

        这个建议在从Secure API返回到非安全软件时不适用

你可能感兴趣的:(ARM安全,ARM安全架构,ARMv8-M,Trustzone,攻击场景下的安全性)