我遇到过很多站点,它们要么限制了允许输入密码的长度和/或不允许某些字符。这对我来说是一个限制,因为我想扩大和延长密码的搜索空间。这也给我一种令人不适的感觉,即它们可能不会散列。
是否有充分的理由设置长度上限或排除密码中的字符?
我遇到过很多站点,它们要么限制了允许输入密码的长度和/或不允许某些字符。这对我来说是一个限制,因为我想扩大和延长密码的搜索空间。这也给我一种令人不适的感觉,即它们可能不会散列。
是否有充分的理由设置长度上限或排除密码中的字符?
Answers:
没有充分的理由。
编辑:我不能证明没有充分的理由,因为不能证明是负面的。我认为没有充分的理由-正如其他人指出的那样,无论输入大小如何,哈希值都将是相同大小,并且(从问题上下文中)消除有效字符只会减少状态空间。从表面上看,答案似乎显而易见:没有充分的理由。听起来可能不错或看起来不错的原因很多,但事实并非如此。如果是这样的话,有人会已经将它们发布在这里,或者如果没有,则可以将它们发布在security.stackexchange.com上,并且这个答案不会被如此强烈地反对。
限制长度可以是一种限制哈希执行时间以及限制带宽的措施(无论如何,这两者实际上都是很小的)。除此之外,没有充分的理由,特别是从安全角度来看。
有人会说:“人们会更容易忘记更长的密码” –但这确实是一种愚蠢的说法,根本没有意义。
至于字符,只要您知道将来数据传输和/或迁移的潜在编码问题(例如,您将在2年内从ASCII转换为UTF-8),允许更多的字符仅对密码有帮助。
是的,有特殊字符的原因。
禁止特殊字符更多是可用性问题,而不是与安全性相关。首先,它们可能会因编码问题而陷入困境。其次,即使您保证始终使用相同的编码,仍然存在输入设备的问题。您将依赖于具有相同键盘布局的完整键盘(这消除了大多数移动设备)。以后,不仅语言之间有所不同,而且操作系统之间也有所不同,Windows,Linux和OSX的布局可能有所不同。因此,我看到了不允许输入密码的充分理由,例如:√Ω≈ç∫∞§…¬å∑±
。
几年前,当Chase客户发现其密码不区分大小写时,在安全领域存在一些争议。原来,他们的网页只是一些使用了30年的OS / 400后端系统的前端,该系统具有技术上的局限性,可以忽略大小写。解决这个问题显然要花费数百万美元。
关键是,可能存在昂贵的遗留原因,不允许一定长度的密码。
(请注意,我不宽容这个借口...)
大多数银行,IT部门等出于技术原因不执行最大密码限制。他们完全了解密码哈希的工作原理以及如何存储复杂的密码。它们强加了这些限制,因为它减少了为忘记密码的人提供支持的电话数量。这是施加这种限制的好理由吗?绝对不是。但是,这是主要原因。
valid Business reason
(我个人实际上并不认为存在相关性)
并非所有输入设备(硬件上)通常都具有完整键盘所具有的所有字符,或者同样如此。如果不使用密码管理器,可能会在输入密码时遇到麻烦,不是吗?而且Unicode距离标准还差很远(很远)。
是否有充分的理由设置长度上限或排除密码中的字符?
我要猜测一下,其中一些限制是由于其网站(& < > #
)上的字符过滤以阻止黑客入侵所致。而另一些则是尖锐的上司老板的委员会提出的骨头想法。
我遇到了许多非常愚蠢的(在我看来)“安全”决策。例如,一家大型投资公司处理我的IRA帐户以及我的退休金。为了与养恤金进行任何联系,都要求我在电话上输入密码(否则您无法接通密码)。我的经纪人/ IRA帐户使用字母(大写和小写)以及一些标点符号-这些字符都不会出现在电话号码簿上。如果您无法通过电话使用密码登录,则可以将经纪帐户的密码重置为可以通过电话输入的密码。
我的薪资系统(对于我所在的咨询公司)仅需要数字,这使他们可以使用相同的数据库,无论用户是致电(我从未做过)还是使用Web界面(我仅使用此) 。
话虽如此,是时候在办公室更改我的密码了。他们受到如此疯狂的限制,以至于我估计找到系统可接受的密码大约需要半天时间:至少2个大写字母,至少2个小写字母,至少2位数字(不能为+/- 1至少2个非字母/非数字字符,不能匹配后24个密码中的任何一个,不能包含英语单词(长3个或更多字母)的任何字符串(正向或反向)还有其他两种语言,我没有清除权限)。我认为最小长度为10-11个字符。
限制字符的原因之一是由于密码的输入方式。
例如,有几家银行通过其网上银行网站从密码中询问特定字符,然后通过下拉框选择适当的字符。
据推测,他们这样做是为了使按键记录程序无法检测到按键,从而知道您的密码中的字符。虽然我知道还有许多其他方法可以规避此类措施,例如屏幕捕获;对键盘记录程序仍然有效。
如果必须允许所有字符,则下拉框的长度将变得很繁琐,并且还会使外观相似的字符之间产生混淆。
禁止使用特殊字符(如tab)将是有效的。您可以在文本模式下使用制表符登录或更改密码,但不能在GUI或Web环境中使用它。反斜杠字符还会出现一些跨平台问题。
顺便说一句,长密码不是密码-它们是密码短语。您的普通用户无法记住2Z8d!%g#x,但他们可以记住“我的宠物的名字是狗的名字”。较长的文本更难通过暴力破解,并且不太可能写在屏幕上的便条纸上。
当人们键入内容时,他们会犯错,称为“错别字”。通常,人们会看到自己的错误并予以纠正。对于密码输入,通常您看不到键入的内容,因此也无法更正输入错误。您在没有意识到的情况下犯了错误,提交了密码,然后又以“密码无效”的形式返回。然后,您再试一次。然后,您再试一次。
您可以将其视为“ 3个小错别字,然后就无法与强力攻击区分开”。系统如何防御暴力攻击?一个明确的“ 尝试太多,走开,即使您做对了,您也将无法登录 ”响应?密码输入的延迟呈指数增长,如果延迟时间太长,导致浏览器超时,就无法尝试再次登录?方法各不相同,但是设计良好的系统始终会带来后果。
您可以将其视为“ 3个小错别字,然后您会得到某种拒绝服务”。
随着密码长度的增加,输入错误的风险(因此,拒绝授权人员访问的风险)也会增加。长度超过20个字符的字符将经常被打错(除非用户聪明/懒惰,并将密码存储在某个地方,以便他们可以“复制和粘贴”而不必担心拼写错误,例如桌面上一个漂亮的纯文本文件,称为“ 密码” .txt “)。