我有一个Android应用,用户以文本形式输入一些敏感信息。我需要将此数据存储在远程服务器上,该数据由该用户从其他设备中检索。我想将这些数据限于该用户以外的所有人,尤其是流氓数据库管理员 - 用户应该是唯一能够恢复信息的人。
我的方法是,盐将在Android应用中生成,并且将使用此盐搭配每个敏感数据,并将存储以供以后解密以获取实际的原始数据。
这是正确的方法吗?还是任何更好的方法?
如果是,
- 用户更改设备怎么办?
- 如何在新设备中使用相同的盐,因为不能将盐保存在数据库中?
更新:敏感数据需要存储在Firebase数据库中。
免责声明
我不是安全专业人员。我不是专家。我只是互联网上的一些随机开发人员,他们过去曾做过一些阅读,并刺伤了回答您的问题。如果您想要更多可靠的信息,请转到信息安全性stackexchange。
用户将敏感信息输入您的程序。您希望他们以后能够恢复,因此必须将其保存在某个地方。如何处理?
在哪里保存?
- 如果设备不需要从其他地方访问该设备。
- 如果用户可能需要从其他设备访问它(或恢复(。
如何保护它?
- 加密。
用什么加密?
- 标准,安全的算法(例如AES(和从用户提供的密码派生的密钥。
但用户倾向于提出较差的密码。如果我们将其发送到服务器,并且数据库可能会受到损害,则如何防止蛮力攻击?
- 采用键拉伸算法,例如pbkdf2。
这真的有多安全吗?
- 好吧,如果用户选择较差的密码,然后您的数据库被妥协,蛮力将相对容易。
- 如果密码曾经离开他们的设备(例如,例如,将应用程序重复使用,以登录服务器或其他内容(,则您正在踩在危险的水域中。