嵌入式系统安全的一些解决方法及缺陷

  1. 外部硬件安全模块:在主SoC之外包含一个专用的硬件安全模块或可信元件,e.g. 手机的SIM卡。隔离仅限于可以从非易失性存储器运行的相对静态程序
  2. 内部硬件安全模块:管理加密操作和密钥存储的硬件模块;通用的处理引擎,放在主处理器旁边,它使用自定义硬件逻辑来防止对敏感资源的未经授权的访问。隔离仅限于加密密钥材料
  3. 软件虚拟化:高度可信的管理层(称为hypervisor)以通用处理器的特权模式运行。hypervisor使用内存管理单元(MMU)分离运行在其上的多个独立软件平台,将每个平台放在由hypervisor软件控制的虚拟机中。隔离仅限于实现hypervisor的处理器

TrustZone硬件安全方案

  1. 解决问题:上述的其他安全方案只能保护系统中受限制部分的某些资产。
  2. 设计目标:一种在整个系统设计中扩展安全基础设施的硬件架构。
  3. 架构特点:并未对某个专用硬件模块中的资产进行保护,而是使系统的任何部分都变得安全,从而实现了包括功能单元和调试基础框架在内的端到端安全解决方案。

TrustZone硬件架构

  1. 安全目标:构建一个可编程环境,使绝大多数资产的机密性和完整性都能免受特定攻击。
  2. 实现原理:
    • 划分SoC的所有硬件和软件资源,使其存在于两个世界中的一个:安全子系统的安全世界,以及其他一切的正常世界。AMBA3 AXI 总线提供的硬件逻辑确保正常世界组件不能访问任何安全世界的资源,从而在两者之间建立一个强大的安全边界。敏感资源放在安全世界,鲁棒性软件在安全世界处理器核上运行。
    • 在一些ARM处理器核心中实现扩展。这些附加功能使单个物理处理器核心能够以时间切片的方式安全高效地执行来自正常世界和安全世界的代码。
    • 具有安全意识的调试基础框架,它可以控制对安全世界调试的访问,而不影响正常世界的调试可见性。

TrustZone系统架构

  1. AMBA3 AXI 系统总线:为主系统总线上的每个读写通道添加额外的控制信号(非安全位/NS位)。总线主设备设置这些信号
  2. AMBA3 APB外围设备总线:TrustZone体系结构最有用的特性之一是能够保护外围设备。
  3. 内存别名使用:主设备对从设备进行安全访问,非安全的slave接受安全事务,但slave将这些访问视为不安全的。在这种设计下,硬件必须支持地址空间别名:相同的内存位置在地址映射中显示为两个不同的位置,一个安全,一个不安全。需要注意一致性问题

TrustZone处理器结构

  1. 每个处理器核心都提供了两个虚拟核心,一个安全一个不安全,还有一个在他们之间进行上下文切换的 monitor mode:

    发送到主系统总线上的NS位的值是由执行指令或数据访问的虚拟内核的身份标识间接得出的。非安全的虚拟处理器只能访问非安全系统资源,但安全虚拟处理器可以看到所有资源。

  2. world切换:这两个虚拟处理器以时间切片的方式执行,在更改当前运行的虚拟处理器时,上下文将通过名为monitor mode的新核心模式进行切换。物理处理器进入monitor mode时可以通过执行特定指令的软件SMC指令硬件异常机制的子集进行触发。如果处理器不在监控模式下,它正在执行的世界由系统控制协处理器CP15中安全配置寄存器(SCR)中的NS位指示;如果处于监控模式下,无论SCR NS位的值是多少,处理器总是在安全的世界中执行;但是如果SCR NS位设置为1,则对banked CP15寄存器的操作将访问正常世界的副本。

  3. 一级保护内存系统:

    • MMU:TrsutZone中硬件提供两个虚拟MMU,每个虚拟处理器一个。每个世界都有一组本地转换表,使它们能够独立地控制虚拟地址到物理地址的映射。为在两个世界之间实现高效的上下文切换,arm处理器会标记TLB中的条目,TLB缓存了地址转换表的遍历结果,并使用执行遍历的世界的标识,这允许非安全和安全条目在TLB中共存,从而加快切换,因为无需刷新TLB条目。
    • cache:目标是实现支持缓存中两种安全状态的数据,这样可以消除切换世界的时候需要刷新缓存的需要。解决方法是处理器缓存扩展了一个额外的标志位,该位录访问内存的事务的安全状态。

    • 世界共享内存:允许安全世界直接访问非安全缓存。提供性能
  4. 安全中断:直接向monitor捕获IRQ和FIQ的能力(不需要任何一个世界的代码干预)可以为安全中断源创建一个灵活的中断模型。ARM推荐的模型是使用IRQ作为非安全世界的中断源,FIQ作为安全世界的中断源。CPSR是存放的程序状态寄存器

    启用TrustZone的处理器实现了三组异常向量表。其中一个表用于正常世界,一个用于安全世界,另一个用于监视模式。

  5. 安全处理器:协处理器CP15中的敏感的配置选项,或全局应用于核心的配置选项,只能由安全世界软件编写,非安全世界可以读取。

  6. 多处理器系统:集群中的处理器可以配置为以对称多处理(SMP)模式或非对称多处理(AMP)模式执行。当处理器以SMP模式执行时,集群的Snoop控制单(SCU)将透明地将跨SMP处理器共享的数据保存在L1数据缓存中。当处理器以AMP模式执行时,如果需要,执行软件必须手动保持内存一致性。多处理器集群中的每个处理器都有一个正常世界和一个安全世界。每个虚拟处理器都可以独立控制它们的MMU配置。

