使用Argon2进行密码存储和密钥派生是否安全?当然,我打算用不同的盐值。
基本概念是这样的:
爱丽丝的帐户上有一些秘密数据(data_e)。它是用Argon2派生的密钥加密的,该密钥来自她的密码,使用的是随机盐。
艾丽斯的密码被存储为一个Argon2派生的密钥,从她的密码,使用随机盐。当Alice (或敌手)想要登录时,使用Alice的密码盐类从输入中派生出一个密钥,并检查是否匹配。
您应该假设Alice是一位训练有素的系统管理员,他了解使用弱密码的风险。密码将至少有12个字符,将包括大写字母和小写字母,并有数字。
还假设登录系统具有抵抗暴力的能力,但是要考虑数据库被破坏的可能性。
提前谢谢。
发布于 2018-12-29 23:25:26
机密数据应该用Alice的原始密码加密吗?
作为一般的经验法则:
密码只应被输入密码哈希方案(PHS),如Argon2、scrypt或bcrypt,而不是其他任何东西!
造成这种情况的原因有多种:
应该用...加密的随机密钥加密她的数据吗?
是。另一个好的经验法则是:
只对每个用户执行一个密码哈希,但给它您可以节省的所有资源。
这背后的想法是:
其余的类似于S的回答:
用密码派生的密钥加密高熵密钥,可以让用户更改密码,而不必重新加密整个数据,如果有大量数据,这可能在CPU时间和I/O时间方面代价高昂。
此外,如果您使用认证加密 (AE)对高熵密钥使用派生密钥,则基本上可以获得“免费”的安全密码确认,因为如果密码和派生密钥是错误的,则该方案将非常清楚地报告错误。此外,您还可以使用大多数AE方案的相关数据输入,以加密方式将派生参数(如salt和迭代计数)绑定到成功解密。
因此,在公式:\text{derKey} = \operatorname{Argon2}(\text{password}, \text{salt}, \text{iteration}), c=\operatorname{AE}_{\text{derKey}}(\text{MK})和现在,如果试图用错误的密码解密,AE-方案将报告认证失败,因为密钥是错误的,如果它是正确的,它将只是返回正确的主密钥。
发布于 2018-12-29 21:21:17
试着像黑客一样思考..。
假设黑客控制了存储,并且认为Alice的密码相对较弱。在这种情况下,相对薄弱的意味着黑客不能通过Argon2哈希强制破坏它,但是如果他只得到一个基本的SHA256哈希,他就可以破坏它。
如果你用密码加密艾丽斯的数据,黑客可以用暴力破解数据(暴力破解AES就像破解SHA256一样容易/困难)。此外,如果Alice更改她的密码,您将不得不重新加密她的数据,这是一个缺点。
如果你用密码加密一个随机的主密钥,并使用主密钥加密Alice的数据,那么安全性没有差别,只是如果Alice更改了她的密码,你就不必再加密数据了。你必须重新加密主密钥。
如果你用storedPWD加密一个随机的主密钥,那么黑客可以很容易地在数据库中获得密钥。
海事组织,您应该使用不同的盐分计算两个Argon2散列,并使用一个验证密码,另一个用于加密数据。
我认为最好的解决方案是:x=Argon2(密码),然后在数据库中存储SHA256(x欧元/ salt1),并使用它进行密码验证,使用SHA256(x =x\x> salt2)进行加密。或者更好的是,Argon2将结果长度作为参数。让Argon2派生出512位,然后使用前256个进行密码验证,然后使用第二个256进行加密。
https://crypto.stackexchange.com/questions/66161
复制相似问题