我为一家拥有约16,000名员工的公司工作。我们的IT副总裁会定期发布带有“技术提示”和其他IT内容的新闻通讯。本周新闻通讯的主题是“密码安全”。引言部分引起了我的注意:


我们刚刚解密了所有正在使用的用户密码,以查看员工是否使用了强密码。我们使用了蛮力,rcracki,hashcat / oclHhashcat和john-the-ripper工具的组合来解密密码。


接下来是一个典型的通讯,讨论了良好的密码习惯:Don不要使用字典中的单词;确保使用大小写混合的符号;请勿将监视器的密码写在黄色的便签纸上;等等...

现在,我不是密码专家,但我对此表示怀疑,他声称他们已经“解密了所有用户密码”。我可以相信他们可能会通过他们的工具运行所有哈希并“解密”了其中的大部分,但是他们拥有声称可以破解所有计算资源的计算资源真的合理吗? (顺便说一句,“解密”在这种情况下是否正确?)

我给他发了电子邮件,询问他是否想说它们已经通过破解工具运行了所有密码,而只是发现了许多较弱的密码那些。但是他回答说,不是,他们确实已经解密了所有用户密码。

我很感激他在这里尝试讲授的安全课程,但是我的密码是KeePass生成的8个随机字符。我认为它非常好,它与Q6&dt>w}类似(显然不是,但与此类似)。

现代破解工具真的那么强大吗?还是这个家伙可能只是为了上一堂好的安全课而牵我的腿?

P.S.我回复了他的电子邮件,询问他是否可以告诉我密码的最后两个字符是什么。尚无回复,但如果他设法完成,我将进行更新!


编辑:
一些答案正在讨论我的特定密码长度。请注意,他不仅声称他们破解了我的密码(如果他们将我挑出来,这是可以相信的),而且他声称他们对所有用户都这样做了-我们拥有超过10,000名员工!我并不是很天真地认为这意味着10,000个安全的好密码,但是,即使有1%的用户拥有一个好的密码,也仍然是他们声称已经破解的100个安全的密码!

评论

如果您的公司使用MD5之类的弱算法哈希密码而不添加盐,而不是bcrypt之类的哈希密码,则可能是可行的。但是,在这种情况下,该人员无权提供有关密码管理的建议。

如果他们解密了所有密码,那么问题就不在于密码,而是密码的加密和存储方式(即他遇到了问题,而不是您)。

是的这是一个令人震惊的说法,最合理的解释是,他实际上根本不是技术人员,并且自己没有从事这项工作,并且误报了他的技术基础对他的影响。技术人员:是的,我们针对您的所有密码运行了这些密码,并且我们能够检索到一些密码。 PHB:伟大的Scott!我必须在Twitter上发布它!

我认为您对此要求的处理有些过分。谁在乎真正的答案是90%还是100%?如何以任何方式改变您的行为?如何改变外卖课程或信息?不是。听起来您只是在麻烦您的副总裁,因为,好吧,“互联网上的某人有问题”。那可能不是职业发展的举动。我认为技术人员过分精确地解释语句是一个普遍的错误。了解如何与与您不一样的其他人进行有效沟通非常重要。

如果他真的破解了100%的密码,那么我不会告诉任何人,因为那将意味着他的密码也很弱,而且IT部门的所有密码也很弱。因此,我不相信该公司,或者如果它是正确的,那么该公司确实有问题。

#1 楼

这里有几种可能性,其中一些已经被召唤出来。无论采用哪种方式,无论您的VP(IT)都使用“解密的所有用户密码”,无论他使用的是“解密的”定义如何,都相当简单。


相关密码是,实际上是使用可逆加密存储的。

您的VP可能是指内部Web应用程序的密码,在该应用程序中,他们选择使用加密而不是哈希。
您的VP可能实际上是指Windows密码,并且您公司的组策略启用了具有可逆加密的存储。


VP所指的密码是使用弱哈希算法存储的,并且/或者正被哈希没有按用户使用的盐。

LM哈希是弱算法的一个示例,这是为实现向后兼容性而优化的Windows实现常见的方法。
无法按用户使用Salt使字典和彩虹表的攻击变得更加容易。


VP所指的密码实际上可能存储在原始格式中ext,他只是说它们被“解密”以掩盖一个事实,即它们从未被加密/散列。
您公司的员工实际上都使用非常弱的密码。

不管您密码的随机性如何,在很长一段时间内,8个字符都未被认为是“强”字符。



