当前位置: 首页 > 知识库问答 >
问题:

如何在Firebase中加密用户数据

水飞掣
2023-03-14

我正在使用Firebase的电子邮件/密码登录方法。我想在将数据发送到数据库之前对用户保存到实时数据库中的数据进行加密。Firebase已经处理了用户密码,但我可以以某种方式使用它来加密我只能在客户端无法解密的数据吗?如果我可以使用客户端sdk实现它,那就太好了。

所以我的流程是这样的:

  1. 用户使用其凭据登录(由Firebase本身处理)
  2. 用户使用某些唯一密钥加密某些数据,这些密钥只能从凭据或仅适用于用户但不适用于我的某些数据中生成。(此密钥需要在会话之间或用户更改密码后持久化。)
  3. 数据保存到数据库中(我无法读取它,因为它使用用户凭据加密)
  4. 用户在不同的设备上登录(可以立即生成解密密钥并解密数据。)

共有1个答案

壤驷安和
2023-03-14

您可以通过以下方式轻松做到这一点:

  1. 用户A登录后,会在其手机上生成随机的公私密钥对。例如:使用Ecc曲线25519
  2. A的私钥安全地存储在他的手机上
  3. A的公钥存储在firebase中,任何与A聊天的人都可以访问。
  4. 如果X向a发送消息,他会从firebase获取a的公钥,并在本地对a的消息进行加密,并将加密的消息存储在firebase上的a收件箱中
  5. A从firebase下载加密的消息,并使用存储在手机上的私钥对其进行解密

(反之亦然,对于A到X)

如果A想移动到另一部手机或想使用多部手机,您可以这样做:

  1. 要求A定义一个强密码来加密他本地存储的私钥。(或创建随机密码并使用二维码进行密钥交换)
  2. 使用步骤1中的密码在他的手机上本地加密私钥(例如:使用AES256)并将其上传到Firebase。(可选使用他的私钥签名)
  3. 从A下载第二台设备的加密私钥
  4. 向A索取第二台设备上的密码并安全存储私钥(可选用A的公钥检查签名)
  5. 如果不需要备份,请从Firebase中删除加密的私钥
 类似资料:
  • 问题内容: 我目前是一名学生,并且正在学习PHP,我正在尝试对PHP中的数据进行简单的加密/解密。我进行了一些在线研究,其中一些非常令人困惑(至少对我而言)。 这是我想做的事情: 我有一个包含这些字段 (用户ID,Fname,Lname,Email,Password)的表 我要拥有的是先将所有字段加密,然后再解密(如果没有任何加密算法,是否可以用于加密/解密) 我想学习的另一件事是如何创建一种与优

  • 我有一个由以下字段组成的表(UserID、Fname、Lname、Email、Password) 我想要的是加密所有字段,然后解密(如果没有任何加密算法,是否可以使用进行加密/解密) 我想学的另一件事是如何创建一个单向的并结合一个好的“salt”。(基本上我只想有一个加密/解密的简单实现,先生/女士,您的回答将会有很大的帮助,非常感谢。谢谢++

  • 本文向大家介绍如何在PHP中使用AES加密算法加密数据,包括了如何在PHP中使用AES加密算法加密数据的使用技巧和注意事项,需要的朋友参考一下 在研究Discuz 的时候,发现Discuz有一套相当完美的加密算法(相对而言)。这个算法可以将数据加密后,储存起来,到需要用的时候,用之前加密的秘钥将之还原。 除了这个之外,还有AES这个算法能够将数据很好的加密起来,在传输过程中不容易被破解。 在PHP

  • java ee应用程序(部署到wildfly中)在数据库中存储不同用户的敏感数据,如访问密钥等。为了解密这些数据--它需要一个与当前用户关联的主密码。用户登录到应用程序时输入的密码用于此操作。 现在我正在考虑使用keycloak来保护这个应用程序的可能性。但是看起来没有办法用keycloak为当前登录的用户获得密码(因为它是用令牌操作的)?要求用户在应用程序中再次输入密码不是一个选项。

  • 问题内容: 我想向Firebase身份验证添加新数据,其中包含显示名称,电话号码,图像之类的数据。但是我想增加更多这样的性别,生日等等。是否可以添加新的? 问题答案: 无法将任意其他数据添加到Firebase身份验证用户配置文件。如果需要,请考虑使用Firebase Realtime数据库(或CloudFirestore)存储其他信息。 自几周前以来,您可以向Firebase身份验证用户配置文件中

  • 我想添加一个新的数据到firebase认证,它有像displayname,电话号码,图像的数据。但我想增加更多这样的性别,生日和更多。有可能添加新的吗?