是否有必要在将聊天消息存储到firebase之前对其进行加密?

Jef*_*Kim 9 encryption firebase firebase-security firebase-realtime-database

据我所知,Firebase通过HTTPS连接发送数据,因此数据已经被加密.虽然Firebase提供了保护我的数据结构的安全规则,但我仍然可以在数据库中看到字符串消息.

我只是好奇在将数据推送到Firebase之前加密消息是否是个好主意.我应该继续从这个话题转向别的吗?

谢谢.

Fra*_*len 16

您似乎很好地掌握了Firebase数据库的工作原理:数据在传输过程中加密,并存储在服务器上的加密磁盘上.如果在设备上启用本地持久性,则不会加密设备上的数据.

但该应用的管理员可以在Firebase控制台中查看数据.如果您的应用要求管理员无法读取此数据,那么您需要先在客户端对其进行加密,然后再将其发送到Firebase.不久前,开发人员在firebase-talk邮件列表上解释了他们的端到端加密聊天.


小智 7

嘿杰夫:没错,当您将一些数据写入Firebase / Firestore时,数据:

  1. 使用HTTPS通过网络进行保护。
  2. 然后,当它降落在Firebase REST前端服务器上时,HTTPS终止并且服务器可以访问完整的有效负载
  3. 然后,REST服务器将数据路由到后端/数据库,该后端/数据库也有权访问该数据。
  4. 将数据写入磁盘后,它会静态加密,但是静态加密密钥也可供Google使用,您的管理员还将看到Firestore的内容

加密数据客户端(端到端加密)禁止所有这些参与者/角色看到您的数据。

在客户端加密数据非常简单(跨移动平台和浏览器的兼容性很棘手)。另一个棘手的部分是密钥管理,以使一个用户能够访问解密密钥,而无需另一个用户在不安全的通道上发送密钥。

您可以执行以下方法:

  1. 注册用户时为其创建私钥和公钥
  2. 使用用户2的公钥加密用户1的设备上的数据
  3. 将加密的数据写入Firestore
  4. 当user2读取加密的数据时,她的私钥将能够对其解密。

在GitHub上查看以下Firebase E2EE聊天示例,适用于iOS:https//github.com/VirgilSecurity/demo-firebase-ios和Android:https : //github.com/VirgilSecurity/demo-firebase-android

戴维(HTH)

  • 按照您的步骤,我认为问题是您在用户注册时将其私钥和公钥存储在哪里?在数据库中还是在其设备本地? (2认同)