Back to blog

APFS 加密盘删除文件还原:keybag、AES-XTS 与历史元数据

解释 APFS 加密盘删除文件还原:先用 passphrase 解锁 volume key,再解密 metadata 和 extent,最后从 checkpoint、snapshot、OMAP 历史中恢复文件。

APFS 加密盘删除文件还原:keybag、AES-XTS 与历史元数据

APFS 加密盘恢复有两层工作。第一层是解锁 volume,让 APFS metadata 和 file extent 可以读成明文。第二层是搜索 APFS 历史元数据,找到删除候选,并按 extent 导出数据。

这篇文章说明 Ed Recovery 在用户提供正确 passphrase 时,对 APFS 加密卷采用的恢复思路。

English version: APFS Encrypted File Recovery.

简短结论

APFS 加密盘不能直接当作明文数据扫描。恢复工具需要先用 passphrase 和 APFS keybag 记录解锁 volume master key。之后,加密 metadata 和 file data 才能被解密,并进入与普通 APFS 类似的历史元数据恢复流程。

Rendering diagram...

为什么加密 APFS 需要先解锁

普通 APFS 的文件系统 metadata 可以直接解析。加密 APFS 中,很多 metadata block 和 file extent 在磁盘上是密文。没有正确 key 时,扫描器看到的是随机字节,无法稳定识别文件树、文件名或 extent。

Rendering diagram...

Apple 的 Apple Platform Security 是理解 Apple 安全模型的公开入口。Apple 归档的 Apple File System Guide 可作为 APFS snapshot 和 copy-on-write 元数据的背景资料。

解锁阶段

用户 passphrase 不会直接作为文件数据解密密钥。它用于解锁 APFS keybag 中的 key material,最终得到 volume master key。

Rendering diagram...

几个关键点:

  • passphrase 错误时,无法得到 volume master key。
  • 解锁后的 key 只用于当前扫描和恢复路径。
  • 恢复日志和支持报告不应保存 passphrase。
  • live encrypted disk 在扫描时仍可能变化,长时间工作更适合先做镜像。

元数据扫描阶段

加密卷解锁后,扫描器沿用高置信度 APFS 恢复模型:建立当前基线、解析旧元数据视图、做差异比较、输出已经消失的文件。

Rendering diagram...

历史来源与普通 APFS 恢复相同:

  • checkpoints。
  • snapshots。
  • OMAP root history。
  • OMAP transaction history。
  • 可选 carved metadata nodes。

差异在于:每次读取加密 metadata,都必须先解密,才能解释为 APFS tree node 或 file record。

还原阶段

用户选择候选后,恢复流程会回到候选对应的历史视图。工具定位文件对象,读取 extent 列表,解密物理块,然后写出明文文件。

Rendering diagram...

为什么 crypto 位置很重要

加密 APFS 的 file extent 不只告诉工具物理位置,也参与决定解密位置。物理 block 告诉工具从哪里读;crypto identifier 告诉工具如何为该文件范围定位 AES-XTS 解密。

Rendering diagram...

即使 passphrase 正确,如果使用了错误的历史视图或错误的 crypto 位置,输出也可能不可读。

加密盘 deep scan

当普通历史文件列表不完整时,加密盘 deep scan 会更有用。它不是盲目扫描密文,而是先解密候选 metadata 和 extent,再检查已知文件签名和文件大小边界。

Rendering diagram...

deep scan 候选通常包含:

  • 历史 xid。
  • object id。
  • logical offset。
  • candidate size。
  • 检测到的文件类型。
  • partial 状态。

普通 APFS 与加密 APFS 的差异

Rendering diagram...

普通 APFS 主要依赖历史元数据和旧数据块是否还在。加密 APFS 也依赖这两个条件,但额外增加一个前提:必须有正确 passphrase。

实操建议

  1. 确认目标 APFS volume 是 encrypted。
  2. 长时间扫描前先验证 passphrase。
  3. 恢复输出写到另一块物理磁盘。
  4. 先做历史元数据扫描。
  5. 普通扫描找不到目标时,再使用 encrypted deep scan。
  6. 不要把 passphrase 写进支持报告或日志。

技术来源

FAQ

没有 passphrase 可以恢复 APFS 加密盘吗?

基于 metadata 的恢复不行。扫描器需要正确 key 才能解密 APFS metadata 和 file extent。

加密会阻止删除文件恢复吗?

加密不会改变 APFS 的历史元数据模型,但必须先成功解锁,才能解析历史 metadata。

为什么解密成功后仍然可能恢复失败?

即使 passphrase 正确,旧 metadata 或数据 block 也可能已经被覆盖。