我正在为我正在开发的应用程序创建消息传递服务。由于消息的性质,不仅验证用户,而且验证消息所属的会话非常重要。因此,现在我为每个对话创建一个公钥/私钥对,并使用它来加密/解密消息。基本上,当用户登录时,他们可以访问所属对话的密钥对,但是这些密钥对仅适用于该特定对话。这允许授予/拒绝特定对话的访问,同时保持同一方之间的其他对话不变。现在的数据流如下:
发送:
发送到服务器的消息=>基于用户的公钥加密的消息,并使用秘密密钥签名=>保存到数据库的加密消息
接收:
服务器从数据库接收消息=>服务器使用公钥验证签名,并使用私钥=>解密已发送给客户端的消息
服务器上的所有加密/解密都取决于对用户的JWT令牌进行身份验证。
我有两个主要问题:1.)可以在服务器上加密吗,因为它与客户端之间的通信使用TLS? 2.)密钥应该存储在服务器上还是数据库中?
此外,如果此方法不安全,不正确或完全愚蠢,请告诉我。
谢谢。