基于迭代对抗生成框架的抗非分割式文本验证码技术

2020-11-26 01:36杜瑞颖1b
关键词:攻击者正确率卷积

马 巍, 蓝 海, 杜瑞颖,1b*, 何 琨,3, 陈 晶,3

(1. 武汉大学 a.国家网络安全学院; b.地球空间信息技术协同创新中心,湖北 武汉 430072; 2. 武汉烽火信息集成技术有限公司, 湖北 武汉 430072; 3.武汉大学 深圳研究院,广东 深圳 518000)

验证码(CAPTCHA)作为一种图灵测试,其目标在于全自动地区分人与机器,实现基础在于构建一种对于人来说很容易,但对于机器却很难解决的问题.验证码能够在面对自动爬虫、DDOS等攻击行为,或者浪费服务器资源的恶意行为时,对服务器起到重要的保护作用.验证码在国内外主流的实现方案主要有:文本验证码[1]、图像验证码、游戏验证码[2]、声音验证码[3]及视频验证码等.其中,文本验证码因其实现简单,被广泛应用于各大网站.

自验证码诞生之日起,验证码自动识别技术就相伴而生.验证码自动识别技术是指攻击者通过机器程序自动识别出答案,从而绕开了人机检测.以Alexa流量排名网站Top4(2019.11)的百度为例,百度采用了手机验证和文本验证码相结合的方式进行人机验证登录.现有的文本验证码通常是与其他方法相结合,共同保护网站免受攻击.因此,如何提高文本验证码的防御能力,从而降低攻击者的识别正确率具有重要的研究价值,同时也可以为其他的防御方法提供改进参考.

通常来说,文本验证码的自动识别技术可以根据是否借助分割帮助识别分为两类:分割识别技术和非分割识别技术.分割识别技术往往将包含多个字符的验证码图像分割成仅包含单个字符的图像,再对单个字符图像分别进行识别,由每个字符图像的识别结果组合成最终的识别结果[4-6].然而,随着时间的不断发展,以往只针对某一种特定验证码的分割识别算法,在泛用性上逐渐不能满足攻击要求[7],取而代之的是非分割识别算法[8-10].非分割识别算法是基于动态规划或者卷积神经网络.动态规划算法识别简单清晰的验证码效果较好,一旦验证码背景复杂,滤波效果将会比较差.基于卷积神经网络的非分割识别算法则是将整个验证码图像输入至网络中,由网络对验证码图像进行特征提取和降维,并由卷积神经网络直接给出答案[9].基于卷积神经网络的非分割识别算法不要求验证码背景干净、清晰,能够广泛地应用于各类文本验证码中,不仅在泛用性上优于分割识别算法和基于动态规划的非分割识别算法,在识别正确率上也优于上述两者[8].

为了抵御非分割式识别技术,vultr(1)vultr:https:∥www.vultr.com网站针对基于动态规划的非分割识别算法设计了一种具备复杂背景线条的文本验证码,使其难以进行滤波操作,可以达到降低基于动态规划的非分割识别算法识别正确率的目的,然而该文本验证码无法抵抗基于卷积神经网络的非分割识别.因此,基于卷积神经网络的非分割识别技术更值得关注.文献[11]针对基于卷积神经网络的非分割识别技术,提出了一种对抗样本生成算法,该算法的敌手模型是滤波去噪攻击,所生成的对抗样本对抗能力不足,能够欺骗的卷积神经网络种类受到限制,难以应用于攻击者可能采用的任意一种主流卷积神经网络的文本验证码场景中.目前,文本验证码需要一套针对多种主流卷积神经网络非分割识别技术的防御框架,以加强文本验证码的防御体系[12].实现这样一套文本验证码防御框架的挑战在于:现有的相关工作中,对抗样本的对抗效果没有充分考虑到攻击者的能力.在文本验证码场景中,攻击者和防御者各自的模型一定是私有的,拥有的数据集也往往独立,攻击者可能采用任意一种主流卷积神经网络,而防御者不可能知晓攻击者所拥有的攻击模型及其具体参数,因此防御方案需要充分考虑攻击者的能力,所生成的对抗验证码需要能够欺骗多种主流卷积神经网络.由于相关工作中的对抗样本生成算法的敌手模型能力受到限制,生成的对抗样本对抗能力较弱,难以在文本验证码领域起到较好的防御效果,因而防御框架不能简单地采用对抗样本生成算法,而是需要建立对抗文本验证码的生成框架,充分考量攻击者的攻击能力,在框架下生成的对抗验证码必须具备较强的对抗能力[13],能够大幅度降低多种主流卷积神经网络识别的准确率[14-15],且对抗验证码不能显著降低用户可用性.

