验证码及其安全性研究.docx

上传人:b****6 文档编号:9091632 上传时间:2023-02-03 格式:DOCX 页数:16 大小:1.07MB
下载 相关 举报
验证码及其安全性研究.docx_第1页
第1页 / 共16页
验证码及其安全性研究.docx_第2页
第2页 / 共16页
验证码及其安全性研究.docx_第3页
第3页 / 共16页
验证码及其安全性研究.docx_第4页
第4页 / 共16页
验证码及其安全性研究.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

验证码及其安全性研究.docx

《验证码及其安全性研究.docx》由会员分享,可在线阅读,更多相关《验证码及其安全性研究.docx(16页珍藏版)》请在冰豆网上搜索。

验证码及其安全性研究.docx

验证码及其安全性研究

验证码及其安全性研究

摘要

随着全球互联网的迅速崛起,验证码的应用日益广泛.本文首先介绍验证码的历史背景,验证码的概念,验证码的作用以及验证码的意义.然后了解国内和国外对验证码识别研究的现状,简单介绍三种验证码识别技术:

基于模板匹配的方法、基于神经网络学习方法以及基于形状上下文方法.接着将国内现有的验证码生成方案整合分类,了解其实现方式.对图片验证码、人工智能识别和人机交互验证码等现有验证码方案进行了安全性研究.对这些验证码的安全性做出比较排序,把实验结果进行分析并整合,得出基于生物特征的验证码以及短信验证码最为安全,其次相对来说人机交互的验证码较为安全,最后才是图片以及数字验证码,但是对于数字型的验证码可以进行加入噪线、扭曲等复杂机制来提升安全性.

关键词

验证码;验证码识别;验证码的安全性

ResearchonVerificationCodeandItsSecurity

Abstract

WiththerapidriseoftheglobalInternet,peoplebegantouseInternettechnologymoreandmorefrequently,andInternettechnologybegantoinfiltrateintoallaspectsofpeople'slives,.Firstly,thispaperintroducesthehistoricalbackgroundofverificationcode,theconceptofverificationcode,thefunctionofverificationcodeandthesignificanceofverificationcode.Then,tounderstandthecurrentsituationofresearchonverificationcoderecognitionathomeandabroad,threeverificationcoderecognitiontechnologiesarebrieflyintroduced:

templatematchingbasedmethod,neuralnetworkbasedlearningmethodandshapecontextbasedmethod.ThentheexistingverificationcodesinChinaareintegratedandclassifiedtounderstandtheirimplementation.Thesecurityofexistingverificationcodessuchaspictureverificationcodes,artificialintelligencerecognitionandhuman-computerinteractionverificationcodesisstudied.Thesecurityoftheseverificationcodesiscomparedandsorted,andtheexperimentalresultsareanalyzedandintegrated.Itisconcludedthatbiometrics-basedandSMS-basedverificationcodesarethesafest,thenhuman-computerinteractionverificationcodesarerelativelysafe,andthelastispictures-basedanddigital-basedverificationcodes.However,digitalverificationcodescanbeaddedtocomplexmechanismssuchasnoiseanddistortiontoimprovesecurity.

Keywords

verificationcode,verificationcoderecognition,verificationcodesecurity

1.绪论

1.1研究背景

随着全球互联网的迅速崛起,人们开始越来越频繁的使用互联网技术,而且互联网技术也渗入到人们生活的方方面面,像淘宝的购物,京东的购物,游戏的账户登录,12306的火车出行等等方方面面都已经开始和互联网技术挂钩了,于是这些输入到了网络的居民信息容易被很多不法分子开始利用,这些不法分子利用各种可以破解输入到了网络的居民信息的程序以及病毒,从而获取居民的信息.一些机构为了遏制上面这些不好的现象,开发出来了验证码.验证码主要就是用来区分某个网站或者网页究竟是人为的登录,还是被一些计算机恶意的访问,然而验证码的开发虽然有效的减低了一些计算机恶意的访问,但同时也给了用户一些不美好的体验,比如在某一段时间12306的火车出行的登录验证,一些验证码过于复杂,导致用户多次登录失败,严重影响用户的体验.因此,对于验证码也必须有结合自身网站的具体需求来具体设计.

1.2研究现状

随着全球互联网的迅速崛起,人们开始越来越频繁的使用互联网技术,验证码的使用也是越来越频繁,已经慢慢发展成了网站保护的一种司空见惯的技术了.在这种情况下,国内外很多学者对于验证码的研究也越来越深入.

