2

我想知道一般情况下是否可以使用 RSA 或公钥加密算法进行以下操作。假设我们有 3 方,Alice、Bob 和 Caesar。

它们都有一个私钥-公钥对。现在,Alice 有两条信息,由 Alice 的公钥加密。爱丽丝将这些信息提供给鲍勃,让鲍勃选择其中之一。选择取决于鲍勃。该信息应该提供给 Caesar,Caesar 应该能够知道 Bob 选择了哪条信息,并能够将其解密回明文。但是,Alice 不应该知道 Bob 选择给 Caesar 的哪条信息,Bob 也不应该知道明文。

我想它可以这样做。爱丽丝用它的私钥加密两条信息,然后交给鲍勃。Bob 用 Caesar 的公钥加密其中一个并发送回 Alice。Alice 用 Alice 的私钥对其进行解密。爱丽丝仍然不知道实际信息,因为它现在是用凯撒的公钥加密的。Alice 将信息发送给 Caesar,Caesar 可以使用 Caesar 的私钥对其进行解密。

这条链可以吗?用 Alice 的公钥加密,用 Caesar 的公钥再次加密,用 Alice 的私钥解密,然后用 Caesar 的私钥解密。这些加密和解密的顺序会让明文最终出现还是只是垃圾?

我在问是否可以在“理论上”使用公钥加密来做到这一点,并且在实践中是否可以使用现有的库,或者它是否是一种太罕见的“特殊情况”,所以必须实施它从头开始?

谢谢!

编辑:

我想出了一个 Diffie-Hellman 启发的计划,就像这样......

假设您有 A、B 和 C 方。A 有两条信息,I1 和 I2,在这种情况下它们是单个整数。各方都有一个秘密,他们选择了自己,As、Bs 和 Cs,在这种情况下也是整数。

所以首先A通过添加它的秘密来“加密”信息并将其发送给B。

A  -- I1+As --> B
A  -- I2+As --> B

现在 B 选择将哪条信息提供给 C,假设在这种情况下它是 I1。B 将其秘密添加到其中,以便对 A 隐藏它。现在 B 将其发送回 A,然后 A 将信息传递给 C。

A <-- I1+As+Bs -- B
A  -- I1+As+Bs --> C

现在 C 也添加了它的秘密,并将其发送给 A,A 将其转发给 B。

A <-- I1+As+Bs+Cs -- C
A  -- I1+As+Bs+Cs --> B

B 通过减法删除其秘密,并将其发送给 A。A 也删除其秘密并将其发送给 C。

A <-- I1+As+Cs -- B
A  -- I1+Cs --> C

所以 C 可以减去它的秘密,并留下信息 I1。A 知道 I1 和 I2 的值,但不知道 C 有哪一个。B 知道 C 有信息 I1,但不知道它的值。你能看出这里有什么缺陷吗?是否有可能以某种方式采用适当的公钥加密?

4

3 回答 3

2

您正在搜索的内容称为多方加密。它是经典 RSA 算法的扩展版本,但它涉及超过 2 个素因数(三、四,等等……)

http://daim.idi.ntnu.no/masteroppgave?id=4699

或者,您可以对任意数量的用户使用标准的 2-prime RSA,但正如您自己发现的那样,必须保留用户加密/解密数据的顺序。

于 2012-12-23T16:41:37.917 回答
1

您所描述的链接的问题是,每次您使用公钥加密一大块数据时,您都会将其“包装”在只有那个人(或有权访问私钥的人)才能解密的加密中。因此,当爱丽丝从鲍勃那里收到一份用凯撒密钥加密的数据副本时,爱丽丝无法触摸它。

你能提供更多关于你到底想要达到什么目标的信息吗?感觉就像你在这个过程中投入了太多的心思。您是否正在寻找某种方式来验证收据或验证多方之间的数据完整性?

于 2012-12-23T12:05:33.843 回答
0

关于加密/解密的东西,所有重要的事情都已经说过了。但是,我想指出的逻辑中还有一个重大缺陷:

  • A加密两条信息并发送给B
  • B选择其中之一,但A一定不知道B的选择
  • B 使用 C 的公钥加密 A 的一条消息并将其发送回 A

这是一个缺陷:A 可以只使用 C 的公钥来加密它自己的原始消息,从而确定 B 选择了两个信息中的哪一个。

于 2013-11-28T08:30:31.167 回答