当我们说词典攻击时,我们并不是真正的字典,是吗?我的猜测是指一个黑客的字典,即rainbow tables,对吧?
我的观点是,我们不是在谈论将不同密码键入登录框的人,我们谈论的是对数据库具有完全访问权限的人(具有哈希密码,而不是普通密码)并且此人正在撤消哈希,对吧?
答案 0 :(得分:9)
由于密码是密码学最容易受到攻击的部分,因此它实际上是一种真正的字典。假设是人们懒惰并选择适当的词作为密码或从中构造密码。但是,字典可以包括其他内容,例如常用的非单词或字母/数字组合。基本上所有可能都是选择不当的密码。
有些程序需要一个完整的硬盘驱动器,并且假设用户的密码在某个时间点以明文形式放入内存(然后进入页面文件),就会在其上的每个可打字字符串中构建一个字典)或者如果文本存储在驱动器上 1 :
,它只存在于语料库中即便如此,这一切都不重要。 AccessData出售另一个程序Forensic Toolkit,其中包括扫描每个可打印字符串的硬盘驱动器。它查看文档,注册表,电子邮件,交换文件,硬盘驱动器上已删除的空间......无处不在。它会从中创建一个字典,并将其提供给PRTK。
PRTK仅从这本词典中打破了50%以上的密码。
实际上,即使您包含人们通常如何构建密码的知识,您也可以使字典更有效。施奈尔详细谈论了这个 1 :
- 常用词词典:5,000个词条
- 名字词典:10,000个条目
- 综合词典:100,000个条目
- 语音模式字典:1 / 10,000的详尽字符搜索
语音模式字典很有趣。这不是一本真正的字典;它是一个马尔可夫链例程,可生成给定长度的可发音的英语字符串。例如,PRTK可以生成并测试非常可发音的六字符字符串的字典,或者只是几乎不可读的七字符字符串。他们正致力于其他语言的生成例程。
PRTK还运行四字符串穷举搜索。它使用小写(最常见),初始大写(第二个最常见),全部大写和最终大写来运行字典。它运行具有常见替换的字典:“$”表示“s”,“@”表示“a”,“1”表示“l”,依此类推。这里包括“leet speak”的任何内容,例如“e”中的“3”。
附属词典包括:
- 所有两位数组合
- 所有日期从1900年到2006年
- 所有三位数组合
- 所有单个符号
- 所有单个数字,加上单个符号
- 所有双符号组合
1 Bruce Schneier:选择安全密码。 In:Schneier on Security。 (URL)
答案 1 :(得分:4)
好吧,如果我向你扔了一本字典,它会伤害到吗?
但是,dictionary attack使用了一个单词列表。它们可能来自字典,或常用短语或密码列表(例如'123456')。
rainbow table与字典不同 - 它是给定散列函数的反向查找,因此如果您知道散列,则可以识别将生成该散列的字符串。例如,如果我知道您的密码具有e10adc3949ba59abbe56e057f20f883e的未加盐的MD5哈希值,我可以使用rainbow table来确定123456哈希值到该值。
答案 2 :(得分:3)
'字典攻击'通常是指使用“字典”猜测密码的尝试;也就是说,常用密码的长列表,通常对应于人们可能懒洋洋地设置为密码的单词或单词组合。如果不是通过指定实际的明文密码来猜测密码,而是使用密码哈希,并且您想猜测密码,则会使用彩虹表。您可以指定常用密码的哈希值,并尝试将它们与您拥有的密码哈希值进行匹配,以便尝试获取匹配项来确定密码是什么。
答案 3 :(得分:2)
字典攻击是攻击者从一个相当普通的字典中尝试单词的攻击,因为许多人会使用可以在字典中找到的简单密码。
维基百科:Dictionary attack。