我认为该列表中的第4条不太可能,因此,除非其他三个条件都成立,否则您的副总裁很有可能只是夸大了一点。但是,除非您能听到公司C级人员的声音,否则我怀疑您可以做很多事情来改变,除了您自己的密码的实际强度。为此:


有人说“ 12是新的8”。我说去15。这不仅会使密码自然变强,而且还会阻止Windows将其存储为弱LM哈希格式。 LM哈希只能处理最长14个字符的密码。当您将密码长度更改为15个字符或更多时,Windows可能会发出警告消息,但这(在大多数情况下)可以安全地忽略。
请勿在多个应用程序中使用相同的密码。至少,我建议您保持工作密码与用于个人帐户的密码不同。理想情况下,任何两个应用程序都不应使用相同的密码。
请保留您正在执行的其他所有操作。从完整的ASCII字符集随机生成密码非常有用。只需确保最终产品包括所有四种字符类型,并且不包含真实单词即可。


评论


实际上,我认为#4是最有可能的罪魁祸首。过去,IT领域的人们一遍又一遍地告诉用户,要使用一串8位数的随机字符来代替单词/名称,而这是一个相当不错的密码。即使这些密码的安全性已更改,该习惯仍然存在,即使在IT用户中也是如此。

–伊兹卡塔
2012年11月29日19:03



@Izkata是正确的,但是来自一个组织的16,000个用户的密码不太可能如此之弱,以至于在使用适当的哈希和加盐方法时很容易被破解。

– Iszi
2012年11月29日19:22



#2 楼

100%破解密码的唯一现实方法是在Windows上存储LM哈希。 LM哈希分为2个七个字符的块,使暴力破解/彩虹表攻击切实可行(它们也不区分大小写,从而更加易于使用)。彩虹表为此而存在,并且很容易实现。

此外,任何不在词典中(或可通过对词典单词进行变异来找到)具有10个以上字符密码的人都不会得到破解任何合理的系统,即使算法较弱(例如md5)且无盐。 AFAIK彩虹表不能用于这么长的密码(作为参考,免费的彩虹表具有2.8 TB的MD5哈希数据包,最高可提供约9个字符的密码(未设置完整字符集)。

一点我想说的是,如果我是IT部门的副总裁,我将专注于摆脱LM哈希,而不是仅仅因为人们能够检索100%的密码,而只是告诉人们良好的密码做法:)

评论


我认为对于他来说,他浏览了所有16,000个员工密码并选择假设公司中没有一名员工足够小心以提供一个强密码就使他成为一名非常典型/糟糕的IT经理,这并不奇怪。

–埃里克·雷彭(Erik Reppen)
2012年11月29日,下午3:41

请注意,如果密码为15个字符或更长,则LM兼容性将被禁用。因此,即使LM是默认设置,也无法保证100%。

–罗伊斯·威廉姆斯
18年1月20日在22:21

#3 楼

“解密”不是正确的术语。也就是说,可以对密码进行加密而不是进行哈希处理,但是,只要知道加密密钥(也就是解密密钥)的人都可以直接解密。应用开膛手约翰之类的破解工具是没有意义的。

因此,您的副总裁使用的是近似术语。因此,有可能他可能也使用了近似的语法和语法。他们很可能将10k +密码提交给了破解工具,并破解了其中的一些密码(这一比例足以强制执行VP干预,但不是全部)。可以说,他对“全部”的使用过于过分热情。

现在我准备相信他可以破坏一半的密码。据记载,早在1988年的莫里斯蠕虫就可以用少于一千个单词的字典来破解现有密码的大约10%...

评论


我仍然觉得这是一个可疑的说法。但是,要求他透露密码的最后两个字符是测试密码的正确方法。他遵守了吗?

–托马斯·波宁(Thomas Pornin)
2012年11月28日15:42

实际上,使用公开密钥加密时,加密密钥不是解密密钥(长盐很好,这样可以保证安全)

–棘轮怪胎
2012年11月28日15:47

@ThomasPornin:不,他没有回复我的第二封电子邮件。我看到3种可能性:(1)他有答案,但由于他是副总裁,所以我很幸运收到第一封答复,更不用说再等了,(2)我打电话给他虚张声势,他不想让(3)他去租了几个Amazon EC2实例,并且疯狂地通过自己的工具运行我的密码哈希,因此他不必承认自己撒了谎。 :-)

–loneboat
2012年11月28日在16:23



一旦我们假设他正在使用“近似术语”,就很可能是通过“破解”或“解密”来表示-“通过JtR运行”。也许“全部”的意思是“太多”。

–AVID♦
2012年11月28日在21:18

