为什么Web应用程序坚持定义严格的密码规则?

时间:2009-01-09 17:46:34

标签: security passwords salt

你们都遇到过各种各样的网站,这些网站强迫你们拥有一个6个字符长的密码,必须有1个数字,并且必须与“烦人”押韵。

显然有一些遗留的原因,为什么有时这是必要的,但有时候这一切都是为了安全。我觉得它很烦人,因为我有一套标准密码,通常不符合这些特殊规则,所以我必须制作并记住一个新密码。

如果您担心用户的密码有多复杂,似乎在安全性方面需要担心更重要的事情。如果某人实际上可以获得该密码,那么您显然需要担心更大的问题。在依赖用户担心您的安全性之前,请尽职尽责并锁定您的系统末端。

我的实际问题是:这些复杂的密码规则有哪些替代方法可以降低彩虹表或暴力反转的风险,而不依赖于用户承担记忆复杂事情的重量?

一些想法:腌制,......

6 个答案:

答案 0 :(得分:8)

无论您选择什么,几乎每个网站都会对您的密码进行腌制和加密。问题不是遗留代码,服务器端的数据库安全性或类似的东西,开发人员在大多数情况下都会涉及到这一点。问题是愚蠢的用户提交的破坏密码很容易被破坏。规则的要点是强迫你不要选择过于愚蠢的密码。

这是参考链接。 http://www.codinghorror.com/blog/archives/001206.html

答案 1 :(得分:5)

密码规则的原因是尝试确保“更强”的密码,这实际上意味着平均需要更多的试验才能通过暴力攻击找到密码。大多数人,即使在许多例子之后,如recent Twitter mess,也会使用Joe密码或易受可行蛮力攻击的词典单词。

最好的办法是询问密码背后的数据值是什么,然后破解密码的成本(努力)是多少。如果值很小,则不需要复杂的规则,也许您根本不需要密码。如果值很高,那么你需要让它变得更加困难。

答案 2 :(得分:1)

使用KeePass

http://keepass.info/

肯定会减少麻烦。

答案 3 :(得分:1)

好的,这是整个故事。

首先,让我们来定义一个方案“善”的度量。使用密码等,该度量是蛮力攻击获得访问所需的平均试验次数。

假设您的密码是使用 n 字符从字母 S 中提取的,密码的长度是 k 。然后,可能的密码总数为 n k

然后,平均而言,暴力攻击会在 n k / 2 n k-1 <中找到成功的密码/ sup> 试验。

为方便起见,并且由于一些我不打算进行的信息理论考虑,我们通常将其表示为一些,即 lg n k 其中 lg 表示对数基数2.因为我们习惯将比特视为离散事物,所以我们实际上通常采用该数字的上限,即最小整数大于 lg n k ,但实际上小数值是完全合法的。

对于可打印字符,8个字符密码,没有其他规则,该数字在100 8 或约10 16 附近;这大约是53位。唯一不可思议的是那些随机密码几乎不可能记住;它们往往最终会出现黄色粘滞便笺,并且容易受到这种攻击。不过,这是一个限制性案例。需要大约100万亿次尝试才能通过蛮力来猜测。如果每次尝试花费一分钱,那么从理论上讲,你的数据价值可能高达1万亿美元,而不值得小偷的时间。

另一方面,只有大约50,000个常用字典词。这大约是16位,或者通过强力攻击需要大约25,000次。每个尝试花费一分钱:那么你的数据最好不要超过$ 250.00。

这两个都是规则的应用

R = P×H

其中 R 是风险, P 是发生错误思维的概率, H 危险 em>)是坏事发生的代价。

现在,尝试一分钱太高了,但你现在拥有了所需的工具。找出数据的价值,您可以使用此方法来确定所需规则集的范围。 (但要小心,好像你使规则太严格严格,那么可接受密码集的熵就会变小,直到你开始考虑安全性确定最好的密码之后的旧笑话一切都是'* 8h%Jd!',所以现在所有用户都会开始使用该密码。)

答案 4 :(得分:0)

任何未经训练的用户(大多数Web应用程序的常规类型)都会发现自然且易于记忆的内容很容易破解。无论你做什么来存储它都没关系,因为破解软件可以通过未经训练的用户可能使用的所有密码。只有当用户拥有良好的密码时,Salting和hashing才有效。

解决方案要么让用户记住更复杂的东西(你要拒绝的东西),要么根据用户拥有的东西进行验证,而不是用户记住的东西。这可以是一个写下来的密码,其中一个安全密钥产生不可预测的数字,每隔几秒就会改变一次,或更深奥的东西。

网站可以做的是允许各种强密码。我讨厌我想使用强密码(通常是金融或医疗)的网站,这些密码有“无特殊字符”之类的规则。 (当然,我不喜欢重复使用强密码;我不希望任何破坏我的HMO安全性的人从我的Barnes&amp; Noble帐户免费订购。)

这可能不是你想要的答案,但是坏人的能力会压倒大多数人都习惯的休闲安全。

答案 5 :(得分:-1)

Keepass还具有以下优势:在大多数情况下,它可以从USB闪存驱动器直接运行(例如,甚至不必安装)。将keepass和数据库文件放在USB密钥上,并且有一个快速简便的可移植密码参考数据库。确保你使用一个很好的强密码保护keepass,但好像你松开你的USB驱动器你不希望所有和杂乱进入你的密码数据库。