IV. 评估
B.评估PsaaGAN生成的密码
我们用PassGAN,JTR,以及HashCat生成多达10^10个密码。在JTR中,使用SpiderLabs重整规则[68],在HashCat中我们是用best64和gen2规则[28]。这些规则是密码破译著作中的常用规则[44],并且在包括RockYou和linkedIn在内的密码数据库中进行了多年优化。由于这些特定数据集优化组合,我们认为这些规则能够很好的表现最佳匹配性能,而最佳匹配性能可以通过手工生成规则获取。
作为我们的练习库,Best64和gen2都可以生成不到10^10个密码(粗略的算,分别为998M和754M密码,详见表I)。SpiderLabsmangling规则大约可以生成6*10^10个密码。这就使我们可以在JTR和PassGAN之间进行公平比较,因为PassGAN可以通过一个10^10样本的数据集产生相同数量的不重复的密码。
表I:PassGAN,HashCat和JTR生成的密码的独特性与新颖性比较。1列表示每一个工具生成的密码总数。在实验中, PassGAN和JTR 在我们使用的训练集和规则集中生成了很多密码,但是HashCat不能生成这样多的密码。2列表明每个工具生成的不重复密码的数量。3列表明每个工具生成的用于训练集密码数量。
图2.无重复样本数,该图是和PassGAN生成的样本总数相比较。
首先要确定PassGAN生成的密码数量的增长,是否会造成不重复密码数以及训练集和测试集的匹配数量的增长。为此,我们生成多个大小在10^6~10^10之间密码库。我们观测到,随着密码数量的增加,不重复密码数也在增加。这次评测的结果呈现在表I第二列中。正如图2所示,当我们增加了PassGAN生成的密码数量,新生成的不重复密码比率略有下降。相似的,匹配的密码的增长率显示在图3中,随着生成密码数量的增加而减少。这是意料之中的事,因为简单的密码之前就已经匹配上了,而剩下的(更复杂的)密码需要大量的尝试才能匹配上。
图3:GAN生成的出现在训练集和测试集中的密码数量,随着GAN输出的样本数量增长。
我们的试验也显示,PassGAN的输出同JTR规则和HashCat规则比有一个较高的重码率。这是因为三个工具之间,PassGAN是唯一一个试图产生与训练集相同密码分布的工具,PassGAN的特点是生成大量重复口令。这允许PassGAN先输出高概率匹配成功的密码字符串,在输出小概率匹配成功的密码字符串,从而在实际中减少密码破译的尝试次数。
表II:在RockYou测试集上比较利用我们的技术,HashCat和JTR生成的密码,2列表明生成的密码有多少出现在由3,094,199个独立条目组成的测试集中,第三列表示生成的密码出现在测试集中的数量,通过对测试集中相应条目的数量进行加权匹配(这个测试集中包括5,919,936个无重复条例)。第四列和第五列展示生成的密码在测试集中出现的数量,而不是训练集(即新密码)中生成的密码数量。4列中的数字将每一个匹配数视为唯一,然而5列中的数字通过在测试集中出现的密码的数量权衡每一次密码匹配。在4列中最大匹配数是1,978,367,5列中中的最大匹配数是2,032,728.
表III:比较生成的密码,这些密码是由我们的技术,HashCat,JTR在包含43,354,871个独立条目的LinkedIn的测试集上生成的。2列展示生成的密码有多少出现在测试集中。然而3列展示有多少生成的密码可以匹配到测试集,而不是训练集(最大匹配数是40,597,129)。
#p#分页标题#e#
对于每一个工具,我们报告在培训集中生成的密码数量。我们不认为这些密码是有价值的,因为很多匹配都是在字典攻击的基础上进行的。表I中的3列表明每一个工具的结果,图3进一步提供有关PassGAN输出的细节。在我们的实验中,同JTR和HashCat相比,PassGAN 只能生成的密码很少一部分能够匹配到训练集。
下一步,我们查看每一个可以跟RockYou和LinkedIn测试集匹配的工具,并计算了每一个工具生成的密码的数量。我们统计的有关RockYou的结果呈现在表II中。而有关LinkedIn的结果成现在表III中。表II中的2列和3列展示RockYou测试集中每个工具生成的密码的数量,区别是2列不包含重复的匹配,而3列包含重复的匹配。表II的4列和5列展示的是当我们排除同时出现在训练集和测试集中的密码时,能够匹配上的密码数量。在该实验中,由于best64超越我们的技术大约1.7倍至2倍,best64规则能够比GAN多匹配54%密码,在同一个实验中,PassGAN显著并持续地超越的JTR中的SpiderLabs规则。
在所有的标准里,把GAN的输出和best64的输出结合起来,就会产生最好的结果,在计算RockYou测试集中不重复密码的数量的,会额外匹配115,613个密码(详见表III,4列),如果重复的次数也包含在内就由118,490个密码(详见表II,5列)。在这两种情况中,相当HashCat的best64规则提高了18%。我们认为这是一个非常重要的结果,因为它表明,GAN仅在密码样本的基础上,就可以成功模拟用户是如何选择密码的
,在某些情形下,比那些编写HashCat密码生成规则的专家还要好。
表III的2列和3列展示LinkedIn测试集中匹配的密码数量。2列包含所有匹配的密码,但是3列不包含出现在RockYou训练集中出现的密码匹配。在我们的实验中,HashCat规则和PassGAN规则之间的差异要比HashCat规则和RockYou数据集中的差异小得多。这就表明GAN能够比人工生成规则更好的推广。此外,把PassGAN和best64结合起来会生成最大数量的匹配密码。这些结果就表明,在没有来自目标分发的可用样例时,PassGAN提供实质性的好处,这通常与密码破译有关。此外,当我们把PassGAN的输出和HashCat的best64规则的输出结合起来时,我们能够比单一的best64规则多匹配1,772,524个密码,大约增长了24%。
我们审查了一系列PassGAN生成的密码,这些密码没有匹配任何测试集,并且确定很多密码是热办公生成密码的合格后选择者。因此,我们猜测可能会有大量GAN生成的密码,并不能匹配到我们的测试集,但是仍然能匹配到RockYou服务以外的用户账户。我们在表IV中列出了一个关于密码的小样例。
表IV:GAN生成的不能匹配到测试集的密码样例
V.总结
在这篇论文中,我们介绍了PassGAN, 即第一个基于GAN的密码破译技术。我们的结果表明,字符级GANs用于密码破译是非常合适的,尤其是GANs在泄露的密码数据集上训练的时候。更进一步证明我们的试验的结果,在一个密码数据集上训练GANS,然后在一个完全不同的分布式数据集上进行测试,发现GANs推演的很好。
我们在实验中发现,当GANs在RockYou的一个完全不同的子集中训练时,我们先从RockYou数据集中提取一个测试集,通过在这个测试集上训练发现GANs能够在测试集中匹配超过46%的密码。同基于规则的密码生成技术相比,我们的实验表明PassGAN非诚有竞争力。尽管HashCat 的Base64和gen2规则跑赢了PassGAN,我们的规则匹配的密码数量是JTR的SpyderLabs规则的两倍。而且,通过把GAN的输出和base64的输出结合起来,我们大概可以匹配RockYou数据集中超过78%的密码,以及LinkedIn数据集中大约27%的密码,这就意味着密码的匹配率分别上升了18%和24%。这是非常显著的成果,因为它表明
GAN能够生成大量的密码,而这是当最先进的密码生成工具不可能达到的。更多的,当我们在一个不同于训练集(RockYou)的数据集(LinkedIn)上评估密码破译工具时,GAN的匹配率的下降是不明显的。
不同于当前的一些基于规则的工具,我们的密码破译方法是一个全新的改革,PassGAN能够在没有用户干预的情况下生成密码,因此不需要密码领域的知识,也不需要手工分析密码数据库泄露。我们对训练表现的评价说明,在提供一个足够大的已泄露密码库时,PsaaGAN的表现比当前基于规则的密码生成技术好得多。