@AviD-任何技术人员都不应使用“全部”来表示“太多”甚至“最多”。实际上,没有人应该这样做:这被称为“说谎”。

–内森·朗(Nathan Long)
2012年11月29日14:11

#4 楼

解密不是一个正确的词,但是他可能是出于可读性而不是技术准确性。我也同意他可能并没有全部获得,但是比例很高。

现在,您的密码有问题:如果您的公司使用快速哈希,那么8个字符就不会很长例如MD5或LM。一个不错的基于GPU的破解程序可以实现大约50M MD5哈希/秒。如果您在QWERTY键盘上假定100个可打印字符,那么对于八个字符的密码,这是10,000,000,000,000,000的键空间,这是预计的〜3.15年的破解时间。他不太可能抓到您的密码,但这并不是特别安全。

或者,他可以拥有一个巨型的8个字符的彩虹桌,用于完整的字符集,可以立即捕获您的密码。

评论


请注意,使用彩虹表并不是完全立即的。如果该表涵盖N个密码,但存储大小为N / t(因此是t倍的存储优化),则应用该表意味着进行t查询(机械硬盘每秒可以进行100次查询)和t²计算量。节省空间的彩虹表(例如t = 100000)使用起来可能有些昂贵。特别是要使用16000次...

–托马斯·波宁(Thomas Pornin)
2012年11月28日15:37

@ThomasPornin当然可以,但是当您将其与蛮力进行比较时,它几乎是立即生效的。

–多项式
2012年11月28日在16:33

一个不错的基于GPU的破解程序可以实现大约50M MD5哈希/秒。在100美元的GPU上可以轻松实现500M,而在高端硬件上则可以达到50亿哈希/秒。 280亿哈希/秒,现价$ 2700

–坦率的农夫
2012年11月29日0:51



@FrankFarmer令人印象深刻的数字。有趣。

– Phillip Schmidt
2012年12月20日15:50

#5 楼

关于它们如何如此快速地破解它们,我可以想到:


他们在您的公司的Windows中使用LM Hashes(非常危险,因此,您面临的不仅仅是一个更大的问题。弱密码)
他们使用了彩虹表攻击,并且具有非常大的彩虹表(可以输入8个字符)
他们将您的密码存储为加密而不是散列,并使用密钥对其进行解密
/>
按照目前的标准,无论如何,对于大多数普通用户而言,8个字符已经足够强大,但是我始终建议至少使用12个字符。如果我们是在谈论系统管理员或有权访问某些关键系统的人员,我总是建议16.有些人认为这是“过度杀伤力”,但我宁愿使他们“太强”而不是太弱。如果您使用KeePass保护密码,则实际上不必担心密码是什么,因为无论如何您都无需记住密码。

#6 楼

我在客户端(Windows LM哈希)上进行了类似的练习,并且使用原始海报中提到的类似工具获得了超过75%的用户密码。这种类型的攻击通常会获得超过90%的8个字符的人类(西方和英语)派生密码。密码越长,字符集越宽-密码越难,通过率越低。在我的客户中,许多密码不超过8个字符,这使我的生活很轻松。 25%的客户很长或不在彩虹表中包含字符。

如果您的IT副总裁一直在为此花钱,那么他可能使用了其中一种商业密码表或真正具有SaaS解决方案的SaaS解决方案宽字符集的所有可用密码的庞大存储库(例如,大多数不包括£),如果密码通常少于10个字符,则很有可能他的命中率接近100%。

#7 楼

正如我将要提到的那样,许多人对此进行了更为详尽的说明,其中许多人在技术上都正确地选择了所提供的选项(由于技术上合理且完整,因此请特别注意Iszi的响应)。但是,我只想给我两分钱,说这可能是发生的两件事之一。


它们使用可逆加密(AD组策略选项)存储密码,因此,它只是使用加密,而他确实“解密”了密码。这是一个可怕的想法,但是人们这样做是为了密码审核或与旧版应用程序兼容。
他在撒谎,他们破解了大多数(但不是全部)密码。

他们还可能存储LM哈希值;我不认为这是他们正在做的原因是因为在这种情况下,他们严重缺乏适当的安全性。

我在工作中一直都在破解密码,我不得不说,我从未破解过所有密码。我为一家拥有约50,000名员工的公司工作,通常我们会花1个小时的时间来破解大约8,000个密码,也就是低挂的成果。

经过1个小时的努力,破解密码的难度就成倍增加了(因为它们通常是复杂的非字典性单词,长度足够长),所以我们通常在此停止除非我们试图证明观点或破解特定密码。大多数安全团队无法在大型公司中始终监控和审核每个员工的密码,因此我们选择每季度一次最容易破解和重新破解密码的方式。

