“已加密”这个词带着一种令人安心的分量,那种让人不再追问下去的分量。大多数用户看到一个写着“加密备份”的复选框,就以为这意味着安全,到此为止。事实并非如此。加密只防御特定的威胁,而一台带备份的 Mac 至少涉及三个不同的加密层,每一层都在防御一种不同的攻击者。

少了其中任何一个,你都会留下一个漏洞。这三层分别是:源盘上的 FileVault、备份盘上的 Time Machine 加密,以及备份经过网络时线路上的 SMB3 加密。本文会逐一讲解每一层,准确说明它防御什么、不防御什么,最后给出一张威胁模型表格,你可以用它来审视自己的配置。

三层,每层一句话

  • FileVault 加密的是存放在你 Mac 内置磁盘上的数据,这样一来,一个把它开机的小偷没有你的密码就无法读取磁盘。
  • Time Machine 加密 加密的是备份本身,这样一来,偷走你 USB 硬盘的小偷(或者服务器被攻破的云端服务商)无法读取你的文件。
  • SMB3 加密 加密的是正在网络上传输中的数据,这样一来,处于你的 Mac 和备份服务器之间的攻击者无法窃听。

它们谁也无法替代谁。每一层都在防御一种不同的威胁。三者你都想要。

第 1 层:FileVault,源端的静态加密

FileVault 是内建于 macOS 的磁盘级加密。启用后,整个 macOS 启动盘都会用 XTS-AES-128 配合 256 位密钥加密。该密钥从你的登录密码派生,并(在现代 Mac 上)封存在安全隔区(Secure Enclave)内——那是 Apple Silicon 以及近期 Intel Mac 上 T2 芯片里的专用安全芯片。

FileVault 防御什么

  • 丢失或被盗、且处于关机状态的 MacBook。小偷看到的是一团加密的乱码。没有你的密码(或恢复密钥),数据在数学上就是不可访问的。
  • 被从 Mac 里拆出来的磁盘。即便把磁盘接到另一台机器上,其内容在块级别也是加密的。
  • 处置旧 Mac。抹掉加密密钥(macOS 在“抹掉所有内容和设置”时会这么做)会立刻使数据无法恢复。

FileVault 不防御什么

  • 已开机并已解锁的 Mac。一旦你登录,从操作系统的角度看,宗卷就是以明文挂载的。以你的权限运行的恶意软件看到的是明文。
  • 处于睡眠、且 FileVault 未主动重新锁定的 Mac。休眠文件理论上可能泄露密钥;现代 macOS 缓解了这一点,但威胁并非为零。
  • 备份本身。FileVault 保护的是源盘,不是目标盘。如果你的 Time Machine 备份未加密,那么即便 Mac 被锁定,数据在备份盘上仍是明文。

恢复密钥

当你启用 FileVault 时,macOS 会询问要把恢复密钥托管给 iCloud,还是存在本地。存在本地更私密(Apple 无法在法律请求时解密你的磁盘),但风险更高(丢了它数据就没了)。iCloud 更方便,但意味着 Apple 持有一把密钥。没有客观上正确的选择;这取决于你的威胁模型。无论你选哪种,都请把恢复密钥也存到某个物理的地方,比如保险箱里的一张打印页。

第 2 层:Time Machine 加密,备份端的静态加密

当你在设置 Time Machine 目标盘时勾选“加密备份”,macOS 会用 AES-XTS-128 把备份创建为一个加密宗卷。你提供的加密密码用于派生宗卷密钥。密钥会存储在你的本地钥匙串里,这样后续备份就会自动进行,无需重新提示。

加密的备份存放在目标盘上的一个 sparsebundle 里(一个由若干“band”文件组成的文件夹,它们共同构成一个虚拟磁盘)。sparsebundle 外壳本身是明文,但里面的一切(文件内容、文件名、目录结构、元数据)都作为一个 CoreStorage 或 APFS 宗卷被加密。

