ARM平台安全要求1.0--安全要求(2)

5.8 外设和子系统

外设或子系统是不属于PE 的硬件。它可以是 SoC 的一部分,也可以通过片外总线连接。在许多情况下,硬件是一个独立的系统,具有自己的本地资源、配置和固件。它具有从一个或多个 PE 接收命令和数据的接口,并且可能能够进行直接内存访问 (DMA)。

5.8.1 接口和策略

外设提供了对资产进行操作的接口。根据所提供的功能和安全性,这些资产可能是来自可信世界或非可信世界的资产。可信外围设备是对属于可信世界的资产进行操作的外围设备。几种类型的外围设备是可能的:

• 一个简单的外围设备可以将其操作专门映射到一个世界或另一个世界,这取决于其角色。

• 一个简单的可信外围设备只能作用于可信世界资产。

• 一个更复杂的受信任外围设备可能对两个世界中的资产进行操作,同时支持受信任和非受信任操作,如图 2 所示。特定于实现的策略管理分离,它可能在硬件中固定或由受信任的服务配置。

接口可以完全在硬件中实现,也可以由可信世界中的服务进行调解。这些接口允许软件请求对数据进行操作。界面设计者必须注意确保可信资产和操作与非可信资产和操作隔离。

非可信世界不得对可信资产执行操作

非可信世界不得覆盖可信世界设置的策略

如果访问外围设备或其操作的子集是在可信世界和非可信世界之间动态切换,那么这只能在可信世界的控制下进行。

如果外围设备将资产存储在本地嵌入式存储中,则非可信操作必须无法访问可信操作的本地资产。

受信任的外围设备或接口必须能够区分命令和数据是在仅受信任的世界可访问的接口上接收的,还是在非可信世界可访问的接口。

暴露非安全接口的可信外围设备或接口必须在对非可信命令和数据进行操作之前对它们进行策略检查。策略检查必须是原子的,并且在检查之后不能修改检查的命令或数据。

当代表多个世界处理数据时,需要一个策略来根据访问者限制权限。加密加速器外设的示例策略将至少涵盖:

• 可以读取输入数据的世界。

• 输出数据可以写入的世界。

• 是否允许加密。

• 是否允许解密。

图 2 显示了一个具有适当策略的插图,如果请求不符合该策略,则可以拒绝这些请求。

ARM平台安全要求1.0--安全要求(2)_第1张图片

5.8.2 外设

SoC 通常需要与外设通信以接收和传输数据。这些外部外围设备的示例包括网络控制器、安全元件、显示器和接口控制器集线器,例如PCIe 和 USB 芯片。一些接口是通过 SPI 或 UART 进行的简单连接,而其他接口可以在 SoC 本身内嵌入高带宽控制器。

由于外部接口外围设备很容易被本地攻击者替换,因此保护 SoC 资产免受源自 SoC 外部的 DMA 和 PCIe 事务的影响非常重要。因此,必须使用片上机制来限制事务。这种约束机构的配置可以固定在硬件或固件可配置。精确的约束将根据上下文而有所不同。例如,启动过程必须配置约束机制来保护自己的资产,而运行时固件或操作系统则需要重新配置机制来保护不同的资产集。

某些设计受到威胁模型的影响,其中特定硬件 IP 块可能具有未知或不良行为。在这些情况下,应在可信世界的单独控制下实施额外的主端过滤器,以确保此类 IP 无法访问可信世界策略授权之外的可信世界资产。Arm 建议嵌入在 SoC 中的外围设备也受到限制。

来自外部外设的所有 DMA 事务必须使用片上机制进行约束。

当外部外围设备可以接收来自外部系统(例如 PCIe)的命令时,系统必须执行一项策略来检查这些命令是否不会破坏 SoC 的安全性。

如果外部外围设备用于发送或接收明文或未经身份验证的可信世界资产,则它必须满足可信操作的要求。

5.8.3 安全子系统

