我意识到这个问题可能与编程无关,并且由于这个idéa的直观逻辑错误,许多人听起来都是一个愚蠢的问题。
我的问题是:是否有可能构建一个可以解密加密数据的加密方案(可用图灵完整的编程语言实现),而不会将解密密钥暴露给解密方?
当然,我可以看到这种方案的直观逻辑错误,但正如通常使用形式逻辑和数学一样,必须在假设这样的陈述之前构建形式证明。这样的证据是否存在,还是可以轻松构建?
感谢您对此提出建议!
编辑:谢谢大家对本次讨论的宝贵意见!
答案 0 :(得分:4)
YES!这已经存在,被称为零知识协议和零知识证明。
请参阅http://en.wikipedia.org/wiki/Zero-knowledge_proof
但是,你必须有一个很好的数学和加密背景来理解它的工作方式和工作原理。
零知识协议的一个例子是Schnorr的ZK协议
答案 1 :(得分:1)
没有;但我不确定你问的是你想问什么。
显然,任何正在解密某事的人(即使用解密密钥)显然必须拥有该密钥,否则他们不会对其进行解密。
您是否在询问RSA,它具有不同的解密和加密密钥?或者您是否在询问一个系统,根据您使用的密钥,您可以获得不同的(有效)结果?
答案 2 :(得分:1)
如果通过“解密”只是意味着以某种方式得到明文,那么肯定可以创建这样的加密方案。事实上它已经存在:
采用非对称加密方案,例如:RSA,其中包含公钥但不包含私钥。现在我们得到一条用公钥加密的消息(因此需要私钥来解密它)。我们可以通过“暴力”得到原始信息(是的,这需要花费相当长的时间给出合理的密钥/块大小)通过所有可能的候选者并自己加密它们直到我们得到相同的加密文本。一旦我们得到相同的加密文本,我们就知道解密的文本是什么,而没有发现私钥。
答案 3 :(得分:0)
是
证明:加密可以被视为一个黑盒子,因此你得到一个输入和一个输出,你不知道黑盒如何转换输入以获得输出。
要对黑匣子进行逆向工程,您“只需”枚举所有可能的图灵机,直到其中一台确实产生与您所寻找的相同的结果。
当您想要反转加密时,同样适用。
当然,这将比宇宙可能存在的时间多得多,但算法在时间用完之前找不到匹配
。实际上,问题是如何有效地找到将解码输出的密钥。这是一个小得多的问题(因为你已经知道了算法)。
答案 4 :(得分:0)
它叫做编码。 但是每个拥有编码算法的人都可以“解密”该消息。这是无密钥加密的唯一方法。