根据现有防御方案存在的不足,本文的贡献在于:①不同于相关工作中简单的利用对抗样本生成算法,本文提出了一套迭代对抗生成式抗非分割识别的防御框架,通过框架中模块之间的对抗模拟攻击者与防御者之间的对抗,该防御框架采用多个主流卷积神经网络作为判别模块的子模块,强化判别模块作为攻击者的判别能力,并将判别模块的输出作为反馈,迭代调整生成模块所输出的对抗噪声,最后将噪声附加在原始验证码上,使最终生成的对抗验证码能够误导多种卷积神经网络的非分割识别[16-19].②考虑到攻击者可能采用对抗训练的方式来提高针对对抗验证码的识别效果,本文分别从攻击者和防御者角度出发,为其设计了攻防策略,进一步强化了攻击者的攻击能力.经过实验测试,不管攻击者是否采用相应的策略,在文本验证码领域,这种防御框架都能够应用于各种原始验证码,生成的对抗验证码能够降低多种主流卷积神经网络非分割识别正确率的80%~90%,并且经过用户调研,对用户识别影响较小.

1 相关工作

1.1 分割识别算法及其防御方案

分割识别算法基于一种思想,即文本验证码的健壮性是基于找寻字符位置的困难而非识别字符[5].因此,该类算法利用分割找寻字符的位置以简化识别过程,提高识别正确率.文献[20]针对一系列包含了空心字符的验证进行分割识别,利用9个连续的步骤对空心字符进行处理,然后利用分割,针对每个字符进行识别,这种分割识别方案能高效地识别一系列包含空心字符的文本验证码,但同样无法应用于其他验证码.文献[4]提出了一种基于强化学习的分割识别算法,这种算法能够经由人工训练,对验证码的分割方式进行搜索,选择合适的方式进行分割,从而较好地分割一系列文本验证码,泛化能力相对较强.但文献[4]仍然存在不足,在面对存在字符重叠超过5个像素的文本验证码时,分割效果就很差了,同时该方案需要大量的人工训练,且运行的时间复杂度较高.

分割识别的防御方案往往是在某种分割攻击手段提出之后,验证码随之做出的一定的防御调整.例如,当微软设计的一种验证码被攻破后[21],随后设计了一种双层验证码以提高防御能力[22-23].文献[23]中提出了一种基于数像素数的验证码分割识别攻击手段,随后,网站设计的验证码防御方案中便提出了随机化字符大小,以抵御这种攻击手段.在分割识别攻击方法[4]被提出后,验证码防御方案提出了将字符扭曲、重叠,以对抗分割识别.主流的分割算法防御方案是字符缩放、扭曲、重叠以及为验证码添加复杂背景,以起到阻止分割的效果,降低识别正确率.

1.2 非分割识别算法及其防御方案

针对分割识别算法泛用性能力的不足,非分割识别算法应运而生.非分割识别算法往往基于动态规划或者卷积神经网络.以文献[8]为代表的动态规划算法,通过Log-Gabor滤波器将验证码图像分成四个方向上的子图像,再利用动态规划算法,对子图像进行组合识别,这种方法识别简单清晰的验证码效果较好,一旦验证码背景复杂,滤波效果将会比较差.卷积神经网络非分割识别算法则不同,文献[9]利用卷积神经网络中经典的LeNet-5模型识别文本验证码,这种方法不需要分割验证码,减少了预处理的过程,同时提高了识别正确率,缺点是因为深度学习模型中存在大量参数,需要巨大的训练集对模型进行训练.文献[24]针对卷积神经网络所需训练集巨大的问题,提出了一种利用对抗网络生成仿制验证码用于训练识别器的过程,这种方案仅需要很少的原始验证码即可生成大量的仿制验证码,用于LeNet-5的训练,减少了人工参与,同时能够起到一定的去噪效果,正确率较高.上述所有的非分割识别方案均是基于卷积神经网络,因此,依然存在卷积神经网络的对抗样本问题.

