Encryption 如何以加密方式验证另一方是否拥有有效的私钥?

Encryption 如何以加密方式验证另一方是否拥有有效的私钥?,encryption,private-key,public-key,encryption-asymmetric,Encryption,Private Key,Public Key,Encryption Asymmetric,是否有加密机制或算法来验证另一方是否拥有有效的私有密钥 密钥而无法解密使用该私钥编码的消息 例如,使用非对称加密,私钥可以解密使用公钥加密的消息,反之亦然,公钥可以解密使用私钥加密的消息——据我所知,数字签名通常是这样工作的 这个机制对我不起作用,因为在服务器端,我不想解密用私钥加密的消息。。。我只是想“以某种方式”验证客户端是否有正确的私钥,该私钥可能会解密“特定(加密)文件” 我只是想问一下,是否有人提供了这个特定用例的解决方案/机制?这在数学上可能实现吗 例如,使用非对称加密,私钥可以解密

是否有加密机制或算法来验证另一方是否拥有有效的私有密钥 密钥而无法解密使用该私钥编码的消息

例如,使用非对称加密,私钥可以解密使用公钥加密的消息,反之亦然,公钥可以解密使用私钥加密的消息——据我所知,数字签名通常是这样工作的

这个机制对我不起作用,因为在服务器端,我不想解密用私钥加密的消息。。。我只是想“以某种方式”验证客户端是否有正确的私钥,该私钥可能会解密“特定(加密)文件”

我只是想问一下,是否有人提供了这个特定用例的解决方案/机制?这在数学上可能实现吗

例如,使用非对称加密,私钥可以解密使用公钥加密的消息,反之亦然,公钥可以解密使用私钥加密的消息——据我所知,数字签名通常是这样工作的

这是不完全正确的。公钥的工作是加密只有私钥才能解码的消息

因此,在您的情况下,在最简单的实现中

  • 创建密钥对并向用户提供公钥
  • 用户创建密钥对并将其公钥提供给您
  • 您有一个“仅供您查看”的文件,您使用用户公钥加密该文件并将其放置在服务器上
  • 用户下载文件并使用用户私钥对其进行解码
你的主要安全问题是

  • 如何创建和存储密钥对,与用户相同
  • 如何交换公钥,您/用户如何相互验证公钥

网上有很多很棒的博客,它们回答了每个问题,而且更深入。

用公钥加密一些随机数据,让客户端解密并检查结果。@tkausl这是一个简单的想法,但我仍然需要公钥不解密用私钥编码的数据。。。有没有一个非对称的算法可以这样做?
但是我仍然需要公钥不能解密用私钥编码的数据
我现在很困惑。您只是不想解密服务器上的任何内容,还是主动阻止公钥能够解密?如果是后者,就不要用私钥加密数据。(这被称为签名和验证,而不是在这个方向上进行加密和解密)。呃,消息不是用另一方的私钥加密的。它用您的公钥加密,用您的私钥解密。我们更倾向于使用混合密码系统,其中公钥密码系统用于密钥交换,对称算法用于派生密钥。这可以通过数字签名实现。您拥有客户端的公钥,您要求客户端对质询进行签名,并尝试使用客户端的公钥对质询进行验证。实际上,在中间人这样的攻击者面前保护这一点需要更仔细的设计和分析,这也是使用现有备受尊重的协议(如TLS)的一个重要原因。您试图防范哪些威胁?