在 Chaum 的 RSA 构造中,请求者用随机因子盲化编码后的消息,取得隐藏值的签名,再去除盲化。正确性、盲性与不可伪造性是不同性质;签名本身并不防止复制代币或双重支付。
普通签名让签名者看到消息。盲签名协议把授权与内容分开,使其能够在不知道最终代币的情况下确认权利或价值。 [David Chaum — Blind Signatures for Untraceable Payments] [RFC 9474 — RSA Blind Signatures]
使用 RSA 公钥 (n,e),请求者编码消息 m,选取随机且可逆的 r,并发送 m′ = m·r^e mod n。盲化向签名者隐藏消息。 [David Chaum — Blind Signatures for Untraceable Payments] [RFC 9474 — RSA Blind Signatures]
签名者检查授权后,使用私有指数 d 返回 s′ = (m′)^d mod n。它看到的是盲化值和授权事件,而非最终消息。 [David Chaum — Blind Signatures for Untraceable Payments] [RFC 9474 — RSA Blind Signatures]
请求者计算 s = s′·r⁻¹ mod n。代数运算去除盲化,留下与直接对编码后的 m 签名相同的 RSA 签名。 [David Chaum — Blind Signatures for Untraceable Payments] [RFC 9474 — RSA Blind Signatures]
任何持有公钥的人都可验证 s^e 是否对应编码后的消息。最终的消息与签名对不必携带交互式发行过程的标识。 [RFC 9474 — RSA Blind Signatures] [CFRG — RSA Blind Signatures security analysis]
盲性意味着签名者无法可靠地把后来出现的代币与某次具体签名会话关联。安全编码和全新、不可预测的因子至关重要;教科书式 RSA 不是生产协议。 [RFC 9474 — RSA Blind Signatures] [CFRG — RSA Blind Signatures security analysis]
不可伪造性防止生成超过已授权签名交互次数的有效签名。one-more unforgeability 性质也考虑了同时运行多个会话的攻击者。 [RFC 9474 — RSA Blind Signatures] [CFRG — RSA Blind Signatures security analysis]
在 Chaum 式现金中,铸币方在提款时扣除资金或检查权利,并对硬币秘密进行盲签。之后它可验证自身债务,而不自动获知硬币来自哪个账户。 [David Chaum — Blind Signatures for Untraceable Payments] [GNU Taler — Blind signatures]
盲签名不防止复制代币,不隐藏商户信息和网络元数据,也不保证发行方的偿付能力或被攻陷钱包的安全。双重支付由已花费代币记录或额外协议处理。 [RFC 9474 — RSA Blind Signatures] [GNU Taler — Blind signatures]
Cashu 和 Fedimint 在 Bitcoin 与 Lightning Network 生态中使用对铸币方或联盟的盲签债权。其具体密码构造与上述 RSA 示例不同。交易隐私伴随着发行方托管及可用性风险。 [Cashu protocol specifications] [Fedimint documentation]
要获得更完整的理解,请将本词条与以下词条结合阅读: 大卫·乔姆, 乔姆式电子现金, DigiCash, Cashu, Fedimint, Bitcoin 隐私. 反向关联还来自: DigiCash, 乔姆式电子现金, Cashu, 大卫·乔姆.