安全子系统是用于操作或存储高价值可信资产的硬件。安全子系统提供的安全服务可能包括以下一项或多项服务:

• 绑定到硬件的唯一、不可克隆身份的密钥。

• 计数器

• 密钥存储和管理。

• 密钥永远不可见的安全加密。

• 密钥派生。

• 真随机数生成。

• 用于启动测量的安全存储,构成系统能够执行安全证明的基础。

• RAM 或存储的透明加密

安全硬件必须由可信世界管理。这确保了安全子系统始终可供受信任的世界使用。

如果可信世界不打算使用特定的安全子系统,它可能会选择将该子系统委托给非可信世界,这取决于最终产品的威胁模型。

如果安全子系统在芯片外,那么它很容易受到总线插入攻击或物理替换。合规平台必须确保通信路径不受窃听。通信可能还需要重放保护,以确保攻击者无法记录和重放总线流量。为确保片外攻击不会降低安全性,有两种方法需要考虑:

• SoC 在制造过程中与安全子系统物理绑定。例如,子系统可以放置在与 SoC 相同的物理封装中,具体取决于威胁模型中的物理攻击。

• SoC 通过密码验证检测安全子系统的更换。例如,在设备组装期间,片外安全子系统连接到主机系统以建立唯一的共享密钥。同样,安全子系统必须对主机进行身份验证,以防止提取存储的机密。

产品威胁模型应规定安全子系统的更具体要求。例如,可能存在所选操作系统供应商、市场或系统运行所在地区的要求。

片外安全子系统必须在物理上或逻辑上与主机系统不可分离。分离不得降低系统安全性。

必须防止与片外安全子系统之间的通信被窃听。

与片外安全子系统之间的通信必须能够检测篡改和重放攻击。

安全子系统密钥不得被任何软件直接访问,除非策略明确允许导出密钥。

可信世界必须能够对任何可用于非可信世界加密操作的安全子系统密钥执行使用策略。

安全子系统的示例包括但不限于安全域 (SEn)、安全元件 (SE) 或可信平台模块 (TPM)、DRAM 保护子系统和安全敏感加速器。

建议安全子系统由可信世界管理,以确保可信服务可以安全地使用它们。

一些安全子系统还可以提供更高的防篡改能力,以抵御各种侧信道攻击。Arm 建议通过提供具有硬件密钥存储的安全子系统来增加对系统中加密密钥的保护,以防止密钥被非受信任和受信任的软件读取。

5.9 侵入子系统

侵入子系统包括任何硬件系统特性或接口,这些特性或接口可用于破坏安全属性,例如:

• JTAG 调试接口。

• 边界扫描界面。

• I2C 接口,可访问片上资源。

• RAS 和其他故障检测和恢复技术。

• 与电源管理子系统的接口。

入侵子系统必须只能从可信世界控制

5.10 平台身份

为了满足第 2.3 节中的证明安全目标,系统必须包含一个证明密钥。证明密钥是一种加密密钥,它向外部世界证明身份,从而证明其可信度。证明密钥可用于初始提供市场特定证明方案的凭证,例如由 FIDO 联盟或可信计算组 (TCG) 定义的证明,因此称为初始证明密钥。在某些系统上,初始证明密钥也可能被称为背书密钥。Arm强烈建议使用公钥加密,其中证明密钥是由(秘密)私钥和公钥组成的密钥对。

制造商应发布有关密钥的信息,以在远程证明期间证明平台是真实的。制造商保证密钥在他们制造的平台中受到保护。例如,制造商可以生成由他们自己的证书颁发机构签名的公钥证书。在这种情况下,制造商是提供或生成密钥的公司。该证书应提供给平台所有者,以便参与远程证明服务。

必须保护初始证明密钥不被克隆。如果攻击者可以将密钥复制到另一个平台,那么他们将能够冒充设备。这意味着密钥必须安全地存储在可信世界中。