TrustZone调试架构

  1. 处理器调试:ARM处理器包含一个调试控制信号,全局启用或禁用对处理器的调试器访问。TrustZone调试扩展将调试访问控制分成四种独立可配置视图。

  2. 系统调试:ARM系统调试解决方案是ARM Coresight片上调试和跟踪技术。它为整个SOC提供了调试和跟踪解决方案,支持对多个处理器和其他系统组件进行调试。可以从设备外工具和设备内组件访问Coresight调试基础结构。

TrustZone软件架构

  1. 软件架构:

    • 安全操作系统:可以模拟多个独立的安全世界应用程序的并发执行,运行时下载新的安全应用程序,以及完全独立于正常世界环境的安全世界任务。使用MMU讲安全世界内存划分为多个用户空间沙盒,只要安全世界内核软件正确实现,多个安全任务可以不需要信任对方而同时运行。这种设计可以增强安全任务之间的逻辑隔离。

    • 同步库:安全世界中的简单代码库可以解决很多应用的任务,这个代码库完全由非安全世界操作系统的软件调用来进行调度和管理。
    • 中间方法:在这两个极端之间有一系列的选择。例如,一个安全世界的多任务操作系统可以被设计成没有专门的中断源,因此可以由普通世界提供一个虚拟中断。
  2. 安全启动系统:所有安全世界软件和潜在的正常世界软件生成一个信任链,该信任链是从不易被篡改的信任根建立的。

    • 启动流程:开机时启用TrustZone的处理器在安全环境中启动。这使得任何敏感的安全检查都能在普通软件有机会修改系统的任何方面之前运行。开机流程:执行基于ROM的引导加载程序 -> 闪存中的设备引导加载程序 -> 安全世界操作系统初始化 ->切换到非安全世界 -> 正常世界引导加载程序 -> 启动正常的操作系统 -> 系统运行。

    • 安全方案:安全启动方案将加密检查添加到安全世界启动进程的每个阶段。此过程旨在维护执行的所有安全世界软件映像的完整性,防止任何未经授权或恶意修改的软件运行。

      • 密码签名协议:基于公钥签名算法的协议。受信任的供应商使用他们的私钥(PrK)生成要部署的代码的签名,并将其与软件二进制文件一起推送到设备上。设备包含供应商的公钥(PuK),该公钥可用于验证二进制文件是否未被修改,以及该二进制文件是否由相关的受信任供应商提供。
      • 信任链:从一个隐式可信组件开始,在执行之前,可以对每个其他组件进行身份验证。信任根位于ROM中,不容易被修改或替换。
      • 片内/片外安全世界:最简单的防御shack攻击的方法是将任何安全世界资源的执行放在SoC片内内存位置。如果代码和数据从未暴露在SoC封装之外,则很难窥探或修改数据值。
  3. 监控模式软件:管理安全和非安全处理器状态之间的切换,类似于上下文切换。正常世界进入监控模式需通过以下异常实现:中断、外部中止或通过SMC指令的显式调用;从安全世界进入监控模式除了通过正常世界可用的异常机制外,还可以通过直接写入CPSR来实现。

    • 上下文切换:监视器保存的任何安全状态都应该保存在安全内存的某个区域中,这样正常世界就不会对其进行篡改。可以通过过SMC指令、惰性上下文切换(仅在必要时保存协处理器的上下文,而不是在每次操作系统上下文切换或TrustZone世界切换时都保存)来实现世界切换。
  4. 安全软件和多处理器系统:安全世界软件实现可以选择实现一个单处理器安全世界(不具备多处理能力)。

    • 将安全世界的执行固定在一个特定的处理器上:在这种设计中,与安全世界通信的普通世界驱动程序通常需要使用处理器间通信将使用安全世界的请求路由到正确的处理器。此外,安全世界不使用的处理器上的监控软件必须防止普通世界造成恶意的世界切换。

    • 让安全世界在系统的多个处理器上迁移:但通过限制它使其在任何单一时间只在一个处理器上执行。

