全文共 2512 字,预计学习时长 4 分钟
事情是这样发生的。
在某个阳光明媚的下午,热心市民刘先生正吃着火锅唱着歌,“叮~”,手机突然收到一条短信。以为是系统短信的他,起期初毫不在意,谁知随后一连串的叮叮声根本停不下来。
刘先生拿起手机一看,一脸懵逼,当即上头。
自己的 Apple store 内购突然多了 20 多条账单记录,都是购买王者农药的点券消费,加起来有个小三千。
不对啊,家里也没熊孩子啊。
慌乱中问及度娘:亲亲,您的 Apple ID 绑定了支付宝的免密支付,AppleID 可能被盗刷了哦~ 致电苹果和支付宝客服,一场维权拉锯战正式开始。
移动互联网时代,人们以一串字符为密码,将自己的信息、秘密、金钱都托管到了网络。
人们设置密码来保护网络中的一切:从电子邮箱到银行账户再到加密交易账户。大部分人对密码的定位只是一串可以 login in 的字符,所以怎么好记怎么来。早些时候 12345678 走天下,后来迫于系统要求,才灵机一动设了个姓名首拼 + 生日。
图片来源:unsplash.com/@cmdrshane
可能大部分人都没有意识到设置密码不走心的严重性,直到热心市民刘先生现身说法。目前不法分子窃取苹果账号的主要方式还是“撞库”和钓鱼网站。
出于对密码破解的单纯兴趣或者其他不为人知的原因,有大量研究复杂密码破解算法的论文,这些算法利用极为复杂的概率和机器学习技术,能够破译 90% 以上的密码。
尽管如今许多平台使用双重验证系统(2FA),但该系统并未被大范围或强制推广,绝大部分平台仍不支持 2FA。甚至大部分“心大”市民,完全没有要启用双重验证的意识。
破解密码的算法强大到细思恐极,然而普罗大众还是乐呵呵置身事外,“有多少普通人能够使用这些算法呢?为什么黑客就一定会攻击我?”
是时候揭秘,破解一个密码有多简单了!
背景简介:存储密码
使用密码登录应用程序时,所需步骤顺序如下:
- 用户输入密码(传送密码并进行验证)
- 所输入的密码与记录密码进行比对
- 如果二者相同,用户可继续访问应用
然而,密码传送和存储的安全性堪忧。为了保障安全,许多系统将用户密码的散列储存在数据库中,而不是密码本身。密码散列本身是不可逆杂乱密码;如果黑客获取了密码散列,无法反推密码。
在此类加密系统中,密码登录的步骤顺序如下:
- 用户输入密码
- 本地计算散列(密码)并进行传送
- 对比记录的散列
- 如果二者相同,用户可继续访问应用
背景简介 II:暴力破解散列
对于使用散列的加密系统,如果黑客入侵密码数据库,他们仍无法获取用户密码。由于黑客无法通过密码散列反推密码,他们进行以下操作:
- 任意猜一个密码
- 计算该密码加密文件
- 对比实际散列
- 重复上述步骤,直到猜中密码
这听起来是一个浩大的工程,但如果使用机器,可同时作出 1000 个猜测。在无数的可能性中随机找到真正的密码就不费吹灰之力了。
攻击
软件
破解密码一般会用 Hashcat 软件,这是一个先进的密码还原工具,被称为“世界上最快速的密码破解器”。
Hashcat 是一个开源工具,其官网提供可供下载的数据源和二进制文件,维基百科上也有对此工具的详细讲解。只要坚守想当“黑客”的一腔热情,很快可以学会 Hashcat。
硬件
可以用 Nvidia Tesla K80 运行 Hashcat——这是一个拥有 4992 个内核的 GPU,在亚马逊云上可以租用,价格喜人,只需 0.9 美元 / 时。
与普通的手提电脑相比,K80 的运行速度比普通因特尔图形处理器快 16 倍。K80 每秒可计算 8 亿个 SHA-256 加密文件,也就是几乎每小时 3 万亿个。
Unbelievable。
密码
这只是一个实验,当然不可能用真正的账号密码啦。网络平台上有超过 1400 万个公开的密码集。对其再次进行虚拟破解有助于提高个人密码安全意识,防范真实密码破译攻击。在开始实验前,已经抹掉了这份已泄漏文件中所有的个人身份信息。
攻击逻辑
通过 Hashcat 可以暴力破解密码(即对特定长度的密码进行无限尝试),也可以进行更为复杂的攻击。众所周知,大多数人会基于一个单词来设置密码,形式各有不同:
· 仅仅是一个单词(可能字母大小写不同)——Password
· 单词加数字 / 符号后缀——monkey! 或 Coffee12
· 单词、数字、符号混合使用的“火星文”—— p4ssw0rd o 或 f4c3b00k
· 多个单词连接——isthissecure
巧的是如果上传一份单词列表文件,Hashcat 内置的多种模式会进行如下猜测:
· 单词
· 单词加任何数字 / 符号后缀
· 有特定规律的单词(如把所有“o”替换成“0”)
· 任何单词组合
因此,可以下载了一份包含几百万英语单词词典文件以进行攻击。
此时,攻击范围就可以更为广泛,同时也能选定 Hashcat 应该尝试的“面具”。无需再使用 Hashcat 尝试有 7 万亿个组合的“所有长度为 8 的密码”——有——只需尝试“6 个小写字母加 2 个数字”的密码。
那么攻击结果如何呢?
实话说…攻击结果远比想象中好,简直成功得骇人……
· 2 小时内:48% 的密码被破解
· 8 小时内:几乎 70% 的密码被破解
· 20 小时内:超过 80% 的密码被破解
总结一下:20 个小时。每小时 0.9 美元。总计 18 美元。1400 万个密码中 80% 被破解。
对于这个结果,各位再消化一会儿…
这太吓人了。大家一定要提高自己密码的安全性。仅仅把“o”替换成“0”或把“e”替换成“3”还不够。加上数字和符号后缀也不足以抵抗攻击。这些模式都是可以被预测的。
人们正是遵循了某些可预测的规则才导致密码轻易破解。最科学的办法是把密码交给管理器,比如 LastPass 或 1Password 等。
不过如果你的脑回路足够优秀,也可以尝试把密码改成圆周率后六位嘻嘻嘻(手动狗头)。这样别说是黑客,全世界都没有人知道你的密码
啦。
留言 点赞 关注
我们一起分享 AI 学习与发展的干货
欢迎关注全平台 AI 垂类自媒体“读芯术”
(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~