1.2.1国外研究现状

在互联网技术发展的初期,美国学者LuisyonAlto就抢先一步开始研究验证码及其安全性能,并且首次提出了CAPTCHA的技术概念[1],LuisyonAlto在接下来的一段时间里并没有放弃研究验证码及其安全性能,随后发现了为RE-CAPTCHA的技术[2],使得验证码的应用得到进一步发展.JRendraMalik进一步对于验证码及其安全性进行了研究[3],发现了验证码可以基于形状上下文的形状条纹的不同的特征来进行相关的匹配[4].JesseWindle在验证码及其安全性进行了研究上发现了可以用Hart小波滤波结果来破解一种相关的验证码等等.

1.2.2国内研究现状

中国科学家龚才春在验证码及其安全性研究的基础上通过凹凸分析发现了一些相关的识别手写体的数字字符的验证码识别技术[5].中国科学家汪渤利用图像进行二值化的技术[6],在验证码及其安全性的研究上提出基于外部轮廓结构及其机构的特征从而可以验证数字进行验证码验证的方法[7].在2009年的时候,中国科学家吕刚利用神经网络相关方面的知识[8],结合验证码验证的技术,提出了模板匹配验证码验证技术.

1.3研究意义与方法

1.3.1研究意义

实际应用中验证码在互联网安全保护中应用非常广泛,其主要作用是用以鉴别出人和机器,从而防止攻击者操作机器开展的恶意行为.并且验证码可以防止人们很多的网上的信息被很多不法分子所开始利用[9],这些不法分子利用各种可以破解输入到了网络的居民信息的程序,或者说是病毒,从而获取居民的信息,进而进行一些诈骗或者其他违法行为.并且有利于保护现在互联网登录安全,十分有利于互联网的发展.

1.3.2研究方法

1).文献法——搜集和分析研究各种现存的有关验证码及其安全性的文献资料,从中选取适合本文的信息,帮助完成调查研究目的.

2).分析推算法——通过上面方法收集到的资料,进行分析推算,这里利用图像二值化等相关的方法得到相关的验证码及其安全性研究的结论.

3).实验法——选一些具有代表性的图片验证码做识别实验,对各类的安全性强弱做出排序.

2.验证码概述

2.1验证码定义

验证码也就是上面美国科学家LuisyonAlto提出的CAPTCHA的技术概念,中文全称叫做全自动区分计算机和人类的图灵测试[10],随着互联网的高速发展,互联网技术也开始慢慢渗入到人们生活的方方面面,像是日常生活淘宝的购物,京东的购物,游戏的账户登录,12306的火车出行等等方方面面都已经开始和互联网技术挂钩了,因此人们的日常的信息也开始输入到了网络,于是这些输入到了网络的居民信息也容易被很多不法分子所开始利用,这些不法分子利用各种可以破解输入到了网络的居民信息的程序,或者说是病毒,从而获取居民的信息.一些机构为了遏制上面这种不好的现象,验证码也由此被开发了出来.

2.2验证码作用

验证码主要就是用来区分某个网站或者网页究竟是人为的登录,还是被一些计算机恶意的访问.所以验证码的主要作用如下:

(1)防止一些用户随意恶意注册导致网站压力测试需求变大.

(2)防止一些用户随意恶意发布一些不正规链接,以及一些不正规的垃圾信息.

(3)在一些民众选票制度的时候,可以保证民众选票投票的公平.

(4)防止一些计算机暴力破解密码,泄露用户信息.

2.3验证码的分类

验证码大体上可以分为六个类型分别是基于汉字、字母和数字的文本型验证码[11]、基于人机交互的验证码[12]、基于手机短信的验证码[13]、基于音频信息的语音验证码[14]、基于简单数学等式的验证码[15].

如图2.1-2.6所示列出了最常见的六种验证码登录方式:

图2.1表示图片验证、图2.2表示手机短信验证、图2.3表示字母或者语音验证,图2.4基于人机交互的验证码,图2.5人脸验证,图2.6数字验证.

图2.1图片验证图2.2手机短信验证

图2.3字母或者语音验证图2.4基于人机交互的验证码

图2.5人脸验证图2.6数字验证

3.各类验证码的生成机制

3.1数字验证码及其变种的实现

数字验证码的实现一般分为三个步骤,也就是首先得生成随机数,然后将生成的随机数,绘制成图片,最后将相应的图片输出到目标位置即可,具体实现步骤如图3.1所示.