#8 楼

我可以说,如果您的IT VP实际上确实破解了100%的密码,那么除了用户选择的纯文本密码的相对弱点或强项之外,您还有一些明显的安全漏洞。

有些可能性:


您实际上并没有使用哈希。许多“内置”安全库(例如用于组策略或ASP.NET的安全库)都选择使用加密而不是哈希密码。目的是允许管理员恢复密码丢失的帐户,而不会完全丢失该帐户。但是,如果将其设计为有效可逆的,那么它可以有效地被逆转。如果有人可以通过这种方式合法地解密密码,那就是CIO,但他可能使用了破解工具只是为了说明他不需要管理员访问权限。
您正在使用受破坏的哈希。 MD5,LMHash等已损坏,切勿用于密码存储。
您使用的哈希在技术上具有加密强度,但不适用于密码,例如SHA1 / 2。这通常是由于以下两个原因之一:

哈希值计算速度太快,使得并行攻击(例如GPU或基于僵尸网络的破解程序)变得可行。
密码,甚至是好的密码,与使用安全哈希的其他事物(例如消息摘要/校验和)相比,熵相对较低。除非使用随机添加的盐来人为地增加熵,否则与发现较大输入大小的碰撞消息相比,使用暴力破解者通常花费更少的时间来查找碰撞口令。




让副总裁向您展示他如何获取明文密码以及密码本身。它不应该那么容易。如果您对所使用的哈希函数有任何控制权(意味着它不是内置的,例如用于组策略),我会考虑切换到专门为密码哈希设计的哈希,例如bcrypt或scrypt。这两个之所以能很好地起作用,是因为它们非常慢,而且不仅现在它们很慢,而且还可以通过使用键派生函数将它们配置为始终很慢,这些函数派生了salt并对其执行可变的指数复杂度运算以“温暖”基于密码的哈希。 BCrypt是一个完整的哈希,内置了KDF和密码。 scrypt只是KDF,可以与任何安全加密(例如AES)配对。

#9 楼

高度怀疑他们这样做是在没有巨大(无法实现)的处理能力的情况下(对于蛮力部分而言,除非它只占整个过程的一小部分)。高质量的哈希算法几乎不可能破解,因此如果他这样做“解密”密码,他可能DID主要必须使用蛮力。

此外,“解密”不是正确的术语,“解密”显然意味着密码曾经被加密过,而加密意味着两个密码。散列函数仅是一种单向函数,即,它不能进行逆向工程(很好,但是这超出了此答案的范围)。

#10 楼

8个字符是不够的!(请允许我在下面解释)


首先,我想补充一下,对于所有正确性,16k密码可以被破解
用弱算法散列。首先,一个人会
用字典攻击来破解有时甚至超过一半的东西(取决于您的同事的平均智商和粗心大意),然后一个人会使用Rainbow强行攻击其余的人
表格(假设它是未加盐的MD5)。这将需要时间,但不会花费几年,
当然,除非几个人使用非常长的强密码。这个
花费大量时间进行暴力破解,可能会花费很长时间,但是奇怪的是,“知识多数”并不关心好的密码,例如,即使他们喜欢您,他们也会使用8字符。 ;)


-返回密码长度-

尽管这在很大程度上取决于管理员使用什么来哈希密码的方式

例如bcrypt,甚至可能是更好的scrypt,具有高迭代次数将大大提高任何(可接受的)密码的安全性。

但是当您谈论一家拥有16,000名员工,可能会发生诸如企业间谍之类的事情。做这些事情的人大多数时候都是技术娴熟的人,很可能会拥有一个不是很大但仍然很体面的僵尸网络,他们可以通过亲自编写和分发的小病毒槽(例如放在海盗湾里的视频游戏)获得。 />
我用这个例子说明了他们如何以此为目标玩家,这意味着他们将拥有大量可以在需要时使用的gpu。

这样,“预期的破解时间”如上面的多项式所建议的,“〜3.15年”很快就除以一千台装有非常不错的gpu卡的计算机,这些卡可以在闲置时被窃取。

现在,您的MD5哈希密码仅在〜1.149天内被破解


(因此,假设1%的用户像您一样随机生成了8个字符的密码,
为160 x 1.149 = 221.37天,那么半年后他将需要花费更多的时间来测试所有密码。 )


尽管上面的Lucas Kauffman正确地指出12或什至更好的16个字符的密码在技术上是最合适的,但我本人却更喜欢使用密码短语。

