Password Guessing Using Random Forest使用随机森林猜密码


阅读论文的笔记

Abstract

密码是目前使用最广泛的认证方法,猜测攻击是最有效的密码强度评估方法。然而,现有的密码猜测模型一般都是建立在传统统计或深度学习的基础上,目前还没有采用经典机器学习的密码猜测模型研究。

为了填补这一空白,本文提供了一种全新的密码猜测技术路线。更具体地说,我们对密码字符进行重新编码,使一系列处理多类分类问题的经典机器学习技术(如随机森林、增强算法及其变体)能够用于密码猜测。此外,我们提出了一个基于随机森林的框架RFGuess,它描述了三种最具代表性的密码猜测场景(即拖网猜测、基于个人身份信息(PII)的定向猜测和基于用户密码重用行为的猜测)。

本工作除具有理论意义外,还具有一定的实用价值。利用13个大型真实密码数据集进行的实验表明,我们的基于随机森林的猜测模型是有效的:(1)RFGuess用于拖网猜测场景,其猜测成功率与最主要的同类模型相当;(2)基于PII的目标猜测RFGuess-PII,在100次猜测中猜测普通用户的20% ~ 28%,比最前面的猜测者高出7% ~ 13%;(3)基于用户密码重用/修改行为的目标猜测RFGuess-Reuse,在相关模型中表现最好或次好。我们相信这项工作在将经典机器学习技术引入密码猜测方面迈出了实质性的一步。

Introduction

在可预见的未来,密码可能仍然是主要的方法,因为它使用简单、易于更改和部署成本低[12,13,22,30]。但是,用户倾向于选择流行的字符串,使用个人身份信息(PII),并重用现有的密码。这些行为使得密码容易受到猜测攻击(包括拖网猜测[11,47]和定向猜测[44,63])。

为了解决这个问题,服务提供商通常使用密码强度计(PSM)[15,66]来检测弱密码,研究表明,设计良好的PSM确实可以帮助用户提高密码强度[54]。在实践中,猜测数被发现是评估密码强度的一个很好的指标[15,39],那些容易被攻击者猜测的密码被认为是弱密码。因此,有必要从攻击者的角度来研究密码强度。虽然无休止的密码数据泄露[3,6,8]为攻击者提供了有利的材料,但仍有现实的攻击场景(如网银网站,以及来自美国、中国和俄罗斯以外的网站的密码),在这些场景中训练数据稀缺(如规模≤106),和/或对目标知之甚少。因此,在可用的训练数据不丰富的情况下,理解猜测威胁是同样重要的。

1979年,Morris和Thompson[40]设计了几个启发式转换规则来生成字典单词的变体,并利用它们来执行密码猜测。此后,人们提出了一系列利用用户选择常用密码行为的拖网式密码猜测方法,主要有概率上下文无关语法(PCFG[65])和基于马尔可夫模型(Markov-based models)[38,41]。此外,频繁的大规模PII泄漏(如2.4亿Deezer泄漏[53],5.53亿Facebook泄漏[9],7700万Nitro PDF泄漏[25])使得有针对性的密码猜测(如使用用户的PII的targeted - markov[61]和targuessi[63],使用用户的同族密码的targuessii[63])越来越现实。所有这些密码猜测算法都是基于统计的模型,通过计算训练集中元素的频率(例如PCFG中的字母片段和Markov中的n-gram字符串)来破解密码。这些“简单计数”模型具有数据稀疏性和过度拟合[38]的固有局限性。

针对这些局限性,提出了基于深度学习的猜测模型(如RNN[39]、PassGAN[31]、Adams[46]和CPG/DPG[47])。它们主要使用复杂的神经网络来处理长度短、特征尺寸小的文本(即密码)。虽然这些模型的模型训练只发生一次,但它们通常需要非常大的训练集(例如动态字典[46]的>108),但在1010次猜测的[57]中,与基于统计的猜测模型(例如PCFG[65]和Markov[38])相比,成功率没有显著的优势。

自2016年Melicher等人[39]首次使用LSTM (long - short-term memory)建模密码猜测性以来,深度学习在密码猜测研究中的应用一直受到关注[31,46,47]。事实证明,密码猜测研究绕过了经典的机器学习,直接从基于统计的时代进入了深度学习时代,留下了巨大的差距。在现实中,随着统计学习的发展和深度学习的基础,经典的机器学习技术(如支持向量机[42]和随机森林[14])已经在自然语言处理(NLP)、语音识别和计算机视觉[33]等领域得到了广泛的应用。与传统的统计方法相比,经典的机器学习算法通常具有更强的拟合和预测能力;与深度学习技术相比,经典的机器学习技术通常具有更简洁的模型,更容易进行参数调整,需要更少的训练数据来获得满意的结果。

然而,据我们所知,还没有人关注基于经典机器学习技术设计密码猜测模型。特别是,以下关键问题还没有令人满意的答案:(1)经典的机器学习技术是否可以用于设计密码猜测模型?(2)如果可能,这些技巧如何用于典型的猜测场景?(3)基于经典机器学习技术的密码猜测模型能否在降低计算开销的同时提高攻击成功率?在本文中,我们旨在为这些关键问题提供具体的答案。虽然将经典的机器学习技术应用于密码猜测看起来很简单,但实际上相当具有挑战性。现在我们来解释一下原因。

首先,密码本质上是短文本,具有以下特点,与传统的NLP任务有很大的不同:1)密码通常由6 ~ 30个字符组成[38,59],比标准的NLP文本短得多;2)密码是一段人工构造的敏感文本,它可能包含丰富的语义,但不受普通文本语法结构的限制(并经常故意偏离),如密码loveu4ever(语义上的love you forever);3)密码猜测时,要求生成的密码与目标精确匹配。这意味着任何不一致都会导致密码破解失败。例如,我们将P@ssword123作为目标,并生成一系列与之非常接近但不同的猜测,例如password123、p@sswrod123、password123等。虽然它们都与目标密码相似,但没有一个能构成正确的猜测。这在猜测次数有限的情况下尤为重要,例如在线猜测[63],而在线猜测是普通用户需要努力减轻的主要安全威胁(见[12,24,63])。相反,在传统的NLP任务中,只要模糊性不严重影响理解,就允许有一定程度的模糊性。因此,最初为NLP任务(或计算机视觉)设计的经典机器学习技术不能直接或容易地用于密码猜测。

其次,基于深度学习的密码猜测模型([31,39,47])通常对密码字符进行一次热编码,并利用神经网络自动学习这些字符的内部连接。然而,经典的机器学习技术通常需要人工提取和构造特征(即特征工程)。因此,如何准确地刻画密码特征,既能反映字符的固有属性,又能保证机器学习算法的有效性,是一个相当大的挑战。

