存储能够检索的密码是否可以?

时间:2010-11-24 16:46:23

标签: security encryption hash passwords

我试图弄清楚是否可以存储使用AES算法加密的密码,而不是存储使用SHA1进行加盐和散列的密码。

我之所以想知道这是因为我的公司正在更新我们的会员系统,该系统包含在我们的专有CMS中。目前,我们对密码使用AES加密。这使我们可以在客户呼叫支持时轻松查找管理员密码。当我们更改员工时,更改所有管理员密码是政策。密码查找工具允许我们轻松获取新密码,我们的工作流程不会中断。

我得到的印象是,大多数人认为哈希盐渍密码是更安全的处理密码的方式,但我无法找到一种方法来使用散列密码时遵守当前公司的操作。而且,除非我能给他们一些非常有说服力的理由来破解密码,否则改变密码操作所需的企业文化转变可能不会发生。

是否根据需要通常接受哈希密码而不是加密密码?为什么呢?

2 个答案:

答案 0 :(得分:4)

使用可逆加密加密密码具有可疑价值。

显然,查找程序可以访问密钥。这意味着您应该假设有权访问该程序的任何人都可以访问该密钥。如果你是偏执狂,你还应该假设他们的配偶,重要的其他人,室友等都可以使用该密钥。此外,过去曾经闯入网络的任何人(因为使用了密钥)也可以访问密钥。

使用像这样的系统的问题是你永远不会知道它被破坏了。我可以访问密钥吗?马上?我可以随时查找密码吗?一旦你改变它,我知道它改变了什么?

使用salted hash(vs reversible encyrption)在实现中提出了自己的挑战,但你可以放心,窃取密码列表没什么价值(如果使用强大的算法,多轮,最小密码标准和随机的正确实现记录盐)。您当前的系统“感觉很好加密”。虽然它可能使管理“感觉”安全,但实际上并不安全。它比以明文或粘滞便笺存储密码要好一些,它最好是对确定的攻击者的最小速度碰撞。最大的问题是你永远无法证明你是“安全的”,并且在你受到损害时可能没有任何警告。你现在可能会被妥协而不知道。

答案 1 :(得分:3)

您的意思是,在存储用户身份验证密码的应用程序中。

通常,对它们进行哈希处理与加密存储的动机是,它可以防止窃取数据库或者破坏服务器的人获取密码。

如果使用AES加密它们,您显然必须将密钥保留在某处,并且不能更改它(当然,除非您将它们全部解密并重新加密)。

如果有人破坏了计算机,他们就可以获得密钥,因为在某些时候它必须(至少)保留在内存中以解密密码。

要么是,要么使用一些花哨的PKI。 AES是对称密码。

加密密码并不能真正帮助应用程序保护其数据库免受任何但最偶然的攻击者(因为攻击者必须能够获取密钥)。如果密码很强,那么散列它们会使得难以获得明文。