0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arm® TrustZone® 技术简介

嵌入式USB开发 来源:嵌入式Lee 作者:嵌入式Lee 2023-07-04 08:44 次阅读

一.前言

本文对TrustZone 进行简单的介绍,不涉及具体的技术细节,旨在有一个概念性的感性的理解,后面有机会再分享几篇更详细的技术细节介绍和实际应用案例。

本文后续内容以瑞萨的RA系列为例,不同厂家芯片可能不同需要参考对应的手册。

二.TrustZone介绍

Arm TrustZone 技术是Armv8-M 架构一个可选的架构扩展。

其核心思想就是朴素的硬件隔离思想,系统和软件划分为安全区域和非安全区域,安全软件可以访问安全和非安全存储器和资源,而非安全软件只能访问非安全存储器和资源。安全与非安全状态与现有的线程和处理模式组合,即有四种处理器状态,如下所示:

e20b8f5c-1a03-11ee-9c1d-dac502259ad0.png

系统实现了安全扩展,则系统默认以安全状态启动的,即启动时是无所不能的,一般此时对应bootrom完全相关工作,然后跳转到用户非安全程序运行。如果未实现安全扩展,则系统始终处于非安全状态。

注意安全是一个系统工程,Arm TrustZone只是提供了一种实现安全的隔离技术,并未包括安全的所有方面,比如他就不涉及加密等,也并不是说使用Arm TrustZone就安全了,安全是需要系统考虑的,任何一处不安全整个系统就不安全,符合木桶原理。打个比方,武侠小说中很牛逼的反派人物,练就了金钟罩铁布衫刀枪不入,但是往往会有一个弱点就是比如足下或者腋下很脆弱,这就不是安全系统,木桶原理导致其很容易从非安全处被攻破,所以最后大决战阶段正派一开始被暴击,最后快要挂了时,对准反派的弱点比如足下一击,立马KO。所以安全的考虑要系统的考虑,而不仅仅是考虑使用一种什么技术,及你就能考虑处理器就可以达到的。

三.关键组件

隔离的目的就是要隔离关键组件(资源),使得其受保护,不能被非信任软件直接访问,避免被攻击。

关键组件包括以下内容:

l安全自举程序,即前面提到的bootrom程序,因为系统启动默认是安全状态的(能不能启动时不是安全状态呢?不能,如果此时不是安全状态则没法配置安全资源,没法进行初始化配置,所以启动时必须是安全状态,此时无所不能)。所以启动程序要保证受保护,不会被攻破。

l密钥,这个不用说,密钥肯定是要保证不能被非法获取的,否则别人有了你家的钥匙,你再牛逼的防盗门也没啥用。

l闪存编程支持,这也很重要,因为程序最终是要写入FLASH的,如何保证程序烧录的安全,不被篡改,不烧录非授信程序等都是保证安全的前提。

l高价值资产,其他的,比如用户信息数据等都是需要受保护的。

e22a2e58-1a03-11ee-9c1d-dac502259ad0.png

四.安全系统

要构建安全硬件平台,安全注意事项不仅仅要考虑处理器级别,而是需要考虑系统级别,所以一再强调的是系统安全,而不是处理器安全,主要包括:

存储器系统

总线系统

外设

调试系统等。

4.1存储器系统

前面提到了TrustZone 技术的核心是隔离,所以针对存储器系统就是划分不同的区域对应不同的属性。代码闪存、数据闪存和 SRAM 分为 安全 (S)、非安全 (NS) 和非安全可调用 (NSC) 区域,比如瑞萨的RA系列MCU这个划分是通过IDAU控制的。

如下图所示:

代码闪存和SRAM都可以执行程序所以有非安全可调用区域,而数据闪存不可执行程序只有非安全和安全区域之分。

e240c46a-1a03-11ee-9c1d-dac502259ad0.png

当器件生命周期为安全软件开发 (SSD) 状态时,可通过使用串行编程命令将这些存储器安全属性编程到非易失性存储器中。

安全区域,执行安全程序,具备最高权限可以访问所有资源。

安全地址用于只能由安全代码或安全 master 访问的内存和外设。安全事务是那些由 master 发起并在安全状态下运行的事务。

非安全区域,执行非安全程序,只能访问非安全资源,也可以调用非安全可调用区域API,执行一些安全程序的接口

非安全地址用于设备上运行的所有软件均可访问的内存和外设。非‑安全事务源自以非安全方式运行的 master或访问非安全地址的安全 master(仅数据事务,非获取指令)。仅允许非安全事务访问非‑安全地址。非安全事务不能访问安全地址。

非安全可调用区域NSC,即中间地带,提供非安全程序可调用的安全API。

NSC 是一种特殊类型的安全位置。这种类型的内存是 Armv8-M 处理器允许为其保留 SG(安全门)指令的唯一类型,该指令允许软件从非安全状态转为安全状态。该 SG 指令可用于防止非安全应用程序从分支进入无效入口点。

当非安全代码调用安全端函数时:

– API 中的第一条指令必须是 SG 指令。

– SG 指令必须在 NSC 区域内。

