如果我不能像以前一样选择相同或相似的密码,它是不是以明文形式存储在某处?
Posted
技术标签:
【中文标题】如果我不能像以前一样选择相同或相似的密码,它是不是以明文形式存储在某处?【英文标题】:If I can't choose same or similar password as previously, is it stored in plaintext somewhere?如果我不能像以前一样选择相同或相似的密码,它是否以明文形式存储在某处? 【发布时间】:2021-11-05 19:34:21 【问题描述】:标题实际上说明了一切,但我将在这里写下我的想法作为上下文。
据我了解,在撰写本文时存储密码的实际方法是通过加盐和散列(如果我错了,请纠正我),关键是密码不会以明文形式存储在任何地方,并且盐可以防止彩虹表攻击等。我对这方面不是很精通,但这些信息是我从网上收集的。
好的,又到了更改密码的时候了。如果我选择相同的密码,加盐哈希将匹配,我会得到一个提示,说密码与以前相同。现在,一些系统还阻止您将密码设置为例如50% 或 70% 与您之前的密码或您之前的密码之一相似。
我认为这在安全性方面很好,但是如果密码没有以明文形式存储在任何地方,该怎么做呢?还是他们?
【问题讨论】:
【参考方案1】:正如@martinstoeckli 所说,最简单的答案是您通常在更改密码时必须输入以前的密码 - 所以它可以在内存中比较两者。
但是,即使旧密码以散列方式存储,也可以检查相似的密码,方法是采用新密码,对其应用各种转换(更改单个字符,将末尾的数字减少一个,删除最后一个字符等),对这些排列进行散列处理,然后将其与先前存储的密码进行比较。如果您使用的是良好的密码散列算法(bcrypt/scrypt/Argon2id/PBKDF2),那么这将相当慢,但使用更快的算法,则不会有明显的延迟。
值得注意的是,如果攻击者可以访问以前的密码,这些类型的转换通常会被攻击者使用,并且还与单词列表一起用于尝试和猜测常见单词的变体。
【讨论】:
【参考方案2】:答案可能比您想象的要简单,通常您必须同时输入旧密码和新密码才能更改它,因此应用程序从用户那里获取旧密码。这在安全方面实际上是一件好事,因为只有知道旧密码的用户才能将其更改为另一个密码。
【讨论】:
以上是关于如果我不能像以前一样选择相同或相似的密码,它是不是以明文形式存储在某处?的主要内容,如果未能解决你的问题,请参考以下文章
像 Touch Id 一样,是不是可以通过编程方式使用 iOS 密码锁?
如何让 extjs 组合框像普通的 html 选择框一样工作?