• 358查看
  • 0回复

[信息安全] 汽车信息安全--TrustZone和HSM

[复制链接]


该用户从未签到

发表于 11-5-2024 20:15:36 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录

1.车规MCU少见TrustZone

2. 什么是TrustZone

2.1 TrustZone隔离了什么?

2.2 处理器寄存器和异常处理

2.3 如何切换安全状态

2.4 TrustZone里实现了什么功能?

3. 与HSM的比较


1.车规MCU少见TrustZone

在车规MCU里,谈到信息安全大家想到的大多可能都是御三家的HSM方案:英飞凌的HSM\SHE+、瑞萨的ICU、恩智浦的HSE/CSE,这些都被称为HTA(Hardware Trust Anchors)。这三家的MCU架构里,Host和HSM分别有自己独立的CPU、密码算法硬件加速器、独占Flash等,如下图:
汽车信息安全--TrustZone和HSMw1.jpg
而当我Review Vector培训材料时,发现了以前经常听到但没有深入研究过的TrustZone也被当作了HTA:
汽车信息安全--TrustZone和HSMw2.jpg
那么什么是TrustZone?它与HSM区别在哪里?今天就通过Cortex-M33来分析一下。
2. 什么是TrustZone

根据Arm官方介绍,TrustZone最先是Arm A核的一种安全架构的统称,它在SOC系统级别提供硬件隔离机制将系统分成了两个运行环境:TEE(Trusted Execution Environment)和REE( Rich Execution Environment):
汽车信息安全--TrustZone和HSMw3.jpg
在REE中,通常执行复杂且功能丰富的应用软件,意味着其攻击面广,更易遭受网络攻击;在TEE中通常为REE提供授信服务,例如加解密、密钥管理等等,这与HSM/SHE的理念比较相似。后来随着IoT的发展,M核的处理器也提出了相应的信息安全需求,所以TrustZone在ARM V8-M中作为Security Extension被引入。2.1 TrustZone隔离了什么?

在Armv8-M架构下引入安全扩展后,从CPU、到系统外设资源再到访问方式上都做了隔离和新的设计。从内核角度来看,与安全扩展相关的组件包括Processor Core、SAU、SMPU和NSMPU、BusMatrix,总结如下图:
汽车信息安全--TrustZone和HSMw4.jpg
对于Processor Core的运行状态,引入了Non-Secure和Secure状态:
汽车信息安全--TrustZone和HSMw5.jpg
SAU用于定义和识别存储器地址的安全区域和非安全区域,在Secure和Non-Secure状态下分别有各自的MPU;通常情况下,CPU进行数据访问时,根据当前内核运行处于安全或非安全,从而索引到SMPU或者NSMPU的配置,如下图:
汽车信息安全--TrustZone和HSMw6.jpg
当CPU取指时,通过SAU中配置的目标地址安全属性,从而索引到SMPU或者NSMPU,如下:
汽车信息安全--TrustZone和HSMw7.jpg
既然内核、SAU和MPU有Secure和Non-Secure之分,那么在存储器、外设等属性上也应该有该分类。在M33里使用了AMBA5 AHB5,该总线携带安全、非安全访问标记,可实现安全和非安全的访问,因此,在芯片设计之初,从内核到芯片级别的完整硬件隔离机制可按如下示例实现:
汽车信息安全--TrustZone和HSMw8.jpg
2.2 处理器寄存器和异常处理

当安全扩展引入后,处理器分为了Secure和Non-Secure两种状态,因此对应状态的寄存器相应也有变化。如下图所示:
汽车信息安全--TrustZone和HSMw9.jpg

    R0-R12:Secure和Non-Secure状态共用一套;SP:包含MSP(Main)和PSP(Process)(针对Handler和Thread Mode),在不同状态下有两组Banked寄存器,后缀为S、NS;PSPLIM、MSPLIM:新增寄存器,用于限制MSP和PSP堆栈,在不同状态各有一套;
同样的,在异常也可以被指定为Secure和Non-Secure。那么从软件角度来看,中断向量表也需要分为安全和非安全两个,如下图:
汽车信息安全--TrustZone和HSMw10.jpg
可以看到,Secure和Non-Secure都有各自的Handler,有些中断是Banked,但也有些异常是只有Secure才有,如SecureFault。需要注意的是,所有外设中断上电默认都指向Secure 向量表,但是我们可以在Secure状态运行的代码里修改权限,将外设指向Non-Secure向量表。2.3 如何切换安全状态

