我应该强制我的用户每n天/周/月更改一次密码吗?


19

问题说明了一切。我们正在设计一个安全性非常重要的系统。某人的主意之一是强迫用户每3个月更改一次密码。我认为这是安全的,因为密码经常更改,这也迫使我们的用户记住不断变化的密码,这使他们更有可能将其写下来以帮助记忆。

同样,强迫用户使用超级难猜的密码确实非常好。强制他们使用?%&%和大写小写字母。我知道发明这样一个密码然后记住它很麻烦。

再一次,我们不希望任何人使用12345。

所以。是否有关于此主题的白皮书?好的做法?

我说的是用PHP创建的网站。如果在灯光环境中的MySQL发生了任何变化。


我看到有人投票结束了这个话题。我认为密码管理与编程非常相关。但是,如果社区为之欢欣鼓舞,那么应该把它关闭好,我应该在哪里问呢?超级用户?
Iznogood

1
老实说,我认为客户的安全是他的关注。一定要使用SSL和其他东西来保持加密,以免被窃听,但是如果他想使用“ 0”作为密码,那是他自己的错。

尝试创建允许注入您以后决定的实现的接口。一种方法是验证密码强度(或说出密码有什么问题),另一种方法是评估是否应该更改密码或何时更改密码等等。现在返回“ ok”和“无需更改” :)以后,当您从serverfault那里获得答案时,您就可以打开门……
helios 2010年

2
@mathepic-“但是如果他想使用“ 0”作为密码,那就是他自己的错。” -我在概念上同意,但实际上,网站所有者负有一定责任。如果您在银行使用“ 0”,并且您的帐户已被清理,他们会把它放回去,对吗?
tomjedrz

2
@mathepic我完全不同意。也许对于hotmail来说,它是用户的错,但当它是一个充满私人信息的私有系统时,如果由于某些白痴选择了“ 0”而使其受到损害,则这是公司的问题。
Iznogood

Answers:


28

我认为在这方面可能是少数派(基于我在学校和工作中与IT部门打交道的经验有限),但是我认为基于时间的强制性密码更改策略充其量是毫无用处的,而在最坏的情况下也是有害的。人们往往很难选择好的密码并将其保密。密码到期策略旨在通过限制可以破解/社交工程/被盗的任何密码的时间来缓解这种情况。但是,他们在实践中未能实现这一点,主要是因为它们迫使用户连续重新学习密码。通过使用户更难以将密码提交到内存中,您最终导致许多人选择较弱的密码,并且/或者将其密码写下来,在某些地方可以被撬开。

此外,当被迫定期更改密码时,许多用户将选择遵循非常容易识别的模式的密码,例如[base string][digit]。假设一个用户想要使用猫的名字Fluffy作为他们的密码。他们可能会用密码开出fluffy,然后将其更改为fluffy1fluffy2fluffy3等等。在这种情况下,该策略并不能真正帮助安全。即使用户选择了比更为安全的基本字符串fluffy,并且即使他们安全地记住了密码,每隔几个月更改一次的后缀字符也很少能缓解破解或社会工程学攻击。

另请参阅:密码过期被认为有害,这是一篇简短的文章(不是我写的),我认为它很好地介绍了这些问题。


2
您可以通过要求与历史密码不同的形式来防止密码策略中的第二点。
华纳2010年

@Warner:您将如何以安全的方式实现它?您几乎永远都应该在不先对哈希进行哈希处理之前存储密码,并且fluffy1哈希值应与完全不同fluffy2。防止用户重复使用完全相同的密码非常容易,但是我认为这就是您所能做的。
bcat

无法同意更多...
安东尼·本克默恩

1
@bcat,您当然可以检查新密码是否是其旧密码的简单排列。在增加数字后缀的情况下,只需减少并增加新密码后缀(如果是数字),然后将其哈希值与该用户先前存储的哈希值进行比较即可。您也可以放入其他简单的转换检查。全部都无需以明文形式存储密码。
mmcdole 2010年

