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

评论

根本的问题是会议室中最不合格的人正在做出影响安全的决策。解决该问题,其余问题将随之解决。

哪种系统可能会让每个用户说不同的母语?这听起来像是一个非常糟糕的假设和/或一个非常专业的应用程序。

我丢了两个工作,一个是愚蠢的驴子,另一个是十亿美元的官司。如今,即使加盐的密码也不是特别安全(需要运行哈希的多次迭代!),但不加盐的做法绝对是愚蠢的。任何坚持这种事情的人都应该被开除,并在其额头上打上商标,以确保不再被任何其他公司雇用。这就像在说“我们的办公室不需要走火,因为我不吸烟”。

排序hashdump | uniq -c

你的老板是对的。大家都知道,所有的黑客和脚本小子都是尼日利亚人,而且他们永远无法找到针对字典攻击的英语词典。毕竟,尽管尼日利亚王室,总理和将军们没有准备好使用当前的英语拼写检查技术,尽管事实上英语是他们唯一的官方本国语言,但他们不太可能能够也可以找到其他语言的字典。

#1 楼

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


Facebook
Gmail
Linkedin

从商业角度可以解释的另一个原因是,当您受到负面宣传时,可能会损害形象/品牌。举一个例子,Adobe使用了错误的密码存储实现,这导致了与您现在同样的问题:散列(如果使用Adobe而不是散列,则使用散列进行加密)产生的值对于多个密码是相同的用户是否使用了相同的密码(在这种情况下,是由于在执行对称加密时未使用IV,但这无关紧要)。毕竟,互联网公司应该坚持像密码哈希这样简单的方法,对吗?这种负面宣传所造成的财务成本可能是巨大的。

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

这与密码哈希无关直接,但如果您的经理做出进一步的错误决定,可能会派上用场。因此,请确保在电子邮件副本中清楚地说明问题所在,并保存经理的答复。 (只是为了掩饰自己的屁股)

您没有使用盐的事实也可能意味着您没有使用正确的哈希算法,因为这些算法通常会处理生成盐并执行一定数量的迭代。三种公认的算法是:


PBKDF2
bcrypt


评论


除此之外-如果您的公司有任何审计要求,特别是如果您是外部审计的人-我相信您的审计部门会说几句话(尽管通常审计是事后职能,在这种情况下,我建议您带进来)。此外,在获取文档(以电子邮件的形式)的同时,请确保打印这些文档并将其归档为项目本身的文档的一部分,因为这是一个主要问题。

– Burhan Khalid
14年6月22日在6:22

在此答案的此列表中,我还将添加任何可解释密码哈希并将其显示给管理员的安全性书籍,因为通常良好的安全性资源只会促进基于盐的技术,并列出非盐化技术的问题。

–厄玛·伊克巴尔
14年6月23日在22:54

如果是Nist,您的意思是作为附件?

–卢卡斯·考夫曼(Lucas Kauffman)
14年6月24日在4:18

#2 楼

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

不加盐,攻击者可以简单地浏览其可能的密码列表,计算每个密码的哈希值,然后检查结果是否与任何密码匹配存储的哈希值。因此,每个猜测只需进行一次计算。

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

但是正如卢卡斯已经说过的那样,真正的问题是您没有使用适当的算法。盐只是密码哈希的一个方面。

#3 楼

“最佳”反论证取决于您要实现的目标。

如果您只是想做到科学正确,那么可以说,盐不是一种方法,而且从来没有过以应对两个不同的用户选择相同的密码。特别是因为碰巧选择相同密码的两个用户一开始就没有问题,所以没有什么可修复的。盐用于避免并行攻击,包括使用预先计算的表。缺乏盐分是LinkedIn的主要罪恶。您从经理那里得到的报价往往表明他既不完全擅长该主题,又确信他完全掌握了该主题。如果您想说服那位经理他错了,那就加油。人们最害怕的是甚至隐含地承认他们说了些愚蠢的话。

