文章目录
论文Improving Password Guessing via Representation Learning的翻译
Abstract
从非结构化数据中学习有用的表示是现代数据驱动方法的核心挑战之一,也是其推动力。深度学习已经展示了学习和利用这种表示的广泛优势。
在本文中,我们提出了一种用于密码猜测的深度生成模型表示学习方法。我们展示了一个抽象的密码表示自然地提供了引人注目和通用的属性,在广泛研究和目前活跃的密码猜测领域开辟了新的方向。这些特性可以建立新的密码生成技术,既不可行,也不实用的现有的概率和非概率方法。在此基础上,我们提出:(1)条件密码猜测的一般框架,该框架可以生成任意偏差的密码;(2)基于期望最大化的框架,该框架能够动态调整估计的密码分布,以匹配被攻击密码集的分布。
I. INTRODUCTION
基于文本的密码仍然是最常见的身份验证形式,因为它们很容易实现,用户也很熟悉。然而,基于文本的密码很容易受到猜测攻击。人们对这些攻击进行了广泛的研究,对它们的分析仍然是一个活跃的研究领域。现代密码猜测攻击是基于这样的观察:人类选择的密码在密码空间(即所有可能的字符串)中不是均匀分布的。这是由于人们自然倾向于选择(容易)记忆的密码,这些密码只覆盖指数级大密码空间的一小部分。因此,真实世界的密码分布通常由几个密集区域组成,对手可以通过这些区域进行密码空间缩减攻击[58]。沿着这条线,提出了几种概率方法[42],[27],[56]。这些技术——在不同的假设下——试图直接估计一组观察到的密码背后的概率分布。然后使用这种估计生成合适的猜测并执行有效的密码猜测攻击。
与当前的研究方向相正交,我们证明了对手可以通过利用表示学习技术[18]进一步扩大攻击机会。表示学习旨在从大量非结构化数据中学习有用的解释性表示[18]。通过在泄漏密码语料库[12]上应用这种通用方法,我们证明了对手可以通过学习观察到的密码分布的适当表示(而不是直接估计它)来获得优势。在本文中,我们证明了这种类型的表示允许攻击者建立新的密码猜测技术,从而进一步威胁基于密码的身份验证系统。
图1。一小段诱导潜伏空间周围的潜伏点为密码“rockyou”。
我们在(1)生成对抗网络(GANs)实例[30]生成器和(2)Wasserstein自编码器(WAEs)实例[51]的潜在空间中建模密码表示。这种类型的表示,由于其固有的平滑性[18],在高维密码空间中强制了语义组织。这种组织方式主要是指在生成器的潜空间中,语义相关的密码的各自表示更为接近。因此,潜在空间中的几何关系直接转化为数据空间中的语义关系。图1粗略地描述了这种现象的一个典型例子,其中我们展示了一些潜伏点(它们各自的明文密码),它们位于诱导潜伏空间的一小部分中。
我们利用这种几何关系来执行一种特殊形式的条件密码生成。也就是说,我们描述了两个主要的属性:密码强局部性和密码弱局部性。这些局域性原则实施了不同形式的密码组织,使我们能够设计两种新的密码猜测框架:条件密码猜测(Conditional password guess, CPG)和动态密码猜测(Dynamic password guess, DPG)。我们强调,最先进的方法无法执行这种类型的高级攻击,或者,如果以某种方式改变,变得非常低效。我们工作的主要贡献如下:
- 我们是第一个证明在密码猜测领域中使用完全无监督表示学习的潜力的人。
- 我们引入了一种概率的、完全无监督的基于模板的密码生成形式。我们称这个框架为CPG。CPG生成可以使用的任意偏置密码:(1)对手增加侧通道和类似密码攻击[16],[41],[54],[17]的影响;或(2)由合法用户恢复他/她的密码。通过实验评估,我们证明了CPG相对于现有解决方案的效率。
- 我们引入DPG的概念:DPG是一种密码猜测方法,它根据与被攻击密码集交互时收到的反馈动态调整猜测策略。基于深度生成模型的密码局部性,我们构建了一个基于期望最大化的DPG实现。DPG表明,攻击者可以不断地利用在运行攻击期间成功猜测的密码来增加攻击的影响。
需要强调的是,深层生成框架的不断发展将自然而然地转化为我们方法的进一步改进。
组织:第二节概述了与我们工作有关的基本概念。在这里,我们还介绍了我们的模型改进和我们的核心工作所基于的工具。我们在第三节介绍密码局部性,在第四节介绍CPG和DPG。我们提出的技术的评价将在各自的章节中给出。第五节简要讨论了相关的前期工作。虽然附录中提供了补充资料,但第六节总结了本文。
II. 背景与准备工作
在第II-A节中,我们将简要介绍深层生成模型和相关概念,这些概念对于理解我们的工作非常重要。在第二- b节中,我们介绍了两种深层生成模型,它们是我们在方法中使用的基本构建模块。
A.深层生成模型
深层生成模型是一种概率模型,经过训练后,在给定一组可观察数据(即trainset)[30],[29]时,对未知目标数据分布p∗(x)进行隐式估计。在此过程中,利用深度神经网络对底层数据分布进行参数化描述。
与常用的规定概率模型[24]相比,隐式概率模型不显式估计数据的概率密度;相反,他们近似地采用随机过程生成数据[43]。
一般情况下,深层生成模型是潜变量模型。也就是说,网络被隐式引导去学习一组潜在变量,这些变量揭示了描述数据的因素之间复杂的相互作用。在训练过程中,对学习到的潜变量施加一个先验分布,以便我们最终可以在训练后对它们的实现进行抽样。这样的先验,在本文中称为先验潜在分布或˙p(z),是一个易于样本化、无信息化和因子分解的先验。它的分解形式表明,网络赋予每个潜在变量一个脱节的语义意义,因此,学习一个解纠缠的潜在数据表示的输入域。换句话说,对潜在表示进行建模,以捕获观测数据[48]的潜在解释因素的后验分布。
生成网络是潜在空间Z: Rk和数据空间X(即定义观测数据的地方)之间的一个确定性映射函数G: Z→X,具体来说,它是˙p(Z)和模型学到的分布p(X)之间的桥梁。更正式地说,在这种构造下,数据实例的概率有如下形式:
式中θ为发电机的可学参数集。˙p(z)的典型选择是N(0, I)或U[0,1][29]。
根据p˙(z)从潜空间中采样点z,然后通过生成器将它们映射到数据空间中,等价于根据p(X)从数据空间X中采样数据点。在此操作过程中,我们通常也可以考虑一个任意的p(z),它可能与˙p(z)不同。在本文的其余部分,我们将提到潜空间的概率密度函数p(z)与潜分布的一般项。
此外,平滑的发生器迫使一个几何组织在学习的潜在空间。与特征嵌入技术[31]、[37]相似,语义有界数据点的潜在表示在潜在空间[48]中表现出很强的空间一致性。
我们在两个可互换的深层生成模型框架之上构建我们的密码猜测方法,即生成对抗网络和自动编码器。
a) 生成式对抗网络(Generative Adversarial Networks, GANs):生成式对抗网络框架通过遵循对抗训练方法学习深层生成模型。训练过程由第二个网络D(即评论家/鉴别器)指导,它向生成网络G(即生成器)提供了一个比较密度估计[43]损失函数。对抗训练绕过了定义显式似然函数的必要性,并允许我们对非常尖锐的分布[29]有一个很好的估计。
在训练过程中,从p˙(z)中直接采样潜在点z,并将其作为诱导因子G的输入。然后,后者将这些潜在点映射到数据空间中,并将其输入到网络d中。相反,生成器G通过对抗性训练迫使D对G(z)的输出进行概率估计。该优化方法从两个网络的损耗坐标最小化开始。
b) Autoencoders (AE): Autoencoder是一个深层生成模型,它在概念上混合了两个网络:编码器网络Enc: X→Z和解码器网络Dec: Z→X。生成的聚合模型通常被训练为学习一种形式的标识函数:X = Dec(Enc(X)),或它的一个更有用的变体。与GANs不同的是,在训练期间没有利用对抗性训练;通常,使用的是极大似然方法。一旦训练,网络Dec可以作为一个数据生成器,有意义的潜在点被输入到它。然而,为了有效地从潜在空间中进行采样,AE在训练过程中需要一种显式正则化的形式;也就是说,潜空间必须被强制与选择的先验潜分布相一致。实现该策略的广为人知的AEs如[36]、[40]、[51]所示。
在本文的其余部分,我们不区分解码器网络Dec和GAN发生器;同样,我们用E来表示这两个模型中用于建模逆映射的编码器网络: G − 1 G^{−1} G−1:X→Z。对于AE,该网络为Enc,而对于GAN,该网络为附录C中描述的网络。
B.密码猜测与深层生成模型
Hitaj等人在他们的开创性工作PassGAN[35]中将GAN生成器训练成密码分布的隐式估计器。PassGAN利用现成的Wasserstein GAN,在基于残差块的架构[34]上使用梯度惩罚[33]。它假设潜空间的先验潜分布为标准正态分布,维数为128。该模型是在RockYou[12]密码泄露事件上进行训练的,只考虑10个字符或更少字符的密码。尽管有潜在的潜力,PassGAN中提出的密码猜测方法在其应用中存在技术限制和固有的缺点大多数限制可以如第二- b1节所示加以处理。然而,模型本身也存在一些局限性。一个突出的例子是,该模型无法一致地为产生的猜测分配概率,从而根据受欢迎程度对它们进行排序。这个缺点可能使GAN方法在标准的拖网场景中不受欢迎。然而,在目前的工作中,我们展示了存在的新颖和有价值的性质固有的类深层生成模型。从表示学习的角度抽象底层模型,我们证明了这些属性可以用来设计独特的猜测技术,而这些技术在任何现有方法中都是不可行的。
接下来,我们介绍对原来PassGAN结构的必要改进(Section II-B1)。在第二- b2节中,我们在密码猜测领域引入了一个不同的、新颖的深层生成模型。
1)改进的GAN模型:PassGAN中提出的密码猜测方法存在固有的训练不稳定性。在这样的条件下,生成器和评论家不能执行足够数量的训练迭代。这可能会导致目标数据分布的不合适的近似,并降低密码猜测任务的准确性。在原模型中,train-set3中字符串(即密码)的离散表示引入了很强的不稳定性,主要有两个原因:(1)由于最终的softmax激活函数,离散数据格式对生成器来说很难重现,容易造成低质量梯度;(2)由于发电机无法完全模拟列车的离散特性,因此评论家可以直接区分真实数据和生成数据。因此,评论家可以很容易地分配正确的“类”,而不留下任何增强生成器的空间,特别是在培训的最后阶段。
为了解决上述问题,我们应用一种随机平滑的形式来表示包含在列车集的字符串。这种平滑操作包括对每个字符的一种热编码表示施加小幅度的加性噪声。平滑操作由超参数γ控制,它定义了噪声幅度的上界。我们根据经验选择γ = 0.01,并在应用噪声后重新归一化每个特征分布。这种平滑操作对训练的动态性有很大的影响,允许我们执行30次以上的训练迭代,而不需要训练崩溃[21]。由于梯度-惩罚- wgan[33]的优异性能,我们基本上保持了通用GAN框架不变。
通过对培训过程的改进,我们可以为生成器和评论家开发一个更深层的架构。我们用更深的残留瓶颈块[34]替换普通的残留块,并保持其数量不变。我们发现在生成器中使用批量归一化对于成功地增加网络的层数是必不可少的。
新的架构和修改后的训练过程使我们能够更好地接近目标密码分布,因此优于原来的PassGAN。在本实验中,两个模型都是在RockYou泄漏率的80%上进行训练,并在一个 拖网攻 击 4 拖网攻击^4 拖网攻击4中,在集合的剩余20%上进行比较。由于20%的测试集不包含列集中出现的密码,因此该测试中模型的性能演示了其生成新有效密码的能力,排除了过度拟合构件。在本工作中,我们使用本节中描述的改进设置。我们训练了三种不同的生成器,使用80-20%的RockYou泄漏,考虑密码的最大长度分别为10、16和22。
2)密码猜测的自动编码器:为了突出所提出方法的通用性,我们引入了第二个和新的密码猜测的深层生成模型。该算法基于Wasserstein Autoencoder (WAE)[51],并将矩匹配正则化应用于潜在空间(WAE - mmd[51])。为了允许从潜在空间采样,WAE正则化潜在空间,使其与选择的先验潜在分布相一致。
WAE学习了一个潜在的表示,它与基于gan的技术的表示共享几个属性。然而,这些模型自然地提供了一个非常精确的反向映射,即Enc,这使得该模型在某些场景中优于默认的基于gan的模型。
为了向WAE添加进一步的规则,我们将模型训练为上下文AE (CAE)[47]。在CAE的训练过程的每次迭代中,编码器接收输入密码 x i x_i xi的带噪声的版本x ~ i。噪声输入是通过以一定的概率p = ϵ ∣ x i ∣ \epsilon\over|x_i| ∣xi∣ϵ删除密码x中的每个字符获得的,其中|xi|是密码中的字符数,而是一个超参数,在我们的设置中固定为5。我们的模型接收mangled输入~ xi,然后训练它复制完整的密码作为输出 ( x = D e c ( E n c ( x ~ ) ) ) (x = Dec(Enc(\widetilde{x}))) (x=Dec(Enc(x )));也就是说,模型必须从可用字符提供的上下文中估计缺失的字符。此外,CAE训练过程允许我们将在第三- b节中使用的通配符上下文化。我们将最终的模型称为上下文Wasserstein自动编码器(Context Wasserstein Autoencoder),或CWAE。
我们使用GAN生成器使用的体系结构的更深版本来设置CWAE。我们使用了同样的GAN发生器的先验潜伏分布,即N(0, I)的维数为128。训练过程是在GAN的相同训练集上执行的。
III.条件密码猜测(cpg)和密码强局部性
在本节中,我们将介绍本文的第一个贡献,即密码局部性概念,以及它在密码猜测中的可能应用。在第三- a节中,我们描述了最自然的局部性形式,我们称之为密码强局部性。在第三- b节中,我们通过引入一种我们称之为“密码模板反转”的技术来演示密码局部性的实际应用,该技术用于条件和部分知识密码生成。最后,我们展示了我们的技术相对于现有的概率和非概率密码模型的优势。
A 密码强局部性和局部抽样
正如我们在第II-A节中简要介绍的那样,生成器学习的潜在表示加强了共享数据空间语义关系的潜在点之间的几何连接。因此,潜在的表示将“相似的”实例保持得更接近。
一般来说,在深层生成模型的潜在空间中利用的相似性概念仅依赖于建模的数据域(例如,图像、文本)及其分布。然而,在训练过程中,设计师可以通过诱导偏差的注入来激励外部属性。在附录a中报告了一个例子。在我们的密码潜在表示的情况下,相似度的概念主要依赖于几个关键因素,如密码的结构、公共子字符串的出现和字符的类别。图2(由t-SNE[39]获得)通过显示潜伏空间中三个潜伏点(对应三个样本密码“jimmy91”、“abc123abc”和“123456”)周围的小部分的2D表示来描述这一观察结果。看看以密码“jimmy91”为中心的区域,我们可以看到周围的密码如何共享相同的一般结构(5L2D,即5个字母后面跟着2个数字),并倾向于保持子串“jimmy”的微小变化。同样,带有字符串“abc123abc”的区域也会出现类似的现象,其中这样的字符串不在所选的火车集中,也不表示公共密码模板。
我们宽泛地称密码为强局部性,表示将共享非常细粒度特征的密码分组在一起的固有属性。密码强局部性属性断言共享某些特定特征(如相同的子字符串和结构)的密码的潜在表示是紧密地组织在一起的。在第四节a中,我们将说明强局部性也意味着较弱但一般的语义边界形式,我们称之为弱局部性。
图二。在从RockYou训练集学习的潜在空间中,三个样本密码“jimmy91”、“abc123abc”和“123456”对应的三个潜在点周围的小部分的2D表示。注意:为了更好的说明,图像已经被裁剪。
在密码生成过程中,在选择采样操作的焦点时,强局域性变得尤为重要。事实上,由于不同类别的密码被组织起来,并被限制在底层空间的不同区域,因此可以通过从特定区域取样来生成特定类别的密码。我们利用这种技术来诱导生成过程中的任意偏差然而,我们必须首先定义一种有意义和实用的方式来表达这种偏见,即,将我们感兴趣的潜在空间区域本地化。
一个简单的解决方案是使用原型密码x来指导本土化过程。特别是,我们可以通过获取x的潜表示z周围的潜点(即x = G(z))来生成与所选原型密码x严格相关的密码。由于具有强局域性,所获得的潜点应该是与x具有任意强关系的密码的有效潜点表示。在这种情况下,我们将所选的x(或其对应的潜点表示z)称为主元。图2中的三个暗红色方框是潜伏空间中对应密码的枢轴点。
为了从x推断出潜在表示z,我们使用在第II-B2节中描述的编码器网络,即z = E(x)。我们强调的是,由于这个过程通用且与模型无关,其他深层生成模型(如[25]、[36]、[40])也可以使用。
表二从支点串“jimmy91”开始,σ值不同的前10个密码
一旦我们获得了预期的枢轴z,我们就可以通过将生成器的采样限制在z周围的潜在空间的一个有限区域内(由图2中的小虚线圈松散地表示),轻松地生成连贯的密码。为此,我们考虑生成器的一个新的潜在分布。新的分布以枢轴密码的潜在表示为其期望值,且具有任意小的尺度。为了保持先验潜分布的相干性,并在一定程度上避免采样点[57]的分布失配,我们选择了一个高斯分布:N(z, σI)。
根据密码局部性的概念,采样的潜在点及其枢轴之间的语义关系强度应与它们之间的空间距离成正比。因此,σ的选取值(即标准差)为我们提供了一种直接控制生成密码中语义边界的水平的方法。这种直观更好地解释由表二,其中密码获得不同的σ值为相同的枢轴密码报告。较低的σ值产生高度对齐的密码,而较大的σ值允许我们探索远离支点的区域,并产生不同类型的“相似”密码。如表2所示,σ = 0.05生成的所有密码,不仅保留了支点结构(即5L2D),而且还观察到与底层密码分布一致的微小变化。值得注意的是,由σ = 0.15生成的密码往往会逃脱由pivot设置的密码模板,并达到相关但不同的密码结构(例如,“jimmy91992”和“j144988”)。
B.密码模板倒置的本地化密码生成
正如在第三- a节中简要讨论的那样,密码局部性提供了一种自然的方法来为选定的pivot生成非常特定/受限的密码类,该任务通过利用编码器网络e来完成。该编码器被训练成近似逆函数G−1,这是我们唯一有意义地探索潜在空间的工具。编码器的默认行为是将字符串s作为输入,并在潜在空间中精确地定位相应的潜在表示。如表二所示,从以所获得的潜点为中心的分布中抽样,可以生成一组相关的密码。但是,在密码猜测场景中,仅使用这种方法是不够的。
在本节中,我们将演示如何“诱骗”编码器网络,使其进一步本地化一般的密码类。我们可以通过一个表示目标密码类定义的最小模板任意定义这些类。
通过在字母表中引入通配符,编码器网络可以被迫绕过特定的密码定义。通配符—在本文中由符号“∗”表示—可以用作占位符来表示一个未指定的字符。例如,模板" jimmy∗"表示一个以字符串" jimmy "开头,后跟两个未定义字符的密码类。当编码器反转该字符串时,得到的潜点表示潜空间中密码集群的中心,总长度为8个字符,前缀为“jimmy”。因此,在这个潜在点周围采样允许我们生成输入模板的良好实例化(根据p(x))。表三的A栏显示了模板“jimmy∗∗”的例子。在实践中,当将与输入字符串对应的矩阵给定给编码器时,我们通过将通配符映射为空的one-hot编码向量来实现这种行为。通配符可以放置在任何位置,以定义任意复杂的密码模板;表三列举了一些例子。
表三利用rockyou训练集上的生成器的强局部性来获取一些密码模板的例子。密码是通过采样10000个α = 0.8的字符串生成的,并按照频率递减的顺序报告。
依靠这种技术,模板反演将我们引向潜在空间中最可信的区域。当我们从该区域取样时,通配符将根据分布p(x)替换为高概率字符,即由生成器建模的概率分布。这种现象可以在生成的样本中观察到(TABLE III的A列):大多数生成的密码中的通配符都被数字替换了,从而可以想象地再现出频繁出现的密码模式‘小写字符串+数字’[52]。相反,来自模板“∗∗∗∗91”的口令被报告在表三的E栏中。在本例中,我们要求生成器查找最后两个字符为数字的7个字符长的密码。在这种情况下,生成的密码倾向于两种最可能的密码类型,即“小写字符串+数字”和“所有数字”。’由于潜在空间的局部区域是所有观察到的字符的函数,所以具有更多可观察数字的相同模板(如表III的F列)最终生成所有数字密码的概率更高。
C.条件密码猜测(CPG)
可用的概率猜测者最显著的限制之一是其固有的刚性。这些模型的归纳偏差使得它们非常适合于一般的拖网攻击,但却导致它们无法适应不同的猜测场景。例如,它们不能处理自然的和一般形式的条件密码生成,例如我们在第III-B节中提出的基于模板的方式。尽管现有方法存在局限性,但在任意偏差下产生猜测是一个有用的过程。这既适用于安全从业者,也适用于普通用户。下面是一些例子:
- 攻击者可能对生成任意数量的猜测感兴趣,这些猜测具有特定的结构或公共子字符串。例如,攻击者可能希望生成包含被攻击web应用程序名称的密码 子字符 串 6 子字符串^6 子字符串6
- 攻击者可以使用具有部分知识的条件密码生成来改善针对用户输入[16]、[41]、[54]、[17]的侧通道攻击的影响。由于密码的准确性,这些攻击通常只能恢复不完整的密码(例如某些字符)。攻击者可以利用条件密码生成机制来输入缺失的字符并恢复目标密码。
- 类似地,合法用户可以在记住部分模板的同时恢复她/他忘记的密码,例如,“Jimmy1*8#”。
6 ^{6} 6人们已经广泛观察到,许多用户倾向于在他们的密码中加入这样的名字。
在这个方向上,条件密码生成对于自回归密码猜测者来说特别困难,比如基于rnn的密码猜测者(例如FLA[42])。实际上,这些方法,在一般情况下,不能有效地分配丢失字符的概率;在它们的生成过程中固有的正向性,消除了在给定子字符串之前出现通配符的有效识别的可能性(例如,表III的列C和E中的情况)。在这些情况下,在使用模板中的字符来修剪访问树之前,可以计算出密码的指数数量的概率。这是列E中报告的模板的情况,其中这些方法所需的计算成本与将所有密码计算到所选概率阈值并过滤与模板一致的密码相差不远。更一般地说,当考虑大量通配符时,这些方法不能有效地应用。从后验分布对缺失的变量(即通配符)进行抽样,实际上,对于不是最小的字母来说是棘手的;例如,对于大小为|Σ|的字母表,它需要在Gibbs抽样或迭代条件模式[20]的每一步运行O(|Σ|)次网络推理。然而,它们可以处理模板的特殊情况的生成(例如,Column a和Column B),其中模板的前缀是完全已知的,通配符中没有可观察字符。
为了生成任意模板,一种简单可行的自回归模型方法是根据所选的截止概率枚举密码,然后过滤与所选偏差相容的密码。然而,这个解决方案有两个主要缺点。首先,这种操作成本很高,而且需要存储。更重要的是,对于小的截止概率值,这种方法很容易变得难以处理,因为由于空间的未修剪访问,枚举可能需要指数级的代价。这种方法的第二个也是更重要的限制在于产生相对低概率猜测的困难。换句话说,如果所选的偏差导致候选密码具有较低的概率(根据估计的密码分布),那么至少在合理的截止概率下,这些概率在枚举过程中是不可能产生的。反过来,这就意味着不可能使用基于枚举的方法来生成可靠的密码猜测攻击所需的有效猜测数。
相比之下,条件密码生成可以在我们基于表示学习的方法及其局部性中无缝实现。由这一局部性原则所强加的密码组织维护了潜在空间的精确区域内的类似密码。使用模板反转技术对这些区域进行定位并从中进行采样,这样我们就可以以最小的努力枚举出有偏差的密码。我们可以有条件地对每个有意义的偏差进行合适的猜测,即使这样做产生的密码概率很低。算法1简要地形式化了这种方法。选取一个模板t,利用编码器网络E得到t的潜在表示zt,然后从以zt为中心,尺度为σ的分布中采样潜点。在这个过程中,我们过滤与t一致的猜测(第6行if语句)。这个条件猜测生成过程的有效性将在下一节中演示。
D.评价
在本节中,我们针对最先进的密码猜测者评估我们提出的CPG框架。
1)有偏差的测试集创建:为了创建一个合适的场景来评估我们的条件生成技术CPG,我们强制转换了一组有偏差的密码测试集。在我们的设置中,偏见ti是一个密码模板;字符串ti∈{Σ∪{∗}}∗,其中Σ是密码字母(在我们的例子中有210个unicode字符),∗是通配符。每个密码模板ti都是从验证集Xv采样的密码中随机抽取的。我们选择LinkedIn[9]密码泄漏作为验证集。从这个集合中,我们保存长度小于等于16的密码,获得了6·107个唯一的密码,这是用于训练我们模型的RockYou训练集的~ 5倍。
更准确地说,从Xv采样一个ground-真值密码x,我们通过(以一定的概率p)用通配符替换x中的每个字符(例如,从x= " jimmy1991 "到t= "∗i∗my∗∗1 ")来推导出ti。在我们的设置中,我们选择p = 0.5。在这个过程中,我们只选择那些生成的模板中包含至少4个可观察字符和至少5个通配符。后一种约束的目的是提供一个不平凡的蛮力解决方案(~ 3· 1 0 11 10^{11} 1011)。
在获得足够大的有效模板集合之后,我们创建一组有偏差的密码测试集。这是通过使用穷举搜索收集与Xv中的模板匹配的所有密码来实现的。更准确地说,对于每个模板,我们收集所有Xv的实例x,使x满足模板ti;即集合
X
v
t
i
=
x
∣
x
∈
X
v
∧
x
⊢
t
i
X^{t_i}_v = {x|x∈X_v ∧ x \vdash t_i}
Xvti=x∣x∈Xv∧x⊢ti。根据
X
v
t
i
X^{t_i}_v
Xvti的基数,我们将其分为四类:
最终,这4类模板中的每一类都由30个不同的模板集(即
X
v
t
i
X^{t_i}_v
Xvti)组成。这些模板的样本和相应的匹配密码报告在附录F的表XI中。
在下一节中,我们将使用创建的偏置密码集,用一组概率和非概率的最先进的密码猜测者来评估建议的CPG框架。我们评估每个猜测者匹配每个偏置集合 X v t i X^{t_i}_v Xvti中包含的密码的能力。
2)结果:我们使用CWAE执行我们的猜测攻击。在这个猜测情景中,该模型比GAN方法表现得稍好一些我们报告了在密码最大长度为16的情况下训练的模型的结果,因为在密码长度为10和22的情况下训练的模型没有得到一致不同的结果。
7 ^7 7这是由于高质量的编码器网络包括自动编码器。
2)结果:我们使用CWAE执行我们的猜测攻击。在这个猜测情景中,该模型比GAN方法表现得稍好一些我们报告了在密码最大长度为16的情况下训练的模型的结果,因为在密码长度为10和22的情况下训练的模型没有得到一致不同的结果。在我们的设置中,我们遵循第III-C节中描述的CPG。更准确地说,对于每个有偏差的密码集 X v t i X^{t_i}_v Xvti,我们使用编码器网络将模板ti倒置。然后,利用标准差σ = 0.8(见算法1)在获得的潜向量周围对密码进行采样。我们为每个模板生成n = 107个有效密码,然后我们计算生成的猜测与 X v t i X^{t_i}_v Xvti的交集的基数,以计算猜测的密码的数量。
我们将CPG与五个最先进的猜测者进行比较;即:OMEN[27]和FLA[42]表示全概率类,PCFG[56]表示基于令牌的概率类,HashCat[3]表示非概率类。此外,我们还比较了最小自动配置[53]。
由于这些猜测者不能执行自然形式的条件密码生成,我们利用了在第III-C节中讨论的简单方法;也就是说,我们在默认模式下生成大量的密码,然后根据请求的偏差对猜测进行过滤。特别是,我们为每种方法生成了 1 0 10 10^{10} 1010个密码。这些工具的具体设置细节如下:
- OMEN:我们使用与我们的深层生成模型(游戏邦注:80%是RockYou)相同的火车集来训练马尔科夫链。在那之后,我们生成了 1 0 10 10^{10} 1010个排序的猜测。
- PCFG:像在OMEN案例中一样,我们使用用于训练我们的深层生成模型的火车集来推断语法。
- HashCat:我们执行了一个基于混乱规则的攻击,利用用于训练我们的深度生成模型的火车集作为字典(只考虑按频率排序的唯一密码),并且我们使用PasswordsPro[6]作为规则集。我们基于适当数量的规则(即3120)选择了后者,这允许我们产生适当数量的猜测。
- FLA:我们训练了[42]中描述的最大的模型,即由三个LSTM层(每层1000个cell)和两个完全连接的层组成的RNN。训练是在用于我们模型的同一套列车上进行的。
- CMU-PGS:在CMU Password Guessability Service (PGS)[13]中,密码是根据min-auto配置[53]猜测的,其中组合了多个工具(如FLA、Hashcat、John the Ripper、PCFG、Markov Model)的猜测。我们通过网页界面查询猜测数字,并考虑猜测次数少于1010次的密码。已经使用了推荐的工具设置和“1class1”。
当我们在条件生成中测试每个猜测者时,我们在正则表达式中转换每个模板(即,用点操作符替换通配符),并在1010生成的密码中提取与模板匹配的所有猜测。然后,我们计算正确猜测与每个 X v t i X^{t_i}_v Xvti的交集的基数,以显示猜测的密码的数量。
每个模板类的猜测密码的平均百分比报告在表四。与第三- c节的讨论一致,我们的CPG框架允许我们产生大量的有偏见的猜测,它相应地匹配了大量的密码。
表iv平均匹配密码(和相对标准偏差)对偏置密码测试集分为4类。
正如预期的那样,CPG对每个模板类保持较高的匹配率(即> 70%),而与对应密码的低概率无关。相比之下,其他的猜测者就无法产生这样一类特定的密码。因此,它们提供了很少的模板的浅层覆盖。对于最小自动攻击也是如此,即组合来自多个工具的异类猜测。例如,最小自动方法将需要三个数量级以上的猜测来匹配我们在超级稀有模板的边缘情况下的相同数量的密码。有趣的是,考虑到在生成过程中强加的强烈偏见,CPG匹配其他单个猜测者的大多数密码,这也是在通用模板的情况下。在常见模板的情况下,FLA匹配与我们相当数量的密码,在不常见和罕见类中匹配可接受数量的密码(即≥40%)。注意,我们将CPG限制为每个模板生成107次猜测;然而,更有偏差的密码可以以线性代价采样。
Iv.动态密码猜测(DPG)和密码弱局部性
在本节中,我们将介绍我们的主要贡献,即动态密码猜测。在第四节- a中,我们概述了密码弱局部性的概念。第IV-B部分从理论(第IV-B1部分)和实际(第IV-B2部分)的观点介绍了DPG。
A.密码弱本地化
潜表示密码在潜空间中的嵌入特性与特征相近。我们将此属性称为强局部性,并利用它生成所选pivot密码或模板的变体(在第III-A节中讨论)。在这种情况下,形容词“strong”强调了生成的密码集之间的严格语义关系。然而,同样的动态使得密码之间的语义边界形式更加广泛。后一个属性部分地描述了整个密码分发版的一般特性。这些特性可能是分布的非常抽象的属性,比如平均密码长度和归因于密码策略的字符分布。我们将此观察到的属性称为密码弱本地属性,以便与强本地属性进行对比。
图3是一个典型的例子,描述了来自myspace[10]、hotmail[4]和phpbb[11]的密码在生成器学习的潜空间上的2D表示我们可以观察到,来自同一数据集的密码往往集中在潜在空间,而不是突然蔓延到整个频谱。整个密码集所覆盖的潜空间部分(图3 (a)、(b)、©红色部分)的维数明显取决于其密码的异质性。来自较小集合(如myspace)的密码集中在潜在空间的限制和密集区域,而来自较大集合(如phpbb)的密码往往覆盖更重要的部分,但它们仍然紧密地连接在一起。
在下面的部分中,我们将提供此位置属性的证据,并将展示如何利用它来改进密码猜测。
B. DPG用于协变量移位减少
首先,我们在第IV-B1节介绍了DPG背后的理论动机,然后在第IV-B2节介绍了它的实例。
1)理论动机:概率密码猜测工具隐式或显式地试图捕捉一组观察到的密码,即火车集背后的数据分布。然后,在密码猜测攻击期间,使用这种建模的分布生成新的一致的猜测。一套火车套装通常由之前泄露过的密码组成。假设,每个密码集泄漏都由一个特定的密码分布p∗(x)来表征。当我们训练概率模型时,隐式地假设p∗(x)足够普遍,可以很好地表示整个密码分布类。这种通用性本质上是由于真实字密码猜测攻击实际上是在可能来自完全不同的密码分布的一组密码上执行的。事实上,我们通常没有任何关于攻击集分布的信息。这确实可以与模型训练完全不同。作为一个典型的例子,不同的密码策略或用户的主要语言可能会导致测试集的分布与火车集的分布有很大的不同。这种列集和测试集分布上的差异是机器学习领域中一个众所周知的问题,它被称为协变量移位[49]。
如上所述,通常情况下,我们不知道被攻击集的分布情况。然而,一旦我们破解了第一个密码,我们就可以开始观察和建模被攻击的分布。每一次成功的猜测都提供了有价值的信息,我们可以利用这些信息来提高攻击的质量,也就是说,减少协变量的移位。由于观测值和概率分布之间存在连续的反馈,这种迭代过程使人想起了类似贝叶斯的方法。
对于完全数据驱动的方法,将通过成功猜测获得的信息合并到一起的一个简单的解决方案是对模型进行微调,以更改学习到的密码分布。然而,规定的概率模型(如FLA)使用参数函数直接估计密码分布:
其中θ是神经网络的权值集合。在这种情况下,以一种有意义的方式修改分布p(x)的唯一可能性是利用学习过程对θ起作用。然而,这并不是一个简单/有吸引力的解决方案,主要是因为新的猜测密码可能是不充分的代表9,并且不会迫使模型对新信息进行泛化。此外,微调网络的计算代价相当大,由于学习过程的敏感性,最终结果无法得到保证。
与FLA类似,我们的生成模型也利用神经网络作为估计器。但其模型分布为联合概率分布,如式3所示:
图3。Password Weak Locality(密码弱局域性):在RockYou训练的一个生成器上,对三个不同密码集的潜在点进行2D可视化。红色的点表示对应于密码集合中的密码的潜点,而蓝色的点松散地表示潜空间的密集部分。请参考彩色版本以获得更好的插图。
如第II-A节所述,当p(z) =˙p(z)(即先验潜在分布)时,p(x |z;θ)p(z)可以很好地逼近目标数据的分布(即列集之后的分布)。然而,p(z)可以任意选择,并用于间接改变由生成器建模的概率分布。方程3的RHS表明,θ不是影响最终密码分布的唯一自由参数。事实上,p(z)是完全独立于生成器的,因此它可以任意修改而不影响神经网络的参数。
这种可能性,以及潜在空间的密码局部性,使我们能够正确而有效地概括新猜测的密码,引导预训练的网络模拟一个更接近猜测的密码分布。值得注意的是,这种对新点的泛化能力是通过弱局部性实现的,而不是来自神经网络本身。这里的直觉是,当我们改变p(z)以赋予一个特定的猜测密码x更多的密度时,我们也增加了它的邻近密码的概率,由于弱局域性,具有类似的特征。这反过来又可以突出猜测密码的一般特征(例如,结构、长度、字符集等)。
因此,通过控制潜在分布,我们可以增加来自目标分布的密码可能覆盖的区域的概率。我们称这种技术为动态密码猜测(DPG)。在均匀分布的情况下(例如,聚友空间),我们可以缩小稠密区域周围的解决方案空间,而避免探索整个潜在空间。另一方面,对于从远离生成器所建模的分布中采样的密码集,我们可以将重点放在潜在空间的区域上,否则,这些区域就会被忽视。在这两种情况下,我们可以减少协变量移位,提高密码猜测攻击的性能。
从广义上讲,DPG可以潜在地适应非常特殊的密码分发;从没有合适的火车集的上下文中导出的分布。例如,在不匹配的组合策略或罕见/未被观察到的用户习惯下创建的密码。只要生成器产生这种罕见密码的概率非零,就可以始终使用正确猜测给出的反馈来重新衡量潜在分布,并模拟未知的目标密码分布。我们将在下一节验证这一声明。
2)实际的执行:在这一节中,我们将从实际的观点来讨论DPG。算法2简要描述了DPG。
在算法2中,O表示密码的目标集,Z是生成器猜测的所有密码的集合,α被定义为攻击的热启动参数,这个元素我们将在本节稍后进行描述。伪代码中的变量platent,代表潜分布,从中我们取样潜点。过程makeLatentDistribution返回第i步中猜测密码组Zi的潜在分布。利用最大似然框架,我们选择这样一个分布来最大化观察密码集Xi = {G(z) | z∈Zi}的概率。这是通过考虑潜伏分布p(z|zi)条件为每一步i中猜测的密码集来实现的。DPG期间由生成器表示的最终密码分布在公式4中报告。
作为第III-B节中使用的接近密码生成的自然扩展,我们选择将p(z|zi)表示为各向同性高斯函数的有限混合。特别地,该混合由n个高斯组成,其中:(1)n为Zi中潜点的个数;(2)对于每个zj∈Zi,定义一个高斯分布N(zj, σ i),中心为zj,标准差为固定的σ。
当已知一个密码的概率,即xj = G(zj)时,我们将第j个分布的重要性加权为P(xj);否则,假设高斯分布是均匀的。在报道的实验中,我们总是使用均匀加权。方程5定义了潜空间的概率密度函数。
每一个新的猜测密码x都会在混合中引入一个新的以z为中心的高斯分布。因此,每一个新的猜测密码都会改变潜分布p(z|zi)的密度,从而改变潜分布p(z|zi)。图4显示了这一现象。
在DPG环境下,GAN发生器的性能略优于CWEA。因此,本节报告的所有实验都是使用我们的GAN发生器在RockYou列车上进行训练获得的。图5描述了静态攻击(如PassGAN)和DPG对三个密码集的性能比较。自适应改变潜分布允许我们提高每单位时间内的猜测密码的数量。重要的是,这种改进没有对被攻击的密码集提供任何额外的信息或假设。此外,由于新的采样技术的计算开销是可以忽略的。使用DPG获得的性能的急剧改善支持了我们的观点,即减少协变量移位是一个合理的策略。
图4。2D可视化:(a)整个hotmail数据集(红色部分)映射在从RockYou训练集学习到的潜在空间上,(b-e)在hotmail测试集上DPG的四个渐进攻击步骤中的潜在空间。红色标记表示每一步的猜测密码(即Zi),而蓝色区域的颜色强度表示从使用的潜在分布(即高斯混合)分配到潜在空间的概率。
图5。对三种不同的测试集,DPG (α = 0.15)相对于静态攻击获得的性能增益
DPG中猜测密码的突然增长(如图5所示)是由于热启动或α参数;在DPG中,我们使用先验潜伏分布直到一个预定的密码数(α)被猜中。之后,我们开始使用条件潜伏分布p(z|zi)。原因是,如果DPG从第一个猜到的密码开始,那么潜在分布可能会停留在潜在空间的一个小区域。但是,在猜测足够数量的密码(即在潜空间中找到一组不相关的潜点)后发射DPG,使我们有可能匹配异构的密码集,从而正确地定位了可能存在被攻击密码的潜空间密集区域。
攻击的最终超参数是分配给混合高斯分布的标准差(σ)。在核密度估计(KDE)的观点下,σ代表我们的高斯核的带宽。相反,在猜测的场景中,这个值定义了我们希望从观察到的密码集群中抽取样本的距离。σ值越大,我们的偏见就越少,猜测密码的范围就越广;而较小的值则可以更集中地检查后者。附录D较好地说明了σ和α对DPG的影响。
在图6中,我们报告了对于三种密码泄漏,建议的DPG与最先进的密码模型的直接比较。为了比较,我们使用了与图III-D1.10节相同的工具和配置。图中DPG为动态猜测攻击,SPG为静态攻击。结合FLA、Hashcat、OMEN和PCFG的猜测得到min-auto。然后通过将DPG加入min-auto集合得到min-auto+DPG。图6 (a)报告了LinkedIn泄漏的结果。在这里,动态适应允许我们猜测的密码比静态方法多10%。但在一般情况下,它不能直接与FLA和PCFG的性能相媲美。然而,我们的模型比混乱的规则和马尔可夫模型表现得更好。考虑到动态猜测策略的不同性质,将DPG与min-auto相结合允许我们猜测更多的密码。我们将在下一节中更好地激发这种现象。
图6。性能的各种密码模型上的三个密码泄漏。对于DPG, σ = 0.35, α = 10%
当我们考虑那些在密码分发中表现出特殊偏见的泄露时,通常会观察到更好的结果。图6 (b)显示了优酷[8],[1]——中国视频托管服务的泄漏结果。在这种情况下,由不同用户类别引起的固有分布偏移导致了大量的协变量偏移现象。在这里,动态适应允许我们比其他工具猜测更多的密码;DPG对猜测进行了一次又一次的改进,每一次都在进化,最终超过了所有其他模型组合得到的最小自动配置。
当我们考虑引入更严重偏见的泄漏时,可以观察到更有趣的结果。图6 ©报告了Zomato[15],[14]泄漏的结果。这是一个极端的情况,因为它的内容的40%是由6个字母数字字符组成的随机标记。这就产生了一个可以被DPG检测到并有效捕获的急剧分割的双峰分布。在这种情况下,潜空间的动态适应允许我们猜测比静态攻击(即SPG)多5倍的密码,允许我们的模型在不到109次迭代中匹配超过50%的集合。另一方面,静态方法,包括min-auto,在这种极端情况下无法与DPG的性能相匹配。值得注意的是,将DPG添加到min-auto集合中(即min-auto+DPG)允许我们猜测集合的70%。
最后两个示例强调了DPG适应目标密码分发的能力。然而,LinkedIn泄漏的结果告诉我们,如果没有明显的协变量变化,动态攻击不能直接匹配最先进的解决方案的性能。在下一节中,我们将展示DPG算法在这种情况下也确实有用,因为它完全允许猜测被攻击分布的特殊密码,否则将被忽略。
3)动态适应的影响:在本节中,我们阐明了动态潜在适应对最初由深层生成模型建模的密码分发的影响。为此,我们比较了不同密码分布(1)列车集分布和(2)密码被攻击集分布下密码被猜中的概率。为了合理地表示和概括这种概率分布,我们依赖于FLA[42]作为显式密码质量估计器。我们对这两个密码集训练了两个FLA实例,并利用训练后的模型来推断在动态和静态攻击中猜测密码的概率。
图7总结了我们对phpbb密码泄漏(即被攻击的分布)的测量结果。这里报告了动态和静态攻击中密码被猜出的累积概率。特别地,图7 (a)描述了由训练集的概率分布分配的概率(即在RockYou上训练的FLA实例),而图7 (b)报告了相同的数据点,但根据被攻击集的概率分布计算(即在phpbb上训练的FLA实例)。
当我们执行DPG时,我们期望由深层生成模型表示的密码分布会逐渐偏离训练时学到的密码分布。图7 (a)图示地描述了这种现象;在这里,我们注意到潜在的适应性是如何导致模型根据火车集分布猜测概率较低的密码的。更有趣的是,当模型与列分布的差异增大时,被攻击分布的差异却急剧减小。图7 (b)给出了向后者的收敛过程。此外,这个数字给了我们一条更有价值的信息。表明DPG根据被攻击的分布来猜测概率较高的密码,即被攻击服务中用户数量较大的密码。后一种累积概率曲线的突然跳跃,确实可以归因于猜测这种高概率密码的事件。需要注意的是,一旦我们猜出了第一个高概率密码,我们就会开始围绕它抽样新的猜测,从而猜测出更多的高概率密码,使跳跃更加陡峭。
根据同样的例子,在我们考虑对抗性解释时可以得到更实际的结果。图7 ©显示了使用在RockYou上训练的FLA实例(也就是我们模型中的火车集)测量的静态和动态攻击的累积猜测数图。动态攻击的估计累积猜测数比静态攻击的估计累积猜测数大两个数量级。考虑到FLA的准确度[28],这一结果证实了DPG能够根据列车集分布诱导出可信度较低的密码。此外,这个示例显示了DPG如何诱导出早期的密码,而对于类似的最先进的密码猜测者(如FLA),需要进行多个量级的猜测。在报告的示例中,我们生成了109次猜测,匹配几个密码,需要从FLA(和其他;见附录F)。表V报告了其中一些。
图七。对phpbb进行猜测攻击的累积统计。这些数字报告了在静态和动态的前109次猜测中猜测的密码。
表v四次密码泄漏中DPG猜测的特殊密码示例。fla和dpg都报告了所需的猜测数(即g)。这些密码是通过将DPG攻击的所有猜测密码按照从fla分配的猜测号的降序排列而获得的。该表为每次泄漏报告列表的前15个条目。
我们对不同的密码泄露进行了相同的分析,观察到相同的一般行为。我们在表五中给出了其他集合的高猜测数密码作为额外的例子。表中列出的猜测让我们对这种特殊密码的性质有了清晰的直观认识。这些是由受攻击分布的独特偏差引起的。更明显的例子是基于主导表的web服务名称的密码。这些确实是特殊密码的主要例子,因为它们都被统一绑定到特定的密码分布上。在优酷泄露事件的专列中可以看到更多不同的猜测。在这里,DPG捕获了由特殊字典条目组成的密码,这些条目在模型的火车集(如RockYou)中没有很好地表示。
此外,表V中报告的猜测数字表明,这些密码被最先进的工具认为是安全的,但是很容易通过DPG猜测出来。实际上,我们的实验表明,DPG允许我们猜测被攻击密码集所特有的密码。这样的密码,考虑到它们与一般密码分布的任意距离,只能通过利用被攻击密码空间的额外信息来源来猜测。DPG通过与被攻击集的无监督交互直接提取这些必要的知识。这允许猜测攻击自动聚焦于目标密码分发的唯一模式,否则这些模式将被忽略或未被充分表示。
五、相关工作
对密码猜测的系统研究可以追溯到1979年的[44],密码猜测攻击可能从密码概念[19]开始就存在了。由于在这一活跃的研究领域已经提出了大量的工作,我们将讨论限制在与我们的建议高度相关的最相关的贡献和解决方案。
基于字典的攻击及其扩展是优雅猜测技术的最初形式(与暴力强制相对)。在字典攻击中,具有切碎规则[44]的扩展广泛地证明了其对拖网攻击场景[2]的有效性。尽管这种攻击方法很简单,但时至今日,仍然以高度优化的现成软件的形式存在:John the Ripper (JTR)[7]和HashCat[3]。由于它们的效率和易于定制,这些工具是专业安全从业者[53]的主要武器。随后,概率方法自然而然地在密码猜测领域得到了应用。Narayanan et al.[45]利用马尔可夫滤波器大幅度减小了猜测攻击的搜索空间。D¨urmuth等人通过在OMEN中引入猜测枚举算法的改进版本来扩展这种方法。Weir等人[56]在密码猜测域中引入了概率上下文自由文法(Probabilistic ContextFree Grammars, pcfg)。特别是,Weir等人提出了一种技术,能够从一组观察到的密码推断语法,并使用这些语法来转换新的密码猜测。
Ciaramella等人在他们的开创性工作中引入了密码猜测的神经网络。在同样的发展方向上,Melicher等人提出了FLA (Fast, Lean, and Accurate),它使用循环神经网络[32],[50]来估计密码分布。该模型遵循与马尔可夫模型相同的估计过程,但放宽了潜在的n-马尔可夫假设。FLA可以通过树遍历算法对密码空间进行枚举,从而生成新的猜测。
与我们的条件生成框架类似,不同的工作专注于为给定的初始密码[46]、[23]、[55]创建特定的密码变体类,主要目的是建模凭据调整攻击。凭据调整是一种有针对性的攻击,攻击者知道目标用户的一个或多个服务凭据,并试图破坏同一用户在其他服务上的帐户。与证书填充不同,这里用户的密码应该是已知密码的“微调”版本。在这个方向上,Pal等人[46]提出了新的证书调整攻击/防御技术。攻击和防御技术都建立在密码相似的概念之上。他们通过使用用户密码对的监督数据集来为语义相似度的特定形式建模。他们假设密码的分布假设为真,并定义两个密码“相似”,如果它们经常被用户一起选择。提出的攻击技术是基于一个概率神经模型,它的目的是产生一个微调的变化的输入密码的微调攻击。他们的技术是基于构建一个嵌入空间,用来估计所选密码之间的相似性。然后,这种相似性度量被用来构建一个“个性化密码强度表”,旨在在用户创建密码时发现用户使用了修改过的密码。与我们的密码表示相比,它们的嵌入空间不允许采样操作和密码生成。
六、结论及未来工作
我们提出了一个完全不同于当前研究方向的密码猜测任务的范式转变。我们证明了由深层生成模型的潜在表征所施加的局域原则在该领域打开了新的实践和理论可能性。基于这些性质,我们提出了两种新的密码猜测框架,即CPG和DPG。CPG框架允许有条件地生成任意偏置的密码。我们通过经验证明了它与已确立的最先进的方法相比的固有优势。此外,DPG框架证明了来自新猜密码的知识可以成功地泛化并用于模拟目标密码分布。更重要的是,这种猜测技术允许生成针对被攻击密码分布的特殊密码,而要让其他猜测者猜出密码需要付出不切实际的努力。
代码、预先训练的模型和其他与我们工作相关的材料可以在[5]公开获得。