是否有任何有效的理由禁止字符和限制密码的长度?


39

我遇到过很多站点,它们要么限制了允许输入密码的长度和/或不允许某些字符。这对我来说是一个限制,因为我想扩大和延长密码的搜索空间。这也给我一种令人不适的感觉,即它们可能不会散列。

是否有充分的理由设置长度上限或排除密码中的字符?


26
当然!它使暴力破解人们的密码变得更加容易!:P
FrustratedWithFormsDesigner

4
我们在说有效的“技术”原因还是有效的“业务”原因?
马丁·约克

1
@马丁:我当时想技术,但我想。
克里斯

11
@JYelton为什么您关心原始密码长度是多少?哈希值将始终相同。我当然希望您不要将它们存储为明文...
Pewpewarrows 2011年

Answers:


27

没有

没有充分的理由。

编辑:我不能证明没有充分的理由,因为不能证明是负面的。我认为没有充分的理由-正如其他人指出的那样,无论输入大小如何,哈希值都将是相同大小,并且(从问题上下文中)消除有效字符只会减少状态空间。从表面上看,答案似乎显而易见:没有充分的理由。听起来可能不错或看起来不错的原因很多,但事实并非如此。如果是这样的话,有人会已经将它们发布在这里,或者如果没有,则可以将它们发布在security.stackexchange.com上,并且这个答案不会被如此强烈地反对。


3
我同意,但是Kissaki关于编码的评论是有效的。有些堆栈/程序员似乎无法正确编码,因为限制使用ASCII是使它正常工作的廉价工具。
edA-qa mort-ora-y

10
您至少可以尝试阐述一下吗?您可能不知道这一事实,或者您有理由相信常见/现有的原因是无效的。给您带来疑问的好处并假设是后者,您应该在解释为什么这些原因无效的原因。
亚罗诺(Aaronaught)2011年

8
-1-我可以想到将密码限制为给定字符集的几个很好的理由。同样,必须支持按键式电话密码以及通过键盘键入的密码。
rjzii 2011年

9
-1。没有理由,只是意见。如果您要发表全面声明,请备份它。
Michael K

4
现在正在我们的元讨论站点上对此进行讨论:了解为什么一个单词的答案如此受欢迎以及我们可以采取哪些措施来提高这样的答案的质量将很有帮助。

25

限制长度可以是一种限制哈希执行时间以及限制带宽的措施(无论如何,这两者实际上都是很小的)。除此之外,没有充分的理由,特别是从安全角度来看。

有人会说:“人们会更容易忘记更长的密码” –但这确实是一种愚蠢的说法,根本没有意义。

至于字符,只要您知道将来数据传输和/或迁移的潜在编码问题(例如,您将在2年内从ASCII转换为UTF-8),允许更多的字符仅对密码有帮助。


4
考虑到任何现代协议长度的开销绝对不是一个很好的理由-除了像1K这样的高限制,它只是为了防止某些攻击/废话。
edA-qa mort-ora-y

3
限制哈希的执行时间通常是不好的。计算哈希值所花费的时间越长,对其进行暴力破解所花费的时间就越长。
tdammers 2011年

尽管没错,但这始终是一个权衡。您不希望总是计算花费时间最长的最佳哈希。因此非对称握手VS对称数据流中的VPN等
Kissaki

17

是的,有特殊字符的原因。

禁止特殊字符更多是可用性问题,而不是与安全性相关。首先,它们可能会因编码问题而陷入困境。其次,即使您保证始终使用相同的编码,仍然存在输入设备的问题。您将依赖于具有相同键盘布局的完整键盘(这消除了大多数移动设备)。以后,不仅语言之间有所不同,而且操作系统之间也有所不同,Windows,Linux和OSX的布局可能有所不同。因此,我看到了不允许输入密码的充分理由,例如:√Ω≈ç∫∞§…¬å∑±


3
除非您用户提供密码,也就是说,如果他们自己输入密码,那么他们选择使用一些奇怪的数学符号确实是他们的职责。现在,我确实同意这里的编码问题,尽管发现它更多地是通过雷达能力不足的借口,而不是任意防止某些字符的实际好理由。
Newtopian 2011年

2
@new:这不关他们的事。如果他们自shoot自shoot,他们仍然会认为您的应用程序有问题,请致电给您的支持。
vartec

7
@Newtopian:当我作为用户由于无知而受到限制(例如无法在我的电子邮件地址中指定“ +”)时,我讨厌它。但是,有时候最好不要给用户太多的绳索来挂自己。我认为这是一个机会。这与“任意”防止某些字符有关。
Zano

