• 汽车信息安全--如何理解TrustZone(2)


    目录

    1.概述

    2 如何切换安全状态

    3 TrustZone里实现了什么功能?

    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继续运行。

    3 TrustZone里实现了什么功能?

    从上面简介里我们可以发现,Armv8-M引入安全扩展的目的是为了实现系统隔离,借用网上对该架构的抽象图,主要是在CPU、资源、访问权限上做出了限制。

    那引入TrustZone的目的就很明确了,希望在MCU内部建立一个隔离环境,为Non-Secure里的代码提供通信、数据等保护。 

    以IoT产品为例,常见的安全保护功能架构如下:

    Non-Secure运行IoT功能相关的代码,但当其需要敏感信息、通信加解密技术时,就可以调用TrustZone中的相关软件功能,而Secure硬件资源则可以实现敏感数据存储、安全OTA等等。 

    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),实现了硬件级别的隔离和安全保护。
    • 安全区域可以运行受信任的代码和安全应用,而普通区域则运行普通的应用程序。安全区域和普通区域之间的通信通过安全的通信通道进行,保证了安全性。
    • 据了解,该技术广泛应用于移动设备、物联网设备等领域,用于保护敏感数据和执行安全的应用程序。
    • HSM是一种专用的硬件设备,用于生成、存储和管理加密密钥,以及执行加密运算和安全操作。
    • HSM通常包含硬件隔离、加密芯片、随机数生成器等安全组件,能够提供高级的安全保护,防止密钥泄露和恶意攻击。
    • HSM广泛应用于安全领域,如金融行业、电子商务、云计算、汽车行业等,用于保护加密密钥、数字签名、加密数据等重要安全信息。

    这两者主要区别在于,TrustZone是处理器级别的安全技术,用于实现硬件级别的隔离和安全保护,而HSM是一种专用的硬件设备,用于管理密钥和执行安全的加密运算。

  • 相关阅读:
    CF821 A. Consecutive Sum
    矩阵问题(宏观调度)
    java8 map用lambda排序不好使(steam流)
    内边距(padding会影响盒子内边距大小)
    forEach和map区别
    [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-016(CVE-2013-2251)
    一文详解归并排序
    Java -- 每日一问:Exception 和 Error 有什么区别?
    30.10.2 认证插件更新
    抖音seo源码--开源,支持二开不加密
  • 原文地址:https://blog.csdn.net/djkeyzx/article/details/138195923