以文献[11]为代表的验证码非分割识别防御算法,提出了一种利用对抗样本的IAN方法,该方法能够在图像中生成难以被滤波方法去除的对抗噪声,并在MINIST和ILSVRC-2012数据集上进行了测试.该方案的敌手模型为滤波去噪攻击,所生成的对抗样本抗去噪能力强,但对抗能力稍有欠缺,能够欺骗的卷积神经网络种类有限,因此,在文本验证码防御上的应用效果不佳.

2 抗卷积神经网络非分割识别的对抗验证码

在介绍如何生成抗卷积神经网络非分割识别的对抗验证码之前,首先介绍卷积神经网络非分割识别算法.

2.1 卷积神经网络非分割识别算法

目前,主流验证码的正确结果一般包含4~6个大小写字母和数字.当且仅当所有出现在验证码图像上的字符和数字被识别出来,并按照顺序输出时,结果才算正确.因为验证码的结果受到限制,包含且仅包含字母和数字,令结果集合大小为N,则N≤65(10个数字、26个小写字母和26个大写字母),所以目前的识别方案会将字母和数字进行编码1~N,模型会生成一维的、包含N个元素的数组.卷积神经网络利用卷积层对文本验证码进行特征提取和降维,经过全连接层输出结果Y,则Y=(y1;y2;…;yN),其中,yi按照字符编码代表对应字符的预测概率P(character),结果取最大值即ypredict=max(Y)所对应的字符.

如图1所示,当原始验证码包含字符数量为M个时,模型输出大小为M*N的数组,每一行取概率最大值对应的字符,组合成为字符串并输出结果.

图1 卷积神经网络识别算法验证码识别方案Fig.1 Automatic CAPTCHA recognition scheme based on CNN

2.2 迭代对抗生成框架

为了生成能够抵抗卷积神经网络识别的文本验证码,本文设计了一套迭代对抗生成框架,该框架能够兼容不同的原始文本验证码,生成的对抗验证码能针对多种卷积神经网络非分割识别技术起到对抗效果.这种迭代对抗生成式的防御框架由生成模块和判别模块共同构成,分别模拟网站防御者所拥有的对抗验证码生成模型和攻击者采用的识别模型.在现实场景中,攻击者可能采用任意一种主流卷积神经网络进行识别,而防御者希望攻击者无论采用何种卷积神经网络,其识别正确率都能够尽可能的降低.因此,在框架设计中,判别模块需要足够强大,而生成模块则根据判别模块的输出建立了对抗优化的过程.判别模块的输出为生成模型提供了反馈,生成模型将反馈作为参数,迭代优化下一轮的对抗验证码,使判别模块在识别下一轮对抗验证码时,输出的识别正确率更低.

在卷积神经网络的识别方案中,网络的预测结果为所有概率结果中的最大值,即ypredict=max(y1,y2,…,yN),因此,对抗验证码需要显著降低卷积神经网络识别模型输出的ytrue,使得ytrue≠max(y1,y2,…,yN).对抗验证码的生成流程见图2.

图2 对抗验证码的生成Fig.2 Generation of adversarial CAPTCHA

迭代轮数越多,对抗验证码会使得判别模块输出的ytrue值越低,判别模块就越不可能将对抗验证码识别成正确结果.迭代对抗生成框架算法如算法1所示.

算法1 迭代对抗生成框架算法

输入:生成模块GModule,判别模块AModule,原始验证码图像CAPTCHAoriginal,单次循环步长ε,迭代轮数iters.

输出:对抗验证码CAPTCHAadversarial

CAPTCHAnext=CAPTCHAoriginal

fori=1;i≤iters;i++:

AOutput=AModule(CAPTCHAnext)∥判别模块输出

GOutput=GModule(CAPTCHAnext,AOutput,ε)∥生成下一轮对抗验证码

CAPTCHAnext=Goutput

CAPTCHAadversarial=CAPTCHAnext

returnCAPTCHAadversarial

2.3 判别模块设计

为了提高对抗验证码针对多种卷积神经网络非分割识别的对抗能力,需要最大化判别模块的非分割识别能力,因此,判别模块的设计至关重要.图3为判别模块设计示意图.考虑到实际场景中,攻击者可能采用预处理手段削弱对抗验证码的对抗能力,包括中值滤波、均值滤波和高斯滤波等滤波手段,对收集到的验证码进行预处理[5],借以削弱对抗噪声,减弱对抗验证码的对抗效果.因此,判别模型中需要前置预处理模块模拟攻击者可能采取的预处理手段.当对抗验证码在训练过程中,即使经由预处理,仍能误导判别模块的输出结果时,则攻击者的预处理手段也将被对抗验证码无效化.

