多层级保护数据

Apple 设备具有多种加密特性,以保护系统和人们的数据安全。有些功能是默认启用的,开发者只需要在极少数情况下了解这些功能。其他功能,如“数据保护”,可以帮助人们从明确的设计决策中选择保护数据的最佳方案。

macOS Big Sur 新增了两项数据安全功能:签名系统宗卷(SSV),以及针对在 Apple 芯片上运行的 Mac 系统的数据保护。

签名系统宗卷

在 macOS Catalina 中,Apple 推出了[只读系统总卷](https://support.apple.com/zh-cn/HT210650),这是一个专用的、隔离的系统内容宗卷。现在,macOS Big Sur 增加了强大的加密保护功能,将系统内容存储在签名系统宗卷(SSV)上。SSV 具有一种内核机制,能够在运行时验证系统内容的完整性,并拒绝任何没有 Apple 有效加密签名的数据——无论是代码还是非代码。

SSV 有助于防止任何属于操作系统的 Apple 软件被篡改。此外,它使 macOS 的“软件更新”更可靠,更安全。SSV 充分利用 APFS 快照,因此,如果无法执行更新,无需重新安装即可还原旧系统版本。

哈希和封条

自推出以来,APFS 就一直在通过磁盘上的非加密校验来保证文件系统元数据的完整性。SSV 通过切换到哈希加密来加强完整性机制,并将其扩展到包括文件数据的每个字节。来自磁盘的数据在读取路径中进行哈希加密,并将哈希值与文件系统元数据中的预期值进行比较。若不匹配,系统会认为数据被篡改,不会将数据返回给请求软件。

每个 SSV SHA-256 哈希值都存储在主文件系统元数据树中,该树本身也经过了哈希运算。此外,树的每个节点都会递归验证其子节点哈希值的完整性,类似于默克尔树。因此,根节点的哈希值(称为“封条”)涵盖了 SSV 中的每一个字节数据,这意味着加密签名覆盖了整个系统卷。在安装和更新 macOS 的过程中,这个封条会在设备上进行验证,以确保它与 Apple 的签名相匹配。在每次启动时,该封条也会被验证。具体来说,在加载内核之前,启动加载器(Mac 系统中使用 Apple T2 安全芯片的安全启动链的一部分)会验证该封条。如果验证失败,启动过程将停止,并提示使用者重新安装 macOS。

内核扩展和其他开发者需要知道的事情

签名系统宗卷对大多数开发者来说是透明的。必须与根宗卷进行交互的内核开发者可以通过 csrutil 命令行工具中新的“系统完整性保护”模式来实现交互。当您启用该模式时,它允许使用 apfs_systemsnapshot 标记自定义快照,然后您可以启动进入该快照中的系统。

Apple 很快就会发布关于新的磁盘上 SSV 格式的细节。如果您的 App 处理数据备份或取证搜索,您需要做一些额外的工作来理解和验证它。

此外,通过 ASR 宗卷复制,或使用“macOS 安装器”创建可启动的 macOS 实例更为重要。手动将内容拷贝到一个新的 APFS 宗卷中,或者使用 rsync 等工具,都无法保存封条和所需的加密 SSV 元数据,因此将不再能生成可启动的 macOS。

macOS 上的数据保护

“数据保护”为所有配备 Apple 芯片的 Mac 上的每个文件提供了加密密钥。这意味着开发者可以选择在数据没有被使用或设备本身被锁定时,通过加密锁定文件,为 macOS 上的顾客的数据提供更强大的保护。

每个文件的元数据现在都为文件定义了一个数据保护类。这些类决定了何时可以打开、读取或操作文件。例如,“全面保护”类保证只有在系统解锁时才能访问文件。数据保护类可以通过使用 Swift 中的 Data 和 Objective-C 中的 NSData 等类来轻松设置和更改,已经熟悉这些类的 iOS 和 iPadOS 开发者将可以在 macOS 上使用类似的代码。

Learn more about Data Protection classes

Installing a Custom Kernel Extension

Apple Platform Security

Encrypting Your App’s Files

About Apple File System