目录
1.概述
2 如何切换安全状态
TrustZone%E9%87%8C%E5%AE%9E%E7%8E%B0%E4%BA%86%E4%BB%80%E4%B9%88%E5%8A%9F%E8%83%BD%EF%BC%9F-toc" style="margin-left:0px;">3 TrustZone里实现了什么功能?
HSM%E7%9A%84%E6%AF%94%E8%BE%83-toc" style="margin-left:0px;">4. 与HSM的比较
1.概述
汽车信息安全--如何理解TrustZone(1)-CSDN博客讲解了什么是Trustzone,下面我们继续讲解与HSM的区别。
2 如何切换安全状态
在引入安全扩展后,Armv8-M相应地也设计了新的指令,用于支持内核Secure和Non-Secure之间的函数调用。
- Non-Secure调用Secure侧函数的指令:SG
- Secure侧返回Non-Secure侧的指令:BXNS、BLXNS
具体使用方式如下图所示:
- NSC:全称Non-Secure Callable,是一段memory,是Armv8-M处理器允许SG指令调用的唯一类型;
- SG:Secure Gateway,如果SG如果不在NSC目标地址,则从NS到S的函数调用将产生Fault
上述示例具体实现如下:
对于中断的处理,两种状态可自由切换,硬件入栈上下文并根据条件清除限产,举例如下:
当CPU在Secure状态下运行代码时发生了NS的中断,此时被打断的代码、当前执行的上下文会被硬件自动压到对应状态的堆栈,此外还会自动清零当前寄存器防止数据泄露,当handler处理后,返回到Secure继续运行。
TrustZone%E9%87%8C%E5%AE%9E%E7%8E%B0%E4%BA%86%E4%BB%80%E4%B9%88%E5%8A%9F%E8%83%BD%EF%BC%9F">3 TrustZone里实现了什么功能?
从上面简介里我们可以发现,Armv8-M引入安全扩展的目的是为了实现系统隔离,借用网上对该架构的抽象图,主要是在CPU、资源、访问权限上做出了限制。
那引入TrustZone的目的就很明确了,希望在MCU内部建立一个隔离环境,为Non-Secure里的代码提供通信、数据等保护。
以IoT产品为例,常见的安全保护功能架构如下:
Non-Secure运行IoT功能相关的代码,但当其需要敏感信息、通信加解密技术时,就可以调用TrustZone中的相关软件功能,而Secure硬件资源则可以实现敏感数据存储、安全OTA等等。
HSM%E7%9A%84%E6%AF%94%E8%BE%83" style="background-color:transparent;">4. 与HSM的比较
Armv8-M的TrustZone是基于CPU视角的,因此本质上Secure和Non-Secure是基于某种时间片技术分时复用CPU,这与HSM拥有自己独立内核是有区别的;
其次,TrustZone本身是不含密码学相关组件的,相当于它是一个系统级别的隔离框架,具体框架里如何装修是要芯片架构师来把控。如新思提供的HSM IP,它就把这两个概念融合到一起,如下图:
针对单核,它设计了Fx HSM,猜想应该也是在安全和非安全态切片运行,只是在该方案中,它添加了密码学硬件加速引擎、真随机数生成器 ;
针对多核来说,设计了Vx HSM,这与我们常见的evita HSM就很像了。
所以,个人认为:
- TrustZone是一种安全技术,用于ARM架构的处理器中,如ARM Cortex-A和Cortex-M系列处理器。
- 它将处理器的安全状态分为安全区域(Secure World)和普通区域(Normal World),实现了硬件级别的隔离和安全保护。
- 安全区域可以运行受信任的代码和安全应用,而普通区域则运行普通的应用程序。安全区域和普通区域之间的通信通过安全的通信通道进行,保证了安全性。
- 据了解,该技术广泛应用于移动设备、物联网设备等领域,用于保护敏感数据和执行安全的应用程序。
这两者主要区别在于,TrustZone是处理器级别的安全技术,用于实现硬件级别的隔离和安全保护,而HSM是一种专用的硬件设备,用于管理密钥和执行安全的加密运算。