图3 判别模块设计Fig.3 The design of discriminative module

而攻击者可能采用多种主流卷积神经网络对验证码进行非分割识别,故判别模块在设计上需要包括多个判别子模块,每个子模块内含一种主流的卷积神经网络.当训练生成的对抗验证码能够欺骗所有的判别子模块时,成品对抗验证码会具备更优秀的泛化能力.不论攻击者会采用何种卷积神经网络进行攻击时,对抗验证码都能够起到较好的降低识别正确率的效果.当子模块数量过多时,整个迭代对抗生成框架的训练和生成效率会受到影响,而当数量过少时,对抗验证码的泛化能力不能得到有效的提高,因此,本方案中判别子模块数量为4个,采用的网络是LeNet、VGGNet、ResNet及DenseNet等经典卷积神经网络模型.总的判别模块输出算法如算法2所示.

算法2 判别模块输出算法

输入:判别模块组AModule1,AModule2,…,AModuleN,模型输入Input

输出:判别模块输出Output

Output=initial_Value∥初始化输出结果

fori=1;i≤iters;i++:

AfterPreTreatment=Pretreatment(Input)∥模拟攻击者预处理原始输入

Output=Output+AModulei(AfterPreTreatment)∥结果累加每个子模型输出

returnOutput/N∥对所有子模型输出取均值

2.4 生成模块设计

参考对抗样本的思想,计算出判别模块在原始样本和真实标签的导数后,向导数下降的反方向略微调整原始样本,即可大幅度改变判别模块的输出.因此,生成模块会计算出判别模块的输出在ytrue的导数,并将其与原始样本以及初始步长作为参数,计算出下一轮的中间对抗验证码CAPTCHAnext.原始验证码和中间对抗验证码如图4所示.

图4 原始验证码(左)和中间对抗验证码(右)Fig.4 Original CAPTCHA and temporary adversarial CAPTCHA

具体生成等式为

CAPTCHAnext=Clip0,255{GModule〈▽CAPTCHAAModule(CAPTCHA,y_true)│CAPTCHA│ε〉}

(1)

其中,CAPTCHA代表判别模块输入的中间对抗验证码,CAPTCHAnext代表下一轮的中间对抗验证码,GModule代表生成模块函数,AModule代表判别模块对应的函数,▽代表取导数,ε代表单次循环步长.因图像在计算机中的RGB三色表示其中每一种验证的取值范围都是0到255之间的整数,需要Clip0,255函数对运算得到的图像矩阵进行取整和截断.具体生成模块算法如算法3所示.

算法3 生成模块输出算法

输入:上一轮的中间验证码CAPTCHAlast,真实标签Labeltrue,单次循环步长ε

输出:下一轮中间验证码CAPTCHAnext

▽=AModule′ (CAPTCHAlast,Labeltrue)∥取导数

forelementin▽:∥遍历▽矩阵,取矩阵元素的符号

ifelement>0:

element=1

elseifelement<0:

element=-1

else:

element=0

Output=CAPTCHAlast+ε*▽∥生成模块对上一代中间验证码进行调整

forelementinGoutput: ∥对输出进行截断和取整

element=int(element)∥取整数

Ifelement>255: ∥截断

element=255

elseifelement<0:

element=0

CAPTCHAnext=Goutput

returnCAPTCHAnext

在迭代对抗生成框架设计中,本文利用生成模块和判别模块分别模拟防御者和攻击者,通过预处理和多神经网络子模块等手段增强判别模型的卷积神经网络非分割识别能力.为了对抗判别模块,生成模块不断利用判别模块强大的识别能力增强对抗验证码.当对抗完成时,生成模块所产生的对抗验证码能较大幅度地降低卷积神经网络非分割识别能力.通过实验与分析证明,对抗生成框架下生成的对抗验证码确实具备较强的抗基于卷积神经网络的非分割识别能力,而且能够欺骗判别模块所涵盖的卷积神经网络种类.

2.5 框架理论安全性分析

