代码之家  ›  专栏  ›  技术社区  ›  quakkels

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

  •  2
  • quakkels  · 技术社区  · 14 年前

    我想知道是否可以存储使用AES算法加密的密码,而不是存储用sha1进行盐渍和散列的密码。

    我想知道这是因为我的公司正在更新我们的会员系统,这是我们的专有CMS所包含的。目前,我们对密码使用AES加密。这使我们能够在客户请求支持时轻松查找管理密码。当我们对员工进行更改时,更改所有管理员密码是策略。密码查找工具允许我们轻松获取新密码,并且我们的工作流程不会中断。

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

    与加密密码相比,哈希密码是否通常按要求接受?为什么?

    2 回复  |  直到 12 年前
        1
  •  3
  •   MarkR    14 年前

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

    通常,散列和加密存储的动机是防止窃取数据库或破坏服务器的人获取密码。

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

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

    要么就是那样,要么就用一些高级的pki。AES是对称密码。

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

        2
  •  4
  •   Gerald Davis    12 年前

    用可逆加密对密码进行加密有可疑的价值。

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

    使用这样一个系统的问题是你永远不会知道它是坏的。我能拿到钥匙吗?马上?我可以随时查找密码吗?你一改变它,我就知道它变成了什么?

    使用salted散列(vs可逆加密)在实现上有其自身的挑战,但可以确保窃取密码列表的价值很小(如果使用强算法、多轮、最小密码标准和随机每记录salt正确实现)。您当前的系统是“感觉良好的加密”。虽然这可能会让管理层“感到”安全,但实际上他们并不安全。它比以纯文本或贴便条的方式存储密码要好得多,对已确定的攻击者来说,它充其量只是一个最小的速度障碍。最大的问题是你永远无法证明你是“安全的”,当你受到威胁时可能没有任何警告。你现在可能会妥协,不知道。