使用数据库管理加密密钥

时间:2018-11-15 15:48:51

标签: firebase encryption google-cloud-firestore

我被困在使用Firebase Firestore实现端到端加密的设计水平上。

假设我将用户的私钥存储在他的设备上,当用户决定卸载应用程序并在以后安装它或丢失设备时,我该怎么办?

鉴于他的加密密钥仅存储在他的设备上,所有内容都丢失了,我是否只是创建新的私有密钥并将其先前的数据“标记”为不可访问?

我能想到的简单解决方案是将用户的私钥存储在数据库中,但这并不是真正的目标。

2 个答案:

答案 0 :(得分:2)

如果用户丢失了私钥,则有两种选择:

  1. 您声明其数据丢失
  2. 您为他们提供了一种恢复密钥的方法

这两个都是有效的选项,但是到目前为止,#2似乎是最常见的基于云的数据存储服务。

如果将恢复密钥和私有密钥存储在同一数据库中,则对数据库具有物理访问权限的任何人也都可以访问解密数据所需的密钥。所以这是一个坏习惯。

恢复服务最重要的一点是,您不要将私钥和恢复密钥与用户数据存储在同一位置。您可以使用完整的独立数据库(建议您完全考虑其他提供商),也可以使用任何其他物理上独立的机制。

答案 1 :(得分:1)

Here是您可能要参考的keybase.io解决方案。

简而言之

  1. 建议用户注册多个设备,每个设备具有一对独立的密钥
  2. 用户需要已注册的设备才能注册新设备
  3. 如果用户丢失了设备,则他/她应该能够使用另一台已注册的设备访问帐户,并从系统中删除被盗的设备