encryption - 如何加密验证对方是否拥有有效的私钥?
问题描述
是否有加密机制或算法来验证对方是否拥有有效的私钥而无法解密使用该私钥编码的消息?
例如,使用非对称加密私钥可以解密用公钥加密的消息,反之亦然,公钥可以解密用私钥加密的消息——据我所知,这通常是数字签名的工作方式。
这种机制对我不起作用,因为在服务器端我不想能够解密用私钥加密的消息......我只想“以某种方式”验证客户端是否有正确的私人可能解密“某些(加密)文件”的密钥。
如果有人为这个特定用例提供了解决方案/机制,只是想在这里提出这个问题?这在数学上是否可能实现?
解决方案
例如,使用非对称加密私钥可以解密用公钥加密的消息,反之亦然,公钥可以解密用私钥加密的消息——据我所知,这通常是数字签名的工作方式。
这并不完全正确。公钥的工作是加密只有私钥才能解码的消息。
所以在你的情况下,在最简单的实现中,
- 您创建一个密钥对并向用户提供您的公钥
- 用户创建一个密钥对并给你他们的公钥
- 您有一个“仅供您的眼睛”使用的文件,您使用用户公钥加密并放置在您的服务器上。
- 用户下载文件并使用用户私钥对其进行解码
您的主要安全问题是;
- 您如何创建和存储您的密钥对,对于用户来说也是如此
- 您如何交换公钥,您/用户如何验证彼此的公钥
网上有很多很棒的博客,它们回答了每个问题,而且更深入。
推荐阅读
- iis - 在 IIS 上作为应用程序(而非站点)安装和运行 ASP.NET Core
- java - 在 Eclipse 的运行时中找不到类,而 Maven 依赖项已包含在内
- angular - Angular 4 Cronstrue 概念 - 将 cron 表达式转换为字符串 [从 CronJobs 到 Cronstrue]
- angular - 如何在 Ionic 上预加载 iframe url
- python - 张量流分布式训练中的 FLAGS 和解析器
- c# - 带有datagridview c#的外部水平滚动条
- php - 使用 PHP 登录到 vCloud Director API
- android - 'com.example.volleyexample.app.AppController' 不可分配给 'android.app.Activity'
- string - 切入终端后执行字符串
- kubernetes - Kubernetes 集群集成“无法打开 apk 数据库:权限被拒绝”,同时通过 GitLab 安装 Helm Tiller