Time Machine 加密防御什么

  • 被盗的备份盘。拿走你 USB SSD 的小偷看到的是密文。
  • 云服务器被攻破。如果你的备份存放在云端 SMB 共享上,服务商永远只存储加密的数据块。即便是恶意管理员或服务器端的入侵,没有你的密码也什么都看不到。
  • 对备份服务商的传票或法律请求。服务商没有明文可以交出。他们能拿出的是密文,而没有密钥密文毫无用处,且密钥从不离开你的 Mac。这正是人们把一种方案称为“零知识”时所指的含义。
  • 处置旧的备份硬件。重新格式化一块未加密的备份盘并不会立刻真正抹掉数据(只是把它标记为已删除);而一个已丢失密钥的加密宗卷则相当于当场就被抹掉了。

Time Machine 加密不防御什么

  • 同时拥有你的备份和你的加密密码的攻击者。加密的强度只等于密钥保密的程度。
  • 源 Mac 上、且能访问备份共享的勒索软件。如果备份共享已挂载且可写,勒索软件可以加密或删除其中的内容。加密保护的是机密性,而非完整性或可用性。
  • 备份过程中的网络窃听。加密的数据块总得以某种方式经过网络传输;如果传输是明文的,路径上的攻击者可以收集密文用于离线暴力破解尝试。因此才有了 SMB3。

第 3 层:SMB3 加密,传输中

SMB3 是 macOS 用来与网络文件共享通信的网络协议。从 SMB 3.0(2012 年)开始,该协议支持使用 AES-128-CCM 的会话级加密;SMB 3.1.1(2016 年)加入了 AES-128-GCM,这正是现代 macOS 与具备相应能力的服务器默认协商所采用的。

SMB3 加密防御什么

  • 不怀好意的咖啡馆 Wi-Fi。同一网络上的攻击者无法读取你的流量。
  • ISP 层面的窥探。你的 ISP 能看到你在与某个特定 IP 进行 SMB 通信,但无法读取文件内容。
  • 被攻破的中间硬件。处于你的 Mac 和备份服务器之间路径上的中间人,在 SMB 层看到的只有密文。
  • 传输中的篡改。SMB3 还会对流量签名,因此攻击者无法在不破坏签名的情况下注入或修改数据。

SMB3 加密不防御什么

  • 服务器本身。SMB3 是逐跳的:客户端加密,服务器解密。服务器在 SMB 层看到的是明文(这正是你还需要在其之下加一层 Time Machine 加密的原因)。
  • 落到目标盘之后的一切。一旦写入磁盘,SMB3 就已完成它的工作,不再参与其中。
  • 并未真正协商 SMB3 加密的服务器。某些较旧的 NAS 设备和某些廉价主机只支持 SMB1 或未加密的 SMB2。如果你允许,macOS 就会回退。关于协商细节以及如何验证,请阅读 SMB3 详解

密钥究竟存在哪里

搞清楚每把密钥存在哪里,有助于你推断攻击者需要攻破什么才能突破每一层。

  • FileVault 密钥:从你的登录密码派生,在 Apple Silicon 和 T2 Mac 上封存于安全隔区。恢复密钥托管给 iCloud 或打印出来。
  • Time Machine 加密密钥:从你在设置时选择的加密密码派生。缓存在你的本地钥匙串里,因此后续备份不会提示。密钥从不离开你的 Mac。
  • SMB3 会话密钥:通过类似 Diffie-Hellman 的密钥交换在每次会话中重新协商。在连接持续期间,它只存在于你的 Mac 和服务器的内存中。

威胁模型表格

这是务实的视角:每一层实际上到底防御哪些威胁?

威胁 FileVault TM 加密 SMB3
被盗的 MacBook(关机状态)
被盗的备份盘
不怀好意的咖啡馆 Wi-Fi 部分
被攻破的云服务商管理员 部分
对备份服务商的传票
针对备份的勒索软件
丢失的 MacBook,屏幕已解锁
处置旧的备份盘

