说服我的经理使用盐

信息安全 密码 哈希
2021-08-17 06:06:06

我的经理说我们不需要加盐密码,因为人们不太可能使用相同的密码,因为除了他们活跃的网站之外,他们都有不同的母语。对此最好的反驳论点是什么?

4个回答

我不确定你来自哪里。首先,他的观点反对NIST定义的公认的行业最佳实践。此外,你的经理是危险的错误。用户越多,为多个用户获取相同密码的可能性就越大。以下公司也这样做,我非常相信他们拥有比您的网站更大的全球用户群:

  • Facebook
  • 邮箱
  • 领英

您可以从业务角度解释的另一个原因是,当您受到负面宣传时,形象/品牌受损的风险举个例子,Adobe 使用了错误的密码存储实现,这导致了与您现在遇到的相同问题:散列产生的值(在 Adob​​e 的情况下,他们使用加密而不是散列)密码对于几个相同用户是否使用相同的密码(在他们的情况下,由于在执行对称加密时未使用 IV,但这不相关)。这引起了一场大规模的负面宣传风暴,毕竟互联网公司应该坚持密码散列这样简单的事情,不是吗?这种负面宣传导致的财务成本可能很高。

此外,根据您居住的国家和所采用的法律,如今,如果确定管理层在保护数据隐私方面疏忽(如果破解密码被用于获取用户的个人数据),则可以追究其个人责任实例)。此外,根据存储的信息类型、财务、医疗、信用卡,可能适用不同的规则,这也可能导致其他类型的罚款。

这可能与密码散列直接无关,但如果您的经理做出进一步的错误决定,可能会派上用场。因此,请务必制作清楚解释问题的电子邮件副本,并保存您的经理回复。(只是为了掩饰自己的屁股)

您没有使用盐这一事实也可能意味着您没有使用正确的散列算法,因为这些算法通常会负责生成盐并执行大量迭代。三种公认的算法是:

  • PBKDF2
  • bcrypt
  • 加密

盐的主要目的是通过将单个计算的哈希与所有存储的哈希进行比较来防止攻击者节省工作。此问题与密码是否唯一无关。

如果没有盐,攻击者可以简单地浏览他的可能密码列表,计算每个密码的哈希值,然后检查结果是否与任何存储的哈希值匹配。所以每次猜测只需要一次计算。

使用盐,攻击者必须检查每个用户的列表,因为他不能重用结果。这迫使他对每个猜测每个用户进行一次计算。这大大增加了攻击的成本。

但正如卢卡斯已经说过的,这里真正的问题是你没有使用正确的算法。盐只是密码散列的一个方面。

“最好”的反驳取决于你想要达到的目标。

如果您只是想在科学上正确,那么可以说盐不是,也从来不是一种处理两个不同用户选择相同密码的方法。特别是因为碰巧选择相同密码的两个用户一开始就不是问题,所以没有什么可以修复的。盐是为了避免并行攻击,包括使用预计算表。缺乏盐是LinkedIn的最大罪过。

现在,正确只对那些准备好承认自己可能是错误的或至少不完全知情的人产生影响。你从你的经理那里引用的内容往往表明他在这个主题上完全无能,但也确信他完全掌握了它。如果你想说服那位经理他错了,那就靠运气了。人们最害怕的是承认,甚至是含蓄地承认他们说了一些愚蠢的话。

如果您希望您的组织真正切换到正确的密码散列(阅读内容),那么您可以做的就是让其他人相信经理刚才所说的纯粹是胡言乱语,甚至没有足够的意义其实错了。如果经理变得孤立,他可能会对正确密码散列的实施视而不见,当然,永远不会承认它。同样,科学上正确的论点不一定是最有效的论点。在北美(尤其是新英格兰等受英国影响的地区),商务会议是为了避免冲突和稀释责任,所以你应该散布一些恐惧、不确定和怀疑:一定要指出你的竞争对手正在转向盐渍哈希,而不这样做会导致失去一些市场份额的风险。在南欧,会议是建立等级制度的仪式性战斗,所以喊叫、咆哮、威胁和使用讽刺来赢得人群的支持:你赢的不是正确,而是自信


一般来说,最有效的论证类型之一是诉诸权威。NIST 特别出版物 SP800-118(目前为草案)中,可以看到:

散列算法弱点的另一个例子是某些算法不使用加盐。

“无盐”=“弱点”。NIST 是这么说的。这位自认为比 NIST 聪明的经理是谁?

从某种意义上说,如果你在争论盐的问题,那么你就已经错失良机了。密码存储安全性方面的最新技术远远超出了“加盐或不加盐”的问题,并且已经转向计算迭代次数。

但让我们从基础开始。这是我不久前写的一个答案,它非常受欢迎。它解释了为什么盐更好,很多人都说它在其他解释平淡无奇的地方引起了轰动。这或多或少是你要问的——如果你认为它会做一些好事,把它展示给你的老板:

为什么加盐哈希更安全?

但重要的一点是那里提出的最后一个问题。也就是说,存储一个加盐的 SHA1 哈希并称其为好不再被认为是负责任的。计算能力已经达到每秒数十亿次哈希不再是理论上的程度,这使您可以比解释您正在做什么更快地通过暴力攻击的整个 32 位空间。

现在的重点是迫使攻击者解决问题数千或数十万次,只是为了做出一个猜测。这就是PBKDF2出现的地方(穿着 NIST 颁发的西装和领带),以及scrypt和朋友(看起来邋遢但强大)。

您选择哪种算法并不是真正的关键。他们都解决了大致相同的问题,只是方式不同,侧重点不同。但是你必须使用一些东西——一些算法,即使是一个密码也很难暴力破解。原因很简单:它是行业标准,可衡量和可证明的更安全,而且使用它没有显着成本。将这些因素放在一起,很快就会发现,如果您这样做,那么一旦发生违规行为,您就会被视为疏忽大意。