我们的贡献总结如下:

  • 新的技术路线。我们用四个维度来表示n阶(例如n= 4,5,6)字符串中的每个密码字符:<字符类型,字符的秩(例如,字母a是a ~ z中的第一个小写字母),键盘行号,键盘列号>,并在另外两个维度表示整个n阶字符串:<字符在密码中的位置,字符在当前段中的位置>。这些表示是通用的,使得经典的机器学习技术(如Random Forest和Boosting)首次成功地应用于密码猜测。
  • 一种新的PII匹配算法。为了克服现有的PII匹配算法(即使用启发式标签来表示密码中的PII使用情况[63])的局限性,我们提出了一种新的近似最优的PII匹配算法,该算法能够更准确地捕捉用户的PII使用情况,并能将领先猜测模型的成功率提高7% ~ 13%。通过理论和实验验证了算法的有效性。
  • 广泛的评估。我们进行了一系列的实验来证明我们的模型的有效性和一般适用性。结果表明,基于PII的RFGuess在拖网猜测情景下的猜测成功率与同类算法相当,在定向猜测情景下的猜测成功率比同类算法高7.03% ~ 27.54%。
  • 一些见解。当预测密码中n阶字符串之后的下一个字符时,RFGuess可以清楚地显示每个字符在不同维度上的重要性(例如,类型/连续性/位置信息)。这些知识可以帮助我们优化模型训练和密码生成时间,使不重要的密码特征更容易检测(和消除),也有助于设计新的基于机器学习的猜测模型。

背景及相关工作

三种猜测场景

拖网式猜测

拖网式猜测意味着攻击者不关心具体的目标是谁,它的唯一目标是在允许的猜测数下猜测更多的密码。2009年,Weir等人[65]提出了一种基于严格概率上下文无关语法(PCFG)的全自动密码猜测算法。首先,该算法将密码字符串分为三类:字母段L、数字段D和特殊字符段s。然后,将密码转换为模板结构(例如:Password123!→L8D3S1)和相应的符合该结构的终端(如L8→密码)。最后,根据密码结构的概率乘以其终端的概率,计算生成密码的概率。在此背景下,研究人员提出了一系列改进技术,如对密码[56]进行进一步的语义挖掘,添加键盘模式和多字模式[32],对长密码[27]进行自适应改进等。

与PCFG[65]根据字符类型将密码分成不同的段不同,Narayanan和Shmatikov[41]提出的Markov模型对密码中的整个字符进行训练,通过字符之间从左到右的连接计算出密码的概率。特别是,n-gram Markov需要记录一个字符的频率,后面跟着一个长度为n-1的字符串。与PCFG一样,许多研究者也对马尔可夫模型进行了后续研究。例如,Ma et al.[38]对Markov模型进行平滑和归一化处理,以缓解数据稀疏性和过拟合问题;Markus等[21]以概率降序排列密码,提高猜测速度。

在USENIX ’ 16年,Melicher等人首次将深度学习技术引入密码猜测。更具体地说,他们构建了一个由lstm(即FLA,即Fast, Lean, and Accurate)组成的神经网络。与传统的统计密码猜测模型(如PCFG[65]和Markov[38])相比,在猜测量较大的情况下(如>1010),FLA具有更好的破解率。2019年Hitaj et al.[31]将生成对抗网络(generative adversarial networks, GAN)引入密码猜测,并提出PassGAN,显示了生成对抗网络在该领域的应用潜力。之后,Pasquini等人[47]在训练过程中缓解了GAN的模态崩溃问题,使得基于GAN的方法在大猜测下的开裂率得到了显著提高。在此基础上,他们构建了两个密码猜测框架,即条件密码猜测框架(CPG)和动态密码猜测框架(DPG)。然而,与基于统计的模型(如PCFG[65]和Markov[38])相比,CPG/DPG[47]通常需要非常大的训练数据(如size>107),消耗更长的训练时间,且参数调整繁琐。

基于PII的定向猜测

有针对性的密码猜测的目标是尽可能快地破解给定服务(如网上银行账户和个人手机)中给定用户的密码[63]。因此,攻击者会利用与目标受害者相关的PII来增强破解的针对性。总体而言,目前针对密码猜测的研究还处于起步阶段,主要集中在如何使用人口信息(如姓名、生日、手机号码)。2015年,Wang和Wang[61]首先提出了一种基于Markov[41]的目标猜测模型(即targeted Markov)。他们的基本想法是,训练集中名字出现的频率揭示了目标用户选择基于名字的密码的可能性。2016年,Li等人[36]提出了一种基于PCFG的目标猜测模型[65]。与拖网PCFG不同的是,在原有的LDS段上增加了一些表示不同长度的PII段。在CCS’16,Wang等人[63]揭示了基于长度的PII匹配方法的固有局限性,并提出了一种基于类型的PII匹配方法的新的目标猜测模型,即TarGuess-I。

基于密码重用的定向猜测

在NDSS’14时,Das等人[19]提出了第一个基于转换规则的跨站点密码猜测算法。该算法对用户现有的密码执行几个人工定义的转换(例如,删除、插入和leet(由数字或特殊符号来表示英文字母或单词)),然后按照预先定义的顺序生成猜测。但是,在这种预定义的统一方式下,用户很难重用/修改密码,因此限制了其在现实世界中的性能。

在CCS的16年,Wang等人[63]提出了一种基于pcfg的密码重用模型,即TarGuess-II。其核心思想是在两级修改操作(结构级和段级)中刻画用户的密码重用行为。在训练过程中,首先学习姐妹密码对的两级转换路径的概率,构建PCFG。其次,每次通过优先队列输出PCFG中概率最高的猜测,然后将其转换并再次插入优先队列。这样,就可以得到按概率排序的猜测。

在IEEE S&P’19上,Pal等人[44]提出了Pass2Path,这是一个基于深度学习的密码重用目标猜测模型。更具体地说,它使用序列到序列(seq2seq)模型[52]来预测将一个密码转换为它的姐妹密码所需的修改路径。它的猜测成功率比模型的输入和输出分别直接为用户的原始密码和新密码的情况要好。换句话说,这种训练方式使模型更侧重于学习密码数据集中的常见转换。

2.2密码猜测建模Password guessing modeling

Markov n-gram模型最初是在CCS ’ 05[41]上引入的,并在IEEE标准普尔’ 14[38]上进行了改进。一般情况下,n建议取值为3、4或5[38,62]。其核心假设是:每个字符只与前面的第一个d字符相关,与其他字符无关,其中d(=n+1)是马尔可夫模型的阶数。字符串c1c2. .ci−1后面出现字符ci的条件概率为
在这里插入图片描述
其中,Count(ci−d··ci−1ci)表示字符串ci−d··ci−1ci的出现次数,Count(ci−d··ci−1·)表示字符串ci−d··ci−1后面有一个未确定字符(即该字符不在字符串的末尾)的出现次数。那么字符串s=c1c2···cn的概率为:
在这里插入图片描述
在现实中,虽然密码中的每个字符可能对其他字符[45]有不同程度的安全影响,但本文假设用户创建密码的顺序是从左到右(即,与他们输入密码的顺序相同),每个字符只与前面的几个字符相关(这意味着我们的模型与著名的马尔可夫模型做了相同的假设[38,41])。在此假设下,密码生成过程可视为一个多类分类问题。

