加密存储在Firebase数据库中的聊天消息

时间:2019-02-15 08:48:25

标签: android firebase encryption firebase-realtime-database

我正在开发一个应用程序,其中聊天也是我正在使用Firebase实时数据库的功能。尽管存储在firebase中的所有数据都是通过SSL进行的,但是我希望即使是管理员也无法看到该消息。 我曾想过通过使用公钥和私钥架构来实现端到端加密,但是将私钥存储在设备上并不好,因为在卸载手机甚至应用程序时都会创建一个新的私钥。用于其他设备,并且以前的消息也不会被解密。

我还想到了,如果新消息可以在生成时使用新的私钥进行加密,并将以前的聊天记录存储在Google驱动器或iCloud中作为备份,但是由于这并不完全是聊天应用程序,因此我认为这可以赢不可能。

http://www.geero.net/2017/05/how-to-encrypt-a-google-firebase-realtime-database/

我也阅读了这篇文章,但是关键还是在管理部门身上。

我应该如何进行?

2 个答案:

答案 0 :(得分:2)

我建议您使用AES加密邮件。而且,您不应将密钥存储在设备上。否则,用户可以使用Diffie-Hellman密钥交换算法进行密钥协商以生成共享的秘密密钥: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

答案 1 :(得分:2)

  

尽管存储在firebase中的所有数据都是通过SSL进行的,但我希望连主管都无法看到该消息。

已经有一些端到端的安全消息传递协议(例如Signal),您可以看看它们是如何工作的。

  

在其他设备上使用该应用程序并且先前的消息也不会被解密

这就是端到端加密的价格。

您仍然可以通过某种方式在多个设备之间分配私钥,例如用用户的密码加密私钥,并仅在用户仅在用户的设备上通过身份验证时解密私钥(我只是在想一些主意,如果它足够安全,您可能会认为通过了)

  

在Google驱动器或iCloud中存储以前的聊天记录作为备份

Viber和WhatsUp正在这样做,问题是用户是否会信任您,足以授予您访问其云存储的权限