Apple T2: 为什么 MacBook Pro 不再有数据导出接口

简单的概括: 安全性, 效率和成本
首先列个例子: Alice 同学做了一张 PPT, 里面包含了一张图片和一段文字, 然后将这个 PPTX 文件保存在了 MacBook 里, 如果用逻辑去表示的话:
如果 Alice 想要保证文件系统的安全性, 可以做从以下位置加固:

  • 将图像和文字直接加密后写入 PPTX 文件中
  • 通过 PPTX 自带的加密保护整个文档
  • 利用 PPTX 的外部 ZIP 容器的加密功能保护整个文件
  • 利用 APFS 的文件加密功能保护文件
  • 利用块设备级别的存储, 加密整个 APFS 卷
  • 使用加密 NAND 主控, 从而加密 NVMe 下的 NAND 芯片

2016/2017 年的调试排线的功能主要是直接引出 NVMe SSD 主控的引脚, 通过这个引脚接到其他设备的 PCIe 接口上.

而配置了 T2 芯片的 MacBook 替代了 NVMe SSD 的主控. 从而提供了面向 NAND Flash 直接加密的功能. 这就意味着, 即便攻击者吹下 NAND Flash, 也不能得到块设备的明文.

这种加密模式曾经广泛使用在企业级硬盘中, 不过后来由于此类机制带来了额外成本和可靠性问题, 所以目前具备此类功能的企业级硬盘已经不多. 另外一方面, 因为 T2 本身可以直接和 USB-C 接口进行通信(设备恢复), 所以理论上直接通过另外一台设备就可以借助 T2 直接访问到 NAND 存储, 不过 Apple 并没有开放类似权限.

密钥直接集成在 T2 的安全飞地内, 经过启动过程, 密钥交给 T2 的 AES 硬件解密引擎. 借助 T2 的 PCIe DMA 能力, 去访问 T2 的安全内存数据上的 Nand 已加密数据, 同时借助 DMA 暴露给 Intel CPU 这个 NVMe Function(因为其他的功能也走的是同一个 PCIe, 一个 PCIe 上有多个 Function). 注意: 这个主密钥是不可导出的.
同时, 这套结构就是 iPhone/iPad 如何保护内部存储的模式.

同时, 在 MacOS X 10.3 之后增加了 HFS+ 加密支持, 也就是所谓的 FileVault. FileVault 是包含了 preboot 阶段 EFI 阶段验证引擎, HFS+/APFS 卷加密功能的统称. 后续 FileVault 2 实现了 AES 硬件加速.

FileVault 的 Master Key (主密钥) 最早被加密的储存在 EFI 中, 每个用户的密码(包括通过 LDAP 登陆的用户, macOS 没有真正意义上的 mobile user)都能解开 FileVault 的加密并进入系统, 只不过进入系统后不一定有权限. 不过这仍然存在问题:

  • 本地用户仍然可以通过登陆 recovery 解锁 FileVault 解锁整个文件系统.这个也算是个变相的提权, 不过要求 offband management/physical access, 对于运行时的 macOS 仍然是不可绕过的. 对于黑客来说, recovery mode/target disk mode 都能提取被加密的 Master Key 进行本地暴力破解
  • 用户输入的密码是以明文保存在内存结构中. 早年 Thunderbolt(PCIe)设备没有证书签名, 系统也不利用 IOMMU 进行隔离, 意味着他们能够动用 DMA 能力访问内存, 从而直接从内存中找到用户的 FileVault 密码.

T2 出现后 Master Key 不再被储存于风险极大的 EFI 分区中, 而是分成两部分并通过用户密码加密保存在安全飞地中:
很显然, 因为导出 Master Key 的过程被集成在安全飞地内, 这直接禁止攻击者通过取出 EFI 的加密 key 进行暴力破解. 安全飞地能实现有效的 fail2ban (失败-等待, 超过尝试次数-禁止). 即便攻击者利用的是 Recovery 进行攻击, 仍然需要通过安全飞地的 fail2ban 机制, 并且无法导出 key.