迭代对抗生成框架的基础在于生成模块不断地增强对抗文本验证码,使对抗文本验证码能够欺骗强大的判别模块,因此,对抗文本验证码的安全性核心依赖于判别模块领先的判别能力.以下将从集合的理论角度简单地阐述基于领先判别能力框架下,所生成的对抗文本验证码为何具有相对安全性.

3 策略设计

策略设计分为两种:网站防御者采用的生成策略和攻击者采用的识别策略.对抗验证码生成与识别流程如图5所示.

图5 对抗验证码生成与识别流程Fig.5 Generation and recognition process of adversarial CAPTCHA

图5可见,对抗验证码的攻防场景分为两个部分,第一部分是网站防御者利用初始训练集合训练生成模型,并利用生成模型生成对抗验证码;第二部分是由攻击者收集并利用私有模型识别对抗验证码.不同的生成策略和不同的识别策略都会对攻击者最终的识别正确率产生影响.所以,以下针对生成和识别两个部分,分别设计了策略以满足对真实环境的模拟.

(1)生成策略:站在网站防御者的角度,网站防御者可采用不同的原始验证码并调整生成模型中的具体参数,上述因素都对攻击者不可见.因此,不同的原始验证码和防御框架中的特定参数都会对最终生成的对抗验证码产生影响.在实验验证部分,本文将采用不同的原始验证码和生成参数,采用控制变量法分别从两个方面对生成的对抗验证码的对抗效果进行验证.

(2)识别策略:在识别策略中,攻击者可以任意选定一种主流卷积神经网络,防御者并不知晓攻击者会选择哪一种主流卷积神经网络和训练集,也不知晓攻击者所用神经网络的具体参数.站在攻击者的角度,分析可能存在的两种攻击策略:

①静态策略:攻击者利用训练好的卷积神经网络对对抗验证码进行非分割识别,无论结果好坏,攻击者都不再另作调整.因此,在评估这种策略下的攻击效果时,不会对攻击模型做出任何调整,并以模型的输出结果作为标准.

②动态策略:攻击者在发现对对抗验证码的识别正确率不高时,意识到防御者将对抗验证码作为防御手段,因此,采取对抗训练的方式,试图提高攻击模型对对抗验证码的识别正确率.其中,对抗训练是指将对抗样本加入识别模型的训练集当中,训练识别模型.一般而言,对抗样本在训练集中越多,模型对对抗样本的识别能力就越好.所以,在评估这种策略下的攻击效果时,需要评估不同数量的对抗验证码加入到训练集中对识别模型识别能力的影响.

在实验验证部分,本文将采用不同的卷积神经网络作为识别模型,并采用不同的攻击策略对生成的对抗验证码的对抗效果进行验证.通过生成策略和识别策略对真实攻防场景的模拟,确保对抗验证码在绝大部分场景下,都能对攻击者的识别模型起到误导效果,从而降低识别模型对对抗验证码的识别正确率,起到应有的保护作用.

4 实验与分析

4.1 实验环境

在这一部分,将评估对抗验证码防御方案,通过拥有独立训练集的攻击模型对对抗验证码进行识别,将攻击模型识别正确率作为评估标准.本文实验利用Python语言编写,深度学习框架为tensorflow-gpu-1.15.0.实验运行在装有Linux Ubuntu 14.04.5操作系统的服务器上,该服务器配有两个Intel Xeon E5-2630 v3的CPU、三块Tesla P5和128G的RAM.

4.2 验证码数据集

本文采用多线程Python爬虫抓取流量排名网站Alexa上排名前200的多个网站的真实文本验证码数据集作为原始验证码数据集,并手工进行标注.

以Alexa网站上流量排名第四(2019.11)的百度为例(图6),一张验证码的大小为100像素*40像素,包含4个大写字母IKWN,在手工标记时,将标签IKWN记录至对应标签列表保存以待后用.手工标注完所有真实验证码数据后,随机打乱验证码数据集,将数据集分为不存在交集的三个部分:第一部分用于防御者模型训练,第二部分用于攻击者识别模型训练,第三部分用于生成对抗验证码来完成测试.

图6 部分网站采集到真实验证码数据Fig.6 Part of real CAPTCHA collected in websites

4.3 时间性能分析

