使用Firebase身份验证时,可以将加密密钥存储在用户的Google帐户中吗?

时间:2018-09-16 20:45:39

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

我有一个运行在Firebase Web上的应用程序,该应用程序具有实时数据库,并且使用Auth作为唯一的身份验证提供者进行了Google身份验证。我希望数据只能由用户读取,因此尽管我了解Realtime Database提供了安全的传输和服务器存储,但我也不希望自己也可以在Firebase控制台中查看用户的信息。

在用户设备上存储密钥的端到端加密不是理想的解决方案,因为我希望用户能够跨多个设备访问数据。

AES加密似乎是最好的解决方案,但是通常的问题出现在哪里存储密钥。

我的理论

如果每个用户对其数据都有单独的加密密钥,并且我可以将其存储在其帐户的某些“网络应用程序数据”部分中,则可以将其密钥(加密)存储在其帐户中。因此,我的应用程序和服务器不需要存储密钥,用户不需要显式存储或记住任何东西,但是密钥仍完全由他们拥有(通过拥有Google帐户)。我将负责存储密钥,以便为我的数据库解密其密钥。

我的问题

尽管我知道要求对此理论进行分析与编程没有严格关系,并且是一个开放性的问题,但我至少想了解这种解决方案的可行性,以及是否有可能进行编程-明智的。

谢谢!

1 个答案:

答案 0 :(得分:0)

看来Google Drive App Data提供了一种可能的解决方案,使之成为可行的方法。 https://developers.google.com/drive/api/v3/appdata

通过在OAuth期间请求https://www.googleapis.com/auth/drive.appdata范围,应用可以在用户的​​Google云端硬盘中创建应用数据文件夹。用于用户数据的加密密钥似乎可以存储在其中,而不会被用户看到/篡改,至少是他们拥有。