跳转ESP,跳转!:定期更换密码——一个神话和谎言,不要被愚弄,第一部分
TL;DR:不同的密码有不同的保护需求,不同的攻击者使用各种攻击方法只能通过不同的预防方法来阻止。密码安全并不简单。真正的建议,请查看第二篇文章(正在编写中)。
你是否厌倦了像“定期更换密码”或“如果你的密码是password,请改为pa$$w0rd”这样的密码建议?这篇文章就是为你准备的!
由于最近的漏洞,新闻网站充斥着密码建议。当我阅读/观看这些建议(尤其是在CNN上)时,我通常因为很多原因感到恼火。有些建议很糟糕(这里有一个很好的收集),有些很好但没有解决方案,还有一些更好,但它们没有解释原因。以下是我对问题的分析。这对我有效。可能对你无效。欢迎评论!
密码历史
密码自古以来就被使用。
因为它简单。当我开始使用互联网时,我相信我有三个密码。Windows登录、网页邮件和IRC。现在我有大约250个账户/密码用于不同的事情,比如我的智能手机、我的有线电视公司(这个密码可以用来在电视上换台)、我的在线安全云存储、用于启动计算机的全盘加密、我的裸照、我的WiFi路由器、我的云服务器托管提供商等等。我的钱用密码保护,我的通信用密码/加密保护,我的工作用密码保护。这非常重要。但人们往往选择糟糕的密码。非常糟糕的密码。因为他们认为这不重要。但今天不重要的东西明天就会变得相关。你用来下载音乐(iTunes)的糟糕密码有一天会保护你所有的Apple设备,攻击者可以下载你的备份文件,擦除所有设备等等。七个字符和一个大写字母的规则已经不够了。这个建议就像PDF可以安全打开,Java是安全的一样。陈旧、过时、不真实。
现在,在这个冗长的序言之后,我们将深入分析问题,通过检查我们想要保护什么,针对谁(攻击者是谁),然后才能分析解决方案。跟我一起旅行,我保证会很有趣!;)
要保护什么?
网上有不同的服务,各种服务需要不同的保护方式。你不会在你的Trabant上使用与你的BMW相同的锁。
网上银行,在线货币
对我来说,这是最重要的服务。幸运的是,大多数网上银行服务使用双因素认证(2FA),但不幸的是,并非所有服务都提供完整的交易授权/验证。2FA对恶意软件无效,它只是使攻击复杂化。交易授权/验证更好,但不完美(见Zitmo)。如果访问没有2FA保护,最好选择你最好的密码(长、真正随机、复杂,但我们稍后会谈到这一点)。如果它有2FA保护,仍然没有理由不使用最好的密码;)这是我称之为“非常高等级密码”类。
信用卡数据
这个系统非常糟糕。有些东西必须是秘密的(你的信用卡号),但与此同时,这是唯一识别你的信用卡的东西。就像你的用户名是你的密码一样。很糟糕的想法,对吧?问题更糟,有很多不同的交易类型,尤其是当酒店要求你将信用卡的两面传真给他们时。不幸的是,你无法更改信用卡上的密码,因为没有这样的东西,但Verified by VISA或带有2FA的3-D Secure可能会增加你的信用卡不被黑客攻击的机会。另外,我已经从我的信用卡/借记卡上移除了CVV号码。我只在收到卡时读过一次,我不再需要它印在那里。
有时,你是自己最大的敌人。不要做这样的蠢事:
工作相关密码(例如Windows域)
这非常重要,但由于攻击方法有点不同,我将其创建为不同的类别。详情稍后。
电子邮件、社交网站(Gmail/Facebook/Twitter)、云存储、在线购物
这是我称之为“高等级密码”类。
仍然是非常重要的密码。有些人不理解“为什么攻击者会花精力获取他的Facebook账户?”这很简单。为了钱。他们可以使用你的账户在你的Facebook墙上到处传播垃圾信息。他们可以给你所有的联系人写消息,告诉他们你遇到麻烦,并通过Western Union或比特币发送钱。
他们可以在Facebook投票中使用你的账户。你的电子邮件、云存储再次非常重要。20年前,你也有不想打印并放在最近商店前面的信件,你也不想对你的私人相册这样做。另外,最好使用云存储,即使云提供商管理员也无法访问你的数据。但在这种情况下,没有密码恢复选项,最好考虑“替代”密码恢复机制。
其他带有个人数据的重要东西(例如你的姓名、家庭地址)
“中等级密码”类。这是个人偏好是否拥有这个类别,但从长远来看,我相信保护这些账户不是浪费精力。这些网站包括你最喜欢的披萨外卖服务、你当地的PC商店等等。
不重要的东西
这是其他类别。我通常对这些服务使用一次性 disposable 电子邮件。用于注册,得到我想要的,丢弃电子邮件账户。因为我不想在互联网上到处传播我的电子邮件地址,每当这些网站中的一个被黑客攻击时。但我仍然更喜欢在这些网站上使用不同的随机密码,尽管这是“低等级密码”类。
攻击者和攻击方法
在对不同的密码进行分类后,让我们看看不同的攻击者和攻击方法。他们可以/将会/或现在正在积极进行:
攻击明文密码
这是获取密码最有效的方法。坏消息是,如果没有其他保护因素,受害者肯定不在赢的一方。不同的攻击方法包括:
- 钓鱼网站/应用程序,
- 社会工程,
- 在计算机(或浏览器中)运行的恶意软件,
- 肩窥(注意智能手机、隐藏摄像头),
- 当网站没有SSL保护时嗅探明文密码,
- SSL中间人攻击,
- 流氓网站管理员/黑客记录明文密码,
- 密码重用——如果攻击者以任何方式获取你的密码,并且你在其他地方重用,那就是问题,
- 你告诉某人你的密码,他/她以后会滥用,
- 硬件键盘记录器,
- 等等。
这里的关键是,无论你的密码有多长,无论它有多复杂,无论你多久更换一次(除非你每分钟都这样做……),如果它被窃取,你就完蛋了。2FA可能会救你,也可能不会。
攻击加密密码
这是通常的“黑客入侵网络服务器(通过SQL注入),转储密码(使用SQLMap),在pastebin上发布哈希,每个人启动GPU农场破解哈希”场景。这基本上是密码策略有意义的唯一场景。在这种情况下,不同级别的密码需要不同的保护级别。在某些情况下,当密码没有哈希或只是编码时,这种攻击变得与之前的攻击相同。
当前对于没有任何迭代的哈希(这不幸非常常见)的哈希破解速度使得像Q@tCB3nx(8个字符,大小写字母、数字、特殊字符)这样的密码无用,因为这些可以在几小时内破解。不相信我?让我们做数学。
假设你的密码是真正随机的,并且从26个大写、26个小写、10个数字、33个特殊字符中随机选择。(有一次我尝试了包含高ANSI字符的特殊密码。这是一个可怕的想法。相信我。)从这些字符中有6,634,204,312,890,620种不同的8字符密码。假设一个2年前的密码破解设备,以及MD5哈希破解速度为180 G/s,最坏情况下需要10小时(平均5小时)来破解密码,包括将你的bash升级到最新但仍然易受攻击的bash版本。如果密码是10个字符长,用今天的硬件需要10年才能破解。但如果密码不是真正随机的,它可以更快被破解。
许多常见的哈希算法不使用针对离线暴力攻击的保护。这包括LM(旧Windows哈希)、NTLM(现代Windows哈希)、MD-5、SHA1-2-512。这些哈希算法不是为密码哈希开发的。它们没有加盐、迭代等开箱即用的功能。在LM的情况下,问题更糟,因为它将小写字符转换为大写字符,从而显著减少密钥空间。开箱即用,这些哈希用于快速计算,因此支持快速暴力破解。
另一种攻击是当受保护的东西不是在线服务,而是加密文件或加密货币钱包时。
攻击在线认证系统
这就是最近iCloud黑客攻击中发生的事情(除了钓鱼)。攻击者通过要么暴力破解密码,要么通过回答安全问题绕过密码安全来攻击认证系统。好密码不能被暴力破解,因为这需要很长时间。好的安全答案与问题本身无关。一个好的安全答案像密码一样难以猜测。如果密码恢复需要手动电话呼叫,我知道,说你的第一只狗的名字是Xjg.2m`4cJw:V2=有点尴尬,但另一方面,没有人会猜到那个!
攻击单点登录
这种攻击有点不同,因为我无法将“传递哈希”攻击放在任何地方。传递哈希攻击通常在Windows域环境中发现,但其他也可能受到影响。关键是单点登录。如果你可以登录到一个系统(例如你的工作站),并在不提供任何密码的情况下访问许多不同的网络资源(文件共享、打印机、Web代理、电子邮件等),那么必须有一些东西(一个秘密)在内存中,可以用来认证服务。如果攻击者可以访问这个秘密,他将能够访问所有这些服务。关键是(再次)无论你的密码有多复杂,多长,你多久更换一次,因为有人可以轻易滥用那个秘密。
攻击2FA
如前所述,双因素认证从攻击者的角度增加了努力,但不提供100%的保护。
- 一次性令牌(SecurID、Yubikey)可以在中间人攻击中中继,
- 智能卡认证可以通过恶意软件中继到攻击者机器——或简单地在浏览器恶意软件中绕过,
- 基于文本(SMS)的消息可以被智能手机上的恶意软件窃取或通过SS7重路由,
- 生物识别保护不断被绕过,
- SSH密钥不断被窃取,
- 但U2F密钥实际上相当好,即使BGP/DNS劫持或类似的中间人攻击仍然可以绕过那种保护,
- 等等。
其他
注意,有大量其他攻击方法可以访问你的在线账户(如XSS/CSRF),但所有这些都必须在网络服务器端处理。你能做的最好的事情是选择一个运行24/7漏洞赏金程序的网站。否则,网站可能充满了低挂、易黑客攻击的漏洞。
现在我们已经覆盖了我们想要保护什么 against what,在下一篇博客文章中,你将看到如何做到这一点。保持关注。我还将解释这篇博客文章的标题。