信息安全专家们一直在探索“生成式对抗网络”(GAN)如何提高我们的在线安全性,并取得了令人鼓舞的结果。近日,新泽西州史蒂文斯理工学院和纽约理工学院的研究人员开发了使用GAN猜测密码的方法。
该小组开发了一个实验,通过其被称为“PassGan”的密码猜测技术来查看泄露密码的数据,并发现该软件能够从这些帐户中猜出47%的密码,比HashCat和Ripper这样的竞争算法要高得多。在这篇文章中,我们将详细介绍下述内容:
这项技术所处的历史背景
犯罪分子可以利用这项技术的哪些功能
这项技术如何运作
如果你是红队(攻击方),如何运用该技术
作为用户如何保护自身安全
作为蓝队(防守方)如何保护自身和企业安全
进入正题前,让我们先来了解一下什么是“密码猜测”?这是一个相当模糊的术语,在本文语境中,它表示破解密码散列。那么问题又来了,什么是“密码散列”(password hashes)呢?
[[234584]]
什么是密码散列?
当发生诸如Dropbox、LinkedIn以及Ashley Madison等大型数据泄露时,其发布的就是(通常情况下)电子邮件和密码散列列表。所谓Hash——一般翻译为“散列”,也可直接音译为“哈希”——就是把任意长度的输入(叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值。
例如,假设我将明文密码“12345”使用MD5算法处理成一个类似“5f4dcc3b5aa765d61d8327deb882cf99”的字符串,这就称之为“哈希值”。其具有不可逆的特点,也就是说,不能从这个哈希值反推出明文密码(也就是之前的123456)。
这一点在安全方面十分有用,因为这就意味着,像Adobe、LinkedIn或Google这样的网站可以拥有数亿个用户帐户,但不会存储任何人的实际密码。即使如此,他们仍然有能力在不知道密码的情况下,检查用户是否知晓密码。这一过程仅仅是通过存储的密码“哈希值”而不是密码本身来实现的。当用户想要登录这些网站时,他们会发送自己的密码,系统随后会对这些密码进行hash处理,并检查得到的哈希值是否与数据库中和该电子邮件地址相关联的哈希值相匹配。
如此一来,就可以有效地放缓攻击者破解密码的速度,但是并不能完全阻止他们。通过利用现代工具,攻击者每秒可以猜测出数十万至数亿个密码,具体取决于攻击者试图破解的哈希算法类型。这就使得攻击者具有更多的时间和精力来检查潜在的密码,而不是耗费过多时间来猜测密码。
PassGAN加入对抗战斗
攻击者和安全专家正在进行一场永无休止的竞赛,力图找到更好、更快的方式来破解密码列表。目前,PassGAN技术就是实现这一过程最有力的“武器”。
PassGAN使用了一种称为“生成对抗网络”(Generative Adversarial Network,简称GAN)的相对较新的技术,其生成的正确密码猜测能够比传统方法多出18%-24%。所谓“生成对抗网络”是一类神经网络,通过轮流训练判别器(Discriminator)和生成器(Generator),令其相互对抗,来从复杂概率分布中采样,例如生成图片、文字、语音等。
先来说说第一个程序——“判别器”(Discriminator),它是一个深度卷积神经网络,简言之就是一个可以在越来越抽象的层次上学习模式的系统,其作用是用于判别“生成器”所生成的数据是否接近于真实。它最终会返回一个介于0和1之间的数字,其中0表示不是密码,1表示与密码非常相似。
下一个程序是“生成器”,主要用于生成可以迷惑“判别器”的数据。它以随机的文本串开始,通过“判别器”测试得到相应的分数。这第一次得到的分数一般会非常低,因为它只是一串随机字符。
接下来,“生成器”就会对该字符串进行修改,然后再去“判别器”处查看修改后的字符串得到的分数。如果分数升高,则保持该修改结果;如果不是,则撤销该修改并继续进行新的修改操作;不断重复该过程,使得分达到给定的数值,以便提升自身计算能力。
简单来说,“GAN”的基本思想是,生成器和判别器玩一场“道高一尺,魔高一丈”的游戏:判别器要练就“火眼金睛”,尽量区分出真实的样本(如真实的图片)和由生成器生成的假样本;生成器要学着“以假乱真”,生成出使判别器判别为真实的“假样本”。竞争的理想状态是双方都不断进步——判别器的眼睛越发“雪亮”,生成器的欺骗能力也不断提高。
善意和恶意行为者如何使用PassGan
正如其他任何安全创新技术一样,PassGan也可能会被恶意行为者滥用于攻击存在密码重用现象的系统,危害企业和系统安全。当然,密码重用(Password reuse)对于普通用户也会造成异常严重的危害。因此,为了保护自身免受安全威胁,用户不能仅寄希望于密码这一层防护上,还需要启用多因子身份认证(MFA)。许多网站都已经提供了此项功能,希望大家能够及时启用。
当然,对于旨在加强组织安全性的“红色团队”而言,PassGAN也可以很好地帮助他们破解本地密码,例如Windows SAM哈希或linux / etc / shadow密码哈希等。
如果你是“红队”成员,并且对PassGAN工具感兴趣,你可以前往https://github.com/brannondorsey/PassGAN寻找有关Brannon Dorsey发布的PassGAN开源实现资源。
在PassGAN实验中,研究人员探索了不同的神经网络配置、参数和训练流程,以确定学习和过度拟合之间的适当平衡。具体来说,研究者的主要贡献如下:
1. 显示GAN可以生成高质量的密码猜测。在实验中,对于RockYou数据集来说,研究者能够匹配真实用户密码组成的测试集5,919,936个密码中的2,774,269(46.86%),而匹配LinkedIn数据集43,454,871个密码中的4,996,980个(11.53%)。
2. 研究显示,该技术可以与之前最先进的密码生成规则一较高下。尽管这些规则是针对评估中使用的数据集进行了专门调整的,但是PassGAN的输出质量与密码生成规则相当(在HashCat中),或者比密码生成规则更好(在John Ripper中)。
3. PassGAN可以用来补充密码生成规则。在实验中,研究人员成功地使用PassGAN生成了任何密码规则都未能生成的密码匹配。
4. 研究人员还指出,表现最好的密码破解结果来自于PassGAN和HashCat的组合。通过将PassGAN和HashCat的输出结合起来之后,发现比 HashCat自己匹配的密码多出18%-24%。
5. 与密码生成规则相反,PassGAN可以生成几乎无限数量的密码猜测。实验表明,新的(唯一的)密码猜测数量会随着GAN产生的密码总数稳步增加。这一点很重要,因为目前使用规则生成的唯一密码的数量,最终会受到密码数据集(用于实例化这些规则)大小的限制。
6. 通过标准的、基于变异的密码规则集运行PassGAN的输出,以获得更大的覆盖范围也可能是有用的。
企业密码最佳实践
如果您负责管理企业,那么建议您执行强密码策略,用passphrase代替passwords。根据维基百科指出,两者的区别在于Passphrase比普通的passwords更长。
近年来,很多专家开始倾向于认为,使用足够长的Passphrase,可以摆脱以前密码要求大小写字母、数字、特殊符号等导致密码难以记忆的情况。比如,使用“恰似一江春水向东流”首字母组成的密码不仅十分好记,而且会比Password这种满足各种要求,却没有卵用的密码更好。
下面就以“*dJoeo30(#JS)3%$”密码为例进行分析。
从熵的角度来看,这是一个非常好的密码。因为它包含一切,具备16个字符,有大写字母、小写字母、符号和数字。以每个字符都存在95种可能性来计算,那么这组密码的就有95^16(即95的16次方)种可能,即便是每秒可以猜测1万亿次,可能也需要一万亿年的时间才能猜到。
就密码强度而言,它确实是个好密码,但是可惜没人能记住它。因为我们的大脑很难记住对我们没有任何意义的随机字符串。这也正是PassGAN能够轻易破解如此多密码的原因所在,因为人类可以很容易记住的密码(如P@a$$word),一定也很容易猜测得出。
这就是我们主张使用passphrase的原因所在。我们可以使用具有很多熵的东西,但这样产生的密码并不是任意或随机字符,而是有迹可循且便于记忆的内容。例如“这张专辑很好、天气很冷”等很容易记住的东西。如果,我们假设攻击者知道用户正在使用一个英文单词的密码组合,那么以人均20000个词汇量来计算,我们就有20000^8(20000的8次方)种可能的组合,想要成功破解也非易事。
接下来,您就需要考虑用户如何在企业中拥有给定的密码。您是否应该期待前台人员了解如何创建安全密码?您是否应该期待企业中的每个人都配置强大的密码?你给定用户的密码是否便于他们记忆,或者他们会不会写在便签纸上?这些问题都是值得关注和思考的!