Jeff Atwood这个网站的创建者长期以来一直在倡导它们!

所以开始使用它吧!易于记忆,难以破解。

评论


不过,这并未解决OP中的实际问题。 :-(

–loneboat
2012年11月28日在22:16

@loneboat哦,您是对的,我有点(错误),尽管该部分现在很明显,其他答案都包含不错的解释,没有考虑,但是现在我添加了自己的内容,基本上重复了xD

–快乐
2012年11月28日在22:33



@Happy,请阅读如何回答-答案应该很好地回答问题。 OP没有询问如何使用强密码,实际上这里有很多这样的问题。您有什么要添加的与此问题相关的信息,或将此信息添加到提出该问题的问题之一吗?

–AVID♦
13年1月22日在22:59

#11 楼

在这个故事中,让我相信他在虚张声势(或者我想相信)的事情很少让我感到困扰。


有一些工具可以在企业级别实施密码策略,速度更快与破解所有用户密码相比,使用它们更便宜,只是为了教育他们使用更好/更安全的密码
,他说他解密了密码,这是一个非常不好的信号,它暗示他们正在使用双向加密而不是单次使用散列+随机,每用户盐(以及慢速散列功能,例如bcrypt,scrypt或PBKDF2),修复它可能比破解所有16,000个密码容易。表明缺乏对安全术语的关注并不能与破解16,000个密码所需的摇滚明星技巧并驾齐驱。
无论采用哪种密码保护机制,密码尝试似乎都没有任何延迟机制(允许暴力攻击),所以他们可以访问某些内部数据库并绕过任何锁定/延迟机制,或者他们的系统上没有任何此类保护。

我真的希望您的公司能够不管理人们的资金,执行敏感的医疗程序或任何与人们的生活有关的事情,因为这是黑客的天堂。确保您公司的名称保持匿名,因为从这里听起来不太好。

对于IT副总裁,我真的希望他在开玩笑,但是如果他设法做到的话,那将是22点。他所做的一切,仅意味着他没有正确地完成自己的工作,如果他做的不正确,那么他就是不诚实的,那同样糟糕。

#12 楼

使用一组彩虹表,它们完全有可能破解了公司中的每个密码。 Rainbow表是在密码破解尝试之前创建的一组预先计算的哈希值,用于破解密码的速度远快于暴力破解方法。 rcracki是您的问题中列出的工具之一。 hashcat和JtR是强力工具,尽管它们也可以用于创建Rainbow表。

因此,毫无疑问,他所说的完全有可能。

顺便说一句,如今只有8个字符的密码是不够的,请至少使用9个。

评论


除最后一句话外的所有内容均为+1,最后一句话为-1。长度不能很好地指示开始的安全性,而且9个可打印的ASCII字符并不是特别安全。如果要考虑任何一种安全余量,我会最少选择12个随机字符。

–多项式
2012年11月28日15:07

@Polynomial,我同意9个字符不是理想的,但比8个字符复杂一个数量级,并且始终在争取用户使用更长的密码。 9不如> 12好,但有时它是可以实现的。

– GdD
2012年11月28日15:27

#13 楼

我不是安全专家,但是我的理解是,将密码加密保存到数据库后是一种方法,无法撤消。因此,密码被散列并保存到数据库。

然后您所要做的就是,一个人要登录时,对新输入的密码进行哈希处理,并将其与数据库中的哈希进行比较,如果匹配,则密码正确。

评论


您可以找到另一个加密为相同值的值-这就是他列出工具的原因-它们具有解密密码的作用。

–马克C.华莱士
2012年11月28日15:34

散列而不是加密确实是行业最佳实践。但是,尽管如此,仍然编写了许多应用程序来加密密码。更糟糕的是,他们可能会将密码保留为纯文本格式。请访问plaintextoffenders.com,以获取来自Internet的大量示例。

– Iszi
2012年11月28日在19:02

您可以对所有内容进行哈希处理,但是如果您使用MD5 / SHA-1(快速算法)并且不执行密码策略,则拥有字典的任何新手黑客都可以在几分钟内使用强力破解强力EC2实例来破解大多数密码/小时/天(取决于平均密码长度和用户数量)都在100美元以下。或者,如果您不给它们加盐,则使用彩虹表甚至更容易。 Linked-in使用一种无​​盐哈希值,并且在数据库泄漏时破解了大多数密码。但是真正的问题不是密码,您所需要做的就是CEO的助手单击恶意软件链接,您就可以进入了。

–伊朗棉兰
2012年11月30日在3:59