对于隐私敏感的部署,例如个人设备,允许一组设备共享相同的证明密钥。这为设备所有者提供了一定程度的匿名性。但是,密钥只能在小组内共享,以减少泄露密钥的影响。特定组的大小可能取决于生产批次的大小或行业标准。

SoC 必须包含一个初始证明密钥,该密钥要么保存在受信任的世界控制的安全存储中,要么保存在安全子系统中。

每个实例或每批设备的初始证明密钥必须是唯一的。

在将安全子系统用于加密身份的实现中,初始证明密钥必须仅对安全子系统可见。

初始证明密钥必须受到安全生命周期的保护。

还可以包括用于固件解密和配置的附加密钥。这些密钥要么是设备独有的,要么是整个设备系列中通用的类密钥。

5.11 随机数生成

许多密码协议依赖于需要真正随机数的挑战响应机制。这使得真随机数生成器 (TRNG) 成为安全系统的重要元素。

在需要 TRNG 的地方,通常有一个相关的要求来指定源的质量,或者更常见的是,一组必须通过的测试。随机源的质量通常用熵来描述。对于 TRNG 提供的任何比特串,如果所有比特都达到最大熵组合的可能性相同。建议可在 NIST 特别出版物 800-90B [3] 中找到。

TRNG 的硬件实现由两个主要组件组成:熵源和数字后处理块,如图 3 所示。

ARM平台安全要求1.0--安全要求(2)_第2张图片

熵源包含非确定性的熵提供电路。构建片上熵源可能会利用芯片热噪声或制造工艺变化。

数字后处理负责从源头收集熵,监控数据的质量,并对其进行过滤以确保高水平的熵。例如,重复的周期性序列是可预测的并且必须被拒绝。这很重要,因为故障注入技术可用于在 TRNG 中引发可预测的行为。

尽管过滤方案可以去除熵源中的可预测模式,但其他更复杂的模式可能会降低可用熵。任何此类退化的程度取决于源的质量,在某些情况下,可能需要额外的数字处理来补偿它。一种常见的补偿技术利用密码散列函数将较低熵的大比特串压缩成较高熵的较小比特串。然而,这是以牺牲可用数据速率为代价的。为了解决这个问题,数字后处理阶段可以扩展熵源,通过使用过滤或压缩的源来播种具有大周期的加密强伪随机序列生成器,从而提供更多的每秒比特数。建议可以在 [4] 中找到。

生成的每个随机位不应超过一次,这确保了样本之间的统计独立性。这适用于任何一个接口上的连续读取,以及通过不同接口的读取。

可以实施一个或多个适当大小的 FIFO,以确保满足短期峰值需求。每个这样的 FIFO 都应该像一个移位寄存器一样起作用,以便在生成每个新随机数时丢失最旧的未使用随机数。

熵源和后处理必须是一个集成的硬件块。

不可能监控生产部件上的熵源输出。

必须不可能停止生产部件上的熵源输出。

来自熵源的每一位必须使用不超过一次。

在后处理中派生的每个位必须使用不超过一次。

测量熵有许多可能的选择。所需方法将由适用的认证计划保护概况、行业或政府法规确定。NIST 800-22 测试套件通常被引用。

尽管部分或全部数字后处理可以由受信任的服务在软件中执行,但 Arm建议采用完整的硬件设计。

5.12 定时器

SoC 需要各种形式的定时器用于调度、看门狗和挂钟时间。可信世界所依赖的任何时钟源都必须能够防篡改,并且只能由可信世界配置。

为确保驱动 可信定时器 和 看门狗 的时钟具有防篡改能力,可以采用两种推荐策略:

• 内部时钟源:时钟源是芯片内的集成自主振荡器,如果不采用侵入性技术,就无法轻易更改或停止。

• 外部时钟源:时钟源从SoC 外部连接。在这种情况下,攻击者可以轻松地停止时钟或更改其频率。如果是这种情况,那么主 SoC 必须实现监控可以检测时钟频率何时超出其可接受范围的硬件。