这里有几行比其他行更值得注意。“针对备份的勒索软件”一行全线为“否”,因为机密性加密并不解决可用性问题。抵御勒索软件的防线是版本化快照,加上一份离线或写保护的副本,而不是加密。“丢失的 MacBook,屏幕已解锁”一行则提醒你:任何假设设备在已登录状态下落入攻击者之手的威胁模型,都能击穿每一个加密层,因为操作系统本身正在实时解密。

为何三者要一起用

现在把这张表再跑一遍,但只启用其中一层。

如果你有 FileVault 却没有 Time Machine 加密:偷走你备份盘的小偷(备份盘往往和 Mac 放在同一个房间)就能完全访问一切。如果你的备份在云端,任何攻破云服务商的人都能完全访问。

如果你有 Time Machine 加密却没有 FileVault:把你被盗的 MacBook 开机的小偷就能完全访问你的实时数据。备份是安全的;源端不是。

如果你两个静态层都有,却没有传输中的 SMB3:咖啡馆 Wi-Fi 网络上的攻击者确实能捕获你的密文,但他们也可能捕获元数据、流量模式,以及 SMB 之上任何未加密的协议层。虽不致命,但你白白放弃了这道轻松的加固。

三者你都想要。它们单独都很廉价。合在一起,它们覆盖了几乎所有威胁,只差“攻击者在你已解锁的机器上拥有 root 权限”这一种——而对此,任何加密对任何人都无济于事。关于 Capsule Backup 如何在云端 Time Machine 的语境下组合这些层,请参见我们的安全页面

如何启用每一层

FileVault

系统设置 → 隐私与安全性 → FileVault → 打开。选择 iCloud 或本地恢复密钥。等待初始加密完成(现代 Mac 会在你工作时后台完成;较旧的 Mac 可能需要数小时)。

Time Machine 加密

系统设置 → 通用 → Time Machine → 添加备份磁盘。出现提示时,勾选“加密备份”。设一个强密码(来自密码管理器的 16 位以上字符最为理想)。关于设置、密码选择和恢复的深入讲解,请参见加密备份指南

SMB3 加密

在连接现代 SMB 服务器的现代 macOS 上,大多是自动的。若要明确强制它,请编辑 /etc/nsmb.conf

[default]
signing_required=yes
smb_neg=smb3_only

这会强制 SMB3 协商并拒绝回退。在公司 Mac 上,或任何你无法承受静默降级的地方,请使用它。关于协议细节以及如何验证,请参见 SMB3 详解

常见错误

  • 把登录密码复用为 Time Machine 密码。一次泄露就同时攻破两层。请使用来自密码管理器的不同密码。
  • 没有把恢复密钥或加密密码存到某个物理的地方。如果你的 Mac 坏了,而密码只存在它的钥匙串里,备份就成了一块砖头。
  • 轻信“备份在云端,所以它一定是加密的”。许多云备份工具在服务器端用服务商持有的密钥加密,这意味着服务商能够解密。这比用户持有密钥的客户端加密要弱得多。永远要核查威胁模型。
  • 忘了完整性威胁。加密保护的是机密性,而非可用性。请把加密与版本化快照(Time Machine 会做这件事)以及一份离线或异地副本搭配使用。商务用户尤其应当把勒索软件也纳入规划。
  • 单层思维。“我有 FileVault,我很安全”是这份清单里最常见的错误。请重读那张威胁模型表格。

附加层:作为 SMB 外壳的 VPN

通过开放互联网使用 SMB3 是可行的,但有些用户更愿意再把连接包裹进一条 VPN 隧道。WireGuard 是现代的选择(快、小、经过审计);OpenVPN 是更早的标准。VPN 用另一层密钥再次加密 SMB3 流量,这主要为你带来纵深防御,以及一个用于网络策略的统一收口点。它并不替代三个核心层中的任何一个;它增加了第四层。