图3.1数字验证码的实现步骤

1)、生成随机数

生成随机数无非就是调用Random的API,但为了后续更好的实用,应该分成多种组合以适应需求的变化,应将生成随机数的个数和类型组合还有排除字符抽取成参数.同时这里也是变种的实现机制当用户输入错误或者长时间未输入会重新生成随机数,导致变种验证码出现,进而继续绘制成图片,最后将相应的图片输出到目标位置[16].

2)、绘制图片

绘制图片是重点也是难点,这里将详细介绍.

(1)创建BufferedImage对象

如果把BufferedImage比作是画板,那么Graphics就是画纸,这样比较好理解,后续的操作都是在这画纸上进行的.

BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

(2)绘制背景

Graphics有个setColor()方法,可理解为画笔,在绘制任何东西前要选好画笔,即颜色,然后调用fillRect()进行轮廓的绘制,后续的绘制范围不会超过这个轮廓.

g.setColor(backColor==nullgetRandomColor():

backColor);g.fillRect(0,0,width,height);

(3)绘制干扰线

调用drawLine画直线,绘制不超过interLine条干扰线.

if(interLine>0){

intx=r.nextInt(4),y=0;

intx1=width-r.nextInt(4),y1=0;

for(inti=0;i

g.setColor(lineColor==nullgetRandomColor():

lineColor);

y=r.nextInt(height-r.nextInt(4));

y1=r.nextInt(height-r.nextInt(4));

g.drawLine(x,y,x1,y1);

}}

(4)写验证码

为了不整整齐齐而且重叠的写,应将每个字符的高度和水平位置随机,重点在于每绘制完一个字符后,需将画笔的水平坐标往右边移动一定的位置,这里一般用了依据宽度浮动.

(5)扭曲图片

将图片的扭曲就是将图片水平和垂直按不同比例平移.

(6)添加噪点

噪点的添加实质上就是在画纸上没有规律的点,所以用随机颜色随机位置来执行最合适了.

3)、将相应的图片输出到目标位置

将图片输出成文件,然后将相应的图片输出到目标位置即可.

3.2图片验证码的生成机制

图片验证码的实现一般和数字验证码类似也是分为三个步骤,也就是首先得生成随机和给定的图片对应的汉字,然后将汉字绘制成图片,图片输出到目标位置,用户只需要点击与汉字匹配的图片即可完成验证[17],具体实现步骤如图3.2所示.

图3.2图片验证码的实现步骤

具体的操作和生成数字验证码较为类似,只是第一步操作的将生成随机的数字换成了生成随机的汉字.

3.3短信验证码的生成机制

短信验证码的实现一般和前面二种验证码的生成都有着很大的不同,因为短信验证码需要获取第三方接口,调用第三方接口并且向第三方接口发送信息,短信验证码也是分为三个步骤,也就是首先得生成随机4位或者6位数字,然后获取第三方接口信息,最后将随机4位或者6位数字发送给第三方接口,用户只需要收到的4位或者6位数字输入指定位置即可完成验证[18],具体实现步骤如图3.3所示.

 

图3.3短信验证码的实现步骤

1).生成随机数字

生成随机数字其实很简单,只需一行代码,具体如下:

StringverifyCode=String.valueOf(newRandom().nextInt(899999)+100000);

2).获取第三方接口以及调用第三方接口

 

图3.4第三方接口使用步骤

3.4基于生物特征验证码的实现原理

基于生物特征验证码的实现原理之中设计的数据量十分庞大,所以基于生物特征验证码的实现原理一般也是通过神经网络算法来实现的,下面简要的介绍一种神经网络算法,具体如图3.5BP神经网络应用流程所示.

图3.5BP神经网络应用流程

基于BP算法的神经网络结构是一种特殊的多层感知机模型[19].其特殊性表现在含有隐含层且能调节所有的连接权,网络的输出值可以是连续的.神经元之间进行全连接,而对于每层神经元则无相互连接,信号只进行网络的单向传递.输入层用来接收信号的输入,不对信号做任何处理.隐含层接收输入层的输出并经过函数处理.输出层接收隐含层的输出并经过函数处理.这种函数处理对于BP神经网络来说,通常采用非线性的映射关系,输出层输出即为网络的整体输出.

3.5人机交互验证码的实现方式