在引入安全 扩展后,Armv8-M相应地也设计了新的指令,用于支持内核Secure和Non-Secure之间的函数调用。

    Non-Secure调用Secure侧函数的指令:SGSecure侧返回Non-Secure侧的指令:BXNS、BLXNS
具体使用方式如下图所示:
汽车信息安全--TrustZone和HSMw11.jpg

    NSC:全称Non-Secure Callable,是一段memory,是Armv8-M处理器允许SG指令调用的唯一类型;SG:Secure Gateway,如果SG如果不在NSC目标地址,则从NS到S的函数调用将产生Fault
上述示例具体实现如下:
汽车信息安全--TrustZone和HSMw12.jpg
对于中断的处理,两种状态可自由切换,硬件入栈上下文并根据条件清除寄存器,举例如下:
汽车信息安全--TrustZone和HSMw13.jpg
当CPU在Secure状态下运行代码时发生了NS的中断,此时被打断的代码、当前执行的上下文会被硬件自动压到对应状态的堆栈,此外还会自动清零当前寄存器防止数据泄露,当handler处理后,返回到Secure继续运行。2.4 TrustZone里实现了什么功能?

从上面简介里我们可以发现,Armv8-M引入安全扩展的目的是为了实现系统隔离,借用网上对该架构的抽象图,主要是在CPU、资源、访问权限上做出了限制。
汽车信息安全--TrustZone和HSMw14.jpg
那引入TrustZone的目的就很明确了,希望在MCU内部建立一个隔离环境,为Non-Secure里的代码提供通信、数据等保护。 以IoT产品为例,常见的安全保护功能架构如下:
汽车信息安全--TrustZone和HSMw15.jpg
Non-Secure运行IoT功能相关的代码,但当其需要敏感信息、通信加解密技术时,就可以调用TrustZone中的相关软件功能,而Secure硬件资源则可以实现敏感数据存储、安全OTA等等。
3. 与HSM的比较

Armv8-M的TrustZone是基于CPU视角的,因此本质上Secure和Non-Secure是基于某种时间片技术分时复用CPU,这与HSM拥有自己独立内核是有区别的;其次,TrustZone本身是不含密码学相关组件的,相当于它是一个系统级别的隔离框架,具体框架里如何装修是要芯片架构师来把控。如新思提供的HSM IP,它就把这两个概念融合到一起,如下图:
汽车信息安全--TrustZone和HSMw16.jpg
针对单核,它设计了Fx HSM,猜想应该也是在安全和非安全态切片运行,只是在该方案中,它添加了密码学硬件加速引擎、真随机数生成器 ;针对多核来说,设计了Vx HSM,这与我们常见的evita HSM就很像了。所以,个人认为:

    TrustZone是一种安全技术,用于ARM架构的处理器中,如ARM Cortex-A和Cortex-M系列处理器。它将处理器的安全状态分为安全区域(Secure World)和普通区域(Normal World),实现了硬件级别的隔离和安全保护。安全区域可以运行受信任的代码和安全应用,而普通区域则运行普通的应用程序。安全区域和普通区域之间的通信通过安全的通信通道进行,保证了安全性。

    据了解,该技术广泛应用于移动设备、物联网设备等领域,用于保护敏感数据和执行安全的应用程序。

    HSM是一种专用的硬件设备,用于生成、存储和管理加密密钥,以及执行加密运算和安全操作。HSM通常包含硬件隔离、加密芯片、随机数生成器等安全组件,能够提供高级的安全保护,防止密钥泄露和恶意攻击。HSM广泛应用于安全领域,如金融行业、电子商务、云计算、汽车行业等,用于保护加密密钥、数字签名、加密数据等重要安全信息。
这两者主要区别在于,TrustZone是处理器级别的安全技术,用于实现硬件级别的隔离和安全保护,而HSM是一种专用的硬件设备,用于管理密钥和执行安全的加密运算。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 20-11-2024 17:36 , Processed in 0.252803 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.