对于大多数处于普通家庭或办公网络的用户,单靠 SMB3 就足够了。对于处于共享、不怀好意或不受信任网络(会议、酒店、联合办公空间)的用户,VPN 是一项值得的补充。与 iCloudBackblaze 这类专有云同步方案相比,带三层加密的云端 Time Machine 模式在“谁能读取你的数据”这件事上给你更强的保证。

小结

加密不是单个开关。它是由三个协作的层叠成的一摞:

  • FileVault 防御设备丢失。
  • Time Machine 加密 防御备份被攻破(也正是它让一份云端备份真正私密)。
  • SMB3 防御传输过程中的网络观察。

三者都启用,把密钥安全地保管好,你就拥有了一套无需定制工具即可抵御现实攻击者的备份架构。

常见问题

iCloud 备份和 Time Machine 加密一样安全吗?

这取决于你指的是哪个 iCloud 功能,以及是否启用了高级数据保护。标准 iCloud 备份在传输和静态存储时都会加密,但密钥由 Apple 持有,这意味着 Apple 在技术上可以解密它们并响应法律请求。高级数据保护将大多数类别转为端到端加密,密钥仅保存在你的设备上,这更接近加密 Time Machine 备份所采用的模式。在上传到云端服务商之前先在你的 Mac 上加密的 Time Machine 备份,从构造上就是端到端的:服务商永远只能看到密文。更多细节请参见我们的对比页面

我能在不重新开始的情况下加密一个已有的 Time Machine 备份吗?

通常不行。macOS 没有提供原地把未加密的 Time Machine 备份转换为加密备份的开关。你可以抹掉目标盘,勾选“加密备份”重新添加,让 Time Machine 从头开始一次全新的完整备份。在某些 macOS 版本上有一种变通方法:你可以从磁盘工具加密底层的 APFS 宗卷,Time Machine 会继续向其写入,但这并非官方支持,且在不同版本间表现不一致。干净的答案是:开始一次全新的加密备份;在新备份成熟之前把旧的保留为只读。

如果我的 Mac 坏了,我还能解密我的 Time Machine 备份吗?

可以,只要你记得加密密码。加密密码独立于 Mac 本身;它用于派生解密 sparsebundle 的宗卷密钥。把备份盘插到另一台 Mac 上(或从另一台 Mac 挂载云端共享),macOS 就会提示输入加密密码。输入后你即可访问。密码被保存在坏掉的 Mac 的钥匙串里只是方便,并非必需,这正是为什么你应当在设置备份的当天就把它写入密码管理器。

加密会拖慢 Time Machine 吗?

在现代 Mac 上几乎察觉不到。Apple Silicon 和近期的 Intel Mac 在 CPU 中内置了硬件 AES 加速,因此宗卷级的 AES-XTS 在实际工作负载下带来的开销远低于 5%,通常更接近 1% 到 2%。实际吞吐量往往受限于磁盘速度(USB 2 或机械硬盘)或网络速度(Wi-Fi、上传带宽),而非加密。不加密备份所换来的边际速度提升,几乎从来都不值得。

Capsule Backup 使用的 SMB3 加密真的是端到端的吗?

单靠 SMB3 加密是逐跳的:客户端加密后发给服务器,服务器解密,然后服务器存储明文(除非有别的东西对它加密)。让 Capsule Backup 的方案实现端到端的,是在其之上叠加 Time Machine 加密:你的 Mac 在发送之前用从你的密码派生的密钥以 AES-XTS 加密数据。SMB3 随后再对这些已加密的数据块进行传输加密。服务器永远只能看到来自 Time Machine 的密文。即使是我们团队也无法解密你的备份。

Capsule Backup 与 Apple Inc. 无任何关联,亦未获得其背书。Time Machine、FileVault、macOS 和 Finder 均为 Apple Inc. 的商标。