为什么在密码中使用特殊字符被认为是强密码?

6

为什么一个强密码需要包含特殊字符呢?

一些网站要求必须输入特殊字符以创建密码。

这背后是否存在技术原因呢?


相关 xkcd - Hans Kesting
4个回答

2

1) 如果你只使用字符和数字,你可能在使用一些容易被猜到的单词或数字。黑客有工具可以重复快速地尝试所有已知的单词,他们会在尝试带有特殊字符的密码之前先尝试这些单词。

2) 如果你只使用字母和数字,则任何位置上的字符被猜测的概率为1/62(有62种可能性)。
如果你使用特殊字符(共有32个),则概率降至1/94。
例如,如果你输入8个字符,你可以组成的可能组合总数是: a)如果你不使用特殊字符:62 ** 8 = 2.1834E + 14
b)如果你使用特殊字符:94 ** 8 = 60.9569E + 14

因此,使用特殊字符将有大约30倍的组合,这意味着破解带有特殊字符的密码需要大约30倍的时间,假设你的密码长度为8个字符。


2

当然。这需要很长时间的解释,而且超出了我的能力范围,所以您需要阅读有关 信息论中的熵 的概念。来自维基百科的简单解释如下:

人类生成的密码

人们在产生足够熵以生成令人满意的密码方面是臭名昭著的。一些魔术师利用观众的这种无能,在小范围内进行娱乐,比如推演观众成员所做的所谓随机选择(例如数字选择)。

因此,在对超过三百万个八位字符的密码进行分析时,“e”字母被使用了超过150万次,而“f”字母仅被使用了25万次。若分布均匀,每个字符应该被使用约90万次。最常用的数字是“1”,而最常用的字母是a、e、o和r。

用户很少在密码中充分利用更大的字符集。例如,从2006年的MySpace钓鱼计划中获得的黑客结果显示出了34,000个密码,其中只有8.3%使用了大小写字母、数字和符号。

请注意,仅当密码中每个字符都是从该集合中随机选择时,才能实现使用整个ASCII字符集(数字、大小写字母和特殊字符)所关联的完全强度。将一个字母大写并添加一个或两个数字和一个特殊字符到密码中将无法达到相同的强度。如果以可预测的方式添加数字和特殊字符,比如在密码的开头和结尾,它们甚至可能会降低密码强度,与同样长度的所有字母随机密码相比。 NIST 800-63特别出版物

enter image description here

2004年6月的NIST特别出版物800-63建议以下方案来粗略估计人类生成密码的熵:2

The entropy of the first character is four bits;
The entropy of the next seven characters are two bits per character;
The ninth through the twentieth character has 1.5 bits of entropy per character;
Characters 21 and above have one bit of entropy per character.
A "bonus" of six bits is added if both upper case letters and non-alphabetic characters are used.
A "bonus" of six bits is added for passwords of length 1 through 19 characters following an extensive dictionary check to ensure the password is not contained within a large dictionary. Passwords of 20 characters or more do not receive this bonus because it is assumed they are pass-phrases consisting of multiple dictionary words.

使用这种方案,一个由八个人选择的密码,没有大写字母和非字母字符,估计具有18位熵。NIST出版物承认,在开发时,关于真实世界中密码的选择几乎没有可用的信息。

enter image description here

后续对人类选择的密码熵的研究使用新的实际数据表明,NIST方案不提供人类选择的密码熵估计的有效度量标准。可用性和实施考虑因为国家键盘实现不同,不是所有94个ASCII可打印字符都可以在任何地方使用。这可能会给希望使用本地计算机上的键盘登录远程系统的国际旅行者带来问题。请参见键盘布局。许多手持设备(如平板电脑和智能手机)需要复杂的换挡序列才能输入特殊字符。认证程序在允许密码中使用的字符方面有所不同。有些程序不识别大小写差异(例如,大写字母“E”被视为等同于小写字母“e”),而其他一些则禁止某些其他符号。在过去的几十年中,系统已经允许在密码中使用更多的字符,但仍然存在限制。系统还因允许的密码最大长度而有所不同。
或者,通俗来讲:对于每个额外的字节,您添加到字母数字选项中,都会使密码更加复杂和难以破解。
更多信息在这里

我的20个字符密码中有一个名为“空格”的特殊字符,其熵比以感叹号结尾的8个字符密码还要低。这一切都太愚蠢了,人们甚至开始认为密码是一个坏主意,并寻求替代方案。 - Mikhail Boyarsky

1

事实上,这是一个愚蠢而过时的要求。像大多数人一样,我依赖于我的密码管理器来建议安全密码,而我的(至少来自位于库比蒂诺的一家非常小的公司)发现非常长的随机字母数字密码已经足够安全了。如果它是20个随机字符,那么在62个字符(26个字母,大小写,加上10个数字)和72个字符键盘之间的安全差异微不足道。

但还有更多:如果一个网站不接受苹果钥匙串生成的长的、随机的字母数字密码,那么我这个可怜的人就必须自己生成一个,并记住它。这意味着我要么使用一个较短、不太随机的密码,要么(更糟糕的是)使用我的“标准”密码,因为跟踪数百个唯一密码太麻烦了,而这正是我们现在大多数人需要的。

我希望整个“特殊字符”要求能够消失,或者苹果能够在其其他足够安全的长随机密码中加入一个特殊字符,因为现在这真的很痛苦。


我非常怀疑‘大多数人’依赖密码管理器,但我很感激你对此事的强烈看法。 - ouflak

0
主要的技術原因是很難猜測密碼,為了增強密碼安全性,使用特殊字符是一個好的做法。當有人試圖利用字典攻擊時,如果您使用特殊字符,則可以避免此問題。因此,一些組織制定了包括此規則在內的密碼策略,以提高安全性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接