1
@bcat:Linux通过PAM(可插入身份验证模块)采用这种类型的验证,并且允许用户在系统内更改密码的实用程序会首先请求其当前密码,以便可以根据新密码来判断该密码。
syn-

14

我的大型组织(拥有15000多个用户)在2009年秋季每120天实施一次“密码更改”。这是一个巨大的IT难题,而且浪费了支持资源。每次120天的窗口滚动时,我们都会迫使成千上万的用户更改密码....其中许多人要么操作不正确并锁定了帐户....要么就忘记了第二天。即使我们尝试尽可能多地使用自助服务,我们的服务台也充斥着密码呼叫。

如果您希望您的用户/客户讨厌您....以及您的前线IT员工在他们每次获得实施密码更改的机会时,都给您蒙上了烙印。

密码更改策略是某些IT Manager如何在某处预订的复选框,它是15年前编写的。真正执行或支持该政策的战trench中没有人会告诉您这是一个好主意。

我在这里主张使用“通行短语”而不是密码。。。。。。。。。。。。。。。。。。。。。。。。。。。。:)

密码短语是一个几乎无法猜测的长字符串,很容易记住,例如“ MyCatIsFromSpainAndICallHimElGato”。或者是一首诗或一首歌。

如果您想使破解变得非常困难....弄糟的话,添加一些标点符号,将一些标点改为ells,将ohs改为零,将a改为@,等等...但是要记住它可以记住...那是关键。甚至还有多种选择方式,它们可以轻松地从您的手指流向键盘。...因此,您不会在手之间或SHIFT和怪异的标点符号之间弹跳起来。

所以...

  • 使用长的“密码短语”。
  • 内部测试它们的强度。
  • 在整个基础架构中实施“单点登录”,因此客户每天仅需使用一次或两次。
  • 切勿强迫他们进行更改。
  • 并对其正确使用进行教育,教育和教育。

马特

编辑: 8/24/2011 XKCD同意并说比我做的更好。


这听起来像是一个很好的论据,它证明了在用户教育方面一定会成功,而不一定是密码策略失败。这并不是您的失败-IT部门较高的人员严重破坏了工作,因为您列出的想法应该是每位员工在每次更改密码提示时都摆在他们面前的东西。
卡拉·玛菲亚

单点登录确实应该是第一个要点,这是使用户有理由学习密码的胡萝卜。此外,到期时间应基于用户使用密码的频率而定,对于每天使用的系统,30天的到期并不是不合理的,但是对于前任雇主而言,他们的(非SSO)费用应用程序(大多数人只能使用该应用程序)每月登录一次)有30天的过期政策,我认识的每个人每次使用服务台时都会打到服务台!
GAThrawn

单点登录非常有用。它有助于显着减少需要用户知道的密码数量。
安东尼·乔治

10

不。我个人认为这是不必要的,甚至适得其反。我在博客上赞叹不已,但如果您有兴趣,可以追究一下。

简而言之,它归结为两个原因:

1.强迫用户不断更改密码会导致密码错误。

不会有任何轶事证据,但这是有道理的,如果我被迫每隔x天记住一件新事物,我将使这些事物易于记忆,并且可能彼此相关。

如果用户知道必须很快进行更改,则他们更有可能选择“可猜测的”密码,例如“ Jan2010”或“ Password05”。对字符执行严格的策略可能只会导致添加感叹号或全拼写的名称,而不是缩写。在技​​术上复杂的密码和不会被猜到的密码之间有很大的区别。

2.强制定期更改密码并不能阻止攻击,只会降低风险(并且不会降低很多风险)

考虑一下-如果以某种方式猜测或发现了您的密码,攻击者将花费多长时间使用该信息?把自己放在攻击者的鞋子上。您刚刚发现了密码。如果有人发现,您是否会登录并提取您可以立即获取的所有信息?在30天的时间内,您已经拥有了想要的一切。

