跳转到内容

Mix Network — 用信封套信封让邮局也不知道谁寄给谁

待复核

Mix network(混合网络)是一种让中间转发者也无法把”谁发的”和”谁收的”对上号的通信架构。

日常类比:你要寄一封匿名信,但怕邮局偷看信封上的地址。解决办法——把信装进一层信封,外面写”交给邮局 A”;邮局 A 拆开外层,看到里面还有一层信封,上面写”交给邮局 B”;邮局 B 再拆,才看到最终收件人。每个邮局只看见自己那层,谁都拼不出完整的”发件人 → 收件人”链路。

关键在于:即使某个邮局是坏人,它也只知道”信从谁那来、要往哪去”这一跳的信息。只要不是所有邮局联手,匿名就保住了。

这篇 1981 年的论文是 David Chaum 的博士工作,第一次把这个思路形式化:用公钥加密做”套信封”,用批量打乱做”切断时序关联”。之后所有匿名通信系统(Tor、匿名邮件、投票协议)都从这里长出来。论文只有 4 页,但定义了一个领域。

不理解 mix network,下面这些事都没法解释:

  • 为什么 Tor 要经过三个中继节点而不是一个代理——单层代理等于邮局看全局,三层才是 Chaum 的”多层信封”
  • 为什么端到端加密(Signal/TLS)保护的是内容而不是”谁跟谁在通信”——mix 才解决后者
  • 为什么区块链上的隐私币(Zcash、Monero)和匿名投票协议都需要”混币/混合”步骤
  • 为什么 VPN 不等于匿名——VPN 只是一跳代理,运营商看全部流量,mix 要求多跳且互不信任
  • 为什么”元数据泄露”比”内容泄露”更可怕——Chaum 1981 是第一个把这件事说清楚的人
  • 为什么匿名系统需要”足够多用户同时在线”——mix 的安全性取决于匿名集大小,人越少越容易被猜中

Chaum 的 mix 设计有三根支柱:

  1. 分层加密(嵌套信封):发送者用每个中继节点的公钥,从里到外一层层加密消息。第一个节点只能剥最外层,看到下一跳地址 + 仍然加密的内部载荷。类比:俄罗斯套娃,每个人只能打开最外面那一层。数学上,如果有 n 个节点,发送者做 n 次公钥加密,每个节点做 1 次解密——计算量线性增长。

  2. 批量混合(打乱顺序):节点不是收到一条就转一条——它攒够一批(比如 100 条),打乱顺序后统一发出。这破坏了时序关联:观察者没法用”10:01 进 → 10:01 出”来配对。打乱策略有多种变体:阈值混合(攒够 N 条发)、定时混合(每 T 秒发一批)、池混合(随机保留一部分到下一批)。

  3. 统一格式(填充对齐):所有消息在每一层都是等长的(用 padding 填充)。否则观察者可以用消息大小做指纹追踪。每层解密后长度会缩短(因为剥掉了一层地址),所以填充必须预先计算好,让每层输出都是固定尺寸。

三者缺一不可:只加密不打乱 → 时序攻击;只打乱不等长 → 大小匹配攻击;只等长不加密 → 内容匹配。这个三角关系是所有后续匿名系统的设计约束空间。

补充一个关键概念:匿名集(anonymity set)。一条消息的匿名集 = “这条消息可能来自的所有发送者集合”。mix 批量处理 100 条消息,则每条消息的匿名集大小为 100——攻击者最多有 1/100 的概率猜中。匿名集越大,隐私越强。这就是为什么 mix 系统需要大量用户同时在线。

假设 Alice 要匿名发消息 M 给 Bob,经过 mix 节点 X、Y、Z。Alice 需要事先知道 X、Y、Z 的公钥(通过公开目录获取):

Alice 构造:E_X( R1, Y地址, E_Y( R2, Z地址, E_Z( R3, Bob地址, M ) ) )
└── 最外层用 X 的公钥加密
└── R1, R2, R3 是随机填充,防止相同明文产生相同密文
节点 X:用私钥解密最外层 → 得到 (Y地址, 密文块) → 丢弃 R1 → 转给 Y
节点 Y:用私钥解密次外层 → 得到 (Z地址, 密文块) → 丢弃 R2 → 转给 Z
节点 Z:用私钥解密最内层 → 得到 (Bob地址, M) → 丢弃 R3 → 投递给 Bob

