在破解密码或密钥时,逐一尝试用户自定义词典中的可能密码(单词或短语)的攻击方式。与暴力破解的区别是,暴力破解会逐一尝试所有可能的组合密码,而字典式攻击会使用一个预先定义好的单词列表(可能的密码)。
分析上文的场景,实施一次字典攻击需要具备两个要素:
黑客了解认证方式(包括认证协议以及地址、端口等信息),如同小偷需要知道库房在哪儿,房门挂着的是大铜锁还是密码锁,甚至虹膜、指纹识别?拿着一串金属钥匙想打开生指纹识别锁显然不现实。
黑客拥有比较全面的口令集,包含着各类常见的弱口令,或者目标系统经常出现的组合口令,或者目标系统曾经泄露的口令集。这样才有更多的尝试机会。通常一次字典攻击的实施还是很耗费时间的,特别是目标系统的口令不那么常见。
所谓“字典攻击”就是使用预先制作好的清单,例如:英文单字、生日的数字组合、以及各种常被使用的密码,等等,利用一般人习惯设置过短或过于简单的密码进行破译,很大程度上缩短了破译时间。
破译一个相当长度并且包含各种可能字符的密码所耗费的时间相当长,其中一个解决办法就是运用字典。
例如:一个已知是四位数并且全部由阿拉伯数字组成的密码,其可能共有10000种组合,因此最多尝试9999次就能找到正确的密码。理论上除了具有完善保密性的密码以外,利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。
有些人运用计算机来增加效率,有些人透过字典攻击来缩小密码组合的范围。
如果一个多位数并且包含以上所有可能字符的密码,其组合方法一定多的惊人,且每增加一位数,密码组合数量会以数十倍指数成长,破译的时间也会更长,有时可能长达数十年(即便考虑电脑性能依摩尔定律的进步),甚至更久。
由于穷举法破解所消耗的时间不小于完成破解所需要的多项式时间,故从密码学角度考虑,不认为穷举法是有效的破解方法。
防护手段
最重要的手段是在构建系统时要将系统设计目标定为即便受到暴力破解的攻击也难以被攻破。以下列举了一些常用的防护手段:
1、增加密码的长度与复杂度。
2、在系统中限制密码尝试的次数。
3、密码验证时,将验证结果不是立即返回而是延时若干秒后返回。
4、限制允许发起请求的客户端的范围。
5、禁止密码输入频率过高的请求。
6、将密码设置为类似安全令牌那样每隔一定时间就发生变化的形式。
7、当同一来源的密码输入出错次数超过一定阈值,立即通过邮件或短信等方式通知系统管理员。
8、人为监视系统,确认有无异常的密码试错。
9、使用双因子认证,例如用户登录账号密码时,系统同时发送短信到用户的手机,用户需输入短信内的认证码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)