论文题目:Yet Another Text Captcha Solver A Generative Adversarial Network Based Approach算法
论文原做者:GuixinYe,ZhanyongTang∗,DingyiFang,ZhanxingZhu,YansongFeng, Pengfei Xu, Xiaojiang Chen, and Zheng Wang安全
原文会议或期刊: CCS’18, October 15-19, 2018, Toronto, ON, Canada微信
原文连接:https://dl.acm.org/citation.cfm?doid=3243734.3243754网络
原文主要内容:基于生成对抗网络方法,构建了一个合成验证码的模型和一个消除验证码干扰特征的模型,利用CNN(扩展的LeNet-5方法)识别消除干扰特征的验证码,最终实现验证码识别准确率的较大提高框架
做者:苦瓜@DAS机器学习
某晚师兄在群里转发了一篇微信文章,介绍我国西北大学教授在验证码识别领域的研究成果,因其在验证码识别领域有较大突破,论文发表在ACM CCS-18上,并得到了最佳论文提名,甚至被国外一些媒体进行了报道,文章写道:“该项研究比2017年发表在Science上的研究成果平均高出20%”。当时我就震惊了,这么🐮🍺的🐎?因而花了两天时间读完了这篇文章,发现:💉💧🐮🍺!ide
原文做者(如下均简称做者)在摘要部分开门见山,指出此次的识别模型与前人工做不一样,不须要人工收集大量数据并打标签,使用极小的数据集就能达到很是好的表现,并且一块桌面级的GPU便可在0.05s之内准确秒杀文本验证码,最后但愿做者的研究结果能激励社会从新设计和实施文本验证码策略。学习
然后做者在引言(Introuduction)部分主要介绍了字体
本次使用的验证码来源——Alexa评出的2018年最受欢迎的50个网站中的32个使用文本验证码的网站,这些网站有不一样的验证码安全方案。网站
在引言的最后,做者写到,咱们这篇paper也没干什么别的,大概三件事:
第一个,首次使用生成对抗网络方法自动生成训练数据,构建文本验证码求解器(Text-Based Solvers)
第二个,首次应用迁移学习训练文本验证码求解器
第三个,提供一种新的看法——文本验证码的安全特征(例如波浪文字、横线和文字重叠等各类干扰)在深度学习方法面前很是脆弱。
做者在引言后写了背景介绍,篇幅极短,主要介绍文中使用的六种被广泛使用的验证码安全策略(如图2-1)和生成对抗网络是什么(后文将详细举例说明,这里不累述)。
然后便直接开始介绍文章的重点,整个模型的构建和每一个部分的详细状况。固然做者很是了解咱们想看到什么,因此将模型的大概框架和每一个模块都作了精美的图用以解释,而我我的也作了一些图更清楚的介绍每一个模块的输入和输出,以便读者理清做者的模型先后关系。
② 用合成的验证码和干净的验证码训练预处理模型,这个模型最终效果是输入带有安全特征的验证码图片,输出一个自动去除了安全特征并标准化字体样式后的“干净验证码”。
③ 将合成验证码输入到训练好的预处理模型,产生大量”干净验证码“用于训练基础求解器
④ 将真实验证码输入到训练好的预处理模型,产生少许”干净验证码”,经过迁移学习微调基础求解器,获得最终的微调求解器。
看完整个得到求解器的过程后,也许你会有不少疑问,验证码合成器是怎么作到生成与真实验证码极其类似的图片的?,验证码合成器生成的干净验证码和预处理模型输出的干净验证码有什么区别,为何要用迁移学习微调一次,不用行吗?接下来让咱们详细解析各个模型,解开这些疑惑,看看做者的idea究竟有多巧妙
还记得咱们以前动机里面提到了Science也有验证码领域的文章吗,做者在原文中简述道:science的文章展现出,构建一个基于CNN的有效验证码求解器须要超过230万张不一样的验证码,但对于这么大的数据集,收集数据和打标签工做是很是耗费人力的工程,因此咱们提出了一种最小化人力投入的方法——验证码合成器,让机器自动合成百万级数量的验证码,还都带有标签。
根据做者的描述和原文图片,我作了一个更有容易理解先后关系的图片(如图2-3所示)
这里从原文中截取一个样例,展现验证码合成器的强大威力。
图2-4中,每组对比图的左边是真实验证码图片,右边是合成图片。
前面的验证码合成器,已是一个很是不错的idea,做者立马又拿出一个一样厉害的武器——基于生成对抗网络的预处理模型,目标是去除合成图片的安全特征,让其回归到便于机器学习方法识别出文字的图片。预处理模型具体流程以下图所示(图片来源于论文原文)
生成网络:右下方蓝色部分,采用Pix2Pix图片转化框架(一种能够将图片样式进行的算法),目标是去除合成验证码的噪音、横线等,而且将字体标准化(例如将中空的字体填满,将文字间距拉大等),使之于彻底干净验证码类似。因此生成网络的输入是一个带有安全特征的验证码图片,输出是一个被去除了安全特征的验证码图片,例如图中的安全验证码被去除了一些横线和下方的可爱小熊图案。
当终止条件达成后,就要进入验证码求解器,须要强调的是,全部验证码图片输入到验证码求解器前,都要通过预处理模型,去掉其安全特征,提升识别准确率。
注意:训练预处理模型这一步很是重要,是论文模型最终能吊打其余验证码识别模型的一个关键点。
所谓验证码求解器(Captcha Solvers),意思就是输入验证码图片获得其中文本的模型。这里继续使用原文精美的图片来介绍。
求解器使用LeNet-5模型进行构建,LeNet-5是一种经典的CNN模型,做者通过实验对比发如今目前的实验条件下,其余算法的效果与之差距不大,但LeNet-5简单高效,而且在迁移学习时对数据集大小的要求最低。
(a)步骤——训练基础求解器
将大量的合成图片通过预处理模型的处理后,去除了安全特征,再输入到基础求解器进行训练。
这一部分使用了20万张合成验证码图片,由于每张合成验证码图片在合成时便可自动设置标签,因此极大的减小的人力投入,另外加强了整个模型的自动化实现能力。
(b)步骤——迁移学习
做者在基础求解器训练完成后,考虑到基础求解器的训练数据所有来自于合成图片,容易对合成图片的特征过拟合,另外迁移学习对LeNet-5模型后部分进行训练,能够提升模型的实施效果
原文引用参考文献指出: The idea of transfer learning is that in neural network classification, information learned at the early layers of neural networks (i.e.closer to the input layer) will be useful for multiple classification tasks. The later the network layers are, the more specialized the layers become.
文章的实验部分也提供数据进一步证实,微调参数后,对模型的识别准确率有较大的提高。
到这里文章的模型详情就介绍完毕了,下面给一张图示例做者的模式识别验证码的完整过程
以前也提到了,做者的实验对象是Alexa评出的2018年最受欢迎的50个网站中的32个,而这32个网站中有些网站使用了相同的验证码方案(例如Youtube使用Google的安全验证码方案,Live、Office和Bing使用的是Microsoft的安全验证码方案),因此不须要重复实验,而各类验证码方案又又不一样的字符集,因此做者整理数据后分别作了实验。先展现一下做者的模型在各类安全验证码上的识别准确率和耗时,如图3-1。
可见微调后,模型的识别准确率有较大的提高,且用时极低,如前面所言0.05s之内完成识别工做。那么咱们再来看看这些验证码方案大概是什么样子的,以及验证码求解器犯的错误(如图3-2所示)。
其实做者给出这张图的意思是想说,他们设计的模型已经很是优秀了,这些识别错误的地方其实对人而言识别起来也是比较困难的。
做者主要从验证码识别准确率和验证码安全特征去除效果两个方面与前人的成果进行了对比
这里与四个前人研究成果进行了对比,第一种是2011年发表在CCS,第二个是2016年发表在NDSS,第三个是2014年发表在USENIX WOOT,第四个是2017年发表在science,在下方表格中的顺序依次为左上、右上、左下、右下。
从图中能够看出做者的研究成果,相对于前人的方法有很是大的提高,在后面的实验种,做者这套识别模型甚至与人的识别准确率不相上下。
其实去除验证码的安全特征的想法并非做者独创,但做者的预处理模型实现了更好的去除效果,而去掉安全特征后,深度学习算法会更容易的识别出图片种的文字,所以在最终的识别准确率上相对于其余模型会有有较大提高。图3-4和3-5展现了做者与其余去除安全特征模型的对比,图3-6展现了预处理模型去除安全特征和标准化字体的效果。
(a)是百度验证码方案的真实图片,(b)(c)(d)是不一样设置下的安全特征过滤方案输出效果,(e)是预处理模型的输出,这里差距明显。
图3-5是预处理模型与文献[16]的模型除去安全特征的对比。图3-6则是是单独列出的一些预处理模型的处理效果,其中每个组对比图的左边是合成验证码图片,右边是预处理模型去除安全特征后的验证码图片。能够明显看出,做者的预处理模型不光可以准确地消除安全特征,还能填充中空的文字,而且还有为各个字符增长间隔的能力。
这一小节主要介绍实验思路,展现做者对本身的模型进行了哪些参数和阈值的思考。
做者对这三个问题分别进行了实验,得出了相应的结果,500张图片、从第二个卷积层到最后进行微调、阈值为5%是最佳选择。而安全特征越多,验证码就越难以识别,但另外一方面,验证码的可用性也会下降。
图3-10可见,虽然验证码安全特征变复杂能够下降模式的识别准确率,但验证码的可用性明显下降。
上一小节中,做者的实验已经证实:安全特征越复杂,模型的的识别准确率会下降,但另外一方面,验证码越复杂,它看起来彷佛越不可用。做者指出,验证码应该被设计成能让人轻松识别但机器却很是困难。因而做者作了以下实验,探索可用性和安全性的平衡点,实验设置每张图人最多可用观察30秒,机器则只识别一次,而人观察后还须要对每张图得可用性进行评分,分值区间为1-5。
从图中可见,做者的识别模型在准确率上几乎与人得识别准确率相差无几,只有当安全特征变得复杂时二者才有必定差距,但此时验证码也变得对用户不友好。
做者将相关工做介绍、讨论和总结都放在了实验部分的后面,通常来讲相关工做的介绍都是放在引言以后,而文章结构这样设计的缘由估计也是想尽快让读者了解到他们的模型是如何构建的,进一步引导出模型的设计有哪些思考。
文章的书写仍是很流畅的,最关键的是提出了三个很是好的想法
虽然我也不熟悉验证码攻击领域的研究现状,但做者的idea、实验设计、文章的书写和精美简洁的示例图片都是很是棒的,特别是原文中的图片,真的是制做精美,便于读图理解。
文章的一些小瑕疵可能在于写做的逻辑,例如在介绍生成对抗网络模型设计时,讲述完模型的设计后立马指出了最终效果,但以后却在介绍模型迭代的终止条件是什么,感受逻辑不太对劲。
整体而言,文章提出的验证码攻击模型自动化部署方便,验证码识别准确率高,针对具体的某种验证码方案有极大杀伤力(例如,结合爬虫对验证码不断识别,由于耗时较短,计算代价也相对较小,因此可用对某些网站实施撞库攻击等)