人机交互验证码也叫做滑动验证码,最近滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低.当然到目前为止,没有绝对的安全验证,只是不断增加攻击者的绕过成本.

接下来分析下滑动验证码的核心流程:

1)、后端随机生成抠图和带有抠图阴影的背景图片,后台保存随机抠图位置坐标.

2)、前端实现滑动交互,将抠图拼在抠图阴影之上,获取到用户滑动距离值.

3)、前端将用户滑动距离值传入后端,后端校验误差是否在容许范围内.

4.验证码攻击方法以及安全性研究

4.1验证码的攻击方法

对于攻击验证的攻击的实质就是识别验证码,进而输入识别出来的答案,输入到指定的位置,进而导致非法登录.对于验证码识别步骤一般分为三个步骤[20]也就是:

图像预处理、字符分割、字符识别.

4.1.1图像预处理

而对于图像预处理一般也是分为三个步骤分别是:

灰度化,二值化,去噪.下面用图像二值化具体分析.

1)、图像的灰度化

验证码的图片一般可以分为三通道分别是R(红色)、G(绿色)、B(蓝色).这里将验证码的图片的三通道加权平均值法的原理进行赋值,经过试验证明三通道R(红色)、G(绿色)、B(蓝色)的加权权重分别是WR=0.299,WG=0.587,WB=0.114那么灰度化公式如下所示:

(4-1)

2)、灰度图像二值化

下面一个公式展示了二值化的具体的原理:

(4-2)

其中,F(i,j)表示为灰度图像二值化的具体输出,f(i,j)为为灰度图像二值化的具体输入像素,T为灰度图像二值化的具体阈值.而这里具体确定图像二值化的具体阈值T的方法为迭代法,具体方法如下所示:

(1)确定灰度图像二值化的具体最小灰度值Tm,然后确定灰度图像二值化的具体最小灰度值最大灰度值Tn,则灰度图像二值化阈值初值可以表示为:

T0=(Tm+Tn)/2;

(2)将图像分割成背景和图案二个部分,分别求出灰度图像二值化的具体的平均灰度值Ti和Tj.

(3)求出灰度图像二值化的具体新阈值:

T1=(Ti+Tj)/2;

(4)如果T0=T1,则结束,否则令T0==T1,转向第二步.

3)、灰度图像去噪

毫无疑问,在一般的网站中的验证码图像都含有多多少少一定的噪声,因此对于去噪灰度图像二值化处理之后必须进行去噪处理,我们这里采用的是均值滤波的方法进行去噪的,具体表达式如下:

(4-3)

其中,g(x,y)表示为经过均值滤波的方法对灰度图像去噪之后的的新的灰度值,而其中m一般取值取为5或9都可以达到预定的效果.

4.1.2字符分割

验证码灰度图像二值化经过预处理后,我们便能开始分割字符了,分割具体处理的是去灰度图像二值化经过预处理的图像.字符分割我们这里采用的是边缘检测的方法.

首先我们利用Roberts算子,具体的表达式如下:

(4-4)

然后我们可以用求得到的算子来找到图像的边缘.

4.1.3字符识别

验证码灰度图像二值化经过预处理后,并且在分割字符之后,便可以进行字符识别了.我们这里选用的字符识别的方法选用的最近非常火热的BP神经网络的方法.具体的步骤如图4.1所示.

图4.1BP神经网络

(1)训练样本的制作

我们选择的训练样本一共包括验证码图像800张左右.

(2)BP神经网络的参数设定

具体的训练网络如图4.2所示.

 

图4.2训练网络

在这里我们列举几个网络配置,具体的参数信息见下面:

net.trainParam.show:

显示中间结果的周期;

net.trainParam.epochs:

最大迭代次数;

net.trainParam.1r:

学习率.

4.2安全性研究

本篇论文主要内容是简介验证码的原理与作用,以及收集各种验证码,了解其实现方式,以及为方便开发者从众多的验证码中选择出一种适合自己系统的验证码,所以对现有验证码进行分类整理,列举出一些具有代表性的验证码并对各自的安全性进行对比分析,且对安全性做出一个大致的排序,比较各类验证码的优点与缺点.列如文本验证码,它展示一张含有多个字符的图片,要求用户识别并在输入框中输入对应的字符,输入全部正确即认证成功,这些字符多为大小写英文字母、数字或它们的组合,伴随这噪线、扭曲、多字体等复杂机制来提升安全性.这些安全机制多是对抗分割和对抗识别的,对抗分割的安全机制增加了程序分割出单个字符的难度,比如用字符粘连抵抗分割,用空心线来描绘字符轮廓等机制[20]来增加验证码的安全性.