更具体地说,给定一个密码,密码每个字符前的n阶字符串可以用作分类的目标(并且可以从n阶字符串中提取特征),字符本身可以用作与待分类字符串对应的正确分类标签。从这个角度来看,所有处理多分类问题的监督机器学习算法都可以应用于密码猜测。考虑到数据维数较低且任务精度要求较高(这正是密码猜测任务的特点)时,集成学习方法一般表现较好。不失一般性,接下来,我们将随机森林作为一个典型的案例研究,展示如何使用经典的机器学习技术进行密码猜测。

假设T ={(x1,y1), (x2,y2),…, (xn,yn)}为训练集,则通过学习T,可以构建一个从输入空间X到输出空间Y的映射f。这里X=密码集的{n阶字符串},Y={95可打印ASCII码}∪{Bs,Es},即96个不同类别,其中b和Es分别为起始符号和结束符号。
在这里插入图片描述
图1:随机森林[14]示意图。其中,X是一个训练密码数据集的所有排序字符串,N = {N1,N2,…,}是随机抽取的特征子集,类{a, B,…}表示每个n阶字符串所属的类别(95个可打印字符和结束符号)。

随机森林的介绍Introduction of random forest

随机森林[14]是一种用于分类(和回归)的集成学习方法,由多棵决策树[49]组成。在预测一个样本的类别时,算法对森林中每棵树的预测结果进行统计,然后投票选择最终的结果(见图1)。“随机性”包括两个方面:特征的随机选择和样本的随机选择。因此,森林里的每一棵树都有相似之处和不同之处。

形式上,我们表示决策树模型为{hk(X),k = 1,2,3,…}。给定x数据集中的自变量x,每棵决策树都有一票来选择最优的分类结果。最终的分类决定为:
在这里插入图片描述
式中,H(x)表示组合分类模型(即随机森林),hi为单个决策树,y∈Y为输出,I(·)为特征函数。

决策树[49]有三种主流的节点分割算法:ID3、C4.5和CART。这些算法使用不同的特征选择准则,即信息增益、增益比和基尼系数杂质。其中Gini杂质表示从数据集中随机选取两个类别不同的样本的概率。它的计算成本相对较小,易于理解。因此,本文采用CART决策树算法。对于数据集D(由n阶字符串组成),Gini杂质的计算公式如下:
在这里插入图片描述
式中|y|表示96个分类类别(即95个可打印字符和结束符号e), pk表示类别k在d中所占的比例。在划分特征时,特征a (n阶字符串的详细特征构造方法见第3节)的Gini杂质为:

在这里插入图片描述
图2:用于密码前缀分类的决策树的高级示例。通过if-else逻辑,根据相应的规则确定节点划分,最后将每个前缀划分为其所属的字符类别。例如,class=4意味着这个叶节点中的所有前缀后面都跟着字符4,如efg1234。
在这里插入图片描述
式中,v表示特征a的各个值,Dv表示根据v的值除以D的子集。公式5表示在选择特征时,采用加权平均法计算总的基尼杂质,最后,选择分割后基尼系数最小的特征作为最优分割特征。

2.4随机森林分析Analysis of random forest

现在我们从三个方面解释为什么随机森林模型[14]可以解决Markov n-gram模型[41]在应用于密码猜测时的不足。

在这里插入图片描述
图3:Markov模型[41]的树形图。这里我们以三阶为例。

拟合原则

从图3可以看出,Markov n-gram模型[41]本质上可以看作是一个决策树[49]除以高度为1的前缀串。它将具有相同前缀的所有字符串划分为相同的叶节点,导致当前缀字符串在训练集中很少出现时(即数据稀疏问题),只能根据在训练集中出现的少数样本进行分类。相比之下,决策树根据前缀中每个特征(即划分规则)的杂质(表示树分割数据的好坏程度,有几个杂质度量,如第2.3节中定义的Gini杂质)来划分节点。选取杂质最少的特征作为特征划分的规则,使符合相同划分规则的最终样本落在相同的叶节点上。这些样本可视为具有相同分类结果的相似样本(高级别示例见图2)。这样,对于训练集中出现频率较低或不出现的前缀,也可以划分为由类似样本组成的叶节点。

自动特征筛选

马尔可夫模型[41]中最关键的参数是阶数d,这是需要考虑的前缀长度。当阶数过高时,模型容易对[38]进行过拟合。然而,这对于随机森林[14]来说不是问题。具体来说,决策树[49]选择杂质(分割后)最小的特征作为分割规则。即选择重要程度较高的特征进行分割,不会受到分割效果较差的特征的影响。例如,字符串1234后面跟着字符5是一个自然规律,不应该因为训练集的原因而改变,所以预测下一个字符时,子字符串1234比整个字符串#1234更重要,而五阶马尔可夫模型只考虑了#1234的频率。

每个叶节点的最小样本数

对于出现频率较低或从未出现过的样本,决策树[49]会根据训练规则将样本划分为特定的叶节点。由于满足同一套规则的样本具有相同的分类,根据样本类别在叶节点中的分布情况,得到每个类别的概率。当叶子节点中的样本数量较大时,决策树[49]能够很好地平滑样本;当叶节点数量较小时,甚至一个叶节点中只有一个样本时,这种情况退化为带有低频前缀问题的马尔可夫模型。幸运的是,决策树通过限制叶节点中样本的最小数量,可以合理地解决这一问题。

3 RFGuess:基于随机森林的拖网捕鱼猜测模型

3.1 密码字符特征构造

基于经典机器学习技术构建密码猜测模型,特征工程是关键步骤。密码通常由字符组成,具有两个重要特征:字符的类型和字符的连续性。特别是,密码中使用的字符有三种:数字、字母和特殊字符。每一种类型的字符都有一定的内部连续性,比如0 ~ 9和a ~ z。因此,为了在密码中很好地表示字符的这两个特征,我们需要对密码字符进行重新编码

我们首先在二维空间中表示密码字符。一个是字符类型。这里我们使用0、1、2和3分别表示特殊字符、数字、大写字母和小写字母;第二个是每种类型中字符的序列号。例如,字母a ~ z由1 ~ 26表示,数字1 ~ 9由数字1 ~ 9表示,数字0由10表示(因为0代表开始符号)。这样可以将密码字符的类型和连续特性显式显示出来,有利于提高密码字符的模型拟合效率,有利于提高模型拟合效率。

其次,键盘图案是一种常用的密码创建方法[63,68],因此在特征构造中也考虑了键盘图案的特征。键盘模式通常意味着通过相邻的键盘位置创建密码,例如1qa2ws和123qwe。因此,我们还使用二维特征来表示密码字符的键盘特征:以坐标形式表示键盘的行和列位置。例如,1表示为(1,1),q表示为(2,1),s表示为(3,2)。因此,位置坐标表示可以清晰地显示字符的连续特性,提高模型拟合能力。

