如何加密验证对方是否拥有有效的私钥?

问题描述

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

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

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

如果有人为这个特定用例提供了解决方案/机制,只是想在这里提出这个问题?这在数学上甚至可能实现吗?

解决方法

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

这不太正确。 公钥的作用是对只有私钥才能解码的消息进行加密。

所以在你的情况下,在最简单的实现中,

  • 您创建一个密钥对并将您的公钥提供给用户
  • 用户创建一个密钥对并为您提供他们的公钥
  • 您有一个“仅供您观看”的文件,您使用用户公钥对其进行了加密并放置在您的服务器上。
  • 用户下载文件并使用用户私钥对其进行解码

您的主要安全问题是;

  • 您如何创建和存储您的密钥对,对于用户来说也是如此
  • 您如何交换公钥,您/用户如何验证彼此的公钥

网络上有大量很棒的博客,它们对每个问题都有更深入的回答。