跳转到主要内容

安全区域

Secure Enclave是最新版本iPhone、iPod touch、Mac、Apple TV、Apple Watch和HomePod中的专用安全子系统。

概述

Secure Enclave是集成到Apple片上系统(SoC)中的专用安全子系统。Secure Enclave与主处理器隔离,以提供额外的安全层,即使应用程序处理器内核受到威胁,也能确保敏感用户数据的安全。它遵循与SoC相同的设计原则——用于建立硬件信任根的引导ROM、用于高效安全加密操作的AES引擎以及受保护的内存。尽管Secure Enclave不包括存储,但它有一种机制,可以将信息安全地存储在与应用程序处理器和操作系统使用的NAND闪存分开的附加存储上。

A diagram of the Secure Enclave components.

Secure Enclave是大多数版本iPhone、iPad、Mac、Apple TV、Apple Watch和HomePod的硬件功能,即:

  • iPhone 5s或更高版本
  • iPad Air或更高版本
  • 包含Apple T1芯片的带触摸条的MacBook Pro电脑(2016年和2017年)
  • 包含Apple T2安全芯片的基于Intel的Mac计算机
  • 使用苹果硅的Mac电脑
  • Apple TV HD或更高版本
  • Apple Watch系列1或更高版本
  • HomePod和HomePod-mini

安全加密处理器(Secure Enclave Processor)

安全加密处理器为安全加密提供主要计算能力。为了提供最强的隔离,安全加密处理器专门用于安全加密。这有助于防止依赖于与受攻击的目标软件共享相同执行核心的恶意软件的旁道攻击。

Secure Enclave处理器运行Apple定制版本的L4微内核。它被设计为在较低的时钟速度下高效运行,有助于防止时钟和电源攻击。从A11和S4开始的安全加密处理器包括内存保护引擎和具有防重放功能的加密内存、安全引导、专用随机数生成器和自己的AES引擎。

内存保护引擎

Secure Enclave从设备的DRAM存储器的专用区域运行。多层保护将受Secure Enclave保护的内存与应用程序处理器隔离。

当设备启动时,Secure Enclave Boot ROM会为内存保护引擎生成一个随机的临时内存保护密钥。每当Secure Enclave写入其专用内存区域时,内存保护引擎都会在Mac XEX(xor encrypt xor)模式下使用AES加密内存块,并为内存计算基于密码的消息身份验证码(CMAC)身份验证标记。内存保护引擎将身份验证标记与加密内存一起存储。当Secure Enclave读取内存时,内存保护引擎会验证身份验证标记。如果身份验证标记匹配,内存保护引擎将解密内存块。如果标签不匹配,内存保护引擎将向安全加密发送错误信号。内存验证错误后,Secure Enclave将停止接受请求,直到系统重新启动。

从Apple A11和S4 SoC开始,内存保护引擎为Secure Enclave内存添加了重放保护。为了帮助防止安全关键数据的重播,内存保护引擎在身份验证标记旁边为内存块存储一个唯一的一次性数字,称为nonce。随机数用作CMAC身份验证标记的附加调整。所有内存块的随机数都使用根在Secure Enclave中的专用SRAM中的完整性树进行保护。对于写入,内存保护引擎会将随机数和完整性树的每个级别更新到SRAM。对于读取,内存保护引擎将验证随机数和完整性树的每个级别,直到SRAM。Nonce不匹配的处理与身份验证标记不匹配类似。

在Apple A14、A15、M1系列以及更高版本的SoCS上,内存保护引擎支持两个临时内存保护密钥。第一个用于安全加密的私有数据,第二个用于与安全神经引擎共享的数据。

内存保护引擎内联运行,并且对安全加密透明。Secure Enclave读取和写入内存,就像它是常规的未加密DRAM一样,而Secure Enclave外部的观察者只能看到内存的加密和认证版本。其结果是强大的内存保护,没有性能或软件复杂性的权衡。

安全加密启动ROM

Secure Enclave包括一个专用的Secure Enclave引导ROM。与应用程序处理器引导ROM一样,Secure Encrave引导ROM是一个不可变的代码,它为Secure Enlave建立了硬件信任根。