任何单一节点只知道”上一跳是谁”和”下一跳是谁”,不知道首尾。随机填充 R 保证即使 Alice 两次发相同消息,密文也完全不同——防止观察者通过密文指纹匹配。

案例 2:返回地址(Return Address)

Section titled “案例 2:返回地址(Return Address)”

论文还解决了”Bob 怎么回信给匿名的 Alice”。Alice 预先构造一个加密的返回路径:

返回地址 = E_Z( Y地址, K_Z ), E_Y( X地址, K_Y ), E_X( Alice地址, K_X )

Alice 把这个返回地址(一串密文)连同消息发给 Bob。Bob 要回信时,把回信内容附上这个返回地址交给节点 Z,Z 解密得到”下一跳是 Y”,层层转发直到回到 Alice。全程 Bob 不知道 Alice 的真实地址。这个机制后来演化成 Tor 的 hidden service(.onion 地址)——服务端匿名但客户端能访问。

案例 3:数字假名(Digital Pseudonym)

Section titled “案例 3:数字假名(Digital Pseudonym)”

Chaum 进一步提出:用户可以对不同组织使用不同假名,每个假名背后是同一个密钥但互不关联。比如你在论坛用假名 A、在邮件列表用假名 B,两个假名通过 mix 网络收发消息,观察者无法将 A 和 B 关联到同一个人。这是”去中心化身份”概念的源头,40 年后 W3C 的 DID(Decentralized Identifiers)/ SSI(Self-Sovereign Identity)仍在复用这个思路。

  1. 延迟 vs 匿名性的 trade-off:批量混合意味着必须等——攒够一批才发。实际部署中用户忍不了高延迟(邮件等几分钟 OK,即时通信不行),Tor 放弃了严格的批量混合改用低延迟中继,代价是更容易被流量分析攻击。教训:理论安全性和用户体验之间必须找平衡点。

  2. 全局被动观察者:Chaum 的安全模型假设攻击者只能观察部分链路。如果攻击者能同时看到所有节点的入口和出口(国家级监控),纯靠 mix 不够——还需要 cover traffic(假流量填充)。这也是为什么 Tor 对国家级对手的防御不完美。

  3. 节点合谋:如果 X、Y、Z 三个节点全被同一个攻击者控制,匿名性完全崩溃。所以现实系统(Tor)要求用户随机选路,并且节点由不同运营者独立运行。选路算法本身也成了攻击面——如果你能影响选路过程,就能把用户引到你控制的节点上。

  4. 重放攻击:攻击者截获密文,重复发给同一个 mix 节点,观察输出是否重复出现。Chaum 在论文中用”每条消息附带唯一随机数 + 节点记住已处理的”来防御,但存储开销随时间线性增长。后续系统改用时间窗口(只记最近 N 小时的)来限制存储。

适用

  • 匿名通信(邮件、即时消息、举报渠道)——核心用例,记者保护线人场景
  • 匿名投票 / 电子选举——选票经过 mix 后无法追踪到投票人,爱沙尼亚电子投票用过类似方案
  • 隐私保护的支付系统——混币(CoinJoin)本质是 mix 思想用于交易图
  • 元数据保护——当你关心的不是”内容被看”而是”谁跟谁在说话”
  • 匿名举报平台——SecureDrop(给记者投稿的工具)底层就是 Tor + mix 思路

不适用

  • 需要实时低延迟的场景(视频通话、在线游戏)——批量打乱引入不可接受的延迟
  • 端到端加密已足够的场景(只要保护内容、不在乎通信图谱暴露)
  • 小规模匿名集——只有 3 个人用 mix,打乱也没意义,匿名集太小等于没匿名
  • 需要问责的场景(金融审计、法律取证)——匿名 = 不可追溯,与合规要求冲突
  • 发送者和接收者都已公开的场景——比如公司内部邮件,通信双方身份本来就不是秘密