并且为了让用户有效的进行分区抹除操作, 上图中的 Volume Key (存储于硬盘)会被 T2 抹除, 所以包括 T2, 其他任何人都无法再解密分区内容. 并且 Find My Mac/MDM 机制都能让 T2 动用独立的 Media Key 去解析分区中关键数据块的信息, 通过抹除关键数据块, 就让数据的恢复变得不可能, 极大提升了擦除效率和设备安全性.

同时恢复机制得到了改进. 如果直接暴力尝试导致机器被 ban, 可以通过 iCloud 远程恢复密钥(初始化于出厂, 重置于通过 Apple Configrator 的设备恢复过程, 可以理解为 iTunes 和 iPhone 的关系), FileVault 恢复密钥, 和机构密钥(应该和配置了 MDM 采购权限的公司有关, 这些设备出厂时就有特殊的安全特性, 并且终身绑定) 都可以增加最大尝试次数, 每项 60 次, 最多增加 180 次. 即理论可以尝试 210 次解锁操作.

最后一道保险, 就是默认启动的安全启动机制. 在完全保护下, 采用类似 TPM 的启动保护信任机制, 类似 iPhone 的 iBoot 启动验证, T2 的启动固件验证 iBoot 模块的签名, 然后 iBoot 验证 T2 内核缓存签名, T2 内核缓存验证自身 EFI 固件的签名, 如过通过, 则通过嵌入式 SPI 接口访问到 Intel CPU 的 UEFI firmware, 并验证核心 boot.efi 的签名, 随后验证整个 macOS 的签名. 对于 windows 来说, 则通过 boot.efi 验证 bootx64.efi 的签名. 并且默认情况只接受 Microsoft Windows 团队的签名, 即 Insider 测试版无法通过启动验证, 必须放低检验级别. 对于外部存储器也有特别的策略.

最后总结:

  • T2 替代了传统的 NVMe 主控, 可以不借助调试排线, 通过新的安全访问方式从别的设备访问机身内存储, 但是 Apple 并没有公开这个特性. 当然, 这个调试排线虽然有第三方售卖, 但是官方的 Genius Bar 也没有真正利用这个排线帮助用户迁移数据
    • 更高的安全性意味着更小的用户权限, 从长远看是值得的
  • 测试排线占据了主板的宝贵空间
    • 2018 MacBook Pro 提供了最大 4TB 的 SSD, 目前 2280 SSD 的容量天花板大概在 2TB 左右, 所以 iMac 也仅仅只能提供 2TB 的最大容量可选. 4TB 的容量对于需要随身大量视频工程的 Final Cut Pro X 用户有很大意义. 当然价格也非常感人
  • 可靠的备份比通过所谓数据恢复重要的多
    • 移动设备的存储没有 DWPD 保证, 也没有 RAID 支持, 长期使用不可靠
    • 盗窃, 意外损坏(跌落)是信息丢失的最大意外因素
    • 远程备份方案依借助 RAID(镜像/奇偶校验), 定期的 SMART 监控和硬盘替换作业, 以及基于磁带/光盘的冷存储备份归档机制, 外加基于 ceph 镜像等异地容灾机制, 提供了远高于本地的可靠性. 而 Apple 也提供了 iCloud 服务
    • 数据恢复服务主要面向的还是机械硬盘的恢复, SSD 的恢复业务还非常昂贵. 并且, 所谓的很多免费数据恢复服务都只是假设硬盘能够工作, 部分结构出现了损坏, 所以不是所有数据都能恢复. 一旦需要开盘, 价格都极为昂贵. 而采用机械硬盘的笔记本已经越来越少.
  • T2 的主要问题还是其自身 RTOS 不够成熟. 说白了就是 T2 这颗主控还不及格, 真的写坏了, 即便有调试排线也无济于事

Luv Letter

變幻莫測之物, 未曾改變之物.

Subscribe to Luv's Shelf

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!