我的建议:

  • 强制执行极其严格的密码策略(例如15个字符,包括大写,小写,数字和特殊字符,且英语单词不超过3个字符)
  • 切勿让用户更改密码。如果他们必须将密码写在纸上并将其保存在钱包中,那实际上很好。人们擅长固定纸张,但不擅长记住随机字符串。

+1-尽管我喜欢120天或180天的有效期,但大部分时间都同意。祝您在政治组织中保持“极其严格的”密码策略有效。
tomjedrz

“人们擅长固定纸张”-真的吗?你必须认识比我更好的人!当我以前提供桌面支持时,您可以很容易地在不在时的用户的PC上,只需拿起他们留在桌子上的纸质日记,翻到后一页,然后在其中输入最新的单词即可密码框。
GAThrawn

我认为这取决于纸条及其对文件的重要性的看法。那些人会在他们的书桌上留下50美元的钞票吗?他们的信用卡?:)
Damovisa 2010年

4

从用户的角度来看,必须更改密码非常不便。我绝对不愿意这样做,并且只会在需要我更改密码的情况下才勉强使用我绝对需要的网站。

关于这是否真的是一种很好的做法,也进行了一些讨论,因为有些人最终不得不记下密码才能记住它们。

您可以实现其中的一个小工具,以向人们显示密码在填充时的强度(或弱)-我发现这些功能(排序)很有用,尽管我不知道它们是否会导致更强的密码。密码。


那么在这种情况下,它是一个没有注册表格的私人网站。用户是员工,因此他们必须使用他自己的系统。话虽如此,我不一定同意非常高的安全性。但我无法决定您所看到的一切
。– Iznogood

3

作为一个非常严格的密码策略环境(“超级难猜密码”和密码更改方式)的用户,我的看法是只需要硬密码。尽管您的用户可能需要一点时间来习惯它(特别是如果他们是12345类型的用户),但他们应该能够在一周内轻松调用并键入它。

但是,如果您拥有如此强大的密码并强迫他们更改密码,我可以预测最终用户会感到不舒服。


3

从IT管理的角度来看,最好的选择是研究使应用程序使用客户正在使用的现有身份验证方案的单点登录功能的可能性。显然,Active Directory发挥了很大的作用,但是如果您的应用程序符合现场IT业已配置的策略,则不必担心重新发明轮子。

既然有这么多的争论出现了关于强制更改密码是否是一个好主意(虽然我认为这是继发于你的主要问题),我想你会喜欢的一些想法和链接在这里。在大多数情况下,如果你不打算强制执行密码复杂性和变化的时间表,你可能也没有在所有的密码-但这样它的实现(培训,管理支持等)比我强调更重要。


2

