📜  Chaumian 致盲

📅  最后修改于: 2022-05-13 01:57:02.022000             🧑  作者: Mango

Chaumian 致盲

Chaumian Blinding是一种执行交易的技术,即使对批准交易的中心化人物也不会透露交易双方都在场的人、交易时间或交易内容。 Chaumian Blinding 是由一位名叫David Lee Chaum的美国密码学家开发的。他在名为“无法追踪支付的盲签名”的论文中发表了这项技术。

考虑两个人 Adrian 和 Becky 通过银行进行货币交易的情况。在正常情况下,交易不是匿名的,银行知道 Adrian 和 Becky 之间交易的所有细节。通过使用 Chaumian Blinding,可以对银行进行匿名交易。

与 Chaumian 致盲密码系统相关的三个功能:

  • 一个签名函数“S”,只有交易的签名者知道,在这种情况下是银行。它有一个相应的反函数“S”,这是众所周知的。
  • 通勤函数“C”和它的逆函数“C”,都只有提供者知道,在这种情况下,是 Adrian。
    通勤函数“C”及其逆“C”以这样的方式创建:C`(S(C(x))) -> S(x)
  • 冗余检查谓词“r”。

假设 Adrian 有一个证书“x”,其中包含一个序列号和从他的帐户中借记的金额。为了有效地转移资金,他需要银行签署证书,从而确保证书的合法性。然后,他可以将该证书提供给商家,在本例中为 Becky。 Becky 可以使用此证书将资金存入她的帐户。银行将能够通过比较证书的序列号来识别交易中涉及的实体。

为了提供匿名性,Adrian 必须在将证书发送到银行之前使用函数C 对证书进行加密。

C(x)  ->  Cipher text 

因此,银行从 Adrian 那里收到密文,这对银行来说毫无意义。阿德里安希望银行签署密文。阿德里安通过向银行传递盲目信任来完成这项不合理的任务。 【盲信在文末解释】。

因此,银行使用签名函数“S”对加密证书进行签名。

S(C(x)) 

签名的加密证书被发送回 Adrian。 Adrian 使用证书上的逆函数“C”来获得“没有 Adrian 加密的签名证书”。

C`(S(C(x)))  ->  S(x) 

Adrian 将此签名证书发送给 Becky。 Becky 可以使用反向签名函数'S`'来验证签名证书。

S`(S(x))  ->  x 

Becky 将证书发送给银行,在使用反向签名函数'S`'验证证书的真实性后,银行将金额记入Becky 的账户。银行不知道发件人,因为他们对证书一无所知。

什么是盲目信任?
让我们以上述场景为例。 Adrian 和银行将通过以下方式进行盲目信任:

银行要求 Adrian 发送与他想要发送的类似的“n”个加密证书。 [假设 n 为 1000]。所有证书的金额相同,只是序列号发生变化。 Adrian 创建了 1000 个证书 [包括已经创建的证书],并将它们全部发送到银行。然后银行随机选择任何一个证书,并要求 Adrian 提供解密每个证书的密钥,除了它选择的证书。

Adrian 将 999 密钥发送到银行。它检查 999 个证书中的每一个,以确保它们都包含相同数量的钱。如果它们都包含相同数量的货币,那么银行会盲目相信剩余的一个证书也包含相同数量的货币,并在不知道该证书的序列号的情况下签署该加密证书。