在系统启动时,iBoot会为Secure Enclave分配一个专用的内存区域。在使用内存之前,Secure Enclave Boot ROM会初始化内存保护引擎,为受Secure Enclave保护的内存提供加密保护。

然后,应用程序处理器将sepOS映像发送到Secure Enclave Boot ROM。在将sepOS映像复制到受Secure Enclave保护的内存中后,Secure Enlave Boot PROM检查映像的加密哈希和签名,以验证sepOS是否被授权在设备上运行。如果sepOS映像已正确签名以在设备上运行,则Secure Enclave Boot ROM会将控制权转移到sepOS。如果签名无效,Secure Enclave Boot ROM设计用于防止在下次芯片重置之前进一步使用Secure Enclave。

在Apple A10和更高版本的SoC上,Secure Enclave Boot ROM将sepOS的哈希锁定到专用寄存器中。公钥加速器将此哈希用于操作系统绑定(OS绑定)密钥。

安全加密启动监控器

在Apple A13和更高版本的SoC上,Secure Enclave包括一个引导监视器,用于确保对引导的sepOS的哈希进行更强的完整性。

在系统启动时,安全加密处理器的系统协处理器完整性保护(SCIP)配置有助于防止安全加密处理器执行除安全加密引导ROM之外的任何代码。引导监视器有助于阻止安全加密处理器直接修改SCIP配置。为了使加载的sepOS可执行,Secure Enclave Boot ROM向Boot Monitor发送一个包含加载sepOS的地址和大小的请求。收到请求后,引导监视器重置安全加密处理器,散列加载的sepOS,更新SCIP设置以允许执行加载的sep OS,并在新加载的代码中开始执行。随着系统继续引导,每当新代码可执行时,都会使用相同的过程。每次,引导监视器都会更新引导进程的运行哈希。引导监视器还包括运行哈希中的关键安全参数。

引导完成后,引导监视器将完成运行的哈希并将其发送到公钥加速器,以用于操作系统绑定的密钥。此过程设计为即使在安全加密引导ROM中存在漏洞,也无法绕过操作系统密钥绑定。

真随机数生成器

真随机数生成器(TRNG)用于生成安全随机数据。安全加密在生成随机加密密钥、随机密钥种子或其他熵时使用TRNG。TRNG基于用CTR_DRBG(一种基于计数器模式中的块密码的算法)后处理的多个环形振荡器。

根加密密钥

安全加密包括唯一ID(UID)根加密密钥。UID对于每个单独的设备是唯一的,并且与设备上的任何其他标识符无关。

随机生成的UID在制造时融合到SoC中。从A9 SoC开始,UID由安全加密TRNG在制造过程中生成,并使用完全在安全加密中运行的软件过程写入熔断器。此过程可防止UID在制造过程中在设备外部可见,因此苹果或其任何供应商无法访问或存储UID。

sepOS使用UID保护设备特定的机密。UID允许数据以加密方式绑定到特定设备。例如,保护文件系统的密钥层次结构包括UID,因此,如果内部SSD存储从一个设备物理移动到另一个设备,则无法访问文件。其他受保护的设备特定秘密包括面部ID或触摸ID数据。在Mac上,只有连接到AES引擎的完全内部存储才能接收这种级别的加密。例如,无论是通过USB连接的外部存储设备还是添加到2019 Mac Pro的基于PCIe的存储设备都不会以这种方式加密。

Secure Enclave还有一个设备组ID(GID),它对使用给定SoC的所有设备都是通用的(例如,所有使用Apple A15 SoC的设备都共享相同的GID)。

UID和GID无法通过联合测试行动组(JTAG)或其他调试接口获得。

安全加密AES引擎

安全加密AES引擎是用于基于AES密码执行对称加密的硬件块。AES引擎设计用于通过使用定时和静态功率分析(SPA)来抵抗信息泄漏。从A9 SoC开始,AES引擎还包括动态功率分析(DPA)对策。

AES引擎支持硬件和软件密钥。硬件密钥来自安全加密UID或GID。这些密钥保留在AES引擎中,甚至对sepOS软件也不可见。尽管软件可以使用硬件密钥请求加密和解密操作,但它无法提取密钥。

