实际上,我在ReactJs中有一个SPA+在Flutter中有一台移动应用程序+一个在单独的服务器上运行的SailsJs开发的REST API。当我们使用有效信息(id/密码(登录时,我使用API发送回的Firebase验证生成的安全会话cookie来管理用户身份验证。
现在,我想加密Firestore数据库中的高度敏感数据(药物、治疗、患者(,这样当发生入侵时,或者通过对生产数据库控制台的基本管理员访问,没有人可以清楚地看到数据。
-
考虑到客户端和API服务器之间的连接是通过HTTPS的,我是否需要在客户端级别加密数据?或者,在将接收到的正文存储在Firestore中之前,我可以在api级别对其进行加密,并在GET端点解密加密的数据吗?
-
我的想法是在用户注册时使用AES生成加密密钥,并将其存储在欧洲/法国托管公司的另一个数据库中,以避免美国《云法案》或其他任何法案的风险(Firebase Authentication的用户id<->加密密钥(。这是个好主意吗?我可以选择其他什么解决方案来安全地存储和使用我的用户的加密密钥?
感谢您的帮助。
考虑到客户端和API服务器之间的连接是通过HTTPS的,我是否需要在客户端加密数据?或者,在将接收到的正文存储在Firestore中之前,我可以在api级别对其进行加密,并在GET端点解密加密的数据吗?
如果您在自定义API中加密/解密数据,则该API将需要访问加密密钥。虽然可能性很小,但确实意味着密钥可以从这里拿走,然后被用来破坏数据。
如果加密/解密客户端代码中的数据,则只有该代码需要访问这些密钥。如果你通过一些带外机制交换密钥,而这些密钥在交换过程中不会存储在你的服务器上,那么任何有权访问这些服务器的人都无法解密数据。