安全代码还提供非安全可调用函数,为非安全代码提供安全服务访问。

基于 TrustZone 区域 的代码和数据闪存安全功能

从非安全区域读取代码和数据闪存区域将生成 TrustZone 安全故障。

代码和数据闪存 编程和擦除 (P/E) 模式入口可以配置为仅通过安全软件实现,也可以配置为通过安全和非安全软件实现。默认情况下,MCU 将代码和数据闪存 P/E 功能配置为仅通过安全软件实现。闪存驱动程序可以置于安全分区 中,并且可以配置为非安全可调用,以允许非安全应用程序执行闪存 P/E 操作。

支持安全区域和非安全区域的临时和永久闪存块保护。

SRAM

SRAM 存储器可以通过存储器安全属性 (MSA) 分为安全/非安全 可调用/非安全状态,并且可以防止非安全访问。当 MSA 指示 SRAM 存储区域处于安全或非安全可调用状态 时,非安全访问无法覆写它们。

4.2总线系统

DMA 控制器和数据传输控制器

直接存储器访问控制器 (DMAC) 和数据传输控制器 (DTC) 由主 TrustZone 过滤器监控。在访问总线之前,会提 前检测闪存和 SRAM 的 TrustZone 违例区域。DMAC 和 DTC 中的主 TrustZone 过滤器可以检测 IDAU 定义的闪 存区域(代码闪存和数据闪存)和 SRAM 区域的安全区域。当非安全通道访问这些地 址时,主 TrustZone 过滤器会检测到安全违例,不允许访问违例地址。

以太网DMA控制器

EDMAC RAM 缓冲区置于 TrustZone 的非安全 RAM 中。EDMAC 被硬编码为 TrustZone 非安 全总线主器件。这些硬件特性允许以下两个以太网程序分区选项:

在安全区域中运行以太网程序 ,在非安全区域中放置 EDMAC RAM 缓冲区

在非安全区域中运行以太网程序 EDMAC RAM 缓冲区。

MPU

总线主 MPU 可用于除 CPU 外的每个总线主器件的存储器保护功能。安全软件可以设置总线主 MPU 的安全 属性。

4.3外设

MCU 中的大多数外设都可以配置为安全或非安全,但CS 区域控制器、QSPI、OSPI、ETHERC 和 EDMAC始终是非安全。

外设分为两种类型。 类型 1 外设具有一种安全属性,对所有寄存器的访问由一种安全属性控制。安全应用程序将类型 1 外设安 全属性设置到外设安全属性寄存器(PSARx:x = B 至 E)。外设的不同通道可以采用不同的安全属性。例如,UART 通道 0 和通道 1 可以具有不同的安全或非安 全属性。

类型 2 外设具有每个寄存器或每个位的安全属性,根据这些安全属性控制对每个寄存器或位域的访问。安 全应用程序将类型 2 外设安全属性设置到每个模块中的安全属性寄存器。

总结一下就是外设类型1颗粒度更大,所有寄存器一起控制安全属性,类型2颗粒度更小。

e25b1496-1a03-11ee-9c1d-dac502259ad0.png

时钟生成电路针对每个时钟树控制都有单独的安全属性。可使用一下时钟控制方案。

整个时钟树仅通过安全项目进行控制,在非安全项目中被锁定。

整个时钟树可通过非安全项目和安全项目进行控制。

4.4调试系统

开发阶段希望有更强大的调试功能,以方便进行各种调试分析,而发布阶段希望关闭调试功能以放置通过调试系统被攻破。所以调试功能分为了不同级别

调试功能分为 DBG0、DBG1 和 DBG2 三个级别,以 对支持 TrustZone 技术的调试功能提供支持,并为开发、生产和部署的产品提供安全性。

DBG2:允许调试器连接,无限制访问存储器和外设。

DBG1:允许调试器连接,但仅限访问非安全存储区域和外设

DBG0:不允许调试器连接

调试级别根据产品的器件生命周期状态确定。通过器件生命周期管理系统可以实现调试级别的回退。

五.器件生命周期管理

使用 TrustZone 技术功能和安全加密引擎 9 (SCE9) 实现增强型器件 生命周期管理系统。器件生命周期管理在启用 TrustZone 技术的应用程序开发、生产和部署阶段非常重要,主要实现以下功能:

根据器件生命周期状态定义和切换,在开发和生产阶段创建、安 装和使用器件生命周期管理密钥等。

六.参考

《TrustZone technology for Armv8-M Architecture Version 2.1》

《Renesas RA Family Security Design with Arm TrustZone - IP Protection》

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18304

    浏览量

    222340
  • 存储器
    +关注

    关注

    38

    文章

    7154

    浏览量

    162034
  • trustzone
    +关注

    关注

    0

    文章

    20

    浏览量

    12497
