security - ARM TrustZone,连接外围设备?

标签 security arm peripherals trust-zone

我目前正在对 ARM 的 TrustZone 进行一些研究,例如这里:ARM information center .据我了解,使用 TrustZone 可以创建基于 AMBA AXI 总线的安全环境。

ARM website它说:“这种安全和非安全世界的概念超越了处理器,涵盖了 SoC 内的内存、软件、总线事务、中断和外围设备。”我读到外围设备可以通过 连接到 TrustZone。否 小号 AMBA AXI 总线的 ecure-bit(额外的信号用于区分可信请求和不可信请求)。

1) 除了 AMBA AXI 总线的额外引脚之外,具有 TrustZone 的 SoC 中的 TrustZone 特定硬件是什么?

2) 是否可以将外部非 volatile 存储器(例如闪存)或其中的一个分区连接到 TrustZone 以访问安全世界(通过外部存储器接口(interface),然后是内部的 AXI 总线)?如果不是,如何存储 secret (作为 key )以在安全世界中使用(借助 fuse ??)?如果是,如何防止连接包含恶意代码的 Flash?

3) 作为芯片供应商(例如 TI 或 NXP)的客户,是否可以在芯片出厂之前或之后为安全世界实现代码?

谢谢您的回答。

最佳答案

TrustZone 是 ARM 发布的一套标准。它为 OEM(嵌入式软件程序员)和 SOC 供应商提供了一些工具来制定安全的解决方案。根据需要保护的内容,它们具有不同的需求。所以每个 SOC 与众不同。一些 SOC 制造商会尝试在相同的安全应用上展开竞争,但他们仍然会有所区别。

1) What, except the extra pin of AMBA AXI bus, is the TrustZone specific hardware in a SoC with TrustZone?



供应商想要的任何东西。 GIC (ARMv7-A) 中断 Controller 、L1 和 L2 Controller 以及 MMU 都是大多数 Cortex-A CPU 中的 TrustZone 感知外设。这些由 ARM 设计并在 SOC 中实现。同样,有各种内存分区/排除设备可以放置在外围设备和 SOC 之间。例如 NIC301 和各种专有的 BUS 互连技术。

其他硬件可能包括物理篡改、电压和温度监控、时钟监控和密码加速器。

2) Is it possible to connect an external non-volatile memory (e.g. Flash) or a partition of it to TrustZone with access to secure world (via external memory interface and -then internal- the AXI bus)? If no, how are secrets (as keys) stored to be used in the secure world (with help of fuses??)? If yes, how is it prevented that a Flash including malicious code is connected?



如上所述,像 NIC301 这样的芯片可以对 AXI 外围设备进行物理分区。见下图 任何 TrustZone 解决方案的一部分都是一些安全启动机制。所有 CPU 都将在安全世界中启动。安全启动机制可能会有所不同。例如,一次性可编程 ROM 可能适用于某些应用。许多具有可编程 fuse ,具有在 SOC ROM 中实现的公钥/私钥机制。 SOC ROM 启动软件将验证闪存中的镜像是否由烧过一次性 fuse 的人正确签名。

此 OEM 镜像可以设置许多 TrustZone 外围设备,其中大部分将具有 少量。设置后,外设中的寄存器在下一次硬启动之前无法更改。

3) Is it possible to implement code to the secure world as a customer of a chip vendor (e.g. TI or NXP), either before or after the chip left the factory?



是的,这就是安全启动机制。 ARM TrustZone 文档中没有指定如何保​​护代码。如果您制造芯片并拥有带有 MESH 层保护的片上 ROM,则可能足以实现安全启动。但是,TI 和 NXP 将实现公钥/私钥机制,并验证只能加载由 OEM 签名的软件。该 OEM 软件可能存在错误(可能还有 SOC 供应商提供的 ROM 加载程序),但至少可以创建安全引导链。

使用公钥,即使完全访问芯片也只会允许攻击者加载之前从 OEM 发布的软件。一些解决方案可能还具有撤销机制,以防止使用以前发布的软件。

见:
  • Typical ARM bus
  • ARM partition checker
  • Handling ARM TrustZone

  • Vybrid BUS from AN4947 - Understanding the Vybrid Architecure

    关于security - ARM TrustZone,连接外围设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41723268/

    相关文章:

    javascript - 您如何获得 API Key 以访问服务预授权?

    ruby - ruby 中的 Regexp.new(user_input) 安全吗?

    memory - 试图了解 ARM 二进制镜像中的加载内存地址 (LMA) 和二进制文件偏移量

    c++ - C++ 中的顺序保留 memcpy

    将 volatile 表达式的结果转换为 void

    php - 如何在 PHP 中保护变量表名免受 SQL 注入(inject)

    mysql - 如何在 mysql 数据库中加密电子邮件但仍然能够查询它们?

    assembly - 为什么前向引用 ADR 指令在 Thumb 代码中以偶数偏移进行汇编?

    c++ - 在 Qt 5.5 中持续检查主循环