需要可信定时器来为可信世界服务提供基于时间的触发器。SoC 必须支持一个或多个 可信定时器。

可信世界使用的所有时钟源都必须能够防止物理篡改。

必须至少存在一个可信定时器。

受信任的计时器只能由受信任的访问修改。修改的示例是刷新、暂停或重置计时器。

可信定时器必须只产生可信中断。

驱动可信定时器的时钟源必须由可信世界独占控制。

Arm 建议,如果实现了时钟监控硬件,硬件必须公开一个状态寄存器,指示相关时钟源是否受到损害。该寄存器必须只能从受信任的世界读取,以防止可能有助于攻击者的信息泄漏或修改。要发出时钟频率违规信号,将可信中断添加到任何可信时钟监控

硬件可能会很有用。

可能需要受信任的看门狗计时器来防止拒绝服务,例如在安全服务依赖于非安全调度程序的情况下。在这种情况下,如果在预定义的时间限制之前未进入可信世界,则会发出重置并重新启动 SoC。

值得信赖的看门狗定时器能够在复位之前发出中断信号,从而允许在重新启动之前保存一些状态。

Arm 建议在系统未处于节电周期时使用至少 1Hz 的时钟速度。

受信任的看门狗定时器只能由受信任的访问修改。

修改的示例是刷新、暂停或重置计时器。

受信任的看门狗必须只产生受信任的中断在需要刷新之前,受信任的看门狗定时器必须能够运行足够长的时间以完成关键部分。

受信任的看门狗定时器必须能够在预定义的时间段后触发 SoC 的复位。此值在硬件中固定或由受信任的访问进行编程。

受信任的看门狗定时器必须实现一个标志,该标志指示发生导致热复位的超时事件,以允许后复位软件将此与上电冷启动区分开来。

驱动可信看门狗定时器的时钟源必须由可信世界专门控制。

系统重置后,Arm 建议在执行不可变引导代码将控制权转移到下一个固件阶段之前启动受信任的看门狗定时器。

可信服务可能依赖于可信时间的可用性。可信时间通常使用与远程时间服务器安全同步的片上实时计数器来实现。

可信实时时钟 (TRTC) 的理想实现将包括一个由连续且准确的时钟源驱动的持续供电计数器,可信时间只能从可信世界编程。但是,包含可拆卸电池的系统必须处理停电问题。

可以通过将计数器与指示是否已加载有效时间的状态标志。部署此解决方案的 SoC 使用 TRTC 实现可信时间,该 TRTC 由可信硬件计时器组成,该计时器与指示当前时间是否有效的状态标志相关联,并接收可信时钟源。当受信任的计时器已被受信任的服务更新时,有效标志被设置,并在计时器断电时被清除。Arm 建议将 Trusted timer 和 valid 标志驻留在尽可能保持开启的电源域中。

当因停电而失去可信时间时,响应取决于目标规范。为了例如,在适当的可信服务更新 TRTC 之前,限制特定的可信服务可能是可以接受的。

TRTC 必须仅由受信任的世界访问配置。

TRTC 的所有组件都必须在同一个电源域内实现。

在初始上电时,以及在 TRTC 任何其他断电之后,有效性机制必须指示TRTC 不可信。

TRTC 必须由可信世界独家控制。

5.13 密码学

所使用的密码算法必须对网络攻击者和本地攻击者具有很强的抵抗力。算法的具体选择取决于目标市场和当地法规。

密码算法的强度取决于以某种方式破解它所需的操作数。如果与算法或系统相关的安全强度是 S 位,那么预计需要(大致)2S 基本操作来破解它。

需要注意的是,S 位不是指密钥长度。例如,要满足 128 位的安全强度:

• 基于 RSA 的密钥必须至少为 3072 位。

• 基于椭圆曲线的密钥必须至少为 256 位。

