5位密码比大多数密码更好吗?

这是多年来一直困扰我的事情:为什么大多数在线服务都高度重视密码的熵 ,将其作为一种安全措施,并在用户select密码时加以执行?

在阅读“强大的Web密码完成任何事情”文章后,我决定提出这个问题。 (当然还有经典的Dilbert卡通 )。

在线网站的典型政策是至less需要6位或8位数字的大写+小写+数字密码。 这个长度与暴力破解的难度有些相关,比如从哈希中恢复密码。 但是猜测发生在网上的典型方式是有人试图login到服务器,经过几次尝试就可以自由拒绝。

让我们想象一下,例如,我们正在使用全数字PIN来保护一些中等规模的服务。 人们立即想到了4位或6位的引脚,但这可能不是一个好主意,因为太多的人会试图进入孩子的生日,这本质上是一个公共知识。

所以,这是我的5位密码build议。 我为每个用户保留一个“可能的攻击”标志。

  1. 用户login正确 – >确定
  2. 否则,保持https会话,并允许2更多的尝试
  3. 用户login – >确定
  4. 否则,在他们之前rest5分钟再次尝试2次
  5. 用户login – >确定
  6. 用户中断会话 – >设置标志
  7. 用户打断会话,但稍后正常login:向用户提供对话框并允许清除标志
  8. 用户用尽了上面的尝试:用链接发送电子邮件; 允许清除标志
  9. 如果月内总共有100多个标志,设置全球“可能攻击”标志,这要求没有cookie的人回答安全问题
  10. 在某些情况下自动清除用户标志(例如,用户最终从同一台计算机login)

假设用户名是已知的(请注意大多数站点不会这样)。 对一个用户的暴力攻击是无望的 – 5次尝试后你被locking,所以你有1/200000的机会。 如果您在一个月内尝试猜测密码超过200次,则标志消失,您什么也得不到。 如果您每月尝试<200个用户,一年之后,您有一个用户的几率不足1% networking钓鱼,病毒,社交工程或其他任何事情都会让你感觉好多了。

网站的大小只有在没有得到误报的情况下才有意义,那就是真正忘记密码的用户(假设每月1%),恢复它,但是不要清除标志(比方说1%的那些),当你不能自动清除标志(比如说10%)。 这使得每10 6个用户每月有10个预期的误报标志,这意味着一个中等规模的网站进入“恐慌”模式的可能性相当低,反正也不是那么糟糕。

我相信这个scheme是非常实际的。 这里有一些明显的第一个事实(更新)

  • 好处 :PIN更容易记住。 我相信这是一个很大的好处,因为现在可以要求用户记住你生成的密码。 我相信大多数人比任何其他types的随机密码记得5个随机数字更好。
  • 折衷 :如果你的攻击者知道散列的PIN和盐,哈希将不会有太大的帮助。 这是有可能的,如果有人闯入你的数据库, 知道你的腌制过程。 不过,我相信在这种情况下,标准的密码熵也无济于事。
  • 好处 :记住随机5位数字比随机字母数字密码更快乐; 因此,要求我们生成密码,而不是用户,要容易得多。 这消除了字典/个人数据攻击。

我的问题是:

  1. 与我所描述的典型的scheme相比,我的scheme有哪些其他折衷/好处?
  2. 用我的密码scheme不会成为大多数中等规模的网站和组织吗?
  3. 他们select这个计划的原因是什么?

注意 :我不主张总是使用短密码。 我自己的networking密码通常是随机生成的,并通过密码pipe理器( 1Password )encryption,密码长度为12个字符。 但我认为上述计划往往会比我们在实践中做得更好。

不,你错了。 蛮力攻击是一回事,但真正的危险是彩虹表,从哈希值,给你明文密码。

首先你永远不会存储任何明文。 如果有人违反了你的安全(甚至是一个雇员有恶意的意图),你不想公开用户的密码。 所以你会使用一个正确的盐味散列。

然后,用一个5位数字的密码,这太短,以保护哈希。 有彩虹表(甚至谷歌search),如果他们得到哈希值,可以让别人得到密码。

请记住,有3000次尝试的恶意用户可以在几分钟内成功阻止1.000个帐户。 另一件事是,他可以通过每天尝试数千个不同账户来改变一次成功login的可能性。 OpenID不是一个选项吗?

更新

刚刚对5位数的东西有一点点的启发。 如果5位数(10 ^ 5 = 100.000)真的很容易记住,同时又安全:

 4 letters all lowercase (26^4 = 456.976) => abcd 3 letters with mixed cases (52^3 = 140.608) => aBc 3 letters lowercase + numbers (36^3 = 46.656) => ab1 

用腌过的哈希密码是最好的。 盐可以防止大多数彩虹攻击,密码更难以暴力破解。 即使有字典攻击,你也会更喜欢在5位数的引脚上获得更快的命中,然后使用类似长度的密码。

谨防会话处理

我不太了解会话处理,但我知道,大部分时间都是使用cookie。 当你有像你这样的scheme时,有必要在数据库中写入错误的尝试,或者写入你的服务器上的特殊文件,因为你不能依赖会话处理(在你的描述中听起来有点像你可以“举行会议“有一切真相……) – 因为在互联网上的会议是非常脆弱的。 它只是一个cookies(可以删除)和/或页面名称(也可以被污染)的构造。 唯一可以依靠的是,用户仍然持有会话 – 你不能真正识别一些(缝隙)新的连接不是你的旧用户…