1
所以您提倡希腊人,阿拉伯人,中国人和其他人都使用US-ASCII?
l0b0 2011年

@ l0:不,我主张他们使用其语言中的常规常用字符,而不是某些布局中可能没有的特殊字符。
vartec

13

几年前,当Chase客户发现其密码不区分大小写时,在安全领域存在一些争议。原来,他们的网页只是一些使用了30年的OS / 400后端系统的前端,该系统具有技术上的局限性,可以忽略大小写。解决这个问题显然要花费数百万美元。

关键是,可能存在昂贵的遗留原因,不允许一定长度的密码。
(请注意,我不宽容这个借口...)


1
就此而言,这是以任何方式限制密码的唯一正当理由……仅在底层系统首先拥有此类限制的情况下。
Newtopian 2011年

8

大多数银行,IT部门等出于技术原因不执行最大密码限制。他们完全了解密码哈希的工作原理以及如何存储复杂的密码。它们强加了这些限制,因为它减少了为忘记密码的人提供支持的电话数量。这是施加这种限制的好理由吗?绝对不是。但是,这是主要原因。


1
我认为减少支持电话是一种valid Business reason(我个人实际上并不认为存在相关性)
Martin York

2
嗯,还有其他方法可以重置密码,或者教育用户如何选择足够容易记住的复杂密码。我上班时使用的最后几个密码已经超过25个字符,而且记住它们也没有问题。同样,大概,那些难以记住长密码的人仍然会选择短密码,尽管我不知道实际上有多频繁。从表面上看,减少支持电话确实是一个有效的商业理由,但限制密码长度仍然是一个糟糕的理由。
格雷格·杰克逊

1
我认为我(和许多人)会发现准确地键入(而不只是记住)25个字符而几乎看不到输出结果。到目前为止,我已经输入了5个错字!
格里

好吧,记住与输入不同。如果您知道如何选择长密码,则记住它很容易。只需从故事或剧本,诗词或歌曲歌词的某些部分中选句。只要您在其中更改一两个内容(故意拼写错误,将一个单词更改为听起来相似或含义相同的单词,等等),就很容易而且非常安全。没错,键入它可能会比较困难,但这并不是银行强迫您键入少于8/10/12个字符的借口。
格雷格·杰克逊

尝试在移动设备上键入该25字母的密码
Lie Ryan

7

并非所有输入设备(硬件上)通常都具有完整键盘所具有的所有字符,或者同样如此。如果不使用密码管理器,可能会在输入密码时遇到麻烦,不是吗?而且Unicode距离标准还差很远(很远)。


1
通常,输入密码的人会使用相同的硬件(或硬件类别)来创建和验证密码。我看不出这是限制字符集或长度的参数。至于Unicode,在构建服务器端(身份验证部分)时,为什么要限制大小或字符集?任何需要输入密码的系统都应该能够控制该密码在系统中的输入方式,因此,如果您的客户端需要unicode,那就可以了!
Newtopian 2011年

@Newtopian您假设您不必与旧系统或不受控制的系统进行交互。
grahamparks 2011年

1
他们问了一个很好的理由,这不是一个很好的理由

2
@Jarrod-无法输入密码不是一个好理由吗?无论如何,我没有看到您提出更好的建议(或任何建议)。
Rook

3
@Rook你不应该使用这些字符,如果你知道你不能从设备,不让它接他们很好的理由限制他们每一个人,它使一个很好的理由让你个人不使用它们。

7

是否有充分的理由设置长度上限或排除密码中的字符?