更多信息可以在加密社区和政府的外部发布文件中找到。Arm 建议使用商业国家安全算法套件中经过批准的算法,该套件取代了 NSA 套件 B 密码术。或者,设计人员应参考SOG-IS、IPA 和 CC 为欧盟、日本和中国发布的已批准加密算法列表。Arm 强烈建议供应商验证实现的算法在恒定时间内执行,以防止基于时间的攻击。

密码学的所有使用都必须使用满足至少 128 位安全性的算法。

在创建、更新或销毁密钥时,将其视为原子单元非常重要。这适用于请求实体的级别。用已知值替换密钥的一部分,然后在加密操作中使用该密钥可以使攻击者更容易使用分而治之的蛮力攻击来发现密钥。当密钥存储在小于密钥的内存单元中时,这一点尤其重要。例如,存储在四个 32 位内存位置的 128 位密钥。实现密钥创建、更新或销毁服务的实体(例如受信任的固件功能)应确保其客户端不可能以破坏原子性假设的方式观察或使用密钥。

密钥必须被视为一个原子单元。在密钥完全创建之前、更新操作期间或销毁期间,不得在加密操作中使用密钥。

对密钥的任何操作都必须是原子的。不能中断密钥的创建、更新或销毁。

密码方案提供一种或多种安全服务,并基于需要特定密钥属性和密钥管理的目的和算法。

密钥的特征取决于它们的私有密钥、公共密钥或对称密钥的分类以及它们的用途。

从广义上讲,每个密钥只能用于单一目的,例如加密、数字签名、完整性和密钥包装。该原则的主要动机是:

1. 限制密钥的使用可以限制密钥泄露时的潜在危害。

2. 对两个或多个不同的密码方案使用单个密钥会降低一个或多个进程提供的安全性。

3. 单个密钥的不同用途可能会导致管理每个密钥的方式发生冲突。例如,在不同加密过程中使用的密钥的不同生命周期可能导致密钥的保留时间比该密钥的一次或多次使用的最佳实践要长。

在一个方案可以提供多个加密服务的情况下,该原则不会阻止使用单个密钥。例如,当对称密钥用于在单个操作中加密和验证数据时,或者当使用数字签名来提供验证和完整性时。

在使用较短密钥的方案中重用较大密钥的一部分,或在较大算法中使用较短密钥,以及填充键输入,可以泄漏有关键的信息。这是禁止的。

密钥只能由为其创建的加密方案使用。

SoC 在其运行期间包括许多不同的key。同一系统中的不同密钥可以具有不同的寿命。一些密钥在 SoC 制造期间被编程并且永远不会改变,而其他密钥仅在通信会话期间存在。其中包括静态密钥、临时密钥和硬件密钥:

• 静态密钥是在引入设备后无法更改的密钥。它可能存储在不可变结构中,例如 ROM 或一组保险丝。尽管静态密钥不能更改其值,但它并不排除它被撤销或系统无法访问。

• 临时密钥是一种生命周期较短的密钥。在许多情况下,它们只存在于电源循环之间的设备。临时密钥以多种方式在设备中创建,例如密钥派生。

临时密钥也可以在启动时从 TRNG 获取。首选此方法,因为它通过生成每个引导周期唯一的密钥来提供更好的保护。

• 硬件密钥是对软件不可见的密钥,它可以是静态的,也可以是临时的。它用于可信世界的加密操作,但在非可信世界中的使用必须遵守策略。示例密钥使用策略将至少涵盖以下内容:

• 允许从中读取输入数据的世界。

• 允许写入输出数据的世界。

• 允许的操作。

• 临时隔离密钥是仅在特定时间点可用的密钥。例如,引导加载程序可以在每次系统重置时从源材料中获取一个密钥,使用该密钥,擦除该密钥,最后触发一个硬件机制来隐藏该密钥(或其源材料),直到下一次系统重置。这允许引导加载程序有一个秘密,该秘密不能被以后加载的软件派生或使用。

