中国科学技术大学硕士学位论文验证码识别技术研究姓名:王璐申请学位级别:硕士专业:信号与信息处理指导教师:张荣2011-05摘要I摘要随着互联网的高速发展,网络在给人们的生活带来极大便利的同时,其安全问题也日益突出。网络验证码作为一项广泛使用的验证手段,对网络安全起到了重要的作用。对验证码识别技术的研究,可以及时发现和改善验证码的漏洞,在增强网络安全性、防止恶意机器程序攻击方面有着重要意义。本文运用计算机视觉、模式识别等相关理论对多种不同类型的验证码进行识别研究。选取了具有代表性的猫扑、西祠胡同和天涯验证码为研究对象,对具体的验证码提出了针对性的破解方法,揭示了其不安全的可能性。并通过不同的识别算法的对比,使研究具有一定的理论和实际价值。主要工作和成果如下:1.重点研究了用于字符识别的BP神经网络、卷积神经网络和形状上下文算法,给出详细的推导。2.针对已有的猫扑验证码,提出了一种识别方案。该方案采用分段线性变换去除图像模糊,利用局部OSTU二值化,得到了比全局阈值更好的分割结果。对传统的投影分割法改进,提出了极小值分割算法,有效解决了猫扑验证码字符粘连的问题。并采用简化后的卷积神经网络进行字符训练和识别,达到了94.1%的高识别率。3.对已有的西祠胡同验证码,提出了K-means聚类算法和竖直投影结合的方式完成分割,解决了字符叠加和粘连的难题。对单个字符以简化后的卷积神经网络进行训练和识别,识别率达到了53%。4.对已有的难以分割的天涯验证码,提出了基于形状上下文整体识别验证码的方法,破解率达到了27.7%。这种整体识别的思想也给其他较难分割的验证码提供了一个新的识别思路。关键字:验证码,识别,卷积神经网络,BP神经网络,形状上下文AbstractIIIABSTRACTWiththerapiddevelopmentofInternet,thenetworkhasbroughtgreatconveniencetopeople'slive.Atthesametime,networksecurityissuesarealsoprominentlyincreasing.Asawidelyusedmeans,NetworkCAPTCHAhasplayedanimportantroleinnetworksecurity.TheresearchofCAPTCHArecognitiontechnologycanhelpusdiscoverandimprovetheloopholesoftheverificationcode,soastopreventwebsitesfrommaliciousattacksbymachineprogram.ThispaperusescomputervisionandpatternrecognitiontorecognizedifferenttypesofCAPTCHA.WeselecttherepresentativeMop,XicihutongandTianyacaptchaastheresearchobject.Aimingatthespecificcode,weproposedtargetedbreakingmethodtosolvepracticalproblems.Theresultsrevealthepossibilityoftheirinsecurity.Throughcomparisonofdifferentrecognitionalgorithms,thestudyhastheoreticalandpracticalvalue.Followingisthemainworkandachievements:1.FocusonthealgorithmsofBPneuralnetwork,convolutionalneuralnetwork,andgivetheirdetailsofthederivation.2.FortheexistingdividedMopcode,weproposearecognitionscheme.Itusepiecewiselineartransformationtoremovetheimageblur.LocalOSTUbinarythresholdgotbetterthantheglobalresults.AfterimprovingthetraditionalprojectionmethodweproposetheminimumsegmentationalgorithmanditeffectivelysolvethemergedcharactersinMopcode.Thensimplifiedconvolutionalneuralnetworkisusedtotrainandrecognizesinglecharacter.Itachievesahighrecognitionrateat94.1%.3.ForexistingXicihutongverificationcode,theK-meansclusteringalgorithmcombinedwithverticalprojectionisproposedtocompletedivisionanditsolvetheproblemofstackingandadhesion.Thensinglecharacteristrainedandrecognizedbysimplifiedconvolutionalneuralnetworkandtherecognitionrateis53%.4.Forexistingtianyacaptcha,weputforwardtheoverallrecognitionalgorithmbasedonshapecontexttoverifycode.Thebrokenrateis27.7%.Thisglobalrecognitionthoughtalsogivesanewideatoidentifyothercodewhichismoredifficulttosplit.Keywords:CAPTCHA,recognition,convolutionalneuralnetwork,BPneuralnetwork,shapecontext中国科学技术大学学位论文原创性声明本人声明所呈交的学位论文,是本人在导师指导下进行研究工作所取得的成果。除已特别加以标注和致谢的地方外,论文中不包含任何他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的贡献均已在论文中作了明确的说明。作者签名:___________签字日期:_______________中国科学技术大学学位论文授权使用声明作为申请学位的条件之一,学位论文著作权拥有者授权中国科学技术大学拥有学位论文的部分使用权,即:学校有权按有关规定向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅,可以将学位论文编入《中国学位论文全文数据库》等有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。本人提交的电子文档的内容和纸质论文的内容相一致。保密的学位论文在解密后也遵守此规定。□公开□保密(____年)作者签名:_______________导师签名:_______________签字日期:_______________签字日期:_______________第1章绪论1第1章绪论1.1研究背景1.1.1验证码概念随着互联网技术的快速发展和应用,网络在给人们提供丰富资源和极大便利的同时,伴随而来的就是互联网系统的安全性问题。验证码的出现正是加强web系统安全的产物。验证码(CAPTCHA)最早作为卡内基梅隆大学的一个科研项目,Yahoo!是CAPTCHA的第一个用户。CAPTCHA是“CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是人类还是计算机的公共自动程序。在一个验证码测试中,由计算机生成一个问题并评判用户的答案,这个问题必须只有人类才能解答。由于计算机无法解答,回答出该问题的用户就会被认为是人类[1]。CAPTCHA在网络上的大规模使用起源于1999-2000年Yahoo网站的账号注册。目前大部分网站都引入了验证码机制来加强网络的安全验证。1.1.2验证码的分类由于生成验证码程序的不同,验证码的种类也多种多样。大体有基于字符的图片验证码、3D验证码、基于数学的验证码、声音验证码和中文验证码等。1.基于字符的图片验证码这是网络中最常用的验证码。它易产生,具有标准答案,不受背景知识和文化差异的影响,暴力破解复杂度很大。几乎所有的国内网站和大部分的国外网站都是采用此种验证码。此类验证码是系统在用户访问页面时随机产生的一个图像,图像中包含数字、字母或其他文字。其中字符序列与背景图像进行信息融合,添加干扰噪声,或对图像进行混杂、扭曲、粘连、变形等处理,以增加图像识别的难度。这也是我们的研究对象。以后章节提到的验证码若无特别说明,便指此类图片验证码。第1章绪论2新浪搜狐网易西祠胡同GoogleYahooMsnHotmail图1.1各大网站邮箱的验证码2.3D验证码这类验证码对机器而言较为难以破解,但生成比较麻烦,用户体验也不如字符验证码简单,现有网站应用的较少。图1.2带缩放和旋转的3D验证码[2]3.基于数学的验证码这类验证码基于数学运算,给出一个数学算式或一段代码,其结果作为验证码填入页面。计算机几乎无法回答,但用户体验更差,要求用户有数学基础或代码经验,难以普及。图1.3数学验证码第1章绪论34.声音验证码图1.4audio验证码这种验证码跟字符验证码结合,播放的声音中有图片中的字符。图1.5另一种声音验证码5.中文验证码验证码图片字符为汉字,如网易验证码(图1.1)。由于中文字库较大,汉字字体类型较多且国外对汉字不熟悉,这类验证码可以抵挡得住国外垃圾信息的攻击。但这种验证码的用户体验比较差,只能应用于中国。并且用户需要花费比数字英文字符验证码更多的时间来输入中文字符。图1.6中文验证码的另一个例子第1章绪论46.一些其他的验证码下图给出的是基于图像内容和语义的验证码。图1.7的验证码要求用户单击3幅是猫的图像。图1.8是根据所给的图像顺序在备选图像库中单击匹配的图像。图1.7从中选出三张是猫咪的图片图1.8另一个验证码的例子1.1.3验证码作用验证码在互联网上的用途就是区分人类和计算机,抵御恶意机器人程序。其主要作用有以下几点:1.防止论坛、博客中的垃圾评论。许多论坛或博客为防止有人利用计算机程序在论坛上张贴广告或发布垃圾信息,在留言提交的位置处都会设置验证码,要求留言者必须输第1章绪论5入所给图片的中字符或完成所给算术题等才可以提交留言。通过使用验证码技术,只有人可以在博客里输入评论。验证码为我们创造了一个干净的互联网浏览环境。2.防止垃圾邮件。Spammer通常先在网络上搜寻到以文本形式存储的邮件地址,下一步进行垃圾邮件轰炸。验证码可以提供隐藏人们邮件地址的有效机制。设想一下,如果spammer在获得邮件地址之前被要求输入验证码,他们将耗费大量的时间。3.保证在线投票的真实性。随着互联网的发展和个人电脑的普及,在线投票变得越来越方便。同时由于网络实行匿名制,人们在网络上也更加愿意表达自己的真实想法。我们需要做的是保证只有人类可以投票,而不是机器。验证码毫无疑问是我们最好的选择。4.预防字典攻击,防止密码被暴力破解。在密码系统中,验证码能够用于防御字典式的暴力破解。方法很简单:在几次密码输错后,用户需要输入验证码中的文字,才能继续操作,这可使他人猜解密码不能轻易实现。这种方法比传统的几次未成功登陆后封锁账号的方法更加合适,因为传统的方法可能被恶意破坏者用来封锁任意账号。5.保护网站,防止对网站的批量注册。很多公司,如Yahoo、Goo