我要猜测一下,其中一些限制是由于其网站(& < > #)上的字符过滤以阻止黑客入侵所致。而另一些则是尖锐的上司老板的委员会提出的骨头想法。

我遇到了许多非常愚蠢的(在我看来)“安全”决策。例如,一家大型投资公司处理我的IRA帐户以及我的退休金。为了与养恤金进行任何联系,都要求我在电话上输入密码(否则您无法接通密码)。我的经纪人/ IRA帐户使用字母(大写和小写)以及一些标点符号-这些字符都不会出现在电话号码簿上。如果您无法通过电话使用密码登录,则可以将经纪帐户的密码重置为可以通过电话输入的密码。

我的薪资系统(对于我所在的咨询公司)仅需要数字,这使他们可以使用相同的数据库,无论用户是致电(我从未做过)还是使用Web界面(我仅使用此) 。

话虽如此,是时候在办公​​室更改我的密码了。他们受到如此疯狂的限制,以至于我估计找到系统可接受的密码大约需要半天时间:至少2个大写字母,至少2个小写字母,至少2位数字(不能为+/- 1至少2个非字母/非数字字符,不能匹配后24个密码中的任何一个,不能包含英语单词(长3个或更多字母)的任何字符串(正向或反向)还有其他两种语言,我没有清除权限)。我认为最小长度为10-11个字符。


是的,我已经在无名单中看到了这些字符。
克里斯(Chris

5
简单的攻击:在键盘下找到便签,因为没人记得他们的密码。
JeffO 2011年

@Jeff,没错。如果我将笔记本电脑留在家里,密码太难记了,因此我无法登录。在薪资系统上,我将用户名和密码作为书签的一部分。
Tangurena 2011年

“不能包含英语中一个单词(长度为3个或更多字母)的任何字符串(向前或向后)”这就是让我明白的那个。如果密码包含整个单词,则字典攻击无效,而如果整个密码仅包含完整单词,则词典攻击无效……那么实际上是一个完整单词或非常常见的短语。无需写下来即可使用的最安全的密码是来自书本,诗歌,歌曲歌词等的通行密码-将几个字母更改为数字,拼写错误并大写字母大写,而且没人会破解该密码。
格雷格·杰克逊

1
字符过滤是在后台未经测试的垃圾代码的肯定标志。开发人员需要学习转义字符串。
l0b0

5

限制字符的原因之一是由于密码的输入方式。

例如,有几家银行通过其网上银行网站从密码中询问特定字符,然后通过下拉框选择适当的字符。

据推测,他们这样做是为了使按键记录程序无法检测到按键,从而知道您的密码中的字符。虽然我知道还有许多其他方法可以规避此类措施,例如屏幕捕获;对键盘记录程序仍然有效。

如果必须允许所有字符,则下拉框的长度将变得很繁琐,并且还会使外观相似的字符之间产生混淆。


1
当然,(技术)人员还是会键入字母吗?
格里

@Gerry-这是浏览器特定的行为,而不是绝对的标准,它还取决于用户的知识以使其可行。
乔恩·霍普金斯

我的银行出于类似原因使用了键盘弹出窗口小程序。但是使用起来太困难了,并且由于无法访问而受到了很多批评(不适用于屏幕阅读器,替代输入等)
jqa

1
@Jon-我确实说过技术人员,而且我不知道任何没有实现至少第一个字符匹配的Windows浏览器,因为这是Windows的标准行为-无法代表Mac和* nix
Gerry

1
@Gerry我的Android手机上的浏览器不允许这样做。我希望很多移动设备都一样。
RoundTower 2011年

2

禁止使用特殊字符(如tab)将是有效的。您可以在文本模式下使用制表符登录或更改密码,但不能在GUI或Web环境中使用它。反斜杠字符还会出现一些跨平台问题。

顺便说一句,长密码不是密码-它们是密码短语。您的普通用户无法记住2Z8d!%g#x,但他们可以记住“我的宠物的名字是狗的名字”。较长的文本更难通过暴力破解,并且不太可能写在屏幕上的便条纸上。


另请参见xkcd.com/936
sergut 2015年

0

当人们键入内容时,他们会犯错,称为“错别字”。通常,人们会看到自己的错误并予以纠正。对于密码输入,通常您看不到键入的内容,因此也无法更正输入错误。您在没有意识到的情况下犯了错误,提交了密码,然后又以“密码无效”的形式返回。然后,您再试一次。然后,您再试一次。

您可以将其视为“ 3个小错别字,然后就无法与强力攻击区分开”。系统如何防御暴力攻击?一个明确的“ 尝试太多,走开,即使您做对了,您也将无法登录 ”响应?密码输入的延迟呈指数增长,如果延迟时间太长,导致浏览器超时,就无法尝试再次登录?方法各不相同,但是设计良好的系统始终会带来后果。

您可以将其视为“ 3个小错别字,然后您会得到某种拒绝服务”。

随着密码长度的增加,输入错误的风险(因此,拒绝授权人员访问的风险)也会增加。长度超过20个字符的字符将经常被打错(除非用户聪明/懒惰,并将密码存储在某个地方,以便他们可以“复制和粘贴”而不必担心拼写错误,例如桌面上一个漂亮的纯文本文件,称为“ 密码” .txt “)。

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.