【问题标题】:Is it ok to store passwords that are able to be retrieved?可以存储可以检索的密码吗?
【发布时间】:2010-11-24 16:46:22
【问题描述】:

我正在尝试确定是否可以存储使用 AES 算法加密的密码,而不是存储使用 SHA1 加盐和散列的密码。

我想知道这是因为我的公司正在更新我们的会员系统,该系统包含在我们的专有 CMS 中。目前,我们对密码使用 AES 加密。这使我们能够在客户致电寻求支持时轻松查找管理员密码。当我们有员工变动时,更改所有管理员密码是一项政策。密码查找工具让我们可以轻松获取新密码,而且我们的工作流程不会中断。

我的印象是,大多数人认为散列加盐密码是更安全的密码处理方式,但我想不出在使用散列密码时符合当前公司运营的方法。而且,更改密码操作所需的企业文化转变可能不会发生,除非我能给他们一些非常有说服力的理由来散列密码。

与加密密码相比,散列密码是否被普遍接受?为什么?

【问题讨论】:

    标签: security encryption hash passwords


    【解决方案1】:

    使用可逆加密来加密密码的价值值得怀疑。

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

    使用这样的系统的问题是您永远不会知道它已损坏。我可以访问密钥吗?马上?我可以随时查询密码吗?你一改我就知道改成什么了?

    使用加盐哈希(与可逆加密相比)在实施过程中会遇到挑战,但您可以放心,窃取密码列表没有什么价值(如果使用强算法、多轮、最低密码标准和随机密码正确实施)记录盐)。您当前的系统是“感觉良好的加密”。虽然这可能使管理层“感到”安全,但实际上并不安全。它比以明文或便签存储密码稍微好一点,对于坚定的攻击者来说,它充其量只是一个最小的减速带。最大的问题是你永远无法证明你是“安全的”,并且当你受到威胁时可能没有任何警告。你可能现在就被攻破了,却不知道。

    【讨论】:

    • 在这种情况下,私钥只是“密钥”,因为 AES 是对称密码。但是,是的。这基本上就是我要说的,但也许你解释得更好。
    • @马克。谢谢。为清楚起见,删除了“私人”。
    【解决方案2】:

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

    通常,对它们进行散列而不是加密存储的动机是,它可以防止窃取数据库或破坏服务器的人获取密码。

    如果您使用 AES 加密它们,您显然必须将密钥保存在某个地方,并且永远无法更改它(当然,除非您将它们全部解密并重新加密)。

    如果有人破坏了机器,他们可以获得密钥,因为它必须(至少)保存在内存中,以便在某个时间解密密码。

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

    加密密码并不能真正帮助应用程序保护其数据库免受除了最随意的攻击者之外的任何攻击(因为攻击者必须能够获得密钥)。如果密码很强大,对它们进行散列处理会使获取明文变得困难。

    【讨论】:

    • 感谢您的回复。根据您的回答以及来自 theUnhandledException 的反馈,我能够说服老板我们应该转向散列算法而不是加密。
    猜你喜欢
    • 2011-07-02
    • 2011-09-28
    • 2012-02-01
    • 2014-04-07
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多