从远程服务器上的应用程序安全存储敏感数据

时间:2018-02-08 10:19:43

标签: android security encryption

我有一个Android应用程序,用户以文本的形式输入一些敏感信息。我需要将此数据存储在远程服务器上,以便该用户从其他设备检索。我想要对除该用户以外的所有人保护这些数据,尤其是流氓数据库管理员 - 用户应该是唯一能够恢复信息的用户。

我的方法是,SALT将在Android应用程序中生成,每个敏感数据都将使用此SALT进行哈希处理,并将被存储以供以后解密以获取实际的原始数据。

这是正确的做法吗?或者有更好的方法吗?

如果是,

  1. 如果用户更换设备怎么办?
  2. 如何在新设备中使用相同的SALT,因为SALT无法保存在数据库中?
  3. 更新:敏感数据需要存储在Firebase数据库中。

1 个答案:

答案 0 :(得分:1)

声明

我不是安全专家。我不是专家。我是互联网上的一些随机开发人员,他们过去做了一些阅读,并且在回答你的问题时采取了一些措施。如果您想获得更可靠的信息,请转到information security stackexchange

用户将敏感信息输入您的程序。您希望他们以后能够恢复它,因此您必须将其保存在某个地方。如何处理?

在哪里保存?

  • 如果设备不需要从其他地方访问,请在设备上。
  • 在服务器上,如果用户可能需要从其他设备访问它(或恢复它)。

如何保护它?

  • 加密。

用什么加密?

  • 标准的安全算法(如AES),以及从用户提供的密码派生的密钥。

但是用户往往会提出不好的密码。如果我们将其发送到服务器,并且数据库可能已被泄露,如何防范暴力攻击?

  • 使用密钥拉伸算法,例如PBKDF2

这有多安全,真的吗?

  • 如果用户选择了一个糟糕的密码,然后你的数据库受到了损害,那么暴力破解就相对容易了。
  • 如果密码离开了他们的设备(例如,如果您重复使用相同的密码让应用程序登录到您的服务器或其他东西),那么您就会在危险的水域中踩踏。