【发布时间】:2017-11-26 03:35:33
【问题描述】:
我最近了解到,要安全地存储密码,您应该使用带盐的慢速加密散列函数,并将散列后的密码和盐存储在某些服务器中。
但是我应该如何为离线应用程序安全地存储密码?恐怕如果有人拿到了用户的手机,他们可以通过 root 手机来获取存储所有敏感信息的文件,并获取哈希、用于哈希的盐,或者只是用他们自己的替换哈希密码哈希密码。有没有什么技巧可以让我的离线应用程序的密码更安全地存储?
编辑:澄清一下,我更感兴趣的是保护用户密码而不是进入应用程序。
【问题讨论】:
-
哈希密码并将其存储在您的 sqlite dB 中,一切都很好。即使有人掌握了散列密码,这对他们来说也是无用的,如果他们对它进行脾气暴躁,那么他们将无法在您的应用中使用密码
-
仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。而是使用随机盐迭代 HMAC 约 100 毫秒的持续时间,然后将盐与哈希一起保存。使用
PBKDF2、Rfc2898DeriveBytes、password_hash、Bcrypt等函数或类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。 -
@zaph 是的,这就是我所说的慢速加密哈希函数的意思。我担心如果他们得到盐(因为我必须将它存储在手机中),他们可能只是使用附加盐的字典攻击来在合理的时间跨度内获取密码,或者这不是问题吗?
-
@zaph 另外,由于我必须将哈希存储在手机上的某个位置,如果攻击者找到它,攻击者是否可以通过更改存储它的哈希来更改密码?他们不会得到这样的密码,但它似乎是一种通过锁屏的简单方法......假设它是可能的。
-
“越过锁屏”是指您的 iPhone 锁屏应用吗?攻击者是 iPhone 所有者还是其他人?您是否担心越狱的 iPhone?您需要定义威胁模型。
标签: android security password-protection