特别是“用户还有会话”和“用户中断会话”(您的第7项)之间没有区别,这只是一个不可分割的差别,也可能成为一个安全漏洞。

记住并不容易

你还会说,记住5位数字更容易。 这可能是正确的,你的信用卡或银行卡(在德国,我们有4位数的个人识别号码)的安全号码,但对于网站,你总是有问题,这些许多网站有密码。 要记住几十个5位数字就像大量的密码一样困难。

我仍然不明白为什么人们会限制密码长度。 记住一个句子或短语对我来说会不会更容易? 例如,我可能希望我的密码是“ this is my stackoverflow password ”。 如果我忘记了,我会有一些严重的记忆问题。 它的长度是34个字符,只使用了27个字符的字母表,但仍然基本上不可能颠倒散列(4.6×10 48个可能的排列)。

结合你有关“攻击标志”和适当的腌制/散列技术的想法,在我看来这将是一个理想的解决scheme。

真正的问题? 人。

我知道有4个密码的学区:1111,2222,3333和4444.为什么? 用户聚在一起,并同意这样做,所以他们可以随时进来,当工作人员在家里病了。 当午餐工作人员生病的时候,进入一个locking的午餐钱计算机太痛苦了。

噢,我多次看到午餐电脑无人看pipe。 而且,是的,你可以随时要求把余额变成现金

用户是疯了。

通过这个逻辑,如果5个数字比8个字符更容易记忆,但是包含足够的熵,则一个数字和三个不区分大小写的字母应该更容易!

 10**5 = 100,000 26**3 * 10 = 175,760 

现在只有四个小angular色,但他们传达更多的熵!

也许我会用我的名字首字母和数字1。 。 。

除了在荒唐和讽刺之间存在一个模棱两可的灰色地带之外,我并没有certificate这一点。

我曾经提出过一个类似于你的计划,因为我看到很多情况下,用户只是在便条上写下密码,然后他们的监视器引用共谋太难记了。 我认为密码并不重要,因为黑客更可能在系统中find其他漏洞,通过应用程序或简单地通过一些社交工程。

我认为有些人,尤其是技术pipe理人员,他们并不完全明白你所说的安全感。 一个复杂的密码感觉很强。 有点像盒子上的保证,它让你感觉很好。 有点像牙仙子

“汤米:你怎么知道牙仙不是一个疯狂的胶水嗅探器,”build造模型的飞机,“他告诉他们,我不买它,他偷偷溜进你的房子,这一切接下来你知道,你的钱箱里的钱不见了,而你的女儿也被打倒了。

最终虽然一个简单的密码像一个针可能会被破解或猜测与普通的组合,并不安全。 与RSA SecurId结合使用是我们都能够达成的共识。

个人识别码与密码,密码胜出,并不完美,但具有强大的政策,远胜于个人识别码。

谁说很多人不会在粘滞便笺上写个人识别号码,对于很多人来说,记住一个字组合比一个5位数字更容易,个人而言,我记得数字最简单,因此我的密码比字母更具数字。

我认为记住“密码短语会打败个人识别码”会容易一些,而这种攻击会持续400万亿年。

因为依靠安全locking是不好的用户体验,并且会导致攻击者locking多个账户,给实际用户带来不便。 相反,使用较强的密码,使用蛮力破解难以破解,如果在PIN和密码之间进行select,则不容易受到彩虹表攻击。 如果select是密码,密码和PIN码。 我的build议是使用密码,然后按密码,然后按优先级降序排列。 密码(> 10个字符)通常比密码(6到8个字符)更安全,但由于用户需要每次input密码(> 10个字符),因此不提供很好的体验! 根据数据的敏感程度以及您想要提供的用户体验有多好做出select。 稍等片刻。使用移动设备作为身份validation程序探索新出现的无密码身份validation区域。

我也在试用引脚与密码。 这取决于您正在尝试构build的应用程序的总体安全性,但是如果您合并了一些密码安全性检查,密码通常会每次都获胜。 我的理解是,至less有14个以上的字符的密码可能比“典型”的密码更好。 它允许人们input他们能够容易记住的东西,但是在攻击中可能难以复制的东西。 仅仅是纯粹的字符数量就很难破解。

如果您将密码与上面的locking方法相结合,则可能会有更安全的系统。

另一个需要考虑的因素是进入的便利性。 密码很容易在数字键盘上input,因为input过程非常复杂,容易丢失。 缓解取决于设备。 在触摸打字的标准键盘上,我可以很容易地input符号和UC。 在智能手机上,我发现很难可靠地input小写字母,因为键盘较小,所以符号难以input。 一个数字PIN码很快input,我可以很容易地记住并input一长串数字。 如果进入速度很慢,人类观察员会发现获取密码更容易,并使用不寻常的移动来放弃正在input的内容。

总而言之,您不仅需要考虑密码的复杂性以及密码的存储方式,还要保证密码的简单性和易用性。