在Apple A10和更高版本的SoC上,AES引擎包括可锁定的种子位,可使从UID或GID派生的密钥多样化。这允许数据访问取决于设备的操作模式。例如,可锁定种子位用于在从设备固件更新(DFU)模式启动时拒绝访问受密码保护的数据。有关详细信息,请参阅密码和密码。

AES引擎

每个带有安全加密的Apple设备都有一个专用的AES256加密引擎(“AES引擎”),内置在NAND(非易失性)闪存和主系统内存之间的直接内存访问(DMA)路径中,使文件加密变得高效。在A9或更高版本的A系列处理器上,闪存子系统位于隔离总线上,仅允许通过DMA加密引擎访问包含用户数据的内存。

在启动时,sepOS使用TRNG生成一个临时包装密钥。安全加密使用专用线将此密钥传输到AES引擎,旨在防止安全加密之外的任何软件访问该密钥。sepOS然后可以使用临时包装密钥来包装文件密钥,以供应用程序处理器文件系统驱动程序使用。当文件系统驱动程序读取或写入文件时,它会将封装的密钥发送到AES引擎,AES引擎会对密钥进行解压缩。AES引擎从不向软件公开打开的密钥。

注意:AES引擎是与安全加密和安全加密AES引擎分离的组件,但其操作与安全加密密切相关,如下所示。

A diagram showing how the AES Engine supports line-speed encryption on the DMA path for efficient encryption and decryption of data as it’s written and read to storage.

公钥加速器

公钥加速器(PKA)是用于执行非对称加密操作的硬件块。PKA支持RSA和ECC(椭圆曲线密码)签名和加密算法。PKA被设计为使用定时和旁道攻击(如SPA和DPA)来抵抗信息泄漏。

PKA支持软件和硬件密钥。硬件密钥来自安全加密UID或GID。这些密钥保留在PKA中,甚至对sepOS软件也不可见。

从A13 SoC开始,PKA的加密实现已被证明在数学上是正确的,使用了形式验证技术。

在Apple A10和更高版本的SoC上,PKA支持OS绑定密钥,也称为密封密钥保护(SKP)。这些密钥是使用设备的UID和设备上运行的sepOS的哈希组合生成的。散列由安全加密引导ROM或Apple A13和更高版本SoC上的安全加密引导监视器提供。这些密钥还用于在向某些Apple服务发出请求时验证sepOS版本,还用于通过帮助防止在未经用户授权的情况下对系统进行关键更改时访问密钥材料来提高密码保护数据的安全性。

安全的非易失性存储

Secure Enclave配备了专用的安全非易失性存储设备。安全非易失性存储使用专用I2C总线连接到安全加密,因此只能由安全加密访问。所有用户数据加密密钥都植根于安全加密非易失性存储中存储的熵。

在具有A12、S4和更高版本SoC的设备中,安全加密与用于熵存储的安全存储组件配对。安全存储组件本身设计有不可变ROM代码、硬件随机数生成器、每个设备唯一的加密密钥、加密引擎和物理篡改检测。安全加密和安全存储组件使用加密和认证的协议进行通信,该协议提供对熵的独占访问。

2020年秋季或以后首次发布的设备配备了第二代安全存储组件。第二代安全存储组件添加了计数器锁盒。每个计数器锁盒存储128位salt、128位密码验证器、8位计数器和8位最大尝试值。通过加密和认证的协议访问计数器锁箱。

计数器锁盒保存解锁密码保护用户数据所需的熵。要访问用户数据,配对的安全加密必须从用户的密码和安全加密的UID中导出正确的密码熵值。用户的密码无法通过从配对的Secure Enclave以外的源发送的解锁尝试来学习。如果超过密码尝试限制(例如,iPhone上的10次尝试),安全存储组件将完全删除密码保护的数据。

为了创建计数器锁箱,Secure Enclave向Secure Storage Component发送密码熵值和最大尝试值。安全存储组件使用其随机数生成器生成salt值。然后,它从提供的密码熵、安全存储组件的唯一加密密钥和salt值导出密码验证器值和锁箱熵值。安全存储组件使用计数0、提供的最大尝试值、导出的密码验证器值和salt值初始化计数器锁盒。然后,安全存储组件将生成的锁箱熵值返回给安全加密。

