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

时间:2017-12-16 11:19:43

标签: firebase encryption firebase-realtime-database firebase-security

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

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

谢谢。

2 个答案:

答案 0 :(得分:11)

您似乎很好地掌握了Firebase数据库的工作原理:data is encrypted in transit,它是stored on encrypted disks on the servers。如果您在设备上启用了本地持久性,请on device data is not encrypted

但该应用的管理员可以在Firebase控制台中查看数据。如果您的应用要求管理员无法读取此数据,那么您需要先在客户端对其进行加密,然后再将其发送到Firebase。不久前,开发人员解释了他们的end-to-end encrypted chat on the firebase-talk mailing list

答案 1 :(得分:3)

嘿杰夫:当你将一些数据写入Firebase / Firestore时,你是对的,数据:

  1. 使用HTTPS保护线路。
  2. 然后,当它落在Firebase REST前端服务器上时,HTTPS终止,服务器可以访问完整的有效负载
  3. 然后REST服务器将数据路由到后端/数据库,后端/数据库也可以访问数据。
  4. 当数据写入磁盘时,它会在静止时加密,但Google也可以使用静态加密密钥,您的管理员也会看到Firestore内容
  5. 加密数据客户端(端到端加密)禁止所有这些参与者/角色查看您的数据。

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

    您可以实现此目的:

    1. 创建私人&用户注册时的公钥
    2. 使用user2的公钥加密user1设备上的数据
    3. 将加密数据写入Firestore
    4. 当user2读取加密数据时,她的私钥将能够解密它。
    5. 在GitHub for iOS上查看此Firebase E2EE聊天示例:https://github.com/VirgilSecurity/demo-firebase-ios和Android:https://github.com/VirgilSecurity/demo-firebase-android

      HTH, 大卫