Back to blog

为什么 APFS 加密电脑极难恢复文件

从 keybag、AES-XTS、checkpoint、snapshot、OMAP、TRIM 和覆盖写入解释为什么 APFS 加密 Mac 删除文件恢复非常困难。

为什么 APFS 加密电脑极难恢复文件

APFS 加密 Mac 的删除文件恢复很难,因为恢复工具同时面对两个问题:第一,必须正确解锁并解密 volume;第二,即使解密成功,也必须找到还没有被覆盖或丢弃的 APFS 历史元数据和数据块。

English version: Why APFS Encrypted Macs Are Extremely Hard to Recover.

简短结论

APFS 加密不是只隐藏文件名。它会让恢复软件依赖的 filesystem structures 和 file data 在磁盘上以密文形式存在。即使用户提供了正确密码,恢复仍然取决于旧 checkpoint、snapshot、OMAP mapping、file record 和 physical block 是否还存在。

Rendering diagram...

第一道障碍:加密

在未加密 APFS volume 上,恢复扫描器可以直接读取 filesystem block,并解释 APFS 结构。在加密 APFS volume 上,同样的 block 在正确 key chain 解锁前都是 ciphertext。

Rendering diagram...

没有正确 passphrase 或 recovery key,基于元数据的恢复在第一步就被挡住了。扫描器也许能看到原始磁盘 sector,但这些 sector 不能稳定提供 directory record、inode record、文件名、extent list 或文件内容。

这很关键,因为 APFS 恢复最可靠的方式是使用 metadata。raw file carving 有时可以识别 JPEG、MOV、PDF、ZIP 或文档签名,但密文不像这些文件格式。

第二道障碍:APFS 历史不是备份

APFS 使用 copy-on-write。新的 metadata 会写到新位置,旧 metadata 可能在 checkpoint、snapshot 或 OMAP history 中保留一段时间。删除文件恢复就是利用这段历史。

Rendering diagram...

但 APFS 历史不是永久恢复数据库。随着文件系统继续分配空间、压缩 mapping、删除 snapshot 或更新 object map,旧 metadata 消失是正常现象。如果历史 file record 没了,恢复工具可能失去路径、文件名、大小和 extent 布局。

第三道障碍:extent 指向的数据必须还在

找到旧 file record 只是第一步。删除文件记录通常会指向 extent,也就是文件内容在磁盘上的范围。

Rendering diagram...

如果这些 physical block 已经被新文件复用,旧数据就没了。如果存储设备已经丢弃这些 block,旧数据也没了。加密不能阻止覆盖写入;它只是要求恢复工具必须先正确解密,才能验证数据。

为什么 SSD 会让恢复窗口更短

现代 Mac 通常使用 SSD。SSD 可能在内部擦除或回收已删除 block,尤其是操作系统通知设备这些 block 不再需要时。这会让恢复窗口比传统机械硬盘短很多。

Rendering diagram...

实际建议很简单:重要数据误删后,尽快停止使用这台 Mac。安装软件、下载文件、浏览网页、云同步、把恢复文件导回同一块盘,都可能覆盖恢复所需的证据。

正确密码是必要条件,但不是充分条件

正确密码可以解锁加密 APFS volume。但它不能恢复已经被覆盖的 metadata,不能恢复已经删除的 snapshot,也不能恢复已经被复用的数据块。

Rendering diagram...

这就是为什么两个看起来相似的 APFS 加密案例,结果会完全不同。刚删除、电脑使用很少的文件,metadata 和 block 可能还在。删除很久、期间持续使用的文件,metadata 和 block 可能都已经消失。

为什么 FileVault 案例特别敏感

很多用户会把 APFS 加密称为 FileVault。FileVault 是 macOS 面向用户的全盘加密功能。对恢复来说,关键点是:扫描器必须先有有效解锁路径,才能解释 APFS 结构。

Rendering diagram...

恢复流程不应该把密码写入日志或支持报告。条件允许时,也应优先扫描磁盘镜像或稳定源,因为 live system 在扫描期间仍可能持续改变文件系统。

谨慎的恢复流程应该是什么样

APFS 加密恢复应把解锁、扫描、候选选择和导出分开处理。

Rendering diagram...

比较安全的顺序是:

  1. 立即停止向源 Mac 或源盘写入。
  2. 条件允许时先做磁盘镜像。
  3. 只在扫描阶段解锁加密 APFS volume。
  4. 搜索 checkpoint、snapshot 和 OMAP history。
  5. 恢复结果写入另一块物理磁盘。
  6. 批量导出前先验证预览。

常见误解

加密不等于删除。加密保护数据不被无 key 读取。删除会改变 filesystem metadata,并可能释放 block 供复用。恢复工具同时需要 key 和还存在的历史信息。

snapshot 不是必然的救命点。snapshot 可以保留旧状态,但它可能不存在,可能没有覆盖目标时间点,也可能已经被系统策略或用户操作删除。

raw scan 对密文不是魔法。没有解密时,原始加密 sector 不会暴露普通文件签名。解密后,raw scan 可能帮助寻找碎片,但碎片化文件仍然最好依赖 metadata。

实操建议

如果你在 APFS 加密 Mac 上删除了重要文件,最重要的是立刻减少写入。尽量不要把恢复软件安装到同一块内置盘。不要把恢复结果写回同一个 APFS volume。数据越重要,越应该先保护源盘,再开始扫描。

技术来源

FAQ

没有密码能恢复 APFS 加密盘吗?

基于 metadata 的恢复基本不行。扫描器需要有效解锁路径,才能解析加密 APFS metadata 并解密 file extent。

密码正确就一定能恢复吗?

不一定。密码只解决加密障碍。恢复还取决于历史 metadata 和旧数据块是否仍然存在。

为什么刚删除的文件更容易恢复?

因为删除时间越短,APFS metadata、OMAP mapping、snapshot 或 physical block 被覆盖、丢弃的概率通常越低。