我是加密技术的新手,我试图了解有关RSA和AES加密的更多信息,并将其整合到我正在从事的项目中。
情况是,我有一个在本地网络上运行的服务器,可以称之为本地服务器。本地服务器通过Internet与远程API服务器进行通信,只有在API服务器上注册的用户通过Oauth2在本地服务器上创建会话的身份验证之后,才能访问API服务器路由。一次只有一个用户登录到本地服务器。
我设定的目标是允许将文件从API服务器传输到登录用户调用的本地服务器。阅读各种在线资源后,我整理出的当前解决方案如下。
(假设用户正在登录服务器,而我们刚刚验证了他的身份) (1)本地服务器创建一个自签名证书 (2)将带有消息摘要的公钥发送到API服务器 (3)API服务器验证消息,并创建AES密钥 (4)AES密钥使用本地服务器上的公共密钥加密,并通过消息摘要作为响应发送回本地服务器 (5)本地服务器检查消息摘要,并使用私钥解密AES密钥。 (6)AES密钥将用于在API服务器上加密文件并在本地服务器上解密。 (7)公钥在本地服务器和API服务器上均被丢弃 (8)在用户下次登录时创建新的公钥。
我了解,使用自签名证书会在中间攻击中为Man带来潜力。这通常不是一个好习惯。但是,相反,很难为本地网络生成证书。
为这个模糊的问题表示歉意,但是我正在尝试寻找解决方案中潜在的安全问题。我很想了解这个话题,但是我觉得我发现的大多数解决方案都不适用于我的情况。
所以我想问这样的协议是否可以接受? 如果公钥仅用于一个请求而不是丢弃,会有什么风险?谢谢您的帮助。