当系统不再需要密钥时,必须停止使用它,以防止以后被黑客泄露。

静态密钥必须存储在不可变结构中,例如 ROM 或一组可锁定熔断器。

为防止重新派生以前使用的密钥,必须通过受信任的代码或受信任的硬件隐藏源材料。

如果临时密钥以明文形式存储在内存或寄存器中,则必须先清理存储位置,然后才能将其用于其他目的。

非可信世界可访问或生成的密钥只能用于非可信世界加密操作,这些操作要么在不可信世界的软件,或者在不可信世界中既有明文又有密文。

在以下情况下,可信世界可访问或由可信世界生成的密钥可用于非可信世界和非可信世界甚至跨世界的操作:

• 非可信世界无法直接访问密钥。

• 可信世界可以通过策略控制密钥的使用。

任何软件都不能直接访问受信任的硬件密钥。

可信世界必须能够对任何可用于非可信世界加密操作的可信硬件密钥实施使用策略。

5.14 安全存储

受信任的资产,例如固件镜像和敏感数据,通常需要存储在外部存储中。需要保护外部存储免受可能试图读取、修改或克隆内容的攻击者的影响。因此,兼容的 SoC 必须通过嵌入以下内容来提供安全的存储解决方案:

• 用于加密和解密外部存储的硬件唯一密钥 (HUK)。密钥是硬件唯一的,因此无法在另一个平台上克隆或解密资产。

• 片上可信非易失性计数器,它是固件版本控制和外部存储中保存的可信数据所必需的。这些计数器的一个重要特性是它一定不可能回滚它们,以防止重放攻击。必须至少有一个计数器用于可信固件使用,至少一个计数器用于非可信固件使用。

可以使用受信任的服务或使用硬件方法来实现安全存储。与软件解决方案相比,安全存储的硬件实现对软件是透明的并提供更高的吞吐量。但是,硬件实现必须符合安全子系统部分中描述的规则。

任何需要存储的敏感数据都必须存储在安全存储中。

SoC 必须嵌入硬件唯一密钥 (HUK)。

HUK 必须具有至少 128 位的熵。

HUK 只能由受信任的代码或代表受信任的代码的受信任的硬件访问。

片上非易失性可信固件版本计数器实现必须提供0-63 的计数器范围。

片上非易失性非可信固件版本计数器实现必须提供0-255 的计数器范围。

只能通过受信任的访问来增加版本计数器。

只能增加版本计数器;一定不能减少它。

当版本计数器达到其最大值时,它不能翻转,并且不能进行进一步的更改。

版本计数器必须是非易失性的,并且存储的值必须在系统生命周期内的断电期间存活。

理想情况下,SoC 实现使用片上多次可编程 (MTP) 存储实现安全存储和版本计数器;例如,浮栅(EE ROM)或相变技术。人们认识到,基于 MTP 的方法目前对于较小的工艺节点在经济上是不可扩展的,因为与标准体 CMOS 工艺相比,开销是昂贵的。相比之下,基于反熔丝技术的一次性可编程 (OTP) 存储可广泛使用且具有成本效益。

5.15 主存储器

可信代码预计从安全 RAM 执行。可信代码还将高价值资产存储在安全 RAM 中。在本文档的上下文中,安全 RAM 是指映射到一个或多个物理 RAM 的一个或多个专用区域。当物理 RAM 不完全专用于安全存储时,可以将其配置为在世界之间共享。但是,除非将底层位置从安全重新分配到非安全,否则底层位置不会被归类为共享易失性存储。安全区域的映射可以是静态的,可以通过设计固定,也可以在运行时进行编程。

安全 RAM 用例示例如下:

• 安全启动代码和数据。

• 安全监控代码。

• 受信任的操作系统或安全分区管理器。

• 加密服务。

• 值得信赖的服务。