本文以LeNet、VGGNet、ResNet及DenseNet等四个卷积神经网络作为判别模型子神经网络,通过与多预处理模块相结合共同构成完整的判别模块.子神经网络的初始训练通常不会太久,利用随机梯度下降,单个卷积神经网络的收敛时间在20~30 min.训练完成后,无需再次训练,即可投入使用.判别模块和生成模块相结合共同组成完整的迭代对抗生成框架,利用完整框架,对其性能进行测试,得出时间消耗如表1所示.

表1 迭代对抗生成框架的时间消耗Table 1 The time consumption of the iteratively adversarial generative frame

从表1可知,在利用原始文本验证码生成对抗文本验证码时,单张对抗文本验证码的生成时间约在2.7 ms左右,性能优异.在实际应用过程中,绝大部分网站的加载时间在500 ms以上,文本验证码经过并行的原始生成、对抗增强,直到最终展示给用户的流程,用户所感知的等待时间不会有明显的提升,同时还可以采用分布式计算等方式提高效率,进一步缩短生成时间.

4.4 对抗验证码对抗效果分析

目前,主流的卷积神经网络非分割识别算法主要是基于LeNet-5这种经典的卷积神经网络进行识别[7-8,21],本实验中攻击者的识别模型主要采用LeNet-5进行攻击效果测试.

4.4.1 静态策略对抗分析

在静态策略中,攻击者主动收集对抗验证码,并利用自身已经训练好的卷积神经网络对对抗验证码进行识别.本文利用上述验证码数据集和对抗生成框架,可以得到对抗验证码.在生成过程中,分别选用不同的原始验证码、不同的迭代轮数值和四种流行的卷积神经网络(LeNet, VGGNet, ResNet和DenseNet)作为判别模块,生成多组对抗验证码,由识别模型对这些不同情况下生成的对抗验证码分别进行识别,得到每组的识别正确率.图7展示了来自baidu、sina、vmall和vultr四个网站的不同原始验证码所生成的对抗验证码在不同迭代轮数下的对抗效果.

图7 对抗生成框架下迭代轮数对所生成的对抗验证码对抗效果的影响Fig.7 Influence of the number of iterations to the adversarial effect of the CAPTCHA

由图7可知,在防御框架中生成模块训练轮数越多,识别模型对其所生成的识别正确率越低,对抗验证码的对抗效果也就越好.在迭代轮数从1增至100的过程中,识别模型的识别正确率从90%左右降低至10%以下,平均降幅超过90%.

在考察对抗验证码的泛化能力时,攻击者可能不会以LeNet作为识别模型,而是会以其他可能的主流卷积神经网络作为识别模型.因此,在考察对抗验证码的对抗能力时,不能仅仅以LeNet的结果作为评估标准,需要考察多种卷积神经网络对对抗验证码的识别能力.以LeNet、VGGNet、ResNet和DenseNet等经典卷积神经网络为攻击者可能采用的卷积神经网络非分割识别模型,利用同一种原始验证码生成的不同迭代轮数下生成1 000张对抗验证码,在其他种类的模型上将其与原始验证码进行对比测试,得到添加对抗噪声前的验证码识别正确率和添加噪声后的识别正确率,详见表2.

表2 防御框架不同迭代轮数生成的对抗验证码可迁移性分析Table 2 Transferable ability analysis of adversarial CAPTCHA generated by the defense frame in different iterations

由表2可知,不同的卷积神经网络在面对同一种对抗验证码时,在迭代轮数达到100时,均大幅度降低了对对抗验证码的识别正确率,降幅在90%以上.由此可知,对抗验证码具备较强的泛化能力,对不同卷积神经网络都具备良好的泛化对抗性效果,而且迭代轮数越多,所生成的对抗验证码误导的效果越好,识别模型的识别正确率越低.

4.4.2 动态策略对抗分析

在动态策略中,攻击者意识到模型识别正确率的降低和对抗验证码相关,为了提高识别正确率,攻击者将部分对抗验证码手工标记后,加入识别模型的训练集,采用对抗训练的方式,试图大幅度提高识别模型对对抗验证码的识别能力.为了模拟动态策略攻击,本文采用将生成模型生成好的10 000张对抗验证码(iters=100)分为训练集和测试集.训练集中的对抗验证码会被攻击者用于识别模型的对抗训练.通过调整训练集的大小,观察对抗训练对识别模型识别正确率的影响,见图8所示.

图8 对抗训练集大小对识别模型识别正确率的影响Fig.8 The effect of the size of adversarial training set on the accuracy of recognition model