如果您希望您的组织实际切换到正确的密码哈希(请阅读这篇文章),那么您可能能够做的就是说服其他人,经理刚刚说的是胡言乱语,甚至没有道理。实际上是错误的。如果管理者变得孤立,那么他可能对正确的密码散列的实现视而不见,当然也从来没有承认它。再有,科学上正确的论据不一定是最有效的论据。在北美(尤其是新英格兰等受英国影响的地区),商务会议旨在避免冲突和稀释责任感,因此您应该散布一些恐惧,不确定性和疑问:一定要指出您的竞争对手正在转向盐渍哈希,并且不这样做会招致失去一些市场份额的风险。在南欧,开会是建立等级制度的仪式性战斗,所以大声喊叫,咆哮,威胁和使用讽刺来赢得群众的支持:您不会通过正确而坚定地赢得胜利。


一般来说,最有效的辩论类型之一是对权威的呼吁。在NIST特殊出版物SP800-118(当前正在草稿中)中,可以看到:


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


“无盐” =“弱点”。 NIST这样说。这位经理谁认为他比NIST聪明?

评论


+1用于区分正确和说服他人。 -1表示您无法说服别人。 =)一种策略是考虑如何让老板以为盐是他或她自己的想法,并确保他可以在不显得傻瓜的情况下认可盐。好斗会在这里不利于你。你想老板想认可盐。

– jbyler
14年6月24日在23:28

该答案属于“工作场所”。

–AVID♦
14年6月25日在9:45

说服其他人,经理刚刚说的话简直是胡言乱语,我认为您不应该对经理背后的事情talk之以鼻!

– PiTheNumber
2014年6月25日上午10:58

是的,在经理在附近的时候做

– prusswan
14年6月26日在3:52

#4 楼

从某种意义上说,如果您正在争论盐问题,那么您已经错过了船。关于密码存储安全性的最新技术已经远远超出了“加盐还是不加盐”的问题,并且此后一直转移到计数迭代上。

但让我们从基础开始。这是我不久前写的一个答案,它非常受欢迎。它解释了盐为什么更好的原因,很多人说它使其他解释变得平淡无奇。它或多或少是您的要求-如果您认为这样做会有所帮助,请告诉老板:

为什么加盐的哈希散布更安全?重要的一点是最后一个。也就是说,不再将存储盐分的SHA1散列并称其为良好不再是负责任的。计算能力已经达到了每秒数十亿哈希值不再是理论上的地步,这使您能够以比解释您的操作更快的速度穿透暴力攻击的整个32位空间。 />
现在的重点是迫使攻击者数以千计的问题来解决问题,只是为了猜测一下。在那里,PBKDF2出现了(穿着NIST发行的西装和领带),还有scrypt和朋友(看上去powerful而结实但功能强大)。

选择哪种算法并不是关键。它们都以不同的方式,以不同的重点来解决大致相同的问题。但是您必须使用某些东西-某种算法使得即使是单个密码也很难被暴力破解。原因很简单:这是行业标准,可测量且可证明更安全,并且使用它没有大量成本。将这些因素放在一起,很快就会发现,如果您不这样做,那么在发生漏洞的情况下您会被视为疏忽大意。

#5 楼

最好的论据是列出最常用的密码,并显示大约1%的用户会选择“ 123456”。第二好的方法是对一个大型网站进行一次密码泄漏分析,并显示只有大约一半的用户可以设法提供一个唯一的密码。

评论


选择“ 123456”的用户会沉没,添加盐的影响不大。 -因此,与前100个密码中的所有匹配项一样,这是一个错误的论点。

–塔米尔
2014年6月24日14:27在

#6 楼

您应该提出两点:


使用盐会减少包含哈希密码的被盗文件的值。无论系统用户使用哪种语言,都是如此,因为拥有针对您的哈希算法的彩虹表的攻击者可以使用它来反转哈希密码,而与选择该密码的人的母语无关。密码。
使用盐几乎是免费的。排除它几乎不会给您带来任何好处,即使在您经理的当前估计中,排除它也不可能造成严重的安全问题。因此,请使用它。

您的经理可能会对第一点提出异议,但我希望不能:“我们正在使用我们自己的自定义哈希算法,因此没有彩虹的危险表已存在”。在这种情况下,还必须说明使用标准的密码哈希算法。

我还发现:


[用户]都有不同的本机语言


是关于系统的一个奇怪的假设。如果您依赖假设进行安全性分析,则一旦破坏该假设,系统就会变得不安全(或至少不评估安全性)。因此,出于安全性的考虑,您需要强制该产品的两个用户都不要使用相同的母语。到底为什么有人会想以这种方式限制他们的系统,特别是强制执行此限制比使用盐更容易?

但是,在这种情况下,这种假设甚至没有得出结论,您的经理认为盐是不必要的(出于上述原因)。因此,面对假设无济于事的事实,是否可以维持假设的问题就无关紧要了。

最后,仅供参考,我的第一点与您的经理的分析相矛盾是有特定原因的:


不太可能使用相同的密码


是对盐所解决的缺点的有缺陷的分析。对于攻击者而言,系统的两个用户是否具有相同的密码无关紧要,除非攻击者恰好是这两个用户之一,并且因此知道他们共享的密码。盐不仅可以抵御这种攻击,而且还可以抵御彩虹桌攻击。因此,即使在您的系统上不可能发生您的用户进行这种异常的相同密码攻击,您仍然需要使用盐。

#7 楼

我猜这更多是人员问题,而不是技术问题。因此,您需要使用软技能而不是技术说明来做出回应。如果您的经理对技术说明的反应是积极的,请选择之前的答案之一。 br />最重要的要记住:老板就是老板。不要生他的气,否则你会倒霉的。
不要问他无法回答的问题。而是以简单的句子形式问间接问题。
尝试理解他的立场和论点。
应用释义。
不要笑。
不要轻描淡写。本书“如何赢得朋友并影响人们”。

示例对话框可能如下所示(请注意,我不是英语为母语的人):

您:“我们不需要额外的保护。”
老板:“是的,我们的用户不会重复使用相同的密码。”
您:“强密码已经安全。”
老板:“是的。”
您:“好的,我知道。我们的用户确保密码安全,我们生活在无盐状态。”
老板:“是的,也许不是所有用户……”
你:微笑


或者这样:

您:“使用盐的好处不值得付出努力。”
老板:“是的。”
您:“所以我们从任务列表中删除盐,然后继续其余的工作。”
老板:“对,我们已经落后于时间表了。”
您:“如果我们能以另一种方式满足时间表,我们可以实施盐分吗?”
老板:“不,我不明白那个盐的概念。”
您:“这些加密技术总是很难理解的。”
老板:“即使我读了一篇文章,也没有得到线索。”
您:“这让您觉得这很费力。”
老板:“是的,我们会损失两天左右。”
您:“在框架的帮助下,我可以在2个小时内完成。”
老板:“真的吗?”
您:微笑


请注意,根本没有问号。老板从来不会承受回答他可能不知道答案的问题的压力。

如果您以前从未做过,那么很难运用这种技巧。

如果这种方法也行不通,还有一个选择:

只需实施即可。不需要太多的工作,您的老板可能不会注意到它,除非他正在执行代码检查或查看数据库表。

评论


如果我处在OP的情况下,我当然不会相信我会以这种方式引导老板得出正确的结论。我们的书呆子通常不会以口头柔术为人所知。

– Teemu Leisti
14年6月24日在9:07

#8 楼

只需将一些哈希(也许是他自己的密码)丢入Google。很可能它将返回密码。他的弱散列就像根本没有散列一样。

https://www.google.de/search?q=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3

如果这不能说服他寻找一个新工作...