安全 RAM 的大小取决于目标要求,因此未在本文档中指定。Arm 建议使用片上 RAM,但如果 SRAM与主 SoC 位于同一封装内,则可以在单独的芯片上使用 SRAM 。

SoC 必须集成安全 RAM。

安全 RAM 必须仅映射到可信世界。

如果安全 RAM 到区域的映射是可编程的,那么区域的配置必须只能从可信世界进行。

许多 SoC 设计依赖外部 DRAM 对资产进行操作。外部存储器容易受到探测攻击,可用于:

• 直接恢复敏感资产。

• 颠覆系统的行为以提取资产,或将系统用于非法目的。

为了减轻这些风险,可以在资产存储到 DRAM 之前对其应用各种保护措施。所需的保护量取决于目标系统的部署。

共有三层保护,每层都提供更高的物理攻击抵抗力。一般来说,每次增加保护都需要更复杂的硬件。适当的级别应由产品的需求和部署威胁模型确定。

5.15.1 机密性保护

可以冻结外部存储器或使用电池支持的 DRAM 模块的攻击者可以直接恢复主存储器中的任何资产。这被称为“冷启动”攻击。

DRAM 加密确保物理攻击者无法读取主内存中的资产。加密可以通过性能优化的片上加密硬件块透明地提供,每个加密硬件块都接收一个对称密钥。或者,加密可能由在片上 Trusted SRAM 中执行的软件提供,但会牺牲性能和覆盖范围。所需的加密保护级别取决于目标要求,此处未指定。

实施 DRAM 加密时,必须无法解密不同设备上的内存内容副本。因此,用于加密和认证的密钥对于 SoC 必须是唯一的。Arm建议在每次系统重置时随机生成密钥。

5.15.2 完整性保护

除了加密之外,还可以检测到对 DRAM 数据的外部修改,从而停止执行以防止攻击者利用任何此类修改。这称为完整性保护。

最经济的解决方案可能涉及使用透明地创建和管理内存块的加密散列的硬件 IP 块。

所需的加密保护级别取决于目标要求,此处未指定。

5.15.3 重放攻击保护

拥有高度专业化设备的攻击者可能能够通过直接更改物理内存中的内容或通过在 SoC 和外部存储器之间插入总线事务来捕获和复制内存内容。

借助此功能,攻击者可以强制 SoC 接受一块捕获的内存,该内存通过了完整性检查并正确解密。攻击者要利用此漏洞:

1. 他们必须在已知包含不安全值或不安全配置的地址处捕获内存内容。

2. 当 SoC 请求此内存时,攻击者会在某个时间点“重放”此内存内容在适合攻击者的时间。这是一种“定时攻击”。

3.一旦SoC收到内存交易,就可以对其进行操作,这可能会减少或停用软件防御。例如,内存内容可能包含以前安全但现在不安全的系统配置,然后将其写入特权配置寄存器。

通过添加重放攻击保护,攻击者无法使用捕获的内存来发起定时攻击。所需的专业程度取决于总线事务的速度和复杂性。

5.15.4 使用

机密性、完整性和重放保护的选择取决于最终系统的威胁模型。但是,有一些通用规则适用于所有情况,如下所述

内存保护块使用的密钥对于 SoC 必须是唯一的。

如果加密硬件到内存系统的映射是可配置的,那么它必须只能从可信世界执行配置。

外部存储器保护的激活和停用必须只能在可信世界中进行。

如果内存区域配置为加密,则内存系统中不得存在任何可用于绕过安全性的别名。

在存储系统的数据路径中添加这种加密硬件通常会带来性能损失,通常会随着密码强度的增加而增加。

设计人员必须考虑他们的威胁模型是否表明需要 DRAM 完整性保护。Row hammer攻击利用 DRAM 内存的意外物理副作用来更改存储在其他内存单元中的值。应实施 JEDEC 定义的目标行刷新 (TRR) 以增加对此类攻击的抵抗力。

你可能感兴趣的:(安全,安全架构)