存储加密密码

20

我和我的同事正在进行一场文明的讨论,讨论的话题是密码安全。请帮助我们解决分歧。

其中之一认为:

  • 加密存储密码,并使用公钥以及单向散列版本也是可以接受的,因为这可能对于将来合并或收购时与其他身份验证系统集成可能会有用。
  • 只有CEO / CTO才能访问私钥,并且仅在必要时才会使用私钥。常规的登录验证仍将通过散列密码进行。
  • 我/他曾在以前的公司中这样做过,并且有许多站点也这样做,并且在Fortune 500公司的安全审计中幸存下来。
  • 这是常见且被接受的做法,甚至对于金融机构也是如此,因此没有必要在隐私政策中明确说明此事。
  • 像Mint.com这样的网站也这么做。

另一个人持以下观点:

  • 即使以加密形式存储密码,也是不必要的安全风险,最好避免首先暴露给这种风险。
  • 如果私钥落入错误的手中,则使用相同密码在多个网站上的用户将面临所有登录凭据被泄露的风险。
  • 这是我们对用户的信任破裂,如果实施此做法,则应明确告知用户。
  • 这不是行业普遍做法,没有大公司(Google,Yahoo,Amazon等)采取这种方式。Mint.com是一个特例,因为他们需要代表您验证其他网站。此外,他们仅存储您的金融机构密码,而不是您在Mint.com本身的密码。
  • 这是审计中的红旗。

有什么想法?评论?您是否曾在实施此做法的组织中工作过?

11个回答

0
每当我要处理密码相关的事情时,我都会进行单向哈希处理,并会使用不断变换的盐值。例如:hash(userId + clearPassword)。只有这样,我才会感到安心,因为在我们公司中,没有人可以直接访问明文密码。

2
这不够安全。每个热门的网络服务都有一组常见的用户名,比如JamesBond。很容易为最常见的200个账户名创建一个哈希表。 - Georg Schölly
2
使用随机哈希进行加盐通常是最佳选择。该值可以存储在用户表中,并在每次重新计算时更新。 - Buggabill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接