第 3 课,共 4 课 · 8 分钟
端到端加密保护什么,又不保护什么
内容只是一段对话所暴露信息的一部分。元数据、端点和备份可能同样重要——而加密并不覆盖这些。
端到端加密(E2EE)是软件世界里最让人安心的说法之一,也是最容易被误解的说法之一。电子前哨基金会(EFF)的 Surveillance Self-Defense 指南对它有精确的定义:它“确保信息被最初的发送者转变为一条秘密消息……并且只由最终的接收者解码”。这对消息内容来说是一个强有力的保证。但它并不是对这段对话其他一切事情的保证。
E2EE 实际保护的东西:内容
当一款消息应用正确实现了端到端加密时,运营该服务的公司无法读取经过自己服务器的消息——只有发送者的设备和接收者的设备持有解密所需的密钥。Signal 公开发布的技术文档描述了背后的机制,包括双棘轮(Double Ratchet)算法,该算法的设计目标是“无法从后面的密钥推算出前面的密钥”:即便某一把密钥后来被暴露,过去的消息依然受到保护,这种性质被称为前向保密性。这一部分承诺,在正确实现的情况下经得起考验,而且和一条明文短信或一封未加密的邮件相比有实实在在的区别——后两者路径上的任何服务器都能读取。
E2EE 不保护的东西:元数据
EFF 的指南对这个缺口说得很直接:加密“隐藏了你消息的内容,但不隐藏谁在和谁通信,或者什么时候通信,或者通信有多频繁”。元数据——谁联系了谁、在什么时间、持续了多久、从什么位置——可能和消息本身一样能揭示信息。知道一个线人在某篇报道发出的前一晚给某位记者打过电话,即便对话内容一个字都没被读到,也足以让这个线人的身份暴露。有些服务专门致力于减少这种暴露:Signal 的“隐藏发送者”(sealed sender)功能的设计目标,是让它自己的服务器不需要知道某条消息是谁发出的,只需要知道要送达给谁,不过 Signal 自己关于这项功能的说明也指出,抵御更高级的流量分析——利用时间信息和 IP 地址——仍然是一个正在推进中的领域,而不是一个已经解决的问题。
E2EE 不保护的东西:端点
加密保护的是数据在两台设备之间传输的过程。它无法保护一台设备本身已被攻陷之后的数据。EFF 明确指出:“如果你的端点……被攻陷,你加密的通信也可能被攻陷。”一款拥有屏幕读取权限的有害应用、一台被别人解锁的设备,或者接收者选择把消息截图保存下来,这些都超出了加密所能应对的范围——消息完全按照设计被正确解密,交给了本该读到它的那个人,而这个人随后对它做了什么,已经不在发送者的控制范围之内。
E2EE 不保护的东西:备份
一段在传输中被加密的对话,一旦被保存下来,并不会以同样的方式继续保持加密状态。EFF 指出,如果你“自动把加密对话的备份存储到云端”,这些备份可能不具备原本对话所拥有的那种端到端保护——取决于具体服务及其备份设置,一个云服务商(或者任何攻陷了该服务商的人,或依法强制其交出内容的人)可能读到一份原始消息本应受到保护、却在备份中失去保护的内容。检查一下某款应用的备份是默认就是端到端加密的,还是仅仅作为一个可选项,这件事值得做一次,而不是想当然地以为最强的设置是自动开启的。
| 端到端加密保护的是 | 它通常不保护的是 |
|---|---|
| 消息在发送者与接收者之间传输过程中的内容 | 谁给谁发了消息、什么时候发的,以及发送有多频繁(元数据) |
| 防止消息被服务提供商自己的服务器读取 | 一台本身已被攻陷的设备(屏幕被访问、手机被解锁、存在有害软件) |
| 如果协议具备前向保密性,即便某把密钥之后被暴露,过去的消息依然受保护 | 云端备份,除非这些备份被单独进行了端到端加密 |
为什么这种区分在实践中很重要
对于一个处于风险中的线人或客户来说,“我们用的是一款加密应用”并不足以完整回答“我们安全吗”这个问题,因为最重要的那些威胁——通过通话模式被识别出身份、手机被没收并被解锁,或者一份备份在法律程序下被交出——大多落在加密所能应对的范围之外。下一课接着讲让这一切得以运转的那个环节:加密所依赖的密钥和密码,以及当它们丢失或暴露时会发生什么。
要点
- 端到端加密保护消息内容,使其不被服务提供商或任何拦截连接的人读到。
- 它不隐藏元数据:谁跟谁说过话、什么时候说的,以及说了多少次,可能和消息本身一样能揭示信息。
- 一个被攻陷的端点——一台被黑或被解锁的设备——能在不破解任何密码学的情况下,让端到端加密失去作用。
- 加密对话的云端备份并不会自动获得端到端加密;需要查看具体应用及其设置。
- 前向保密性(用于像 Signal 双棘轮这样的协议)能保护过去的消息,即便之后某把密钥被暴露。
自我检测
1. 根据 EFF 的 Surveillance Self-Defense 指南,端到端加密保证的是什么?
- 没有任何人能察觉到你正在通信
- 消息内容只能被发送者和接收者读取,服务提供商读不到 — 正确。
- 备份总是能获得和实时消息一样的保护
- 接收者的设备不可能被攻陷
EFF 把 E2EE 定义为确保内容由发送者编码、只由最终接收者解码——这是一项关于内容的保证,而不是关于元数据或设备安全的保证。
2. 为什么元数据可能和消息内容一样能揭示信息?
- 元数据总是包含完整的消息文本
- 知道谁联系了谁、什么时候联系的,以及联系有多频繁,即便一条消息内容都没被读到,也可能揭示出一段关系或一件事 — 正确。
- 收集元数据是违法的
- 加密总是同时隐藏元数据和内容
联系模式——时间、频率、参与者——即便内容本身仍然无法读取,也可能暴露出敏感的关系。
3. 如果接收者的手机被安装了屏幕读取软件而遭到攻陷,发给他的一条端到端加密消息会发生什么?
- 加密会自动屏蔽这个有害软件
- 这条消息被完全按照设计正确解密,而被攻陷的端点随后可以把它暴露出去 — 正确。
- 这条消息永远不会被送达
- 端到端加密能完全防止这种情况发生
加密保护的是传输中的数据;它无法保护数据在一台本身已被攻陷的设备上被忠实解密之后的情况。
用 FireAI 动手做
在你自己的 Mac 上练习这节课的内容。
来源
- EFF Surveillance Self-Defense: What Should I Know About Encryption?
- Signal: Technical documentation
- Signal blog: Technology preview: Sealed sender for Signal
在你的 Mac 上实践
免费试用全部功能 17 天,无需绑定银行卡。