最后要考虑的是字符串的长度特性。更具体地说,我们构造了两个长度特征:字符相对于整个密码的位置(即训练长度)和字符相对于当前段的位置(即训练长度在当前L/D/S段中)。考虑到大多数用户的密码长度至少为6[38,59],我们将模型的顺序设置为6。也就是说,我们使用一个6阶的前缀来预测下一个字符。

因此,每个6阶前缀可以用一个26维的特征向量(26=4×6+2)表示,因为前缀字符共有6个,每个字符有4个特征维,整个前缀的长度信息增加了2个特征维。以密码qwer654321的6阶前缀wer654为例。首先,可以将wer654中的每个字符唯一表示为一个四维特征向量。例如,字符r表示为(3,18,2,4),其中3表示小写字母的字符类型,18表示r在小写字母序列a ~ z中的秩,2和4分别表示键盘上r的行、列位置。现在,我们可以用一个24维的特征向量(24=4×6)来表示wer654。然后,我们添加前缀wer654的二维长度特征(7,3),其中7表示相对于整个密码的位置信息(即wer654中的数字4是qwer654321的第7个字符),3表示相对于当前数字段的位置信息(即wer654中的数字4是654321段的第3个字符)。

在这里插入图片描述
值得注意的是,我们测试了不同阶数(如n=3、4、5、6、7)的RFGuess,发现当n≥4时,RFGuess可以达到相似的开裂成功率(如图4所示)。一般情况下,当阶数降低(如n=3)时,特征个数(如4n+2)会相应减少,这可能会导致RFGuess不适合。然而,当订单太大(例如,≥7)时,长度小于这个值的密码不能很好地建模。由于n=6时开裂成功率稍好,所以我们在接下来的实验中设n=6。

3.2 特征重要度分析Feature importance analysis

为了验证构造的特征的有效性,在不同的训练数据集上,通过随机森林计算特征的重要度得分。根据图11、12、14(附录H)的结果,我们发现训练后的长度特征(即密码中最后一个前缀字符的位置)得分最高,说明其对拟合RFGuess有显著影响。其他排名靠前的功能主要是与目标角色更接近的角色,这是一种直觉。在同一字符的四个不同维度特征中,序号特征(例如,a是字母类型a ~ z的第一个特征,0是数字0 ~ 9的第一个特征)和键盘列数字特征更为有效,而字符类型(字母/数字/特殊字符)和当前段特征的训练长度(字符在L/D/S段中的位置)相对不重要,键盘行数对模型拟合的增益较小。一个看似合理的原因是,当创建密码时,用户创建了更多的水平键盘模式(如qwerty),而不是垂直模式(如1qaz)[68]。特别是,我们统计了CSDN、Dodonew、Taobao和Rockyou的前10个键盘模式,发现前10个键盘模式要么是水平键盘模式,要么只是一个字符的重复(如aaaaaa)。

3.3模型培训和密码生成Model training and password generation

在较高的水平上,我们的RFGuess类似于Markov 7-gram模型[41]。更具体地说,它首先将密码处理成六阶字符前缀及其对应字符的形式(例如,产生的六阶密码abc123集是{( B s B s B s B s B s B s B_sB_sB_sB_sB_sB_s BsBsBsBsBsBs,a),( B s B s B s B s B s B_sB_sB_sB_sB_s BsBsBsBsBsa,b),…, (abc123, E s E_s Es)},其中b和 E s E_s Es分别代表开始符号和结束符号)。然后,它将6阶前缀表示为26维向量(每个字符由4维表示,加上整个前缀的两个额外长度特征),该前缀后面的单个字符以ASCII值表示,开始符号和结束符号分别由0和-1表示。在训练模型时,RFGuess遍历训练集中每个密码的6阶集,以26维的前缀特征向量作为训练输入,以对应字符的数字标签作为训练输出。图2显示了决策树分类过程的高级示例。

在这里插入图片描述

猜测的生成过程与Markov n-gram模型[38]非常相似。关键的区别是我们在计算条件概率时没有使用Bayes公式,而是使用训练好的随机森林来得到这个值。更具体地说,每棵决策树将对输入样本(即6阶字符串前缀)所属的类别(95个字符和结束符号中的一个)进行投票,其概率为该类别获得的选票数占树总数的比例。例如,假设随机森林中有10棵决策树,以字符串“123456”为前缀进行投票。其中,字符“7”投6票,字符“a”投3票,字符“6”投1票。那么整个字符串(6阶前缀加一个字符)的概率为{" 1234567 ":0.6;“123456a”:0.3;“1234566”:0.1}。