收藏 人收藏

    评论

    相关推荐

    embOS如何支持Arm TrustZone

    通过ARMv8-M架构支持的TrustZone技术,可以将关键安全固件和私有程序(如安全引导、固件更新和密钥)与其余应用程序隔离,极大降低被攻击的可能性,增加嵌入式系统安全。SEGGER的embOS目前已支持ARMv8-M TrustZ
    发表于 09-22 12:16 207次阅读
    embOS如何支持<b class='flag-5'>Arm</b> <b class='flag-5'>TrustZone</b>

    基于Arm上的安全启动和安全固件更新概述TrustZone STM32L5系列微控制器

    电子发烧友网站提供《基于Arm上的安全启动和安全固件更新概述TrustZone STM32L5系列微控制器.pdf》资料免费下载
    发表于 09-20 10:13 0次下载
    基于<b class='flag-5'>Arm</b>上的安全启动和安全固件更新概述<b class='flag-5'>TrustZone</b> STM32L5系列微控制器

    Arm TrustZone STM32微控制器的安全启动和安全固件更新解决方案概述

    电子发烧友网站提供《Arm TrustZone STM32微控制器的安全启动和安全固件更新解决方案概述.pdf》资料免费下载
    发表于 09-19 15:56 1次下载
    <b class='flag-5'>Arm</b> <b class='flag-5'>TrustZone</b> STM32微控制器的安全启动和安全固件更新解决方案概述

    Arm TrustZone STM32微控制器的安全启动和安全固件更新解决方案

    本应用笔记描述如何在基于 Arm Cortex ‑M33 处理器的 Arm TrustZone STM32 微控制器上获得安全启动和安全固件更新流程解决方案。该应用笔记还提供此解决方案
    发表于 09-11 10:08 1次下载

    STM32 MCU TrustZone开发调试技巧分享

    系统隔离与ARM V8-M TrustZone技术TrustZone地址安全区及资源安全属性配置、TrustZone架构下的HardFau
    发表于 09-05 06:16

    在ARMv8-M上使用TrustZone

    对安全性有着强烈的需求。 可能需要保护的资产包括: ·设备通信(使用加密和身份验证方法)·秘密数据(如密钥和个人信息)·固件(防止IP盗窃和反向工程)·操作(维护服务和收入)ARM®TrustZone
    发表于 09-04 07:11

    ARM 1176JZ-S技术参考手册

    处理器使用Java扩展和TrustZone™安全扩展实现ARM架构V6。 该体系结构包括32位ARM指令集、16位Thumb指令集和8位Java指令集。 有关ARM和Thumb指令集的
    发表于 08-29 06:08

    ARM AMBA 3 APB TrustZone Protection控制器(TZPC)的功能

    TrustZone Protection控制器(TZPC)TZProtCtrl是一款符合AMBA标准的SoC外围设备,由ARM有限公司开发、测试和授权。 TZPC为TrustZone设计中的安全
    发表于 08-21 08:23

    AMBA 3 TrustZone中断控制器(SP890)技术概述

    TrustZone中断控制器(TZIC)是一款高级微控制器总线架构(AMBA)兼容的片上系统(SoC)外围设备,由ARM有限公司开发、测试和授权。 TZIC为TrustZone设计中的安全中断系统
    发表于 08-21 06:07

    PrimeCell AMBA 3 AXI TrustZone内存适配器用户指南

    模型模拟的硬件功能的详细信息,请参阅ARM PrimeCell Infrastructure AMBA 3 AXI TrustZone Memory Adapter(BP141)技术概述
    发表于 08-17 08:04

    了解体系结构-适用于AArch64的TrustZone介绍

    、对TrustZone的内存系统支持以及典型的软件体系结构。我们还介绍了Arm提供的资源,以帮助使用TrustZone的系统和软件开发人员。 在本指南的末尾,您将能够: •举一个TrustZo
    发表于 08-10 07:02

    从硬件架构与软件架构看TrustZone

    ARM TrustZone技术是芯片级的安全解决方案,通过在CPU内核的设计中集成系统安全性扩展,同时提供安全软件平台,为安全支付、数字版权管理(DRM, Digital Rights Management)、企业服务等应用提供
    的头像 发表于 07-26 15:58 1547次阅读
    从硬件架构与软件架构看<b class='flag-5'>TrustZone</b>

    如何实现TrustZone的可信执行环境来支持隐私计算呢?

    TrustZone技术ARM公司开发的一种系统安全扩展技术TrustZone技术的主要目标是
    的头像 发表于 07-25 16:15 1019次阅读
    如何实现<b class='flag-5'>TrustZone</b>的可信执行环境来支持隐私计算呢?

    RA6快速设计指南 [8] 使用TrustZone®

    7 使用TrustZone 7.1 Arm TrustZone 技术的实现 某些RA6 MCU(如RA6M4和RA6M5)包含Arm
    的头像 发表于 06-19 15:25 375次阅读
    RA6快速设计指南 [8] 使用<b class='flag-5'>TrustZone</b>®

    PX5的ARM TrustZone支持让嵌入式系统变得更加安全!

    的高端RTOS产品对ARM TrustZone技术的支持,让开发者能够从硬件到应用程序代码层全面加强设备安全。随着微控制器(MCU)设备部署的增加和相关系统需求的增长,制造商需要在底层更加高效地提高
    发表于 05-18 13:44