问题说明了一切。我们正在设计一个安全性非常重要的系统。某人的主意之一是强迫用户每3个月更改一次密码。我认为这是安全的,因为密码经常更改,这也迫使我们的用户记住不断变化的密码,这使他们更有可能将其写下来以帮助记忆。
同样,强迫用户使用超级难猜的密码确实非常好。强制他们使用?%&%和大写小写字母。我知道发明这样一个密码然后记住它很麻烦。
再一次,我们不希望任何人使用12345。
所以。是否有关于此主题的白皮书?好的做法?
我说的是用PHP创建的网站。如果在灯光环境中的MySQL发生了任何变化。
问题说明了一切。我们正在设计一个安全性非常重要的系统。某人的主意之一是强迫用户每3个月更改一次密码。我认为这是安全的,因为密码经常更改,这也迫使我们的用户记住不断变化的密码,这使他们更有可能将其写下来以帮助记忆。
同样,强迫用户使用超级难猜的密码确实非常好。强制他们使用?%&%和大写小写字母。我知道发明这样一个密码然后记住它很麻烦。
再一次,我们不希望任何人使用12345。
所以。是否有关于此主题的白皮书?好的做法?
我说的是用PHP创建的网站。如果在灯光环境中的MySQL发生了任何变化。
Answers:
我认为在这方面可能是少数派(基于我在学校和工作中与IT部门打交道的经验有限),但是我认为基于时间的强制性密码更改策略充其量是毫无用处的,而在最坏的情况下也是有害的。人们往往很难选择好的密码并将其保密。密码到期策略旨在通过限制可以破解/社交工程/被盗的任何密码的时间来缓解这种情况。但是,他们在实践中未能实现这一点,主要是因为它们迫使用户连续重新学习密码。通过使用户更难以将密码提交到内存中,您最终导致许多人选择较弱的密码,并且/或者将其密码写下来,在某些地方可以被撬开。
此外,当被迫定期更改密码时,许多用户将选择遵循非常容易识别的模式的密码,例如[base string][digit]。假设一个用户想要使用猫的名字Fluffy作为他们的密码。他们可能会用密码开出fluffy,然后将其更改为fluffy1,fluffy2,fluffy3等等。在这种情况下,该策略并不能真正帮助安全。即使用户选择了比更为安全的基本字符串fluffy,并且即使他们安全地记住了密码,每隔几个月更改一次的后缀字符也很少能缓解破解或社会工程学攻击。
另请参阅:密码过期被认为有害,这是一篇简短的文章(不是我写的),我认为它很好地介绍了这些问题。
fluffy1哈希值应与完全不同fluffy2。防止用户重复使用完全相同的密码非常容易,但是我认为这就是您所能做的。
我的大型组织(拥有15000多个用户)在2009年秋季每120天实施一次“密码更改”。这是一个巨大的IT难题,而且浪费了支持资源。每次120天的窗口滚动时,我们都会迫使成千上万的用户更改密码....其中许多人要么操作不正确并锁定了帐户....要么就忘记了第二天。即使我们尝试尽可能多地使用自助服务,我们的服务台也充斥着密码呼叫。
如果您希望您的用户/客户讨厌您....以及您的前线IT员工在他们每次获得实施密码更改的机会时,都给您蒙上了烙印。
密码更改策略是某些IT Manager如何在某处预订的复选框,它是15年前编写的。真正执行或支持该政策的战trench中没有人会告诉您这是一个好主意。
我在这里主张使用“通行短语”而不是密码。。。。。。。。。。。。。。。。。。。。。。。。。。。。:)
密码短语是一个几乎无法猜测的长字符串,很容易记住,例如“ MyCatIsFromSpainAndICallHimElGato”。或者是一首诗或一首歌。
如果您想使破解变得非常困难....弄糟的话,添加一些标点符号,将一些标点改为ells,将ohs改为零,将a改为@,等等...但是要记住它可以记住...那是关键。甚至还有多种选择方式,它们可以轻松地从您的手指流向键盘。...因此,您不会在手之间或SHIFT和怪异的标点符号之间弹跳起来。
所以...
马特
编辑: 8/24/2011 XKCD同意并说比我做的更好。
不。我个人认为这是不必要的,甚至适得其反。我在博客上赞叹不已,但如果您有兴趣,可以追究一下。
简而言之,它归结为两个原因:
1.强迫用户不断更改密码会导致密码错误。
不会有任何轶事证据,但这是有道理的,如果我被迫每隔x天记住一件新事物,我将使这些事物易于记忆,并且可能彼此相关。
如果用户知道必须很快进行更改,则他们更有可能选择“可猜测的”密码,例如“ Jan2010”或“ Password05”。对字符执行严格的策略可能只会导致添加感叹号或全拼写的名称,而不是缩写。在技术上复杂的密码和不会被猜到的密码之间有很大的区别。
2.强制定期更改密码并不能阻止攻击,只会降低风险(并且不会降低很多风险)
考虑一下-如果以某种方式猜测或发现了您的密码,攻击者将花费多长时间使用该信息?把自己放在攻击者的鞋子上。您刚刚发现了密码。如果有人发现,您是否会登录并提取您可以立即获取的所有信息?在30天的时间内,您已经拥有了想要的一切。
我的建议:
从用户的角度来看,必须更改密码非常不便。我绝对不愿意这样做,并且只会在需要我更改密码的情况下才勉强使用我绝对需要的网站。
关于这是否真的是一种很好的做法,也进行了一些讨论,因为有些人最终不得不记下密码才能记住它们。
您可以实现其中的一个小工具,以向人们显示密码在填充时的强度(或弱)-我发现这些功能(排序)很有用,尽管我不知道它们是否会导致更强的密码。密码。
作为一个非常严格的密码策略环境(“超级难猜密码”和密码更改方式)的用户,我的看法是只需要硬密码。尽管您的用户可能需要一点时间来习惯它(特别是如果他们是12345类型的用户),但他们应该能够在一周内轻松调用并键入它。
但是,如果您拥有如此强大的密码并强迫他们更改密码,我可以预测最终用户会感到不舒服。
更改密码通常可能导致用户将其写下来。根据Bruce Schneier(http://www.schneier.com/blog/archives/2005/06/write_down_your.html)所说,这并不是一个坏主意。
我什至会争辩说,让安全性成为阻碍可用性的方法有时可能是一件好事,仅因为它会提醒用户采取安全措施。例如,在我工作的银行中,很多安全措施都是安全剧院(例如门口的人脸识别,但是如果识别失败,安全员会为您打开门)。尽管这些措施本身并不能提高安全性,但它们总是在提醒我们安全是工作中的重要问题,正在进行大量日志记录和检查,如果发现您在做“不安全”的事情,则说明您采取了这些措施。将会有麻烦。
当然,这适用于银行员工的安全,可能不适用于您网站的用户...
如果安全策略需要,则应强制用户每隔n天更改一次。我在国家机构工作,这是国家审计师办公室强制执行的要求。我对此无能为力,所以我不得不强制更改。
如果您不受法规约束来强制更改密码,请不要强行更改密码。确保设置的密码满足某些最低复杂性要求。对于大多数密码系统来说,长度要比复杂度高得多,因此我认为可变标准是最好的情况。如:
诸如Active Directory之类的内置复杂性方案不支持这种分层系统。如果您构建自己的密码更改环境,则可以执行以下操作。由于每次使用Shift键都会增加发生胖手指事件的可能性,因此带有多个字符集的长密码更容易发生登录失败事件,尤其是在学习阶段。如果您有一个帐户锁定系统,这可能是个大问题。对于使用自己喜欢的诗的第三行(63个字符!)作为密码短语的人,不必h @ x0r,它使输入变得快速高效。
如果技术或风险环境发生了显着变化,并且您的密码现在已不如应有的那样复杂,则应采用某种方式使密码在一段时间内过期。人们会对这种必要性感到不满,尤其是如果您以前从未强迫进行过更改,但是它将帮助您维持安全状态。
密码很难猜是一件好事。强制执行导致用户忘记密码或必须写下密码的复杂性级别是一件坏事,因为在此过程中,由复杂性获得的任何安全性都将完全丧失。在理想的世界(不幸的是我们生活的地方)中,应该在复杂性和可用性之间进行权衡。当然,不同的人会在不同的地方看到这个平衡点。
在X天之内定期更改密码的背后的逻辑对我来说有点丢失。我通常听到的原因是为了限制密码被盗的用途,对此我回答说,几乎可以肯定的是,任何真正的破坏都将在头几个小时之内完成。例如,弗雷德“熟悉”玛丽的密码。除非这几乎与Mary更改密码的同时发生,否则如果明天或下个月更改密码会产生什么不同?弗雷德是否真的有可能再等一两个星期再使用密码(假设一直以来都是这样)?
显然,如果出于任何原因或怀疑可能需要更改密码,则完全是另一回事。