David Chaum 是一位密码学家。他提出了验证消息、支付或资格的方法,目的不是在每次验证时,都自动把一个人的生活记录拼接成完整档案。理解他的贡献,可以从一个普通愿望开始:我想买东西,却不想因此暴露其他所有消费。
设想一位记者收到敏感信息。加密能隐藏内容,但观察者可能仍然知道谁在与谁通信。Chaum 在 1981 年的方案中处理的正是这个区别。消息经过一台称为 mix 的计算机,由它移除外层加密,再按不同顺序发出。接收者随后解开内部的加密内容。目标不只是藏住文字,还要让观察者难以把某个具体发送者与某个具体接收者对应起来。 [1]
如果中间节点只收到一条消息,又立刻把它发出去,消息的路径就很容易推断。因此,1981 年的设计会成批处理大小相同的消息。Mix 还必须拒绝重复项,否则攻击者可以多次提交同一条消息,再在输出中寻找对应的重复模式。改变消息的顺序和外观,是特定流程的一部分。仅仅让流量多经过一台计算机,并不能提供相同保护。 [1]
Chaum 在 1981 年也描述了由多个 mix 组成的链条。消息带有多层加密,各节点依次移除一层。在所提出的模型中,即使只有一个 mix 未被攻破,也可以隐藏整条链的输入与输出之间的对应关系。但这一结论依赖于加密和协议正确执行等前提,并不是对所有真实网络的匿名保证。举例来说,即便传输过程正常,那位记者被入侵的手机仍然会造成问题。 [1]
支付也有类似问题:能否验证钱的真伪,而不让发行者把每次消费与取款关联起来?Chaum 在 1985 年的文章中解释了 Blind Signatures,也就是对隐藏后的消息进行签名。用户准备一张数字票据,用数学方法将其盲化,再由银行对盲化后的形式签名,并从账户扣除相应金额。用户随后去掉盲化,原始票据上的签名仍然有效。票据可以验证,但仅凭这个签名,银行无法知道后来提交的票据来自哪次取款。 [2]
数字文件可以复制。如果彼得用一张票据在商店付款,之后又拿它付款,两份副本的签名看起来都有效。因此,在 1985 年描述的在线方案中,银行保存已接收票据的编号列表,并拒绝重复使用。收款人需要这项检查,而不只是验证签名。签名回答的是谁发行了票据,重复检查回答的则是票据是否已被兑付。这是两个不同的问题。 [2]
这个支付模型仍保留发行者。银行签发票据,并应当兑付;防止追踪本身不能保证银行会履行义务。Bitcoin 处理的是另一部分问题:网络按照共同规则和 Proof of Work,也就是计算工作量证明,验证 BTC 转移历史,而不依赖中央票据发行者。因此,带有盲签名的代币并不自动等于 BTC。比较支付系统时,应分别考察交易隐私,以及自己依赖谁履行承诺。 [3] [2]
Chaum 在 1985 年的文章不只讨论支付,也讨论如何在不同化名下证明资格或属性,让机构难以把同一个人的所有记录拼接起来。想象一项会员折扣:商店需要核实资格,却未必需要了解顾客此前的所有到访记录。这类证明称为 credential。方案并没有取消验证或服务规则,而是试图把必要事实的证明,与这笔交易不需要的信息分开。 [2]
周围的运行方式可能削弱一个强大的数学方法。Chaum 在 1985 年提醒,立即发生、方向相反的余额变化,可能让账户关联起来,即便签名本身没有暴露联系。在我们的例子中,彼得也可能为收货而主动提供姓名。因此,时间、账户和交给商家的信息,应与签名一并分析。Chaum 的贡献也包含这个问题:服务真正需要哪些信息,又有哪些信息只是因为系统这样设计,才被收集起来? [2]
要获得更完整的理解,请将本词条与以下词条结合阅读: Nick Szabo, Ralph Merkle, Blind Signature, Chaumian eCash. 反向关联还来自: DigiCash, Chaumian eCash, The Crypto Anarchist Manifesto, Blind Signature.