更改密码通常可能导致用户将其写下来。根据Bruce Schneier(http://www.schneier.com/blog/archives/2005/06/write_down_your.html)所说,这并不是一个坏主意。

我什至会争辩说,让安全性成为阻碍可用性的方法有时可能是一件好事,仅因为它会提醒用户采取安全措施。例如,在我工作的银行中,很多安全措施都是安全剧院(例如门口的人脸识别,但是如果识别失败,安全员会为您打开门)。尽管这些措施本身并不能提高安全性,但它们总是在提醒我们安全是工作中的重要问题,正在进行大量日志记录和检查,如果发现您在做“不安全”的事情,则说明您采取了这些措施。将会有麻烦。

当然,这适用于银行员工的安全,可能不适用于您网站的用户...


1

如果安全策略需要,则应强制用户每隔n天更改一次。我在国家机构工作,这是国家审计师办公室强制执行的要求。我对此无能为力,所以我不得不强制更改。

如果您不受法规约束来强制更改密码,请不要强行更改密码。确保设置的密码满足某些最低复杂性要求。对于大多数密码系统来说,长度要比复杂度高得多,因此我认为可变标准是最好的情况。如:

  • 密码不得少于10个字符。
  • 10-25个字符之间的密码至少需要3个字符集。
  • 25至40个字符之间的密码至少需要2个字符集。
  • 超过40个字符的密码可以使用单个字符集。

诸如Active Directory之类的内置复杂性方案不支持这种分层系统。如果您构建自己的密码更改环境,则可以执行以下操作。由于每次使用Shift键都会增加发生胖手指事件的可能性,因此带有多个字符集的长密码更容易发生登录失败事件,尤其是在学习阶段。如果您有一个帐户锁定系统,这可能是个大问题。对于使用自己喜欢的诗的第三行(63个字符!)作为密码短语的人,不必h @ x0r,它使输入变得快速高效。

如果技术或风险环境发生了显着变化,并且您的密码现在已不如应有的那样复杂,则应采用某种方式使密码在一段时间内过期。人们会对这种必要性感到不满,尤其是如果您以前从未强迫进行过更改,但是它将帮助您维持安全状态。


我很幸运,没有受到任何约束。谢谢!
Iznogood

0

密码很难猜是一件好事。强制执行导致用户忘记密码或必须写下密码的复杂性级别是一件坏事,因为在此过程中,由复杂性获得的任何安全性都将完全丧失。在理想的世界(不幸的是我们生活的地方)中,应该在复杂性和可用性之间进行权衡。当然,不同的人会在不同的地方看到这个平衡点。

在X天之内定期更改密码的背后的逻辑对我来说有点丢失。我通常听到的原因是为了限制密码被盗的用途,对此我回答说,几乎可以肯定的是,任何真正的破坏都将在头几个小时之内完成。例如,弗雷德“熟悉”玛丽的密码。除非这几乎与Mary更改密码的同时发生,否则如果明天或下个月更改密码会产生什么不同?弗雷德是否真的有可能再等一两个星期再使用密码(假设一直以来都是这样)?

显然,如果出于任何原因或怀疑可能需要更改密码,则完全是另一回事。


0

如果应用程序需要如此高的安全性,您是否考虑过使用SecurID令牌之类的东西?这意味着用户每60秒就会获得一个新密码。您不必担心写下密码来使用它们。但是,这些确实要花钱。解决方案必须有多安全?


非常安全,但想知道是否需要那么安全。检查链接谢谢!!
Iznogood

0

我认为提供给用户的信息很重要,向他们解释如何创建密码以及不要两次使用相同的密码有多重要。创建密码的一种简单方法是采用句子,并在每个单词中采用第一个字母并添加一些数字。

例如 我喜欢统治世界= Iltrw99

不要强迫他们更改密码,这只会使他们感到困惑。


0

尽管我不同意每三个月更改一次密码,但是如果您的公司是公开交易的,这是一项要求,并且这是符合SOX要求的一部分。旁注:萨班斯法案很烂。


0

我没有看到的是对资源的外部访问。

我倾向于同意,如果您选择明智的密码策略,除非有人将其写下来,否则没人会猜到该密码。

但是,假设您可以通过非现场方式访问Webmail,现在您可能会让用户在“任何旧PC”和IMO上键入其凭据,这会增加间谍软件/恶意软件/特洛伊木马等构成的对您的业务数据的风险,从而可能会窃听/窃取这些密码。


很好的见解谢谢!想知道我们如何才能保护自己免受此伤害。我们将强制执行Firefox / chrome和bloqing IE6-7-8。
Iznogood

-1

如果人们写下简单的密码,那会让您认为他们不会写下巨大的密码短语或超级复杂的密码。增量密码更改的作用是清除不再自动使用的用户ID,这使单个用户在所有这些操作中承担一些责任。人们将成为人们,寻找轻松的道路来完成某件事;可以检测到并拒绝重复的密码和递增更改的密码。可以强制执行复杂性要求,强制更改密码也可以使非IT用户对所有这些负责。抱怨密码更改的大多数用户都是懒惰的,他们假装更改密码就像是开胸手术。别再抱怨了,要负责任,别再试图寻找轻松的路了,


我发现“巨大的密码短语”比“简单的密码”要容易得多。甚至还有一个著名的xkcd漫画,所以我敢肯定我并不孤单。
迈克尔·汉普顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.