由图8可知,随着训练集加入的对抗验证码数量的增加,识别模型经过对抗训练之后识别成功率也随之增加,当加入的对抗验证码数量超过6 000张时,识别模型的识别正确率基本达到上限.不同的原始验证码对抗效果略有不同,但稳定在30%~40%,仍然远低于识别原始验证码时85%~95%的正确率.图8也展示了多种卷积神经网络识别模型在采用对抗训练的方式提高识别正确率时,提高效果依然有限.因此,不论是在静态还是在动态策略之下,对抗验证码都能有效起到降低攻击者识别模型正确率的效果.

4.4.3 对抗样本生成算法对比

将一些主流的对抗样本生成算法应用至文本验证码中,将其生成的对抗验证码与本方案进行对比.其中,生成模型、识别模型以及训练数据集均相互独立,采用的识别模型为LeNet-5.OM(The Optimization Method,OM)是一种最小化修改的对抗样本生成方案[25],FGSM(The Fast Gradient Sign Method,FGSM)是一种快速的对抗样本生成方案[26],而JSMA(The Jacobian-based Saliency Map Approach,JSMA)是一种根据原始样本中单个像素的显著性大小生成对抗样本的方案.各对抗样本生成算法在文本验证码中的应用效果见表3.

表3 各对抗样本生成算法在文本验证码中的应用效果Table 3 The application effect of adversarial example generation algorithms to text CAPTCHA

表3中的数据显示了各种方案下生成的1 000张对抗验证码被识别模型识别得到的正确率,正确率越低代表对抗验证码防御效果越好.因为文本验证码识别和图像分类之间存在差异,普通的对抗样本在简单应用于文本验证码时,取得的防御效果有限,OM、FGSM和JSMA所生成的对抗验证码对识别模型正确率的影响仅有10%~20%,而本方案超过了90%;在对抗训练中,其他方案所生成的对抗验证码在识别模型经过对抗训练后,已经起不到有效的误导效果,而本方案仍能降低识别模型正确率的62.3%.

4.5 可读性分析

除了验证码的对抗效果之外,其可读性也是验证码的重点.图9为生成模型在不同迭代轮数下生成的对抗验证码.

图9 生成模型在不同迭代轮数下生成的对抗验证码Fig.9 Adversarial CAPTCHA generated under different number of iterations

由图9可知,随着迭代轮数的增大,虽然对抗验证码的对抗效果得到了提升,但其图像本身也受到了一定程度的干扰.为探究这些干扰对用户识别产生的影响,本文采用用户调研的方式对对抗验证码的可读性进行分析.

以三种迭代值为例,将不同迭代值下生成的100张对抗验证码图片展示给500名普通互联网用户,用户年龄范围从18~43岁,其中男性297名,女性203名.由用户对这些验证码进行可用性评分,0至5分,0分为难以识别,5分为可以轻松识别.取均值得出表4.

表4 不同迭代轮数下生成的对抗验证码的可用性分析Table 4 Usability analysis of the adversarial captcha generated under different iteration rounds

由表4可知,用户对iters=20、iters=40和iters=60的对抗验证码都具备较高的接受程度,而对于iters=100的对抗验证码,用户可能觉得稍有难度.因此,推荐的迭代轮数在80~100之间,在此范围内,对抗验证码的防御性能和可用性取得了较好的平衡.

5 总 结

本文设计并实现了一种迭代对抗生成式的防御框架,在这种框架下生成的对抗验证码能够抵御多种卷积神经网络的非分割识别.这种防御框架针对现有验证码防御方案存在的不足,利用框架中判别模块的输出,迭代调整框架中的生成模块,使生成模块最终生成足以欺骗多种卷积神经网络的对抗验证码.相比以往的工作,本文所设计的防御框架能够应用于文本验证码,并取得较好的防御效果.在下一步的工作中,准备尝试将对抗样本的思想应用到更多的验证码安全问题中,为验证码中暴露的安全问题提供新的解决方案.

猜你喜欢
攻击者正确率卷积
机动能力受限的目标-攻击-防御定性微分对策
基于3D-Winograd的快速卷积算法设计及FPGA实现
门诊分诊服务态度与正确率对护患关系的影响
卷积神经网络的分析与设计
从滤波器理解卷积
正面迎接批判
基于傅里叶域卷积表示的目标跟踪算法
生意
品管圈活动在提高介入手术安全核查正确率中的应用
生意