为了稍后从计数器锁箱检索锁箱熵值,安全加密向安全存储组件发送密码熵。安全存储组件首先递增锁箱的计数器。如果递增的计数器超过最大尝试值,安全存储组件将完全擦除计数器锁盒。如果尚未达到最大尝试次数,安全存储组件将尝试使用创建计数器锁箱所用的相同算法导出密码验证器值和锁箱熵值。如果派生的密码验证器值与存储的密码验验器值匹配,则安全存储组件将密码箱熵值返回给安全加密,并将计数器重置为0。

用于访问密码保护数据的密钥植根于计数器锁盒中存储的熵。有关详细信息,请参阅数据保护概述。

安全非易失性存储用于secure Enclave中的所有反重播服务。Secure Enclave上的反重播服务用于撤销标记反重播边界的事件上的数据,包括但不限于以下内容:

  • 密码更改
  • 启用或禁用面部ID或触摸ID
  • 添加或删除面部ID面部或Touch ID指纹
  • 面部ID或触摸ID重置
  • 添加或删除Apple Pay卡
  • 擦除所有内容和设置

在没有安全存储组件的架构上,EEPROM(电可擦除可编程只读存储器)用于为安全加密提供安全存储服务。与安全存储组件一样,EEPROM是连接的,只能通过安全加密访问,但它不包含专用的硬件安全功能,也不保证对熵的独占访问(除了其物理连接特性之外),也不提供计数器锁箱功能。

安全神经引擎

在具有面部ID的设备上,安全神经引擎将2D图像和深度图转换为用户面部的数学表示。

在A11到A13 SoC上,安全神经引擎被集成到安全Enclave中。安全神经引擎使用直接内存访问(DMA)实现高性能。sepOS内核控制下的输入输出内存管理单元(IOMMU)限制了对授权内存区域的直接访问。

从A14和M1系列开始,安全神经引擎在应用处理器的神经引擎中实现为安全模式。专用硬件安全控制器在应用处理器和安全加密任务之间切换,在每次转换时重置神经引擎状态,以确保人脸ID数据的安全。专用引擎应用内存加密、身份验证和访问控制。同时,它使用单独的密码密钥和内存范围来将安全神经引擎限制在授权的内存区域。

电源和时钟监视器

所有电子器件都设计为在有限的电压和频率范围内工作。当在该外壳外操作时,电子设备可能发生故障,然后安全控制可能被绕过。为了帮助确保电压和频率保持在安全范围内,Secure Enclave设计了监控电路。这些监控电路被设计为具有比安全封地的其余部分大得多的操作范围。如果监视器检测到非法操作点,安全加密中的时钟会自动停止,直到下一次SoC重置后才重新启动。

安全加密功能摘要

注:在2020年秋季首次发布的A12、A13、S4和S5产品具有第二代安全存储组件,而基于这些SoC的早期产品具有第一代安全存储部件。

SoC

Memory Protection Engine

Secure Storage

AES Engine

PKA

A8

Encryption and authentication

EEPROM

Yes

No

A9

Encryption and authentication

EEPROM

DPA protection

Yes

A10

Encryption and authentication

EEPROM

DPA protection and lockable seed bits

OS-bound keys

A11

Encryption, authentication, and replay prevention

EEPROM

DPA protection and lockable seed bits

OS-bound keys

A12 (Apple devices released before Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 1

DPA protection and lockable seed bits

OS-bound keys

A12 (Apple devices released after Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys

A13 (Apple devices released before Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 1

DPA protection and lockable seed bits

OS-bound keys and Boot Monitor

A13 (Apple devices released after Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys and Boot Monitor

A14, A15

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys and Boot Monitor

S3

Encryption and authentication

EEPROM

DPA protection and lockable seed bits

Yes

S4

Encryption, authentication, and replay prevention

Secure Storage Component gen 1

DPA protection and lockable seed bits

OS-bound keys

S5 (Apple devices released before Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 1

DPA protection and lockable seed bits

OS-bound keys

S5 (Apple devices released after Fall 2020)

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys

S6, S7

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys

T2

Encryption and authentication

EEPROM

DPA protection and lockable seed bits

OS-bound keys

M1 Family

Encryption, authentication, and replay prevention

Secure Storage Component gen 2

DPA protection and lockable seed bits

OS-bound keys and Boot Monitor

本文:https://cioctocdo.com/apple-secure-enclave