深度学习技术的发展显着提高了计算机识别CAPTCHA(完全自动化的公共图灵测试,以告诉计算机和人类)的能力,从而破坏或减轻了现有验证码方案的安全性。为了防止这些攻击,最近提出了利用对抗性机器学习来扰动验证码图片的工作。但是,他们要么需要事先掌握验证码解决方案模型的知识,要么就无法适应攻击者不断发展的行为。最重要的是,它们都尚未在实际应用中部署,并且它们的实际适用性和有效性尚不清楚。
在这项工作中介绍了advCAPTCHA,这是一种实用的对抗式验证码生成系统,可以防御基于深度学习的验证码破解器,并将其部署在拥有近十亿用户的大规模在线平台上,这是已经在国际大型在线平台上部署的第一项此类工作。通过以新颖的方式应用对抗学习技术,advCAPTCHA可以生成有效的对抗验证码,从而显着降低攻击者的成功率,这已在大规模在线研究中得到证明。此外,还验证了advCAPTCHA在实际应用中的可行性以及在防御各种攻击方面的强大功能。利用现有的用户风险分析系统来识别潜在的攻击者并为他们提供advCAPTCHA。然后,将其答案用作对攻击模型的查询。以这种方式,可以对advCAPTCHA进行调整/微调,以适应定位模型的发展。总体而言,advCAPTCHA可以用作在实践中生成可靠的验证码的关键引擎,并为验证码开发人员和从业人员提供有用的指导。
0x01 Introduction
验证码是计算中的一种挑战响应测试,旨在区分人工程序和自动化程序(机器)。自从其发明以来,验证码已被广泛用于通过防止滥用网络服务(例如网络钓鱼,机器人,垃圾邮件和Sybil攻击)来提高网站和各种在线应用程序的安全性。现有的验证码机制通常可以分为基于文本的验证码,基于图像的验证码,基于音频的验证码,基于游戏的验证码等。其中,基于文本的验证码一直是当今和可预见的最热门的研究和应用,这也是这项工作的重点。
在过去的十年中,已经提出了许多用于自动识别验证码的攻击。在早期,许多攻击都针对特定的验证码方案进行了硬编码,其中设计攻击试探法和方法需要大量的专家参与。因此,提出了许多利用变化的字体和/或背景噪声的防御策略,以使验证码更健壮和更具挑战性。后来,为了进一步防御针对多个基于文本的验证码方案的通用攻击,提出了高级防御策略(例如,通过使用合并字符和字符失真),以增加字符分割和识别难度。
最近,深度学习技术在文本识别方面显示出了巨大的成功,自然会进一步引入深度学习技术来打破高级验证码。要构建基于深度学习的验证码破解器,攻击者只需:
1)收集一定数量的带标签的培训数据,这可以通过雇用低成本的人工或直接使用现有的众包平台来完成,
2)使用成熟的深度学习技术/平台来训练端到端验证码破解器。
端到端模型不需要预处理或字符分割,而将整个验证码作为输入并直接识别它。正如广泛演示的那样,这些基于深度学习的攻击可以在各种验证码上获得明显良好的识别性能。
更糟的是,针对验证码解决方案的商业化验证码解决方案平台可以从最新的深度学习技术中受益匪浅。先前积累的验证码不仅可以帮助直接训练功能强大的破解器,而且还有利于利用迁移学习打破新的验证码方案。但是,对于小型企业和非互联网公司/部门的可用性,低成本和高可扩展性,它们仍然广泛地部署潜在易受攻击的文本验证码。
有趣的是,最近的研究发现机器学习(ML)模型(尤其是深度学习模型)容易受到敌对扰动的影响,可以将其注入到合法图像中,从而使分类器可以预测出不正确的图像标签。另一方面,对ML模型的攻击为启发人机验证防御现代攻击提供了启发,而现代攻击通常基于最新的深度学习技术。具体说来,为了抵御这些攻击,最近提出了利用对抗性学习向对抗式样攻击注入对抗性扰动的最新著作。将这些经过精心设计的扰动的验证码称为对抗性验证码。这些对抗性有望抵抗基于深度学习的攻击,同时保持人类的高可用性。
尽管对抗性验证码的想法很有希望,但所提出的机制与实际应用之间仍然存在巨大差距。首先,他们通常假设攻击模型具有先验知识,即,插入验证码的对抗性扰动取决于攻击模型的先验知识(例如,其参数),但是通常在实践中不可用。其次,以前的作品缺乏对攻击者不断发展的行为的适应性。攻击者(例如,验证码解决方案平台)通常具有强大的能力和动机来在实践中快速更新其模型。一旦攻击者发展了他们的模型,验证码生成机制也需要进行调整。最后,截至撰写本文时,大多数(即使不是全部)提议的对抗性验证码生成方案并未在实际应用中实际部署或评估。换句话说,对抗性验证码的想法是否可以在现实世界的平台上运作还不知道。因此,研究高度安全,自适应和实用的对抗性验证码生成和部署方案非常重要。
为了填补空白,本研究与一家全球领先的互联网公司合作,开发了一种自适应对抗式验证码生成系统,即advCAPTCHA,并将其部署在拥有8.24亿活跃个人用户及以上的大规模电子商务平台上100万商业用户。利用这种部署和应用,进行了大规模的实证研究,以评估提出的机制的安全性,有效性,适应性和可用性。在较高级别上,advCAPTCHA首先通过收集的验证码来训练替代破解模型,然后采用替代模型来生成对抗性验证码。之后,通过将攻击者提交的答案作为对他们的破解模型的查询来唯一地查看,advCAPTCHA可以通过学习其验证码识别行为来微调替代模型以近似攻击模型。
0x02 Background
1)ML模型漏洞
最近的工作发现,包括神经网络在内的现有ML模型容易受到各种攻击。接下来介绍在本文的方法中使用的两种类型的攻击。
模型逃逸攻击:在逃逸攻击中,攻击者旨在将精心制作的扰动注入合法实例,以便分类器预测该实例的错误标签。这种实例称为对抗性实例。
在黑盒设置中,有两种流行的方法可以生成对抗性示例。第一种方法取决于对抗性示例的可传递性。攻击者首先训练替代模型,利用替代模型生成对抗示例,然后将其转移以攻击目标模型(即受害者模型)。第二种方法是梯度估计方法。 在梯度估计方法中,攻击者可以通过发送任何输入来查询目标模型并接收预测的类概率。然后,攻击者利用查询结果来近似目标模型的梯度信息。最后,这种估计的梯度信息将进一步用于生成对抗性示例。但是,这些方法需要大量查询才能生成对抗性示例。
模型提取攻击:在提取攻击中,攻击者旨在利用目标模型的预测来构建另一个模型,作为对目标模型的近似。现有的模型提取方法通常包括以下步骤:
1)构建数据集X,可以在输入空间内随机选择样本或精心设计样本;
2)利用目标模型F预测X并获得预测结果Y;
3)将Y视为X的基准,并训练一个近似模型Fˆ。
2)对验证码的现代攻击
在过去的十年中,已经提出了许多攻击来解决验证码,这些攻击总结在上表中。早期作品通常遵循三个步骤:预处理,分割和识别。特别是,他们首先使用启发式方法来过滤背景图案(例如,验证码的背景中的线条噪声),然后使用分段技术(例如颜色填充分段)来对验证码进行分段,最后使用ML模型来识别分割。之后的作品将分割和识别结合在一起。他们使用ML模型对所有可能的方式进行验证码评分,然后找到最可能的方式作为输出。最近,通过利用深度学习技术,使用DNN模型直接识别验证码图像而没有字符分割。特别是,他们首先生成合成的验证码以学习基本破解器,然后通过利用转移学习在少量的真实验证码上微调基本破解器。因此,与先前的方法相比,他们的方法可以用明显更少的真实验证码集实现良好的识别性能。
除了学术研究之外,验证码破解平台还使用了深度神经网络来破解验证码。作为旨在解决验证码的商业部门,他们已经积累了从各种验证码方案生成的大量验证码。有了这些数据,他们可以训练一个非常强大的破解器并攻破一系列验证码方案。
3)advCAPTCHA
大多数对文本验证码的攻击都是基于ML技术的,这种技术容易受到各种对抗性攻击。因此,本研究旨在利用ML模型的漏洞来主动防御基于ML的验证码破解器,即生成对抗性的验证码来欺骗基于ML的验证码破解器。但是,在一般实际情况下,通常无法访问攻击模型。因此,很难直接针对它们生成对抗性的验证码。一种直观的方法是先针对执行与攻击模型相同任务的替代模型(通过使用自己的验证码方案进行训练)生成对抗性验证码,然后使用针对替代模型的生成的对抗对抗验证码来防御真正的未知攻击模型。
但是,由于以下两个原因,这种直观的方法在实践中可能效果不佳。
1)通过在实际应用中的仔细观察,发现攻击者通常同时针对多个验证码方案,而不仅仅是一种。因此,通过自己的验证码方案训练的替代模型可能与攻击模型有所不同。结果,由替代模型生成的对抗性验证码可能无法证明对真实攻击模型的可转移性。
2)在实践中,攻击者具有强大的能力和动机来更新其攻击模型,这可能会进一步降低对抗性验证码的传递能力。在最坏的情况下,对抗验证码的安全性可能会下降到普通的验证码。因此,验证码生成机制也需要更新,以防御不断发展的攻击模型。
对抗性验证码的安全性紧密取决于提出的替代模型和攻击模型之间的相似性。因此,要生成有效的对抗性验证码,就需要有效的渠道来观察和理解真实的攻击模型。为了解决上述挑战,将模型提取的思想纳入构建替代模型中。详细地说,以独特的方式查看攻击者作为对他们的破解模型的查询提交的答案。然后,使用这些查询来提取真实的攻击模型。值得注意的是,考虑到DNN的效率问题,没有直接从这些查询中构建替代模型。取而代之的是,首先使用预先收集的验证码和相应的标签来训练一个破解模型,然后将该模型用作基准替代模型来生成对抗性验证码,最后将其转移以防御实际的攻击模型。一旦观察到攻击模型的更新,就可以查询攻击模型并通过利用这些查询来微调基线替代模型。结果态地更新了替代模型,以适应攻击者不断发展的模型。
3 Design of advCAPTCHA
1)概述
在上图中提供advCAPTCHA的工作流程,该工作流程由以下4个重要步骤组成。
步骤1:训练替代破解模型。在实践中,通常没有攻击模型的先验知识,因此需要训练替代解决方案模型,并将其用作实际攻击模型的替代品。然后,可以利用替代模型来生成对抗性验证码,以防御验证码破解攻击。在此步骤中需要关注两个因素:模型结构和训练数据。对于模型结构,选择一个模型,该模型可以同时识别验证码图片中的所有字符,而无需图像预处理和字符分割。对于训练数据,考虑了多种不同的验证码方案,以增强替代模型的通用性。利用这些数据和模型结构,可以训练替代破解模型。
步骤2:生成对抗性验证码。有了替代破解模型后,精心设计了扰动算法以生成对抗性验证码。基于图像分类领域中发生的逃避攻击,提出了几种适用于扰动验证码的通用扰动算法。这些算法可以在安全性和可用性之间取得良好的折衷。生成对抗性验证码后,可以使用它们来防御基于ML的攻击。
步骤3:查询攻击模型。此步骤是可选的,仅在需要微调替代模型(例如,观察到攻击模型的更新)时才执行此步骤。在此步骤中,旨在通过收集发送给他们的验证码及其提交的答案来查询攻击模型。此步骤中的关键问题是如何向攻击者正确分配验证码。幸运的是可以利用现有的用户风险分析系统,在该系统中,被确定为具有高置信度的异常用户的用户被归类为攻击者。最后,将验证码分发给这些攻击者,并收集他们的答案,这些答案将在下一步中使用。
步骤4:调整替代破解模型。受模型提取攻击的启发,提出了一种新颖的机制来微调替代模型以逼近实际攻击模型。具体来说,通过使用从步骤3收集的一组标记的验证码来微调替代模型。在这里,查看攻击者提交的答案作为对攻击模型的查询,并且每个答案都传达了攻击模型的部分信息。通过模型提取,可以微调替代模型以自动近似攻击模型。此外,与从头开始构建新的替代模型相比,微调现有的替代模型更为有效。利用这一微调步骤,可以在观察到攻击者模型的更新后有效地调整防御系统。
2)构建替代破解模型
(a)模型结构
本研究的验证码破解模型旨在直接识别验证码图像,这与许多以前的工作不同,后者通过以下三个步骤来解决基于文本的验证码:预处理,分割和识别。使用端到端识别模型,其中输入是未经预处理的验证码图像,输出是图像中字符的序列。具体来说,使用卷积递归神经网络(CRNN)作为验证码破解模型,该模型需要较少的专家参与,并且更便于生成对抗性验证码。通常,此模型首先从输入图像中提取特征,然后自动分割特征(完整验证码)并识别每个分割(单个字符),最后寻求最佳组合。此过程可以显着减少训练模型所需的数据量。在评估中,对于四字符验证码方案(具有62^4种类型的标签序列),可以使用100K样本来训练精度为92%的破解器。
(b)训练替代模型
根据CRNN模型,为实际网站上部署的目标验证码方案训练了替代破解模型。请注意,目标是建立一个替代模型,该模型与实际的攻击模型相近,该模型可以通过从多个提示验证码方案生成的验证码进行训练。因此,通过利用目标验证码方案以及其他验证码方案来训练替代破解器。为了收集不同的验证码方案,可以从不同的网站爬取,也可以通过开源软件生成。然后,将这些混合数据用作训练数据集。每个训练样本均由一个验证码图像(未经预处理)和一个存储验证码字符ID的整数向量组成。请注意,目标验证码方案的每个候选字符分配了唯一的ID。然后,可以将训练有素的替代模型应用于生成对抗性验证码。
3)生成对抗性验证码
(a)表示法
首先在生成对抗图像的背景下提出必要的符号,将破解器表示为函数Fθ(x)= y,其中Fθ是神经网络,x∈R^(n×m)是输入图像,而y∈R^(r)是相应的输出。请注意,对于CRNN模型,y是标签序列,r是验证码中的字符数。将x’∈R^(n×m)定义为对抗图像,并令L(θ,x,y)为Fθ的目标函数。使用Lp范数来度量x和x’之间的相似度,定义为
(b)扰动算法
最近,已经提出了许多逃避攻击以生成对抗图像。但是,基于以下两个原因,这些方法不能直接应用于扰动验证码。
1)先前扰动图像的方法集中于分类模型,其预测包含所有标签的输入概率。然后,他们可以依靠这些置信度信息来生成对抗性示例,例如,增加目标标签的概率或降低地面真相标签的概率。相比之下,对于验证码,利用端到端模型,该模型使用解码步骤来计算输出。特别地,本文的方法利用CTC损失来预测给定标签序列的输入概率。因此,在本研究方法中,通过减少地面真相标签序列的CTC损失来生成对抗性验证码。
2)需要特别注意限制注入验证码的干扰的位置,以保持其高可用性。特别是, 使用掩码来控制要注入的扰动的位置,并且可以将扰动计算为
其中M∈R^(n×m)是一个二维矩阵,称为掩码,它确定需要将扰动注入到原始验证码的哪个区域。 M是一个二进制矩阵,如果Mi,j = 1,则只能将噪声注入到(i,j)的像素。可以轻松地选择适当的M(例如背景区域)来维持对抗验证码的可用性。 ϵ是一个常数,它控制所注入的扰动的总量。显然,较高的ϵ需要将更多的每个扰动添加到验证码中。此方法仅按照公式1一步计算对抗性扰动,因此被称为直接方法。
还考虑了生成对抗性验证码的迭代方法。该方法迭代地采取多个小步骤(如公式2中所示)来计算对抗性扰动,同时在每个步骤之后调整方向。与直接方法相比,迭代方法在相同的干扰水平下会导致更多的错误分类(即,从防御角度来看,更可靠的验证码)。
其中α是一个常数,用于控制每个步骤中注入的扰动量。对于包含s个步骤的迭代方法,迭代方法中的总扰动量为ϵ = s×α。在迭代方法中,默认步长s为10,默认扰动水平α为1/3的十分之一。
最后,为了生成更多的随机对抗验证码,本研究提出了一种混合方法将各种扰动注入到验证码图像中,其中
在算法1中展示混合方法的过程,简单地说首先随机选择k个蒙版。请注意,插入到同一区域的每个扰动可能会彼此冲突,因此,请确保这些多个掩码没有空间重叠。对于每个掩码,对抗扰动是通过不同的输入方法(直接和迭代方法)和参数设置(不同的距离度量和扰动级别)生成的。最后将这些扰动整合在一起,并将其注入到原始的验证码中。
4)查询攻击模型
接下来,需要向攻击者分发对抗性验证码并记录他们的答案。似乎矛盾的是,如果可以找出哪些用户是攻击者,可以简单地拒绝他们的访问,而不用发送验证码。研究强调:
1)此步骤是可选的,仅在需要微调替代模型时才执行;
2)在实践中,只能找出一小部分高信任度的攻击者。通过与这些高信任度的攻击者进行接触,可以提高对抗性验证码的安全性,并最终防御更多潜在的攻击者。现在,这里的主要挑战是识别攻击者。
不向要解决的商业服务提交对抗性验证码,因为不知道攻击者使用了哪些商业服务。相反,利用现有的用户风险分析系统来识别高可信度的攻击者。当需要判断用户操作时,前端Web会收集用户的行为信息和环境信息,并将其提交给后端的风险控制引擎。后续风险控制引擎将基于这些收集的信息的特征(例如鼠标移动,IP地址和Cookie)做出决策。它可以确定是阻止操作还是进行第二判断。除了用户环境信息和高频信息外,本研究的用户风险分析系统还更加关注用户行为信息,例如,鼠标滑动和页面停留时间,因此更难伪造,因此更可靠。
还值得注意的是,识别高可信度的攻击者可能不是实时过程。实际上,会将验证码发送给风险用户(包括高信任度和低信任度攻击者)。同时记录他们的答案和相应的特征,这些特征由风险分析系统收集。在部署几天(例如一周)后,专家可以进一步分析记录,以利用多种工具和域知识来识别高可信度攻击者,这样可以高精度地识别攻击者。最后,选择确定的攻击者提交的答案,并将其视为对攻击模型的查询。
5)微调替代模型
最后一步是微调替代模型,微调过程旨在使替代模型适合收集的查询数据,并保持原始验证码数据的准确性。因此,通过优化两个目标的加权和来制定多目标优化任务。
其中(xq,yq)是步骤3生成的查询数据,而(xo,yo)是步骤1使用的原始训练数据。θ是替代模型参数,例如权重和偏差。 L(·)是衡量分类误差的损失函数,在实验中是CTC损失。 λ是权衡新损失的查询数据和原始的验证码数据之间的权衡。在实验中,动态调整λ以确保可以正确识别合理比例的原始训练数据。使用Adamoptimizer有效地求解公式4。
请注意,为了提高微调过程的效率,通过对抗性验证码而不是普通验证码来查询攻击模型。原因如下。假设xq是查询过程中使用的验证码,y’=FΘ(xq)是xq替代模型的预测,而y’’是xq实际攻击模型的预测。在微调过程中,旨在使替代模型适合收集的查询数据。换句话说,利用y’和y’’之间的差异来更新替代模型。如果使用普通的验证码来查询攻击模型,则在大多数情况下,y′与y相同,因为攻击模型和替代模型对普通验证码的识别率都很高。因此,此类查询对于微调替代模型的信息较少。
相比之下,利用对抗性验证码来查询攻击模型,根据观察,攻击模型通常会生成不同的y’和y’’。因此,在相同数量的查询下,与普通验证码相比,使用对抗性验证码可以实现更好的模型拟合性能。
此外,尤其是当查询数据集中的标签偏离基准时,更新后的替代模型的准确性可能会降低。为了解决这个问题,在公式4中增加了保持原始训练数据准确性的第二个目标。在后文验证了微调过程的有效性,并显示了其针对各种攻击模型的鲁棒性。
0x04 Deployment and Evaluation Setup
1)应用平台
在大型国际商业平台上部署advCAPTCHA,为企业和个人用户提供广泛的服务。目前商业用户数量已超过100万,覆盖政府,消费者,航空,金融等领域,当前月活跃用户数量为8.24亿。
在线学习期间,为了控制风险,仅在合作公司提供的网站上进行实验。该网站是政府服务网站,可以从中查询一些公共信息(例如交通违章,驾驶执照等)。当用户登录帐户或查询信息时,他/她必须通过人机识别测试。从用户的角度来看,他/她首先需要滑动条,这类似于解锁手机屏幕。然后,用户风险分析系统将判断用户的风险水平,并确定是否向其发送验证码。此网站上部署的验证码方案是由四个字符组成的文本验证码,这些字符具有合并字符,而没有背景噪音。据该公司的域名专家称,该网站每天大约遭受100,000至1,000,000次攻击。
2)部署
在以下平台上部署advCAPTCHA:
1)合作公司通过其现有的验证码生成算法每周生成N个普通验证码,其中每个实验的评估中N = 100,000。
2)根据前文中的算法,利用替代模型从N个普通验证码中生成N个对抗性验证码。
3)当有身份验证请求时,即风险分析系统确定他/她是危险用户(包括高信任度和低信任度)时,会将对抗性验证码发送给用户。同时,记录他/她的相应特征并回答。
4)每周,领域专家都会介入并进一步分析存储的特征,以确认高可信度的攻击者。
5)当观察到攻击模型的更新时,例如,攻击的总体成功率急剧上升时,将使用高自信度者提出的答案来细化-调整本研究的替代模型。部署和评估的整个过程将持续9个月,请注意,只有这些高可信度攻击者提交的结果才可以用来衡量本文的对抗验证码的安全性。
3)评估设置
总体而言,在评估中使用了12种不同的验证码方案,其中有7种是合作公司提供的真实验证码方案,其他5种方案则来自开源软件。这些方案可以生成包含不同背景,不同长度和其他防御因素的验证码。在上图中显示了采用的方案生成的验证码示例。在训练阶段,使用所有12个验证码方案来训练替代模型,这可以使破解器更通用。在测试阶段(即在线学习)中,仅使用一种验证码方案(合作公司实际使用的验证码方案)来生成对抗性验证码,因为目标是保护部署在真实网站上的验证码方案。
0x05 Evaluation
在本节中,进行了大规模的在线经验研究,以评估advCAPTCHA的性能。首先,分析了在线实验中识别出的攻击者的行为。然后展示了advCAPTCHA的有效性,以及在不同模型参数和不同替代模型下的鲁棒性。
1)攻击者分析(高风险用户)
在验证码安全方案中,攻击者被定义为使用训练有素的ML模型或其他设计良好的自动手段来解决验证码的攻击者。因此,他们可能表现出与普通用户不同的行为。
不同的答案长度:当提供验证码解决方案服务时,验证码破解器通常接收从不同方案生成的验证码,例如,不同的字体样式,不同的背景以及具有不同长度的验证码。为了最大化利润,在实践中,验证码破解器通常会训练可用于攻击不同验证码方案的模型。因此,即使对于固定长度的验证码方案,这种模型也可能返回具有不同长度的答案。相比之下,对于人类提交的答案,无论正确与否,对应的字符长度很有可能是正确的,尤其是对于固定长度的验证码方案。因此,机器人和真实用户提交的答案的长度分布可能会有所不同。因此,在实验中:
1)利用替代模型生成对抗性验证码,
2)根据替代模型的预测选择10万个长度异常的对抗性验证码,
3)将这些对抗性验证码发送给攻击者和普通用户,
4)测量答案的长度。
结果如下图所示。观察到,有76%的攻击者提交的答案的长度不同于本研究的验证码方案所定义的四个,而只有2%的正常用户返回的长度不一样。这种现象还表明,当前攻击者开发的验证码破解器很可能是端到端模型,否则攻击者将为固定长度验证码方案返回相同长度的答案。
与对抗性验证码性能不同。机器学习模型容易受到对抗性示例的攻击,而相比之下,人类几乎不受影响(可以在对抗性示例的设计中确保这一点,因为它将对抗性/实用性纳入了交流计算)。在此实验中,首先利用替代模型生成100,000个对抗性验证码。根据替代模型的预测,将这些对抗性验证码分为两类。
1)字符验证码错误:只有一个字符与基本事实不同的验证码。例如2DUA被识别为2DUS。
2)错误答案的验证码:验证码的字符与基本事实不同,不只一个字符。例如,Agz3被识别为NGE3。
然后,将这些验证码发送给攻击者和普通用户,上图显示了攻击者和普通用户对对抗式验证码的识别错误率。观察到,与正常用户相比,攻击者更有可能错误地识别对抗性验证码。换句话说,攻击者更容易受到对抗性验证码的攻击。还观察到,普通用户对错误答案验证码的识别率高于对错误字符验证码的识别率。在仔细分析了不同设置中的验证码后,发现添加到错误字符验证码的基于L0的扰动将位于角色周围(如下图所示),这也可能会影响人类的识别。
相反,基于L∞的扰动不会影响人类的认知。这种观察促使研究者仔细分析算法中注入扰动的位置。在实际部署期间,更喜欢使用混合方法(同时使用L0和L∞距离来生成对抗性验证码)。向整个验证码注入基于L∞的扰动,而仅向背景注入基于L0的扰动。这样,倾向于生成高度可用和安全的对抗验证码。
上面的分析表明,攻击者的识别行为在一定程度上可与普通用户的识别行为区分开。
1)即使对于固定长度的验证码方案,攻击者提交的答案的长度也更有可能不同,这表明当前的攻击者可能会使用基于深度学习的破解器。
2)对抗性验证码往往会对攻击者的性能产生重大影响,而对正常用户几乎没有影响。
2)advCAPTCHA的有效性
扰动算法的影响:首先,距离度量Lp(它控制扰动的基本形状)和扰动水平ϵ(控制总扰动量)中,在不同算法参数下评估对抗验证码的性能。计算攻击者的成功率(SR)以量化其性能。对于距离度量,选择L0,L∞和混合方法(同时使用L0和L∞距离来生成对抗性验证码);请注意,L0和L∞是用于生成对抗性示例的通用距离度量。对于扰动级别,根据可用性研究,对于基于L∞的方法,选择ϵ = 0.1,0.2,0.3,对于基于L0的方法,选择ϵ = 25、50、100。本研究还考虑了直接和迭代的方法,该方法包含10个步骤,每个步骤的扰动水平α为1/3的十分之一(此设置与以下所有实验均一致)。请注意,在所有实验中都使用相同的掩码大小,这是验证码面积的四分之一。使用模型1作为替代模型,并在下图中显示相应的实验结果。
从上图有以下观察:
1)对抗性验证码可以有效降低攻击者的SR。当对L0距离使用ϵ = 100而对L∞距离使用ϵ = 0.3时,如果采用混合方法,则对抗式验证码的最低SR(降低至36%)发生,并且假定SR的SR由直接方法产生普通验证码的攻击者为76%。
2)扰动水平among是不同参数中最重要的因素。当扰动水平提高时,攻击者的SR明显下降。其他参数,例如距离度量,直接和迭代方法,对攻击模型的SR影响较小。尽管通过直接方法可以实现最佳性能,但是它不能总是优于迭代方法。
3)混合方法将不同的扰动整合到验证码中,可以提高对抗性验证码的安全性。观察到,与仅向验证码中注入L∞或L0扰动相比,将基于L∞和基于L0的扰动注入验证码的混合方法平均可以减少8%的SR。一个可能的原因是,混合方法可以在黑盒方案中利用基于L∞和基于L0的方法的优势。
从下图,有以下观察:
1)模型结构不是影响对抗式验证码性能的重要因素。没有替代模型始终可以保持比其他模型更好的结果。一个潜在的原因是,解决基于文本的验证码并不复杂,因此简单的模型结构(如LeNet)足够强大。在随后的实验中,为方便起见,仍将模型1作为替代模型。
2)训练数据对于对抗验证码的安全性很重要。与第一和第二类型的训练数据(仅目标验证码方案和所有真实的验证码方案)相比,当使用第三种类型的训练数据(所有真实和合成验证码方案)来训练替代模型时,对抗性验证码的安全性得到了显着改善(与上图中的最佳结果相比,攻击模型的SR降低了10%到20%)。这表明使用混合训练数据来训练替代模型可以提高对抗性验证码的安全性。可能的原因是,攻击者可能针对各种验证码方案训练其攻击模型。换句话说,攻击者使用的训练数据也是混合训练数据。结果,通过使用不同的验证码方案生成的验证码训练的模型将与攻击模型更加一致。
改进对抗示例与改进对抗验证码:动量法可以在相同扰动水平下提高对抗性实例的可传递性,即从防御角度提高对抗性验证码的安全性。因此,进一步评估对抗性验证码生成中的动量方法。但是,从前图中,发现动量法的性能与先前的经验不一致。在验证码生成中使用动量方法后,在某些情况下无法提高生成的验证码的安全性。从图中可以看到,在低扰动水平下(例如,对于L0,ϵ = 25,对于L∞,ϵ = 0.1),动量法可以降低攻击模型的SR。相比之下,在高扰动水平下(例如,L0 = 100,L∞= 0.3),动量法增加了攻击模型的SR,这表明动量法甚至可能产生负面影响。一个可能的原因是对抗性例子生成和对抗性例子生成之间的差异。与生成注入人类不可察觉的扰动的对抗示例相比,本研究通过注入人类可容忍的扰动并控制注入扰动的区域来生成对抗性验证码。因此,期望研究提高对抗性的质量的专用方法。
3)微调替代模型的影响
现在评估通过攻击模型的查询来微调替代模型是否可以提高对抗性的安全性,使用模型1作为替代模型,其训练数据由所有真实和合成的验证码方案生成。在实验中,首先利用替代模型生成100,000个对抗性验证码。然后,将这些对抗性验证码发送给已识别出的攻击者,并收集他们的答案,这些答案将被进一步利用以找到调整替代模型,生成相应的对抗性验证码并再次发送给已识别出的攻击者以进行评估。
在对模型进行微调之后,观察到攻击者的SR进一步降低到了12%(相比之下,根据前图进行微调之前的SR为17%)。这表明模型提取技术和微调可以有效地改进替代模型,使其与攻击者模型更加相似,从而提高了生成的对抗验证码的安全性。此外,当攻击者更新其攻击模型时,微调替代模型将发挥更大的作用。因此,微调过程可以为对抗验证码提供强大的适应性,以应对攻击模型的更新。
4)可用性分析
最后,进行实验以评估advCAPTCHA在实际应用中的可用性。在实验中,设置了五组对抗性验证码。
1)使用不带掩码的L0方法生成的验证码,将L0扰动注入到验证码中,并且掩码的大小为完整的验证码区域。注意,掩码用于限制注入的扰动的面积,并且掩码的完整验证码面积意味着对注入的扰动没有限制。
2)使用没有掩码的L∞方法生成的验证码,其中将L∞扰动注入到验证码中,并且掩码的大小为完整的验证码区域。
3)使用L0方法生成的验证码,其中将L0扰动注入到验证码中,并且掩码的大小为验证码面积的四分之一。
4)使用L∞方法生成的验证码,其中将L∞扰动注入到验证码中,并且掩码的大小为验证码面积的四分之一。
5)使用混合方法生成的验证码,其中将每个扰动的L0和L∞都注入到验证码中,每个掩码的大小为验证码面积的八分之一。
然后,将这些验证码发送给普通组,并收集它们的答案以及解决每个验证码所花费的时间。在表下中显示了收集的数据,分别包括完成相应验证码的所有用户的平均成功概率,平均时间消耗和中值时间消耗。
从上表中,观察到:
1)扰动算法中的掩码对于保持对抗性验证码的可用性非常有帮助。在对抗性验证码生成中不使用掩码的情况下,人在识别对抗性验证码时的SR明显低于普通验证码,特别是在高扰动水平下。相比之下,如果通过掩码限制扰动的位置,则在识别对抗性验证码时,人类的SR与普通验证码相似。
2)将各种干扰注入验证码的混合方法几乎不会对人类识别产生负面影响。
3)在实践中,对于保持对抗性验证码的可用性,对于L∞而言,ϵ≤0.3和对于L0而言ϵ≤100是很好的选择。这些选定的值在平衡普通用户的SR和攻击者的SR方面也显示出良好的性能(如下图所示)。在此范围内,普通用户的SR降低的速度要比攻击者的SR缓慢得多。因此,在实验中考虑L∞的ϵ≤0.3和L0的ϵ≤100。
与在现实世界中招募的志愿者参与者一起评估advCAPTCHA会很有趣,但这可能会导致其他限制。例如,与实验中的在线测试相比,用户规模要小得多。另一个挑战在于参与者的选择,以防止由于人口统计而造成的偏见。因此遵循最佳实践评估方式,选择进行在线实验以评估advCAPTCHA的可用性。
总之,根据评估,由advCAPTCHA生成的对抗性验证码具有与普通相似的可用性。结合前文中对advCAPTCHA的安全性评估,它们共同证明advCAPTCHA可以抵抗基于ML的攻击,同时又能保持对人类的高度可用性。
0x06 Further Anaysis of The Fine-Tuning Process
在本节中,通过脱机实验进一步分析advCAPTCHA的微调过程,包括攻击模型更新后的安全分析,防御不同攻击模型的鲁棒性,人工在查询过程中的影响以及影响微调参数。使用模型1作为基准替代模型并使用模型4作为默认攻击来分析advCAPTCHA的最坏情况性能,因为它们在结构上存在最大差异。为了与前文中的实验一致,使用混合方法生成对抗性验证码,该方法注入s = 100的L0扰动和ϵ = 0.3的L∞扰动。
1)攻击模型更新后的安全性分析
首先,研究了advCAPTCHA在攻击模型更新下的微调过程。具体来说,比较了原始替代模型和微调替代模型生成的对抗验证码的安全性。在实验中,通过使用100,000个对抗式验证码和相应的标签来重新训练攻击模型,以模拟验证码解决方案服务更新其攻击模型的过程(假设攻击者使用人工或其他方式获得了对抗验证码的真实标签)。然后查询重新训练的攻击模型(通过向其发送100,000个对抗验证码)并使用查询结果(攻击模型提交的答案)对替代模型进行微调。最后,分别利用原始的替代模型和微调的替代模型来生成对抗性验证码并测量攻击模型的相应SR。
观察到当使用100,000个对抗性验证码来重新训练攻击模型时,攻击模型的SR从7%增加到43%。在根据攻击模型提交的100,000个答案对替代模型进行了微调之后,其SR降低到了13%。这些观察结果表明advCAPTCHA可以自适应地防御攻击模型的更新。实际上,可以定期(例如每周一次)或在观察到总体SR大幅增加时微调验证码生成模型。
接下来,进行五轮攻击模型更新,以进一步衡量对抗性验证码的安全性。每轮都遵循上面列出的相同设置,即使用100,000个对抗性验证码来重新训练和查询攻击模型。每轮更新后,都会获得一个新的微调模型。上图显示了对抗式验证码的攻击模型的SR,这些SR是在不同的攻击模型更新轮次时由微调的替代模型生成的。从图中可以看出,攻击模型的SR随着攻击模型更新次数的增加而缓慢增长。该观察结果表明,随着攻击模型的更新,对抗性验证码的安全性不会迅速降低。考虑到攻击者升级模型所需的实际时间和成本,对抗性验证码可以大大提高原始验证码方案的安全性和生命力。
2)advCAPTCHA在防御各种攻击模型时的鲁棒性
在实践中,可能存在多种同时破坏验证码的攻击模型。在这里,考虑了多种攻击模型(上表中所示的普通验证码具有相应的SR的模型2、3、4、5、6)。在查询过程中,对五个攻击模型中的每一个进行相同次数的查询(即,向他们发送相同数量的对抗性验证码),范围从10K到100K。下图显示了advCAPTCHA在五种不同攻击模型下的性能,观察到:
1)所有攻击模型的SR都在[41%,46%]之内,这表明advCAPTCHA可以防御各种攻击模型;
2)微调过程仍然可以有效降低所有攻击模型的SR(跨模型平均从43%降低到23%)。
还观察到,在多个攻击模型下,SR的降级小于单个攻击模型的降级。特别是,对于100,000个查询回合,在单一模型攻击下的SR为13%,在五个模型攻击下的SR为23%。由于使用单个替代模型来适应多个不同的攻击模型更加困难,因此此结果在预期之内。
3)查询中人为回答的影响
流程在查询过程中,使用风险分析系统来识别攻击者。但是,从确定的攻击者那里收集的查询可能包含人为提交的结果,这可能是由风险分析系统的误报引起的。在这里调查这些人类答案是否会影响微调过程。
对抗性验证码旨在防御自动匹配,但仍可以被人类正确识别。因此,人类提交的答案通常是正确的。因此,为了模拟人类的答案,将攻击模型的查询答案更改为正确的验证码。具体来说,在实验中首先使用对抗性验证码来查询攻击模型并从中获得答案。然后,以不同的比例(例如0%,10%,20%,…,100%)将查询答案修改为正确的答案。在这里,不同的比例对应于所有查询中不同数量的人类答案。接下来,使用修改后的查询数据来对替代模型进行微调。最后,利用微调的替代模型来生成对抗性验证码,并测量攻击模型的SR。
上图显示了查询中的人工答案如何影响对抗性验证码的性能,可以观察到:
1)查询中少量的人类答案对模型微调没有影响。当人类回答的比例≤20%时,攻击模型的SR会略有增加。此外,如果人类回答的比例≤30%,可以查询更多次以获得与没有人类回答的性能类似的性能;
2)随着人类回答比例的增加,攻击模型的SR也会增加。但是,即使在人类回答的比例很高的情况下,SR也类似于没有进行微调的情况。
这些结果表明advCAPTCHA在查询过程中可以抵抗人工回答。原因之一是,在微调过程中,确保了其原始训练数据的模型准确性(请公式4),这可以防止替代模型偏离正确的方向。在下面的实验中,进一步分析了公式4中的参数对微调过程的影响。
4)不同λ下的性能
为了更好地说明第二项L(θ,xo,yo)在微调目标函数中的作用(公式4),进行了一项实验,以研究在各种λ值下的微调性能。具体来说,假设查询总数为100,000,将在不同的λ值和不同比例的人类提交答案下微调替代模型,在下表中显示了相应的结果。
从上表,有以下观察。首先,当人工仅提交0%或10%的答案时,微调目标函数中的第二项可以防止模型精度对原始数据的降低,同时可以降低攻击模型的SR 。其次,选择合适的λ值很重要。较大的λ值很容易使模型在微调过程中过于关注原始训练数据,而不是拟合攻击模型。在实践中,根据经验发现动态调整其值,以使原始训练数据上的模型准确性达到90%左右,可以在拟合攻击模型和防止模型崩溃之间取得良好的折衷。
5)验证码在查询过程中的影响
根据前文分析,知道使用对抗性验证码(而不是普通验证码)可以加快微调过程。在这里,使用经验评估进一步验证了这一结论。在实验中,首先将普通验证码和对抗验证码分别发送到攻击模型。对于每种类型的验证码,验证码的数量从10K到100K。然后,分别使用对应于普通验证码和对抗验证码的答案来微调替代模型,并获得两个新的替代模型。最后,利用两个经过微调的替代模型来防御攻击模型,从而生成对抗性验证码。下图显示了攻击模型的SR与查询数量之间的关系。观察到,当微调替代模型时,使用普通的验证码需要更多查询(大约10次)才能获得与对抗验证码相似的性能。这是因为攻击模型和替代模型都具有很高的普通验证码识别率。对于验证码,如果查询结果(针对验证码的攻击模型的输出)与替代模型的输出相似,则对于微调替代模型的信息量较小。因此,建议在微调过程中利用对抗性。
0x07 Discussion and Limitation
在网站的日常运营中,由于可以通过风险分析系统相对轻松地阻止对跟踪者的高信任度,因此制定了开发advCAPTCHA的目标,以防御低信任度的攻击者。当然,在实践中不可能获得攻击者的完美标准。因此,在部署和评估中,为了使实验和结果更具说服力,将按照最佳实践的方式,利用高可信度的攻击者来评估advCAPTCHA的安全性增强,即在评估期,在直接屏蔽它们之前,利用它们首先评估advCAPTCHA。此外,在实验中,领域专家也手动确认了这些高级别攻击者。因此,在某种程度上,可以将高自信的攻击者视为已知的攻击者。有理由相信本研究的实验结果可以反映advCAPTCHA在实际攻击下的性能。
要强调advCAPTCHA的通用性,以及它相对于现有作品的优势。 advCAPTCHA和其他验证码方案没有竞争,但却是互补的。对抗性验证码的主要目标是增加计算机识别的难度。因此,可以将advCAPTCHA扩展为执行类似识别任务的验证码方案,例如图像验证码。具体而言,将advCAPTCHA通用化为其他验证码方案有两个步骤:
1)用可以识别目标验证码方案的模型(例如,用于识别图像验证码的CNN)替换替代模型(CRNN模型)。
2)设计适当的扰动机制,以将噪声注入目标验证码图像。实际上,已针对基于点击的验证码方案实施了对advCAPTCHA的附加评估,其中要求用户根据提示单击图片中的单词。由于篇幅所限,不在本文中包括此设计。实验结果也验证了在这种情况下advCAPTCHA的有效性,这进一步证明了其在各种验证码生成方案和应用方案中的通用性。
advCAPTCHA也是对用户风险分析系统(例如Google noCaptcha)的潜在增强。这种流行的验证码方案可以提供出色的用户体验,因为在大多数情况下,正常用户的操作不会受到干扰。但是,与传统的验证码相比,整个系统的安全性并未得到改善,因为攻击者可以在第一阶段简单地忽略风险分析,而仅在第二阶段专注于验证码的解决。在这种情况下,advCAPTCHA可以通过动态生成对抗性验证码来降低验证码破解器的性能。
验证码方案的普通版本可能会影响advCAPTCHA的可用性。普通用户的advCAPTCHA的故障率在很大程度上取决于验证码方案本身的普通版本。因此,advCAPTCHA如果设计不佳,则无法增强验证码方案。此外,类似于执行识别任务的许多其他验证码方案,advCAPTCHA无法抵御雇用人类用户的验证码解决方案服务,认为这是可以接受的,因为验证码旨在被人类认可。
0x08 Conclusion
在本文中提出advCAPTCHA的设计和评估,这是在国际电子商务平台上首次大规模部署对抗性验证码,以防御基于ML的验证码解决方案攻击者。 advCAPTCHA填补了对抗性验证码的科学创新与其在实际应用中的采用之间的空白。 具体来说,本研究提出了新颖的扰动方法来生成对抗性验证码,从而降低了验证码破解器的性能。 进一步结合了模型提取的思想,以使本文的替代模型适合实际的攻击模型。 在观察到攻击者模型的更新后,该策略可以自动调整防御系统。 现实世界平台上的大量实验证明了advCAPTCHA的有效性,它可以大大降低实际攻击者的成功率。