基于对抗样本的验证码生成系统及方法与流程

文档序号:18166625发布日期:2019-07-13 09:39阅读:1466来源:国知局
基于对抗样本的验证码生成系统及方法与流程
本发明涉及深度学习和信息安全的
技术领域
,特别涉及一种基于对抗样本的验证码生成系统及方法。
背景技术
:验证码的全称是全自动区分计算机和人类的公开图灵测试(completelyautomaedpublicturingtesttotellcomputersandhumansapart,可以简写为captcha)),是一种区分用户是计算机或人的公共全自动程序。其主要作用是抵御恶意机器人程序,防止论坛、博客中的垃圾评论,过滤垃圾邮件,保证在线投票真实性以及防止恶意批量注册网站等。但随着卷积神经网路在图像识别上的兴起,神经网络对简单图形验证码的识别率基本上接近百分之百,对复杂验证码的识别率也有较高的识别率。因此对如何能够设计出能够合理的区分人和机器且成本低廉的验证码系统一直是很多公司和学者思考的问题。目前验证码有以下两个方向发展:一种是发展新型验证码,如:如极验验证设计的滑动验证码、google公司recaptcha实验室设计的无感知型验证码等,这些都是安全性高、用户体验强的验证码;另一种是在现有的文本验证码的基础上增加干扰因素,如:对验证码进行扭曲、镂空、黏连等操作。第二种虽然在一定程度上降低了神经网络的识别率,但是用户的通过率更低,在很大程度上影响了用户的体验。但是为何绝大多数的网站都采用难以辨认的复杂图形验证码和毫无安全性的图形验证码呢?究其原因主要有两个:一是成本原因,替换成短信验证码和语音验证码成本较高;二是难度系数大,相对于图形验证码而言新型验证码技术系统实现复杂,技术要求高。对抗样本是深度学习领域目前难以有效解决的问题,因为生成一个对抗样本的方式远比设计一个能防御对抗样本的模型要容易的多。如果将其应用到验证码领域,将能大大提升目前图形验证码的安全性能及节约企业成本。至少在解决神经网络欠拟合和维度过高导致的线性问题之前图形验证码依然能够较好抵御神经网络的攻击。技术实现要素:本发明的主要目的在于克服现有技术的缺点与不足,提供一种成本低廉、实现难度小、用户体验好、安全性高的验证码,继而提供了一种基于对抗样本的验证码生成系统及方法。为了达到上述目的,本发明采用以下技术方案:本发明基于对抗样本的验证码生成系统,包括:验证码采集层、预处理层、对抗样本生成层、样本拼接层以及杂化层;所述验证码采集层,通过收集自身平台、利用验证码自动生成工具、开源平台验证码数据作为神经网络的训练集;所述预处理层,通过灰度化、二值化、去燥、字符分割流程将收集到的验证码切割成数量繁多的黑白字符图片作为神经网络的输入;所述对抗样本生成层,在提前构建的神经网络模型库中随机选择神经网络模型,从对抗样本生成算法中选择最合适的算法,然后用预处理层的数据定向生成对抗样本;所述样本拼接层,用合适的样本选择算法选择不同神经网络生成的对抗样本,然后进行拼接;所述杂化层,将拼接后的对抗样本进过添加干扰线、背景复杂化、彩色化等手段,将其变为aecaptcha。作为优选的技术方案,所述验证码采集层的数据来源包括下述几种:(1)直接用网站本身的验证码作为原始数据;(2)利用验证码自动生成工具来生成验证码然后进行加工;(3)利用python对各大网站进行爬虫,爬取它们的验证码图片。作为优选的技术方案,所述预处理层包括灰度化模块、二值化模块、去噪模块和字符分割模块;所述灰度化模块,用于将彩色图片转化为灰度图像的过程称为图像的灰度化处理;所述二值化模块,用于图像的二值化是将图像上的像素点的灰度值设置为0或1,将整个图像呈现出黑白效果;所述去燥模块,用于将黑白图片中单独的像素点去掉,包括线降噪和点降噪两种;所述字符分割模块,用于将降噪以后的黑白验证码图片分割成一个一个字符图片,作为下一层对抗样本生成层中的神经网络构建模块中神经网络的训练集。作为优选的技术方案,所述灰度化处理采用下述方法中的一种:分量法:将彩色图像中的三分量的亮度作为三个灰度图像的值,可选取其中一种灰度值;f1=rorf2=gorf3=b最大值法:将彩色图像中的三分量的最大值作为灰度图像的灰度值;f=max(r,g,b)均值法:将彩色图像中的三分量求平均值等到灰度图像的灰度值;f=(r+g+b)/3加权平均法:根据重要性及其它指标,将三个分量以不同的权值进行加权平均。f=w1*r+w2*g+w3*b。作为优选的技术方案,所述灰度模块,采用加权平均法,取每个像素点rgb的均值作为这个像素点三个通道的像素;所述二值化模块,采用手动遍历像素,设定阈值,将图片变为二值图像;所述去燥模块,采用4领域去燥法,如果一个像素周围全部是零,就将这个像素点转化为0;所述字符分割模块,采用水滴法对图像进行分割。作为优选的技术方案,所述对抗样本生成层包括神经网络构建模块和对抗样本生成模块;所述神经网络构建模块包括全连接神经网络和卷积神经网络,所述全连接神经网络,全连接神经网络用于实验的攻击模型,用来检验生成的6类卷积神经网络生成的对抗样本的泛化能力;所述对抗样本生成模块,用于将单个黑白验证码字符图片转为为对抗样本,所产生的对抗样本用于拼接验证码;所述对抗样本生成模块包括神经网络模型的构建模块和对抗样本生成算法选择模块;在这两个模块当中,神经网络构建模块的构建是根据验证码图片的复杂度自行构建,可操作性大;生成对抗样本模块采用fgsm、l-bfgs或deepfool算法。作为优选的技术方案,生产对抗样本的步骤为:首先从神经网络构建模型中选择合适的神经网络模型作为生成对抗样本的网络模型,其次选择合适的对抗样本生成算法和神经网络模型进行组合,然后初始化一个和验证码图片相同大小的噪声数组,设置目标分类,最后将其和验证码图片一起训练便可以得到噪声图片,将噪声加入到原始图片中便可以得到该原始图片的对抗样本。作为优选的技术方案,所述样本拼接层包括对抗样本选择模块和对抗样本拼接模块;所述对抗样本选择模块,配置了两种选择方案:一、将所有对抗样本单独组合成aecaptcha,用来测试那种对抗样本对待入侵网络有最好的效果,便用此aecaptcha代替原有的,二、选择识别率最低的几类对抗样本组合成aecaptcha,防止攻击者突然更换网络;所述对抗样本拼接模块,用于将对抗样本生成模块的对抗样本进行拼接,并对整体大小进行转化,根据需求调节拼接后的大小,方便之后将aecaptcha映射到前端页面,不用对原始代码进行修改,就可以和前端无缝对接。作为优选的技术方案,所述杂化层,包括干扰线添加模块、背景复杂化模块和彩色化模块;所述干扰线添加模块,用与在拼接的对抗样本上添加干扰线,增加攻击者在对aecaptcha进行预处理去燥时的难度;所述背景复杂化模块,用于将拼接后的对抗样本映射到一个比较复杂的背景图片中,增加攻击者识别的难度;所述彩色化模块,用于将拼接后的对抗样本彩色化,使最终的aecaptcha映射到前端界面时不影响前端界面的美观;或者使攻击者必须对验证码进行预处理,不能直接拿爬下来的aecaptcha作为攻击网络的训练集。本发明基于对抗样本的验证码生成系统的方法,包括下述步骤:s1、验证码采集:从自身验证码库、验证码自动生成工具、爬虫爬去验证码按照大小分类放入一个新的验证码库,作为数据集;s2、从验证码库中调取验证码进入预处理层,经过灰度化模块将验证码图片转化为黑白字符图片,用二值化模块将黑白字符图片中的像素全部转化为0和则1变为二值化数组,将二值化数组经过去燥模块去除里面的0,然后传入字符分割模块将去除的像素点映射到黑白字符图片中进行切割,切割为单独的黑白字符图片;s3、预处理层将黑白字符图片传入对抗样本生成层,从神经网络构建模块中调用数种神经网络模型,再从对抗样本算法模块中选择合适的算法,神经网络经过多次迭代后生成噪声,将生成的噪声添加到黑白字符图片中生成对抗样本;s4、样本拼接层中的对抗样本选择模块根据实际情况选择抵抗神经网络效果最好的一类对抗样本或者几类对抗样本,将这些对抗样本传输的对抗样本拼接模块中,对抗样本拼接模块将其拼接成4个、5个或者6个字符长度的对抗样本;s5、将拼接完成后的对抗样本传入杂化层、进过彩色化,将黑白颜色的对抗样本转化为彩色的对抗样本,然后将其传入背景杂化模块,背景杂化模块将其映射到事先准备好的背景图片中,随后传入干扰线模块,添加干扰线,生成完整版的aecaptcha,并映射到前端界面。本发明与现有技术相比,具有如下优点和有益效果:①成本低廉:aecaptcha仅仅只需要在原有的字符验证码图片上添加噪声即可,和字符验证码一样基本不需要任何成本。相比较短信验证码以及语音验证码,它不需要向三大运营商支付短信以及语音费用,节约成本。②部署难度低:aecaptcha的部署不需要对网站现有的前端界面进行任何修改,也不需要对网站后台添加任何模块,直接用aecaptcha图片替换原来的字符验证码图片即可,即插即用。而市场上的滑动验证码、点选式验证码以及无感知验证码不仅需要对网站后台就行修改,还要对前端界面进行调整。技术水平较差的互联网公司或者非互联网的中小型企业还需向第三方技术公司寻求技术支持,耗时耗力。③安全性高:本文采将深度神经网络难以解决的问题—对抗样本应用到验证码安全中,用基于对抗样本的字符验证码来抵御神经网络对验证码的攻击,后续的实验数据表明,无论是复杂的神经网络对其识别效果非常低,后续的实验数据表明深层神经网络对aecaptcha识别率在千分之一左右,而对普通字符验证码的识别率基本都在百分之九十以上。简而言之,网站每遭受1000次攻击,aecaptcha能拦截999次,而普通字符验证码仅能拦击100次。aecaptcha相比较目前不安全的简单字符验证码而言,安全性有了质的提升。附图说明图1是本发明基于对抗样本的验证码生成系统的结构框图;图2(a)是本实施例mnist验证码的原图,图2(b)是本发明对抗样本图。图3是本明发基于对抗样本的验证码生成流程图;图4(a)是本实施例预处理流程图;图4(b)是本实施例验证码预处理效果图。具体实施方式下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例如图1所示,本实施例基于对抗样本的验证码生成系统,包括:验证码采集层、预处理层、对抗样本生成层、样本拼接层以及杂化层;所述验证码采集层,通过收集自身平台、利用验证码自动生成工具、开源平台验证码数据作为神经网络的训练集;所述预处理层,通过灰度化、二值化、去燥、字符分割流程将收集到的验证码切割成数量繁多的黑白字符图片作为神经网络的输入;所述预处理层包括灰度化模块、二值化模块、去噪模块和字符分割模块;,其具体流程图如图4(a)所示,验证码的转化过程如图4(b)所示。所述灰度化模块,用于将彩色图片转化为灰度图像的过程称为图像的灰度化处理,彩色图像中的每个像素的颜色有rgb(r:red,g:green,b:blue)三个分量决定,而每个分量的取值范围为0~255,这个一个像素点就有1600多万(255*255*255)的颜色变化范围。而灰度图像是r、g、b三个分量相同的一种特色的彩色图像,其一个像素点的变化范围255种,所以在数字图像处理中一般先将各种格式的图像转变为灰度图像以使后续的图像计算变得少一些。灰度图像的描述与彩色图像一样反映了图像的整体和局部的色度和亮度等级的分布和特征。灰度图像一般采用以下三种方法。分量法:将彩色图像中的三分量的亮度作为三个灰度图像的值,可选取其中一种灰度值。f1=rorf2=gorf3=b最大值法:将彩色图像中的三分量的最大值作为灰度图像的灰度值。f=max(r,g,b)均值法:将彩色图像中的三分量求平均值等到灰度图像的灰度值f=(r+g+b)/3加权平均法:根据重要性及其它指标,将三个分量以不同的权值进行加权平均。f=w1*r+w2*g+w3*b所述二值化模块用于图像的二值化是将图像上的像素点的灰度值设置为0或1,这样做的好处是将整个图像呈现出黑白效果。将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。所述去燥模块,用于将黑白图片中单独的像素点去掉,主要有线降噪和点降噪两种。线降噪的思路就是检测任意一个点的相邻的四个点,判断这四个点中是白色点的个数,如果有两个以上的白色像素点,那么认为这个点是白色的,从而去除整个干扰线,但是这种方法是有限度的,如果干扰线特别粗就没有办法去除。而点降噪的思路和线降噪大致相同,只是会针对不同的位置检测的点不一样。所述字符分割模块,用于将降噪以后的黑白验证码图片分割成一个一个字符图片,作为下一层对抗样本生成层中的神经网络构建模块中神经网络的训练集,采用水滴分割,控制一定的字符间距,按照这个间距进行分割。所述对抗样本生成层,在提前构建的神经网络模型库中随机选择神经网络模型,从对抗样本生成算法中选择最合适的算法,然后用预处理层的数据定向生成对抗样本;所述对抗样本生成层包括神经网络构建模块和对抗样本生成模块;所述神经网络构建模块包括全连接神经网络和卷积神经网络,所述全连接神经网络,全连接神经网络用于实验的攻击模型,用来检验生成的6类卷积神经网络生成的对抗样本的泛化能力。所述对抗样本生成模块,用于将单个黑白验证码字符图片转为为对抗样本,所产生的对抗样本用于拼接验证码。所述对抗样本生成模块,它包括两个模块,一个是神经网络模型的构建模块,另一个是对抗样本生成算法选择模块。在这两个模块当中,神经网络构建模块的构建可以根据验证码图片的复杂度自行构建,可操作性大。生成对抗样本的算法有很多种,有fgsm,l-bfgs与deepfool等。其具体流程如图3所示,首先从神经网络构建模型中选择合适的神经网络模型作为生成对抗样本的网络模型,其次选择合适的对抗样本生成算法和神经网络模型进行组合,然后初始化一个和验证码图片相同大小的噪声数组,设置目标分类,最后将其和验证码图片一起训练便可以得到噪声图片,将噪声加入到原始图片中便可以得到该原始图片的对抗样本。所述样本拼接层,用合适的样本选择算法选择不同神经网络生成的对抗样本,然后进行拼接;所述样本拼接层包括对抗样本选择模块和对抗样本拼接模块;所述对抗样本选择模块,每种类型的对抗样本对于同一种神经网络攻击的抵御能力会有一定的区别,当某一时刻,网站的验证码识别率突然提高时,可能存在攻击者入侵,因此本系统针对此类情况到以下情况配置了两种选择方案:一、将所有对抗样本单独组合成aecaptcha,用来测试那种对抗样本对待入侵网络有最好的效果,便用此aecaptcha代替原有的,二、选择识别率最低的几类对抗样本组合成aecaptcha,防止攻击者突然更换网络。具有灵活性大,安全性高的特点。所述对抗样本拼接模块,用于将对抗样本生成模块的对抗样本进行拼接,并对整体大小进行转化,根据公司的需求调节拼接后的大小,方便之后将aecaptcha映射到前端页面,不用对原始代码进行修改,就可以和前端无缝对接。所述杂化层,将拼接后的对抗样本进过添加干扰线、背景复杂化、彩色化等手段,将其变为aecaptcha。所述杂化层,包括干扰线添加模块、背景复杂化模块和彩色化模块;所述干扰线添加模块,用与在拼接的对抗样本上添加干扰线,增加攻击者在对aecaptcha进行预处理去燥时的难度。所述背景复杂化模块,用于将拼接后的对抗样本映射到一个比较复杂的背景图片中,增加攻击者识别的难度。所述彩色化模块,拼接后的对抗样本是黑白颜色的图片,彩色化用两个方面的作用,一是将拼接后的对抗样本彩色化,使最终的aecaptcha映射到前端界面时不影响前端界面的美观;二是,使攻击者必须对验证码进行预处理,不能直接拿爬下来的aecaptcha作为攻击网络的训练集。这三个模块的主要作用便是将拼接后的黑白对抗样本转化为彩色的aecaptcha,不仅能够使得其更加美观,而且能够增加攻击者的识别难度。本实施例主要讲述对抗样本生成层的实现方法,将会详细介绍使用的数据集、构建的神经网络、验证码的设计方案等详细信息,如图3所示,具体包括下述步骤:⑴数据集:所有的验证都要通过预处理过程转化为黑白图片,在这里直接采用mnist数据集,本实施例选取50000个训练集、10000个测试集。⑵神经网络模型的搭建:mnist验证码的复杂度较低,本实施例自主构建了6类比较简单卷积神经网络,用来识别mnist数据集,并以此生成对抗样本。每个卷积网络的卷积层中窗口大小为5*5,步长为1,池化层的窗口大小为2*2,步长为2,卷积层和池化层全部采用全零填充,最后一层全部为softmax输出层。用以对比生成模型之间对抗样本的泛化能力,其主要信息如表1所示。表1生成对抗样本的神经网络模型生成模型conv1conv2conv3fc1fc2net1depth=32depth=321024net2depth=16depth=32100net3depth=16depth=321024net4depth=16depth=32depth=641024100net5depth=16depth=32depth=64100net6depth=8depth=16depth=32100从上表可以看出,本实施例主要从卷积层的深度、全连接层的层数以及卷积层的层数这几个方面对对抗样本的泛化能力进行比较。⑶对抗样本的攻击模型:主要是对拼接的对抗样本进行测试,因为对抗样本对构建它的神经网络具有很强的迷惑性,用构建的神经网络来测试识别率会很低,由于要测试其整体泛化能力,因此这里构建了以下三种神经网络对拼接的验证码进行校验(如表2所示)。表2测试拼接对抗样本的网络模型从上表可以看出,测试模型主要由一个简单的浅层神经网络、一个较为复杂的全连接神经网络以及一个10层的卷积神经网络,相比较生成对抗样本的卷积神经网络而言,它的卷积层深度更深,全连接神经网络更多,神经元个数也更多。⑷文本验证码和图像验证码的算法本实施例都采取了fgsm算法。如图2(a)、图2(b)所示,主要利用net1和fgsm算法生成mnist的定向对抗样本,图2(a)是原图,图2(b)是对抗样本图。⑷字符拼方案:文本验证码如果太短安全性就会降低,太长用户体验就会变差。本实施例出于这两方面的考虑设计了三种长度aecaptcha文本验证码,设计了三种长度的验证码:分别是4个字符长度的aecpatcha-4、5个字符长度的aecaptcha-5以及6个字符长度的aecaptcha-6。企业可根据自身需求自行设计字符长度。上述介绍了aecaptcha验证码生成系统核心部分的实现,这为aecaptcha提供了实现的可能,但是生成的aecaptcha验证码的效果如何还不能确定,下面这将会从实验数据分析aecaptcha验证码的实际效果。aecaptcha验证码实验数据分析本次实验以mnist训练集作为6中卷积神经网络的训练集,并分别用6中卷积神经网络训练生成了6种不同类型的噪声,然后用10000张测试集分别添加6种噪声变成六类对抗样本,便是表3中的net1_adv~net6_adv,然后用这6类神经网络分别识别mnist测试集和这6类对抗样本,比较基于fgsm生成的对抗样本的泛化能力。其中总体被识别率代表6类对抗样本合集被每种神经网络的识别率。总体识别率代表各神经网络对6类对抗样本集合的识别率。表3对抗样本在各训练模型上的识别率对比从上表可以明显看出对抗样本对生成它的神经网络具有很强的迷惑性,识别率基本可以忽略不计,对比表上数据可以看出只要对神经网络修改了一点点,对抗样本的识别率就会受到影响,从上表可以看出并且迷惑性起伏较大,但是效果依然明显,只有net生成的对抗样本识别率超过50%,其余都在20%左右,而net6对个样本的总体识别率最高,尽管如此,单一的对抗样本效果已经完全能达到理想需求。表4是查看基于卷积神经网络的对抗样本在全连接神经网络以及在更为复杂的卷积神经网络中的泛化能力。表4对抗样本在各测试模型上的识别率对比从表1和表2中可以得出以下结论:⑴卷积神经网络生成的对抗样本对于全连接神经网络同样具有较好的泛化能力。⑵net4,net5,net6普遍比net1,net2,net3表现要好,说明卷积层和池化层层数的增多有利于提高对抗样本的泛化能力。⑶从表1中可以看出net2_adv总体识别率比net2_adv要高,net5_adv比net4_adv总体识别率要低,说明全连接层的层数和个数不是越多越好。⑷越复杂的神经网络对对抗样本的识别率越高,向test_net3对各类对抗样本的总体识别率已经达到了40%。以上,是单个对抗样本的表现效果,到目前为止已经达到了理想的效果,那么如果将单个样本拼接成验证码以后,效果是否达如假设的那样随着长度的增加而呈现几何倍的下降,下面两个表就很好的验证了猜想。表5aecaptcha验证码与原始验证码在生成模型上的效果对比本次实验以mnist数据中的3为目标标签,因此在统计结果的时候要将3这个类别去掉,因此6个类别每个类别有8990个对抗样本,因此分别拼接了8990个aecaptcha_4、aecaptcha_5和aecaptcha_6验证码。由于在训练模型上,对抗样本组成的aecaptcha对神经网络的迷惑效果非常好,识别率无限接近于零,因此这里表格的数据是每个模型识别多少个aecaptcha。表6aecaptcha验证码与原始验证码在攻击模型上效果对比从表6中可以看出,aecaptcha无论是对简单的全连接神经网络还是较为复杂的卷积神经网络都有很好的泛化能力,所构建的神经网络模型中最为复杂的test_net3的识别率也仅仅只有1%左右,如果将其长度设计为6,test_net3的识别率联百分之一都达不到。因此基于fgsm算法生成的对抗样本用来制作的验验证码对各类型的神经网络都有非常好的迷惑性。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1