TrustZone API

  1. 定义了一个软件接口,在富操作环境中运行的客户端应用可以使用该接口与安全环境交互。该API主要是一个通信API,使客户端能够向安全服务发送命令请求,并使客户端能够有效地与所连接的服务交换数据。

ARM TrustZone白皮书部分阅读的更多相关文章

  1. An Exploration of ARM TrustZone Technology

    墙外通道:https://genode.org/documentation/articles/trustzone ARM TrustZone technology has been around fo ...

  2. arm trustzone

    arm的trustzone并不涉及到具体的crypto算法,只是实现: 1) 敏感信息的安全存储: 2) 控制bus和debug的安全访问,保证信息不被泄露: trustzone是system_lev ...

  3. ARM的体系结构与编程系列博客——ARM处理器系列介绍

    ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...

  4. ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播

    ARM Linux 内核 panic 之cache 一致性 ——Cortex-A9多核cache和TLB一致性广播 Cortex-A9的多喝CPU可以接收和执行一致性广播操作,当其使能并处于SMP模式 ...

  5. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...

  6. 如何在 arm 官网上找到合适的手册

    http://infocenter.arm.com/help/advanced/help.jsp 在这里输入合适的版号即可 这样就可以不用去 CSDN 了 100000_0000_00_EN - AR ...

  7. [转帖]Marvell第二代ARM处理器ThunderX2解析

    Marvell第二代ARM处理器ThunderX2解析 https://www.cnbeta.com/articles/tech/853137.htm 长久以来,服务器数据中心市场一直被x86 CPU ...

  8. 深夜闲聊节目:华为 Mate7的指纹识别安全么?

    许久没有写过不论什么东西,近期非常忙并且还要准备找工作之类的,唉... ....今天的文章也不说技术,仅仅是闲聊. 一.手机指纹识别一揽 打开非常多站点.论坛的科技栏目,充斥着各种手机讯息!仿佛手机已 ...

  9. Android DRM

    最近在了解Android DRM相关的一些知识,下面转一个ARM大佬分享的内容: 前言 本文简略地介绍了如何在Android下实现DRM(Digital Rights Management, 数字版权 ...

随机推荐

  1. Excel 运算符(四):引用运算符

    引用运算符用于将单元格区域合并运算,包括:冒号.,逗号. 空格. : 运算 :运算符用于定义一个连续的数据区域,例如"A1:B3",表示从 A1 到 B3 的 6 个单元格. 并集 ...

  2. VS Code 之KoroFileHeader插件

    设置 在vscode左下角点击设置按钮,选择"设置",然后输入"fileheader", 文件头部注释:Fileheader:custom Made 函数注释: ...

  3. 自定义View4-塔防小游戏第一篇:一个防御塔+多个野怪(简易版)*

    塔防小游戏 第一篇:一个防御塔+多个野怪(简易版)    1.canvas画防御塔,妖怪大道,妖怪行走路线    2.防御塔攻击范围是按照妖怪与防御塔中心距离计算的,大于防御塔半径则不攻击,小于则攻击 ...

  4. KingbaseES R6 集群主库网卡down测试案例

    数据库版本: test=# select version(); version ------------------------------------------------------------ ...

  5. Group 和 Distinct 列的次序影响查询性能

    目录 一.概述 二.work_mem 满足排序情况 1.Distinct 语句 2.Group by 语句 三.work_mem 不满足排序情况 1.Distinct 语句 2.Group by 语句 ...

  6. KingbaseES R3集群在线删除数据节点案例

    案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...

  7. 【设计模式】Java设计模式 - 适配器模式

    [设计模式]Java设计模式 - 适配器模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 原创作品,更多关注我CSDN: 一个有梦有戏的人 准备将博客园.CSDN一 ...

  8. 新增一个Redis 从节点为什么与主节点的key数量不一样呢?

    在日常的 Redis 运维过程中,经常会发生重载 RDB 文件操作,主要情形有: 主从架构如果主库宕机做高可用切换,原从库会挂载新主库重新获取数据 主库 QPS 超过10万,需要做读写分离,重新添加从 ...

  9. VMware Component Manager服务无法启动

    近日,给一台Windows 2016上的vCenter打补丁,系统重启后,发现vmware的很多服务无法启动了.这是一台老版本的vcenter,虽然已经2021年了,但是它还管理着一些很老的ESX,比 ...

  10. Windows DNS服务器策略

    Windows 2016开始微软在Windows服务器中引入了针对DNS服务器的策略.可以方便灵活的控制DNS服务器响应客户端的请求.这里举个例子,阻止某个网段的DNS查询.思路是这样的,定义一个网段 ...