我想知道一般情况下是否可以使用 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,但不知道它的值。你能看出这里有什么缺陷吗?是否有可能以某种方式采用适当的公钥加密?