密码那点事儿
摘自:https://www.secpulse.com/archives/4866.html
时隔多久你才会关注你当前所使用的密码呢?这不仅是指网站的密码,也包括日常网络上所使用的任何应用的密码。你是不是为了便于记忆而总是使用同一套密码呢?
我们看过太多用于FTP,数据库配置,cPanle以及CMS登录的弱密码。每个人都有一套独有的密码编制策略,往往都基于一系列有关网络安全的假设。很多用户的策略是”便捷优先于安全“。即便我们当中的一些偏执者也不得不承认这样一个事实:和任何防御措拖一样,最好的密码管理实践也只是尽可能将风险降到最低水平而已。
密码管理既是一门关于选择的学问,又是一种实践中养成的习惯。在了解了安全风险之后,用户往往就能做出明智的决定,从而在实践中使用更加安全的密码。
强密码的历史
绝大多数关于密码长度的检测标准都太弱了。其实,很多公司都了解这一点,但它们可不愿看到由于强密码检测的存在而导致用户放弃注册。当前很多软件可以在几分钟之内就猜到那些所谓的”强密码“,最常见的一些密码甚至只需几十毫秒。由于密码破解的时间取决于其复杂度,所以对密码的改进就经历了一番演变:
- 最初,对密码的长度和字元成分未做限制。
- 接下来,认为基本的八位字符就够用了,而且全是小写。
- 再不久,添加特殊符号,数字,大写字母以增加复杂性
- 一部分人认为更长的密码要比看上去复杂的短密码要更加安全
- 没过多久,我们发现可以利用字典甚至是Wiki来快速地破解密码。
现在,使用常见词,姓名,短语很明显会削弱密码的强度。密码表的长度一直在递增当中,这使得那些我们认为很安全的密码将会变得非常易于破解。
如何破解一个密码
计算机是如此之快,因此黑客可以借助庞大的数据来帮助计算机更为高效地猜测密码。标准美式布局的键盘有94个字符,而暴力破解的基本形式就是尝试这些字符所有可能的组合,直至黑客最终侵入帐户。如果密码很短的话,这种方法会非常迅速,但对长密码而言就非常耗时。这种情况下就适合采用字典攻击。它使用和暴力破解同样的技术却无须尝试所有字符的组合-依赖从字典或文献中获得的常见密码或单词的列表,尝试从中猜测正确的密码。哪怕是象”Ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn1.“这样的密码,它有接近50个字符而且包括符号,但是只因为它是从The Call of Cthulhu(邪神克鲁苏的召唤-一部小说的名字)中抽取的短语并且在wiki中可被查到,就令它变得极易破解。至于那些常见的颜文字或数字替换,例如L1K3 TH15,往往都包含在大部分单词列表中。
密码泄露的泛滥
除此之外,强密码本身也并非是一个安全的保证。由于数据外泄以及相关研究的深入,密码泄漏的几率始终在提升。大量密码泄露事件的连续发生,使得数以亿计的潜在有效密码在网络空间上传播。
无论是善意的研究者还是恶意的入侵者都在关注这些外泄的密码库,以研究最常见的密码及其构成模式。这类外泄密码库暴露了很多常见的密码模式,用户往往认为这类模式能让密码又好记又强壮。
只要有足够多的数据,再高明的用于编制密码的方法也会变得了无秘密可言:
- 基于某种固定模式的密码 (qwerty678^&*)
- 大写字母开头,数字和符号结尾的密码 (Password1!)
- 常见的字符替换 (P@ssw0rd)
- 和网站名称相关联的单词 (Username@2014)
一旦确定了用户的密码组成模式,入侵者就可以设计程序,利用诸如暴力破解这样的攻击手段来获取密码。反过来,这类程序又能用于扩充破解用的密码表。
社会工程学也会被用于暴露密码。通过将恶意邮件地址伪装成用户的合法邮箱,攻击者就可以利用钓鱼手段对用户进行诱骗。与此类似的,有些电脑上的恶意软件会采用恐吓用户的手段,令其主动暴露个人信息。在针对性的攻击中,黑客会借助所有能搜集到的用户个人相关信息(比如你的生日,你宠物的名字等等)以提升攻击效果。
对网站而言要防御此类攻击,我们的建议是采用诸如CloudProxy这类的web防火墙。它们会尽可能地阻止恶意用户入侵你的网站。
不要重用密码
如果你还没使用强密码生成器,那么你不妨自问一下:如果你注册过的多个网站被黑客侵入,那么他们就可以对你编制的多个密码进行比较,对于一个攻击者而言找出你的编码规律能有多难呢?有多少人是重复使用相同的密码呢?有相当多的用户是以某个常见的密码模型做为基础,再嵌入网站名称又或是别的什么标识从而令密码显得唯一。这种方法有两个问题:
- 它会给你带来一种虚假的安全感,让你相信你的密码是安全的。
- 很容易就猜出你所有应用的密码。
甚至重用部分旧密码也是非常冒险的。当我们了解到计算机每秒钟能对原始密码完成数以亿次的修改时,就会意识到对旧密码进行更改或是添加字符后再重用是多少危险。
重用密码确实能带来易记易用的便利,我们也建议以组为单位高效地重用密码,对于那些有重用密码习惯的人而言,逐渐接受密码安全等级并非难事。根据不同的安全级别创建数个容易记忆的强密码,在用户面临不同安全级别的场景时,就可以重用与其对应的密码。举个例子,在邮件和金融服务时使用某一个强密码,在社交媒体上使用另一个强密码,而在流媒体音乐服务上使用最弱的密码。
任何重用密码的场景都会面临这样一个问题:如果用户的某个帐户被泄露了,多多少少都会影响该用户的其他帐户。即便是低安全级别的帐户,也会泄露部分用户私人信息,从而可能被黑客用于有针对性的入侵。基于安全级别的密码重用只适用于那些并不信任将所有帐户密码交由密码管理器生成并保管的用户。
密码工具的出现让安全变得更加简单
对每个帐户都生成随机的唯一密码是个很棒的实践。网上有很多在线密码生成器,它们提供了很多选项以增加密码长度并提升灵活性。
如果你只想记住一个密码,那就去使用密码管理器吧。网上有很多相关点评可以帮助你挑选更适合自己的管理器,基本上它们的工作方式都是相同的:只需要记住最关键的杀手级密码,所有其他的密码都交给管理器生成和保管。在登录管理器之后,当你前往某个网站时,它就会自动填写对应的密码。这个特点使得密码管理器能够迅速便捷地使用强密码。当你自行键入密码时,它还会阻止键盘记录器捕获该密码。
很多人仍然靠笔和纸来记录密码,这是非常危险的,因为记录密码的纸张很容易丢失和被盗。相比之下,使用密码卡是一个更好的选择。这是一种充满随机字符组合的卡片,你可以选择从哪个字符开始,去往哪个方向,到哪个字符结束,而这一切,只有你自己才知道。
超越那些“标准的密码”
看过所有这些限制,我们不免会质疑:基于文本的密码本身已经足够强大了么?时下,许多组织已投入到双因子认证的怀抱,如果启用了双因子认证,当你在某个新设备上登录时,就会额外要求你输入一个发送到你手机上的认证码。
之前我们一直提及的密码都是基于美式键盘的,但我们也要了解到有不少应用是支持Unicode字符做为密码的,比如字符€,Γ和λ。这个方法会让你的密码更难以猜到。以后我会另起一篇博文来讨论这个问题。
最后,生物认证能够借助你独有的生理特性(比如指纹,心跳或是虹膜)进行登录。很多商务笔记本以及苹果的Touch ID已经提供了指纹扫描功能。未来我们可能会看到它们更多地辅助或取代密码认证。
让我们谈谈“熵”
“熵”用于衡量密码的随机性。一个密码的熵值越高越难以被猜中。使用长密码会让熵值指数级增加。对于任何长度的密码,添加字符集(数字,符号,Unicode)会增多排列的可能性。但如果你的密码,哪怕只是密码的一部分已经包含在某个单词列表中,那它就算不上随机。如果你的密码基于某个固定模式或是常见的组合,那也算不上随机。如果密码的熵值很低,那就意味着该密码很容易被猜中。
时至今日,我们仍然看到很多密码的限制还停留在简单的八字符阶段。这种情况下,密码强度提示差异很大仍无济无事。恐怕我们很难发现到底是什么能让密码更强壮或是更难以预测。与此同时,有坊间传闻说量子计算机的超快速度将轻松打破任何加密手段。因此,或许是时候下载谷歌身份认证并启用双因子认证了。
总结
很难想象未来的密码会是什么样子。让密码变得更长,唯一且复杂仅仅是个开始,所有这些很容易交由密码管理器完成。或许我们能看到新的认证方法,但有一件事是肯定的,由于电脑在处理速度和存储容量上的不断发展,对于密码熵值的要求也会不断提升。
正如我们所知,密码泄露日益泛滥,而标准密码也不会消失。类似于其他安全事宜,你应当充分了解密码风险并赶在潜在威胁暴发之前就落实具体的安全措施。如果涉及到你的帐户或网站访问者,防止暴力破解和字典攻击是一个很重要的步骤。