David Chaum 1979 年在 UC Berkeley 读博时想到这个方案。当时互联网还是 ARPANET,电子邮件刚刚出现,几乎没人担心”谁跟谁通信”会被监控。Chaum 是极少数在隐私威胁尚未显现时就开始设计防御的人。他后来说:“我意识到,如果我们不在系统设计时就把隐私考虑进去,等系统普及后再补就来不及了。”

论文 1981 年发表在 CACM(Communications of the ACM),仅 4 页。之后 Chaum 继续发明了盲签名(电子现金的基础,1982)、DC-net(信息论级别的匿名,1988)。他被称为”密码朋克教父”——虽然他本人从不用这个头衔。1990 年代他创办 DigiCash 公司尝试商业化匿名电子现金,虽然公司倒闭了,但思想活了下来。

20 年后(2002-2004),Roger Dingledine 等人设计 Tor 时,核心论文的参考文献第一条就是 Chaum 1981。再 20 年后(2020s),Signal 的 sealed sender 功能、加密货币的混币协议,仍然能看到这篇 4 页论文的影子。

有趣的时间线:

  • 1981:Chaum 发表 mix 论文
  • 1996:第一代 mix 邮件系统 Mixmaster 上线
  • 2002:Tor 项目在美国海军研究实验室启动
  • 2004:Tor 正式发布,成为目前最大的匿名网络
  • 2013:斯诺登泄密让公众意识到元数据监控的规模
  • 2017:Loopix 重新证明严格 mix 在现代网络仍可实用化
  1. 元数据比内容更危险——加密保护内容,mix 保护”谁跟谁”。这个区分是整个匿名通信领域的起点。斯诺登泄密后 NSA 官员说过:“我们杀人靠的是元数据”
  2. 分层加密 + 批量打乱 + 等长填充 三板斧构成匿名通信的最小完备防御。后续系统可以改参数、换策略,但这三个维度不可能绕过
  3. 安全和性能永远是 trade-off——Chaum 原始 mix 延迟高但安全性强,Tor 降低延迟但牺牲了抗流量分析。没有”既快又完美匿名”的方案
  4. 一篇 4 页论文可以定义一个领域 40 年——关键是抓住了正确的抽象层次。Chaum 没有讨论具体密码算法用哪个,只讨论了架构——所以 RSA 可以换成椭圆曲线,论文照样成立
  • Tor 设计论文:Dingledine, Mathewson, Syverson, “Tor: The Second-Generation Onion Router”, USENIX Security 2004(Chaum mix 的最成功工程实现)
  • Mixminion(第三代 mix 邮件系统):Danezis, Dingledine, Mathewson, 2003(严格遵循 Chaum 的批量混合模型)
  • 流量分析攻击综述:Danezis & Diaz, “A Survey of Anonymous Communication Channels”, 2008(系统梳理了 mix 的各种攻击面)
  • Chaum 的盲签名论文:“Blind Signatures for Untraceable Payments”, Crypto 1982(mix + 盲签名 = 匿名电子现金)
  • Loopix:Piotrowska et al., “The Loopix Anonymity System”, USENIX Security 2017(现代 mix 网络设计,解决了延迟问题)
  • tor-2004 —— Tor 是 Chaum mix 的实用化继承者,用三跳洋葱路由替代严格批量混合
  • diffie-hellman-1976 —— mix 的分层加密依赖公钥密码学,DH 是公钥交换的基础
  • rsa —— Chaum 论文中实际使用 RSA 做分层加密的公钥原语
  • tls-1.3 —— TLS 保护内容(传输层加密),mix 保护元数据(通信图谱),两者互补
  • bitcoin —— 比特币交易图谱公开,CoinJoin 混币方案直接复用 mix 思想
  • libsignal —— Signal 协议保护消息内容,但通信元数据仍依赖服务器信任;sealed sender 借鉴 mix 思想
  • wireguard-2017 —— 现代 VPN 保护传输隧道,但单跳 VPN 不提供 mix 级别的匿名性