首页 > 解决方案 > 一次性 RSA 公钥

问题描述

我是加密新手,我正在尝试了解有关 RSA 和 AES 加密的更多信息,并将其合并到我正在从事的项目中。

情况是,我有一台在本地网络上运行的服务器,我们称它为本地服务器。本地服务器通过 Internet 与远程 API 服务器通信,只有在 API 服务器上注册的用户通过 Oauth2 进行身份验证后才允许访问 API 服务器路由,该 Oauth2 在本地服务器上创建会话。一次只有一个用户登录到本地服务器。

我设定的目标是启用从 API 服务器到登录用户调用的本地服务器的文件传输。我在阅读各种在线资源后整理出的当前解决方案如下。

(假设用户正在登录服务器并且我们刚刚验证了他的身份)(1)本地服务器创建自签名证书(2)将带有消息摘要的公钥发送到 API 服务器(3)API 服务器验证消息,并创建 AES 密钥 (4) 使用来自本地服务器的公钥加密 AES 密钥,并使用消息摘要作为响应发送回本地服务器 (5) 本地服务器检查消息摘要并使用私钥解密AES 密钥。(6) AES 密钥将用于在 API 服务器上加密文件并在本地服务器上解密。(7) 在本地服务器和 API 服务器上都丢弃公钥 (8) 在用户下次登录时创建新的公钥。

据我所知,使用自签名证书可能会导致中间人攻击。这通常不是一个好习惯。然而,另一方面,很难为本地网络生成证书。

为这个模糊的问题道歉,但我正在尝试找出我的解决方案存在哪些潜在的安全问题。我很想了解这个话题,但我觉得我发现的大多数解决方案都不适用于我的场景。

所以我想问一下这样的协议是否可以接受?如果公钥仅用于一个请求而不是丢弃,会有什么风险?谢谢你的帮助。

标签: securityencryptionrsa

解决方案


推荐阅读