我们的探索性实验表明,在产生180万次猜测的过程中(使用30棵决策树对6M个CSDN密码进行训练),平均有70%的字符在一步预测中没有投票,构成了大部分的字母表。这表明RFGuess可能不擅长生成之前未见过的字符。为了解决这个问题,我们使用了add-δ平滑技术[38]来平滑没有投票的字符。例如,Pr(#|123456) = PrRFGuess(#|123456)+δ / 1+δ·|Σ|(其中PrRFGuess(#|123456)表示RFGuess在输入字符串为123456时计算出的#概率,Σ是训练集的字符表)。我们测试了许多δ值(例如,0,0.01,0.02,0.001),发现δ=0.001是所有值中最好的(见图5)。

在这里插入图片描述

3.4 实验设置和结果Experimental setups and results

数据集

我们基于13个大型真实世界密码数据集(见表1)评估了现有的密码猜测方法和RFGuess模型,共有2.4127亿(M)个密码。我们的密码数据库中有8个来自英文网站,5个来自中文网站。如表1所示,三个数据集(即12306,ClixSense和Rootkit)最初与各种各样的PII(如姓名,生日,电子邮件)相关联。为了实现广泛的定向猜测评估,我们通过电子邮件将非PII相关的密码数据集与这三个PII相关的密码数据集进行匹配,这将产生总共6个PII相关的密码数据集(见表2)。对于基于密码重用的定向猜测,通过匹配电子邮件,我们获得了8个密码对数据集(见表4)。

Ethical considerations

尽管这些数据集在互联网上是公开的,并且在现有的研究中被广泛使用[19,44,46,47,63],但这些数据集都是私人数据。因此,我们只展示汇总的统计信息,并对每个个人账户保密,以避免给相应的受害者带来额外的风险。虽然这些数据集可能被攻击者误用来破解,但我们的使用既有利于学术界了解用户密码选择的强度,也有利于安全管理员防止创建弱密码。由于我们的数据集被广泛使用,并可在互联网上公开下载,这有利于公平比较和良好的重现性。

实验设置

为了更好地建立我们的RFGuess的概括性和有效性,我们在单位点(内位点)和跨位点猜测情景下对其进行了评估。对于现场场景,我们分别从Rockyou中随机选取0.01M、0.1M和1M (M= 100万)密码作为训练集,从剩余数据集中随机选取10万个密码作为测试集。由于攻击者很聪明,会不断改进她的训练集,使其尽可能接近测试集(以提高她的成功率),所以我们的站点内实验方法正好反映了这种情况(这种方法在密码研究中是很常见的[60,63,65])。特别是,许多网站(如Yahoo [43], Flipboard [4], Twitter[29]和Anthem[23])已经泄露了他们的用户密码不止一次,因此进行/考虑站点内部猜测的场景是很实际的。对于跨站点的场景,我们应用训练过的模型(在一个旧的泄漏数据集上)破解一个新的泄漏数据集(即,Rockyou→000Webhost和000Webhost→Wishbone)。需要注意的是,我们并没有将训练集中出现的相同密码对(即直接重用)从测试集中移除,因为攻击者事先并不知道目标账户使用了哪些密码,并且从测试集中排除重复密码会妨碍对猜测模型拟合能力的评估。我们将在第6节详细讨论这一点。

我们将RFGuess与三个主要的猜测者(即PCFG[65]、Markov[38]和FLA[39])进行了比较。此外,我们还引入了Min_auto方法[55],以避免单一方法的偏差。每种方法的设置如下。

PCFG我们使用的PCFG与[38]一致,即L段的概率来自于训练集,优于[65]的原始版本。

马尔科夫。对于马尔可夫模型,由于阶数的影响较大,本文同时进行了3阶和4阶实验,并采用了[38]中使用的拉普拉斯平滑和结束符号正则化。

在这里插入图片描述

图6:与其他方法(即PCFG[65], 3/4阶Markov [38], FLA[39]和Min_auto[55])相比,我们的RFGuess在站点内和跨站点拖网猜测场景下的猜测性能。注意,Min_auto[55]代表了一种理想化的策略:只要这五种真实密码模型中的任何一种破解了密码,就认为密码已经破解。Rockyou_rest表示原始Rockyou数据集,不包含相应的训练集。

FLA. 我们使用FLA[39]的源代码,并在实验中遵循其推荐的参数。具体来说,我们训练的模型由3个LSTM层和2个全连通层组成,每层有200个cell(即[39]中的“小”模型),共20个epoch。

RFGuess。如附录B所述,我们用30棵决策树训练一个随机森林。它的最小叶子节点数为10个,最大的特征比例为80%,其余的都在scikit-learn框架[2]的默认值中。

Min_auto。它代表了一种理想化的猜测方法[55],在这种方法中,只要任何一个真实世界的猜测模型能够破解密码,就认为密码已经破解。

实验结果。考虑到大量猜测的枚举方法计算量大,我们使用蒙特卡罗算法[20]来估计密码的猜测数。也就是说,当按可能性递减顺序尝试猜测密码时,攻击者需要多少次猜测才能得到该密码。结果如图6所示。为了准确地显示不同方法的攻击成功率,我们给出了某些特定猜测数(即 1 0 7 10^7 107 1 0 14 10^{14} 1014;见附录C中的表10)。在位点内猜测场景中,我们的RFGuess的表现略好于FLA[39],并优于PCFG[65]和Markov[38],从大约 1 0 7 10^7 107次猜测开始。在跨站猜测情景中,我们的RFGuess在 1 0 14 10^{14} 1014次猜测范围内的猜测成功率略低于FLA[39],但显著高于PCFG[65]和Markov[38]。

为了证明RFGuess的通用性,我们使用更大的训练数据集(即,大小为11,474,930的75% 000Webhost)对其进行评估。图7显示,当使用1000万规模的训练集时,RFGuess在站点内部猜测场景中的表现优于所有对应的训练集,在跨站点猜测场景中的表现略优于(或与之相媲美)。这表明RFGuess更擅长于对来自相同(或类似)发行版的密码的可猜测性建模。通过使用相同的训练和测试集(即000Webhost的75%→000Webhost的25%),我们还比较了RFGuess和动态字典[46]。但是,动态密码猜测(DPG)[46]的成功率在5× 1 0 9 10^9 109猜测范围内只有0.13%(这是使用000Webhost的75%可以达到的最大猜测次数)。一个可能的原因是DPG更适合于超大的训练集,这在一定程度上解释了为什么原始论文[46]使用14亿的4iQ作为它的训练集。我们的RFGuess正好相反:它特别适合于猜测训练数据不丰富的场景(例如,来自美国、中国和俄罗斯以外网站的密码)。

在这里插入图片描述

我们进一步在三个关键标准(即,训练时间、模型大小和产生猜测的时间)中对这些方法进行了相同的性能比较,并在表7中总结了比较结果(详细请参见附录C)。总之,RFGuess具有较高的训练效率(训练500万个数据只需要0.3小时),但其模型尺寸较大(即joblib工具中的压缩参数设置为3时,为4.5G),猜测生成速度相对较慢(约130 ~ 677个密码/s)。这使得RFGuess特别适合于猜测次数很少的在线密码猜测攻击。在实践中,关于密码安全,在线密码猜测是最令人担忧(和不成熟)的场景[7,44,63],因为离线猜测可以通过慢/内存硬哈希(如Bcrypt和Argon2)消除,但在线猜测是不可避免的,即使存在限速/阻塞机制,其成功率也相当高(见表3和表5)。这是因为攻击者允许的猜测次数不能太小,否则系统会受到DoS攻击,所以NIST-SP800-63B[26]推荐一个月100次。

如果想要提高RFGuess的密码生成效率,可以将树的数量设置为1(即使用决策树模型)。此时,密码生成速度可提高至1520个密码/s,攻击成功率降低约0.4% ~ 2%(见图9)。
在这里插入图片描述

洞察力

为了了解特征的影响,我们根据特征的重要性排序,去除相对不重要的5维、10维和15维特征,并根据字符的位置信息,去除4维、8维和12维特征(如依次去除前缀123456中的字符123的4维特征)。结果表明,我们的RFGuess的训练时间和密码生成速度提高了35%,而成功率保持稳定(见图8)。

因此,在基于经典机器学习技术设计新的密码猜测模型时,可以创建尽可能多的新特征(如:前缀中包含的字符类型数量、前缀的Shannon熵等),以探索更有效的密码表示。然后,通过测量特征的重要度得分和/或成功率,得出最有效的特征。这在保持成功率的同时提高了培训效率,这使得我们的RFGuess具有高度的可伸缩性。

4 RFGuess-PII:一种基于PII的定向密码猜测模型

我们现在使用随机森林[14]设计了一个基于PII的目标密码猜测模型,称为RFGuess-PII。首先分析了现有目标猜测模型中PII匹配策略的局限性,提出了一种更有效的PII匹配算法。基于该算法和第3节中的RFGuess模型,我们提出了RFGuess-PII,并通过大规模实验验证了其有效性。

4.1 主流方法存在的问题Problems in mainstream methods

以往的PII匹配方法。Li等人[36]首先提出了一种类似于PCFG的PII匹配方法[65] (例如, N 4 N_4 N4像Wang一样表示长度为4的姓名信息)。在CCS’16时,Wang等[63]指出这种方法存在严重的局限性。相反,他们引入了一系列基于类型的PII标签,并取得了显著更好的结果。更具体地说,它们使用N表示名称用法,而 N 1 N_1 N1表示全名用法, N 2 N_2 N2表示全名缩写,···;U表示用户名的用法, U 1 U_1 U1表示用户名的完整格式, U 2 U_2 U2表示用户名的字母段,···。我们在附录C的表6中总结了这些符号。

在训练过程中,对密码中包含的PII进行匹配时,采用最左最长匹配策略进行消歧。例如,如果一个用户的用户名是Alice0102,名字是Alicexxx,生日是19930102,密码是Alice01021993,那么根据[63]中使用的最左最长匹配策略,它应该表示为 U 1 B 5 U_1B_5 U1B5而不是 N 3 B 2 N_3B_2 N3B2(其中 B 5 B_5 B5表示生日年份, N 3 N_3 N3表示姓氏全称,而 B 2 B_2 B2以MY格式表示生日),因为用户名Alice0102将首先匹配

该匹配策略采用贪心策略,首先匹配最左位置最长的PII,且不是最优的。这里的“最优”是指整个训练密码集的全局最优,而不是单个密码的局部最优。为了更清楚地解释全局最优的概念,我们引入信息熵进行分析。香农熵[51]是1948年提出的度量分布不确定性的度量。信息熵越大,密码分布越随机,密码集越安全。因此,对于同一密码集,降低密码集信息熵的特征提取和表示方法可以更好地利用训练集的特征。

4.2 新的PII匹配算法

当前的PII匹配策略并不是最优的,因为在匹配时存在歧义(同一个密码有多个表示形式),并且在上面的例子中,使用最左边和最长的匹配策略将导致启发式地为PII标记选择一个选项。这不能使信息熵最小化。也就是说,它不能完全准确地提取出整个用户组的PII使用行为。为了解决这个问题,我们提出了一种近似最优的PII匹配算法。

在这里插入图片描述

我们提出的算法的第一步类似于基于类型的PII匹配方法[63],它将PII的各种可能的变换进行细分,并使用不同的标签来表示它们。值得注意的是,我们使用了数字标签而不是字母标签(如TarGuess-I[63]中的 N 1   N 7 , B 1   B 10 N_1 ~ N_7,B_1 ~ B_{10} N1 N7,B1 B10),并在附录c的表6中总结了这些标记。因此,它们可以方便地作为机器学习模型的输入进行训练。例如,从1000开始表示名称用法,其中1000表示全名的用法,1001表示姓氏的小写字母···。

第二步是列出训练集中每个密码的所有可能的带有PII标记的表示(例如,Alice01021993的三个表示{4000,2001},{4001,2003,2004,2001}和{1002,2003,2004,2001})。然后,我们根据频率从高到低对表示进行排序。其中,频率最高的表示(如{4000,2001})表示为R1,频率次之的表示为R2(如{4001,2003,2004,2001}),···。然后,我们使用R1来表示所有可以表示为R1的密码,它们每一个剩余表示的频率(例如,{4001,2003,2004,2001}和{1002,2003,2004,2001})减去1。接下来,剩下的可以表示为R2的密码(去掉那些已经用R1表示的)都用R2表示,其余表示的频率继续减1。此过程重复执行,直到所有剩余表示的频率小于或等于1。最后,将表示形式尚未确定的密码用最短结构表示,算法结束。我们在算法2中形式化了这个过程,并从理论上和实验上证明了它的通用性和有效性(见附录F)。

4.3 基于PII的新目标猜测模型

基于第3节中提出的RFGuess和近似最优的PII匹配算法,我们现在提出了一种新的目标密码猜测模型RFGuess-PII。密码训练和生成过程类似于拖网猜测场景。区别在于,通过PII匹配,将密码中的PII字符串替换为对应的数字标签,然后使用包含PII标签的密码集进行训练。此外,生成的猜测可能有PII标记,需要用目标用户的相应PII字符串替换它们,以获得最终的猜测。

与拖网猜测场景中的特征构造相似,我们也使用四维特征来表示目标猜测场景中的PII标签。具体来说,我们使<用字符类型、该字符在其类型中的秩、键盘行号和键盘列号>来表示普通字符。对于PII标记,它们与普通字符相似,只是缺少键盘功能。因此,我们使用<PII类型,PII序列号,0,0>来表示PII标签。最后两个0与普通汉字的四维特征对齐。

4.4实验设置和结果

数据集。在表1中,只有12306,ClixSense和Rootkit数据集有PII(姓名,电子邮件,生日等)。为了实现广泛的目标猜测评估,我们通过电子邮件将没有PII的数据集与这些pii相关的数据集进行匹配,这将产生6个pii相关的密码数据集(即PII-12306、PII-CSDN和pii - dodonnew、PII-ClixSense、PII-000Webhost和PII-Rootkit;其中,Rootkit是一个黑客论坛,000Webhost是一个免费的网络托管网站,主要被网络管理员使用。因此,这两个站点的用户可能比普通用户更了解安全,这在[63]中已经观察到。我们使用这六个与pii相关的数据集进行了六个比较实验。在每次实验中,每个数据集的一半作为训练集,另一半作为测试集,如[15,60,63]所推荐的(见表3)。

比较方法。目前主流采用PII的目标猜测模型主要有基于PCFG[65]的TarGuess-I[63]和基于Markov模型[38]的TargetedMarkov[61]。请注意,最初由Wang等人[61]提出的target - markov仅利用了名称信息,但可以很容易地扩展到包含用户名、生日、电子邮件等。为了更全面的比较,我们将我们提出的PII匹配算法应用到FLA[39]上,得到了FLA-PII。据我们所知,这是FLA第一次能够捕获PII语义。

更具体地说,我们首先识别密码中的PII,然后根据字典顺序将其编码为一维数组(例如,wang666→[1001,6,6],其中1001和6分别是字典中姓氏和数字6对应的数字标签)。在这里,我们使用嵌入层而不是正则一热编码层来降低由于PII标签尺寸过大而导致的嵌入向量的稀疏性。然后,将嵌入的向量输入LSTM神经网络。最后,密集层将隐藏层转换为输出尺寸。输出是有概率的可能的后续标签,FLA-PII选择概率最高的下一个标签。这里我们将嵌入大小设置为128,其余参数与3.4节的拖网FLA[39]完全一致。

请注意,理论上,如果在服务器上部署了保护措施(例如锁定、限速[22]),在线猜测攻击者只能执行非常有限的猜测尝试。例如,NIST要求“验证者(服务器)应限制单个帐户连续的认证失败尝试不超过100”[26]。然而,实际上,正如[37]所显示的那样,排名前182位的网站中有72%的网站“允许频繁的、不成功的登录尝试,而没有帐户锁定或登录限制”。总的来说,系统必须平衡在线猜测攻击和拒绝服务(DoS)攻击。不失一般性,我们在实验中设T =1000,与主流网络猜测文献[44,63]相同。

在这里插入图片描述
在现实中,也存在针对特定用户的离线攻击场景。例如,在获得一个泄露的密码文件后,攻击者会将注意力集中在一些特定的、最有价值的账户上(如名人、政客或被认为有价值/有利可图的特定普通用户),并对这些账户投入更多的精力。在这种情况下,猜测的次数将只受攻击者愿意支付的代价的限制,这个代价可能非常大(例如,> 1 0 10 10^{10} 1010)。因此,正如[20]所推荐的,我们还通过蒙特卡罗算法在较大的猜测(即 1 0 14 10^{14} 1014)下评估所有的PII模型。

实验结果。我们设计了六个有针对性的猜测场景,结果如表3所示。为了更全面的比较,我们进一步使用猜测数字图来评估RFGuess-PII与其对应的RFGuess-PII的有效性,并将细节放在附录C中(见图10和图13)。为了进行公平的比较,所有三个对应的目标模型(即TarGuess-I [63], targeted - markov[61]和FLA [39]-PII)都采用了我们改进的PII匹配算法。结果表明,在大多数情况下,RFGuess-PII在10 ~ 103次猜测范围内获得了略好的攻击成功率。随着猜测次数的增加,RFGuessPII的优势会增强。更具体地说,RFGuess-PII在 1 0 7   1 0 14 10^7 ~ 10^{14} 107 1014次猜测内的表现比其最重要的对手(即FLAPII[39])高出5.20% ~ 8.36%。

在这里插入图片描述
进一步探索。我们现在表明,我们的密码表示可以很容易地转移到其他机器学习算法。更具体地说,我们用Xgboost [16]/DecisionTree替换随机森林(我们只是用Xgboost和DecisionTreeClassifier替换脚本中的RandomForestClassifier类,所有剩余的处理流程都保持不变),并在拖网和目标猜测场景中执行两个探索性实验。从图9可以看出,Xgboost和DecisionTree(以及Targeted-Xgboost和Targeted-DecisionTree)的攻击成功率与最先进的模型相当。值得注意的是,它们的参数可以更好地调整为潜在的优化,我们将进一步探索作为未来的工作。

5. RFGuess-Reuse:一种新的基于重用的目标猜测模型

我们现在主要关注用户密码重用行为的建模。基于第3节的RFGuess,我们首先设计了一个目标猜测模型RFGuess- reuse,然后进行了大规模的实验来验证其有效性。

5.1基于重用的新目标密码猜测模型

现在,我们将描述如何将随机森林模型用于基于密码重用的场景。受TarGuess-II[63]的启发,我们还考虑了结构级和分段级转换。首先,通过计算训练集中每个密码对的编辑矩阵,计算结构级转换(如 L 8 S 2 → L 7 D 3 L_8S_2→L_7D_3 L8S2L7D3)。然后我们训练一个基于随机森林的段级转换模型(即在一个相同类型的字符串内的转换,如password→passwor在字母段中)。生成新密码的概率计算公式为
在这里插入图片描述
其中 P t p w 1 → p w 2 i Pt^i_{pw_1→pw_2} Ptpw1pw2i表示从pw1到pw2的特定变换操作(如插入数字结构123), p n p_n pn表示n次操作后结束的概率。例如,给定密码输入password!!, Pr(password!!→p@sswor123)=Pr(password!!* Pr(passwor123) * Pr(passwor123→p@sswor123) * p 4 p_4 p4,其中Pr(password!!→password)(即 L 8 S 2 → L 8 L_8S_2→L_8 L8S2L8)和Pr(password→password123)(即 L 7 → L 7 D 3 L_7→L_7D_3 L7L7D3)为结构级转换概率,可通过对训练集中的密码对进行统计得到;Pr(password→password)(即删除单个字符d)和Pr(passwor123→p@sswor123)(即a→@)为段级转换概率,可以通过训练好的随机森林模型得到; p 4 p_4 p4是经过四次变换后结束的概率,也可以通过训练集的统计得到。

对于结构级转换,我们以在passwor尾部插入结构123(即 D 3 D_3 D3)为例。其概率为Pr(passwor→passwor123)= Pr( T 1 T_1 T1)∗Pr( T 2 T_2 T2)∗Pr(123| D 3 D_3 D3),其中 T 1 T_1 T1表示“在密码尾部插入结构”事件,Pr( T 1 T_1 T1)可以根据训练集的长度分布计算训练集中的重用行为来获得(见附录G的表13); T 2 T_2 T2表示插入特定结构D3事件,Pr( T 2 T_2 T2)和Pr(123| D 3 D_3 D3)都可以通过训练PCFG模型[38]得到。

对于段级转换,我们考虑了基于[63]的四种原子转换:头插入、头删除、尾插入和尾删除。对于三种类型的片段(字母、数字、特殊字符),我们分别按照正序和倒序训练随机森林,总共生成3×2模型。例如,在确定执行密码尾部插入操作的概率时,将密码输入正序字母随机森林中,即可得到该条件概率;在确定执行头插入操作的概率时,我们将rowssap输入到逆序字母随机森林中,以获得该条件概率。

我们以正序字母随机森林为例,考虑与最后一个字符相关的操作。训练时密码password!!,字母串password需要训练三个行为特征:插入字符、不变字符和删除字符。对于字符插入,我们的模型使用asswor作为训练输入,使用d作为训练输出;不变时,我们的模型以ssword作为训练输入,以结束字符作为训练输出;对于删除字符,我们的模型使用ssword加任意字母作为训练输入,使用-1作为训练输出(即输入为ssword*,输出为-1,其中*可以是任意字母)。

在这里,我们给出了一个如何计算分段级转换概率的简单示例。给定密码password!!,它可以分为两个片段 L 8 和 S 2 ( 记作 p 1 , p 2 ) L_8和S_2(记作p_1,p_2) L8S2(记作p1,p2),我们计算在第一个片段 p 1 ( 记作事件 P 1 t ) p_1(记作事件P^t_1) p1(记作事件P1t)尾部删除d的概率为 P r ( P 1 t ) = P r ( S 1 ) ∗ P r ( S 2 ) ∗ P r ( S 3 ) ∗ P r ( S 4 ) Pr(P^t_1)= Pr(S_1)∗Pr(S_2)∗Pr(S_3)∗Pr(S_4) Pr(P1t)=Pr(S1)Pr(S2)Pr(S3)Pr(S4),其中S1表示事件“执行片段级转换”, P r ( S 1 ) Pr(S_1) Pr(S1)可以通过计算训练集的重用行为得到; S 3 和 S 4 S_3和S_4 S3S4分别表示事件“对p1进行尾删除操作”和事件“在p1末端删除字符d”, P r ( S 3 ) 和 P r ( S 4 ) Pr(S_3)和Pr(S_4) Pr(S3)Pr(S4)均由训练好的随机森林模型计算; S 2 S_2 S2表示事件“对p1执行操作”,Pr( S 2 S_2 S2)计算为在这里插入图片描述
其中 p 1 ‾ 表示 p 1 \overline{p_1}表示p_1 p1表示p1的逆序(即password→drowssap), P r ( E s ∣ p 1 ) / P r ( E s ∣ p 1 ‾ ) Pr(E_s|p1)/Pr(Es|\overline{p_1}) Pr(Esp1)/Pr(Esp1)由正序/逆序随机森林模型得到;“ 1 − P r ( E s ∣ p 1 ) 1−Pr(E_s|p_1) 1Pr(Esp1)”表示执行尾部操作的概率(因为 P r ( E s ∣ p 1 ) Pr(E_s|p_1) Pr(Esp1)表示操作不变的概率),“ 1 − P r ( E s ∣ p 1 ) 1−Pr(E_s|p_1) 1Pr(Esp1)”表示执行头部操作的概率。

在这里插入图片描述

利用 P r ( S 2 ) Pr(S_2) Pr(S2)的计算公式,解决了每段操作概率不等的问题。比如密码password!!的结构为 L 8 S 2 L_8S_2 L8S2,在实际操作中,不同段(即L和S)上的操作概率(如插入或删除)是不相等的,而TarGuess-II[63]认为在结构层面上是相等的。为了解决这一问题,我们将每个片段(以L片段为例)的概率表示为“L片段(即密码)的操作概率之和与所有片段(L和S片段)的操作概率之和”的比值。

如[63],在猜测生成阶段,每次对原密码进行操作后,计算出相应的概率,并将其插入到优先队列中,输出概率最高的猜测。然后我们重复这个过程,直到生成的猜测数达到预定义的阈值(例如,103)。

5.2实验设置和结果

数据集。我们选取了4个英文和4个中文数据集对密码重用猜测场景进行实验(见表4),其中选择000Webhost→ClixSense和CSDN→126作为英汉猜测场景的训练集。我们以数据集“000Webhost→ClixSense”为例。它是通过email匹配两个数据集(000Webhost和ClixSense)获得的,由用户Ui的密码对 ( e m a i l U i , p w i 1 , p w i 2 ) (email_{Ui}, pw_{i1}, pw_{i2}) (emailUi,pwi1,pwi2)组成。在训练阶段,Ui的密码 p w i 1 pw_{i1} pwi1来自于第一个数据集(000Webhost),攻击者A学习/训练如何使用它从第二个数据集(ClixSense)猜测pwi2。然后,假设使用“000Webhost→Yahoo”数据集进行测试。一个利用来自000Webhost的pwj1作为受害者j的泄露密码,并使用训练有素的密码模型生成猜测,直到从Yahoo生成pwj2。

在这里插入图片描述

我们将我们提出的模型与TarGuess-II[63]和Pass2Path[44]进行比较。TarGuess-II和我们的RFGuess-Reuse需要额外的PCFG结构字典(见5.1节)和流行的密码字典(见[63]中的4.2节),并且我们为这两个模型维护相同的数据集。对于Pass2Path,我们使用[5]中推荐的参数来训练模型。与基于PII的目标猜测场景类似,我们也为每个模型生成1000次猜测。

表5显示RFGuess-Reuse在三种模型中获得了最好或第二好的结果。特别是,在1000次猜测范围内,TarGuess-II[63]和我们的RFGuess-Reuse的攻击成功率比Pass2Path[44]高出约1% ~ 7%。对于英文数据集,虽然RFGuess-Reuse的攻击成功率略低于TarGuess-II,但仍比Pass2Path高7% ~ 22%。

6讨论

现在我们将讨论这项工作的安全含义,以及我们对在线/离线密码猜测的见解。

甜言蜜语。在CCS的13年里,Juels和Rivest[34]提出了一种诱骗密码机制,以及时检测密码文件的协议,称为蜜字。这种机制可以为每个账户生成k−1蜜字(如[34]中的k=20),真实密码和对应的蜜字同时存储。此外,每个真实密码的索引存储在另一个名为honeychecker的服务器中。当攻击者试图用密字登录时,系统会发出可能泄漏的信号。RFGuess作为一种领先的密码模型,可用于生成密字,及时检测密码泄露。在这个应用场景中,模型大小和密码生成速度不是特别重要,因为服务器对于每个帐户只需要生成20 ~ 40个蜜字([64]推荐),而且对于一个帐户只生成一次。例如,[64]提出的混合方法所采用的Markov/TarMarkov模型可以简单地被我们的RFGuess/RFGuess- PII所替代,以生成更平滑的蜜字(更难与真实密码区分)。

特征重要性评分。如第3.2节所示,RFGuess可以通过特征重要性评分有效识别密码安全的主导因素,以抵御数据驱动猜测。例如,我们只需要将字符类的数量设置为密码前缀特性,RFGuess可以通过特性的重要性评分自动显示它是否是影响密码安全性的主要因素之一。这可以帮助管理员实施更有效的密码策略。例如,由于符号字符串的使用不平衡,更多的字符类对密码安全性的提高有一定的贡献,而更多的段(即字符具有强相关性的连续字符串)可以显著地帮助抵抗对[58]的猜测。此外,特征重要性评分允许用户了解字符的哪个维度(例如,类型、连续性和位置信息)在多大程度上影响密码安全性,从而帮助他们创建更安全的密码。

在线/离线密码猜测。在破解前,脱机猜测攻击者拥有salt -password账户,但通常不知道目标账户使用的是哪些密码,因此在评估猜测算法时,不排除测试集中和训练集中的重复密码更为现实/合理。如第3.4节(和[38,39,57])所做的,反对[31,65,67]。此外,排除重复密码只能评估/模拟泛化能力,而忽略了拟合能力的评估。在实践中,泛化能力对应于猜测数较大的离线猜测场景(如> 1 0 7 10^7 107)。虽然之前的工作[24]提出 1 0 14 10^{14} 1014可能是离线猜测的下限,但现有的密码猜测文献(如[38,39,47,65])显式生成的猜测字典的大小通常不超过 1 0 11 10^{11} 1011(由于生成速度和计算资源的限制)。这意味着猜测算法泛化能力的实际意义主要体现在 1 0 7 10^7 107 ~ 1 0 10 10^{10} 1010次猜测上。而拟合能力主要对应的是猜测数较小(如< 1 0 7 10^7 107 )的在线猜测场景,而在线猜测是最需要普通用户努力缓解的威胁[7,24,63]。因此,在评价一个猜测模型/算法时,同时考虑拟合能力和泛化能力具有现实意义。

总之,不从测试集中排除训练集中的重复密码是更现实的。实际上,这种方法在密码研究中一直是首选(见[38,39,57]),但我们首次解释了为什么它是可以接受的。

7结束语

本文首次引入了经典的密码猜测机器学习技术,并针对三种最具代表性的猜测场景设计了三种新的猜测模型:拖网猜测、基于PII的目标猜测和基于重用的猜测。13个真实数据集的广泛实验证明了我们模型的有效性和可扩展性。本工作为用户密码猜测性建模提供了一条全新的技术路线,为设计有效的密码猜测模型开辟了新的方向。

感谢

作者对牧羊人和匿名评论者的宝贵意见表示感谢。通讯作者:汪定。本研究得到国家自然科学基金项目(No. 62172240, No. 62222208)和天津市自然科学基金项目(No. 21JCZDJC00190)的部分资助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值