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 类似的历史元数据恢复流程。
为什么加密 APFS 需要先解锁
普通 APFS 的文件系统 metadata 可以直接解析。加密 APFS 中,很多 metadata block 和 file extent 在磁盘上是密文。没有正确 key 时,扫描器看到的是随机字节,无法稳定识别文件树、文件名或 extent。
Apple 的 Apple Platform Security 是理解 Apple 安全模型的公开入口。Apple 归档的 Apple File System Guide 可作为 APFS snapshot 和 copy-on-write 元数据的背景资料。
解锁阶段
用户 passphrase 不会直接作为文件数据解密密钥。它用于解锁 APFS keybag 中的 key material,最终得到 volume master key。
几个关键点:
- passphrase 错误时,无法得到 volume master key。
- 解锁后的 key 只用于当前扫描和恢复路径。
- 恢复日志和支持报告不应保存 passphrase。
- live encrypted disk 在扫描时仍可能变化,长时间工作更适合先做镜像。
元数据扫描阶段
加密卷解锁后,扫描器沿用高置信度 APFS 恢复模型:建立当前基线、解析旧元数据视图、做差异比较、输出已经消失的文件。
历史来源与普通 APFS 恢复相同:
- checkpoints。
- snapshots。
- OMAP root history。
- OMAP transaction history。
- 可选 carved metadata nodes。
差异在于:每次读取加密 metadata,都必须先解密,才能解释为 APFS tree node 或 file record。
还原阶段
用户选择候选后,恢复流程会回到候选对应的历史视图。工具定位文件对象,读取 extent 列表,解密物理块,然后写出明文文件。
为什么 crypto 位置很重要
加密 APFS 的 file extent 不只告诉工具物理位置,也参与决定解密位置。物理 block 告诉工具从哪里读;crypto identifier 告诉工具如何为该文件范围定位 AES-XTS 解密。
即使 passphrase 正确,如果使用了错误的历史视图或错误的 crypto 位置,输出也可能不可读。
加密盘 deep scan
当普通历史文件列表不完整时,加密盘 deep scan 会更有用。它不是盲目扫描密文,而是先解密候选 metadata 和 extent,再检查已知文件签名和文件大小边界。
deep scan 候选通常包含:
- 历史 xid。
- object id。
- logical offset。
- candidate size。
- 检测到的文件类型。
- partial 状态。
普通 APFS 与加密 APFS 的差异
普通 APFS 主要依赖历史元数据和旧数据块是否还在。加密 APFS 也依赖这两个条件,但额外增加一个前提:必须有正确 passphrase。
实操建议
- 确认目标 APFS volume 是 encrypted。
- 长时间扫描前先验证 passphrase。
- 恢复输出写到另一块物理磁盘。
- 先做历史元数据扫描。
- 普通扫描找不到目标时,再使用 encrypted deep scan。
- 不要把 passphrase 写进支持报告或日志。
技术来源
- Apple: Apple Platform Security。
- Apple: Apple File System Guide。
FAQ
没有 passphrase 可以恢复 APFS 加密盘吗?
基于 metadata 的恢复不行。扫描器需要正确 key 才能解密 APFS metadata 和 file extent。
加密会阻止删除文件恢复吗?
加密不会改变 APFS 的历史元数据模型,但必须先成功解锁,才能解析历史 metadata。
为什么解密成功后仍然可能恢复失败?
即使 passphrase 正确,旧 metadata 或数据 block 也可能已经被覆盖。