在这里,我们取出50幅验证码图像(分为A类、B类、C类、D类、F类)经过上面的图像二值化预处理,边缘分割技术,BP神经网络进行字符识别技术,可获得200幅图像,而且都被统一成了为十六进制的字符图像.将统一成的十六进制的字符图像当做BP神经网络的输入,然后BP神经网络通过读取权值文件后就可以字符识别,我们可以看出得到识别有误差的图片5幅,完全没有问题的图片195幅,单个字符正确率为97个百分点,验证码识别正确率为95个百分点.

4.2.1二值化预处理个阶段效果图

下面列出了一些各个时期的图像,如图4.3是图像二值化预处理的效果图.

图4.3图像二值化预处理个阶段效

4.2.2字符分割效果图

如图4.4所示是第二阶段字符分割的效果图.

图4.4字符分割效果图

4.2.3字符识别之后的效果图及其安全性研究

如图4.5是第三阶段B类C类验证码经过字符识别之后的的效果图.

图4.5B类C类验证码经过字符识别之后的效果图

上图分别列出了各个时期经过处理之后的效果图,图4.3是图像二值化预处理个阶段效果图,图4.4是字符分割效果图,图4.5是B类C类验证码经过字符识别之后的效果图.最后我们可以得到各类验证码图片识别的准确率的统计表.

表4.1结果统计表

验证码图像类别

正确率

A类

96%

B类

100%

C类

94%

D类

100%

E类

100%

F类

96%

从表4.1实现结果统计图看出来,A类、B类、C类、D类、E类、F类六个类型之中只有A类、C类、F类3类验证码的识别程度相对低一点,可见我们可以对A类、C类、F类3类验证码验进行一些相应的操作,也就是可以多加入一些噪线、扭曲、多字体,以及多加入些复杂的中文文字,加入一些相应的数学计算等复杂机制来提升安全性,也可以用字符粘连抵抗分割,用空心线来描绘字符轮廓等机制来增加验证码的安全性.

4.2.4人工智能识别安全性研究

对于人脸以及运算类必须经过人类大脑或者最为直接身份认证的识别毫无疑问是最为安全的,比如图4.6所示的含有复杂计算的验证码和图4.7所示有人脸识别的验证码就是这一类验证码.

图4.6含有计算的验证码

根据图4.6描述的含有计算的验证码,由于含有复杂的计算,一般的程序难以破解,这样一种验证码可以防止人们在网上的信息被很多不法分子所利用,所以说这样一种含有计算的验证码的安全性是能够得到保障的[21].

图4.7人脸识别的安全性验证

根据图4.7描述的人脸识别的安全性验证,由于其中含有较为复杂的计算量,得出人工智能的算法较好,并且这样一种人脸识别的安全性验证不单单是简简单单的识别到人脸即可.在进行登陆的时候,系统可能会让你眨眨眼睛或者笑一笑等等智能化的操作,杜绝了别人拿用户的照片进行登录,这些不法分子能够直接利用各种简单的程序破解居民信息,或者说通过是病毒,来获取居民的信息,进而进行一些诈骗或者其他违法行为.所以说人脸识别的安全性验证的安全性是能够得到保障的.

4.2.5人机交互验证码安全性研究

最近滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低.从前面图2.4基于人机交互的验证码可以看到,滑动图形验证码,重要有两个图片组成,抠块和带有抠块阴影的原图,这里面有两个重要特性保证被暴力破解的难度:

抠块的形状随机和抠块所在原图的位置随机.这样就可以在有限的图集中制造出随机的、无规律可寻的抠图和原图的配对.并且由于人机交互通过了距离的不同的把控,加入了人为的操作,增加了一点安全性.

4.3各类验证码的安全性比较

从上文各种分析研究实验可以知道,对于上面所描述的一些通用的验证码,本文进行了一个大概的比较,其中基于生物特征的验证码,以及短信验证码最为安全,其次相对来说人机交互的验证码较为安全,最后才是图片以及数字验证码,但是对于数字类型的验证码用过上文的研究实验可以进行加入噪线、扭曲、多字体等复杂机制来提升安全性.

5.总结

本文首先介绍验证码的历史背景,验证码的概念,验证码的作用以及验证码的意义.然后

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1