验证码破解防范的技术研究和三维形式的设计与实现.doc_第1页
验证码破解防范的技术研究和三维形式的设计与实现.doc_第2页
验证码破解防范的技术研究和三维形式的设计与实现.doc_第3页
验证码破解防范的技术研究和三维形式的设计与实现.doc_第4页
验证码破解防范的技术研究和三维形式的设计与实现.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

. . . . .验证码破解防范的技术研究及其三维形式的设计与实现陆嘉辉(上海市上海中学 上海市 徐汇区 200231)计算机组指导老师:吴奕明2012年2月摘要:验证码经常用于网络程序的身份认证,可以防止恶意破解密码和论坛灌水,保证网络安全。本文讨论当前验证码的功能原理和常用的识别方法,对当前普遍使用的验证码的优点和缺陷进行分析和比较,总结出一个好的验证码应有的特点,并发现互联网上有很多验证码不能很有效地保证网络的安全。基于上述研究,本文提出一种生成验证码的新方法:利用C#语言实现能随机生成的三维形式的验证码。该验证码运用OpenGL编程接口,绘制一个可由用户控制旋转的三维球体,并将验证码中的字符投影在该球体上,显示在界面上让用户识别。该验证码具有三维旋转纹理和交互式操作的特点,能够提高机器识别难度,安全性较高且易于用户使用,能够保护用户的个人信息和论坛的可持续性。关键词:网络安全 ;识别与防范;三维验证码;纹理旋转;交互式操作Abstract:CAPTCHAs are usually used for network identification, which can prevent malicious cracking the passwords and meaningless content in forums to realize the Network security. This paper not only discusses the functions of CAPTCHAs and some common methods of recognizing them, but also analyses the advantages and disadvantages of the CAPTCHAs widely used at present, and make comparisons. The research concludes what characteristics a good CAPTCHA should have. Also it gets the result that many existing CPATCHAs are not very effective in keeping the Network safe.According to the research above, this paper proposes a new way, which creates a 3D CAPTCHA based on C#. The CAPTHCA makes use of OpenGL to draw a sphere which can be controlled to rotate by the user, and projects the characters of the CAPTCHA onto its surface, and display the sphere on the screen, letting the users to finish the identification. The CAPTCHA has two main characters: a rotatable 3D texture and interactive operation, thus increasing the difficulty for computers to crack it, having high security and enabling itself used easily, which can protect the personal information of users and the sustainability of forums.Key words: Network security; Recognition and protection; 3D CAPTCHA; Rotatable texture; Interactive operation目录4445555666777888101011111112131313141. 引言 1.1课题背景 1.2基本概念 2. 课题意义 .3. 研究现状 3.1验证码的识别 3.2验证码的防范 4. 验证码的破解原理 . 4.1暴力破解 4.2 OCR(Optical Character Recognition,光学字符识别) 5. 验证码的分类 5.1字符式验证码 5.2验证码的干扰 5.3问题式验证码 5.4非字符型验证码 5.5三维空间中的验证码5.6难倒用户的验证码5.7小结 6. 三维验证码的设计 6.1系统环境6.2设计思想6.3测试实验 -7. 展望7.1字符多样化7.2立体多样化8. 参考文献1. 引言1.1课题背景在验证码尚未出现的时期,垃圾评论可以轻松通过任何一个网站的注册程序,通过各种方式攻击论坛;同样,黑客也可通过暴力搜索破解账户密码,造成用户的巨大损失。如果一个用户连续发表一连串相同又毫无意义的内容在论坛中,不久论坛的整个板块就全是此垃圾信息了,而其他信息全被挤到了队列的后面。试想现在有一个自动发布信息的程序,每五秒内就能发送一次信息,那么一天的发送量至少在几万。当垃圾信息多到删除不完的时候,这个论坛就崩溃了。这就是所谓的恶意灌水。同理,一些不法分子专门利用破解用户银行帐号来谋取利益,一些网络银行也因此类原因导致用户密码被盗、财产损失等众多事件。如果发贴程序或是密码穷举程序在很多僵尸机中同时工作,结果可想而知。许多论坛意识到了防止恶意灌水的重要性,所以纷纷使用了一些防止措施,如发贴时间间隔的限制、同一IP地址发贴数的限制、内容不能重复等,但是这些都不是非常有效。同时,网站对账号的保护并不能使用这种方法,所以验证码应运而生。1.2基本概念验证码(CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试)是一种区分用户是计算机和人的公共全自动程序,可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。1现在很多网站的登陆和发帖都是用了验证码。客户端请求一个验证码,服务器便生成一个图片验证码并把其内容储存在session中,同时把它打印在网页页面上。当用户提交数据时,服务器判断输入的验证码和session的内容是否一致。一般验证码的设计步骤如下:1) 随机生成几个数字或字符形成字符串2) 产生一幅图片将字符串包含在里面3) 在该图片中加入一些干扰像素(有“噪点”、“噪音线”等)4) 将其写入内存数据流,并将图形输出传递到客户端5) 判断用户输入的验证码和保存的内容是否一致6) 如果验证失败,或是一定时间内没有向服务器提交登录和注册请求,则验证码就会失效,必须重新刷新获取一个新的验证码;若请求成功,则用户可进行操作,同时相关验证码刷新由此可见,验证码在一定程度上可有效防止“自动化机器人”的攻击尝试。2. 课题意义虽然验证码已被广大网站所使用,但它还是存在着许多漏洞。对于简单的验证码(纯数字),黑客通过手段使验证码无法刷新,再用暴力破解,则验证码形同虚设。后来加入了文字,使得暴力破解的时间变得无限漫长。这时黑客首先使用手段令验证码无法刷新,接着通过OCR将文字识别。所以产生了更复杂的验证码,如文字扭曲,背景画面的复杂化以增加识别难度,但这也会使用户难以看清图片;语音输入(让用户读一段文字)是一个好方法,但人口音的不同使得识别变得困难,这个度很难把握;还有问题回答,但对于知识面不广的用户有困难,且问题格式不会太多,使用多次后便会出现一定的重复。当然,没有一种验证码可以完全抵御破解的攻击。但是,找到一个机器识别成功率非常低的验证码仍是目前网络信息安全的一个重点,因为一个好的验证码能够更好地保护用户的个人信息和论坛的可持续性,这也就是世界各地的学者所追求的。3. 研究现状:3.1验证码的识别验证码在互联网中的使用已非常普遍,也成为了网站和网民交互的一个特别的方面。因此,国内外都有学者对验证码的设计和识别进行研究。一种基于LDA(线性鉴别分析, Linear discriminant analysis)变换的验证码识别技术【2】,采用递归算法的去处离散点法消除孤立噪声,选用扫描边界分割字母来研究验证码自动识别技术,效果很好。此外,一种基于BP神经网络学习和支持向量机(SVM)训练【3】的验证码识别方法分别利用了误差反向传播算法学习和最大间隔分类器建立方向合适的分隔超平面,并将两种方法结合起来,对图片具有干扰背景,字体变形,位置不定较为复杂的验证码可以达到不错的效果。还有一种基于MODI的验证码识别系统【4】,从验证码识别的角度设计并采用VC实现了一种检验验证码安全性的方法。3.2验证码的防范鉴于破解验证码的方式正在不断更新,破解手法也越发准确,验证码只有不断的进行自我更新,才能使心存不良企图的用户望尘莫及。如今,验证码从Z-Blog的数字、字母、汉字验证码,发展到图像、声音、视频验证码,通过非字符的形式降低机器的识别成功率。如今,三维验证码的设计也开始有所进展。一种基于在运动对象识别难题而构建动态验证码【5】,使得攻击者只有在有效解决运动对象识别难题后,才能通过该动画验证码的测试进而登录服务系统。国外则利用计算机上不能识别立体文字的弱点,生成了三维立体的静态字符验证码【6】,以防止机器的OCR识别,提高网络的安全性。4. 验证码的破解原理4.1暴力破解:如果网站的作者由于疏忽而忘了将session清空,则不管如何操作,验证码总是不变的,因此有了暴力破解的机会。既然可以手动提交验证码,就一定能用程序自动提交,本质上就是向服务器发送HTTP协议数据包。对于数字验证码而言,可能性很小,因此很快就可以破解。(图1)4.2 OCR(Optical Character Recognition,光学字符识别)OCR是一款文字识别软件,可将扫描仪输出的图片中的数据信息识别出来,可以直接应用(当然它也不是万能的,会出现一些错误)。验证码的破解过程与之相似,首先分析验证码的格式特征,去除图片中的噪声,然后进行字符特征提取,并读出每一个字符的像素值到字符特征库中进行对比取样,选取最合适的匹配作为当前字符的答案。(图2)图1 图25. 验证码的分类:5.1字符式验证码1) 数字:多为4位数字,而Z-Blog采用了5位数字的验证码。这种验证码很容易识别,故安全性问题比较严重。(图3)图32) 字母:因为字母有26个,所以识别起来难度稍有增加;有的网站还将数字与字母混合。这种验证码也很常见,但识别起来也不难。(图4)图43) 汉字:由于汉字数量之多,笔画之复杂,它的安全性就比前两种高了不少。但由于输入汉字对一些用户有困难(毕竟拼音和比划容易遗忘),所以利用率还不是特别高。(图5)图54) 其他国家的文字:主要用于国外的网站,如韩文、俄文等。5) 字符混合:变化更多了。(图6)图65.2验证码的干扰从上一节内容可以看出,简单字符型验证码的识别率实在是太高了,很不安全。所以有些程序员想出了一些补救措施:1) 噪点:即一些干扰像素,一定程度上妨碍机器识别,但对人眼识别没有较大的困难。(图7)图72) 干扰线:有垂直线、水平线、斜线、矩形框等,与字符重叠,阻碍机器正常识别。(图8)图83)扭曲和粘连:将字符扭曲和相互粘连以提高安全性,但也会干扰用户识别。(图9、10)图9 图105.3问题式验证码除了对字符验证码的加工,有的还包括简单问题的回答,如做计算和常识问题,但它们都有不足。对于算术,计算机只需要将每个数字和符号识别出,然后经过计算即可;而由于随机提出不同问题的技术还不够成熟(机器掌握一定语法的时代尚未到来),常识问题的验证码题库量很有限,刷新几次就会产生重复。(图11、12)图11 图125.4非字符型验证码目前主要有语音、图形(视频)、人机交互三种模式1) 语音:验证码会读出一段文字,然后让用户输入他的内容。但由于用户对该语音听得不是很清楚或是没法掌握其中的意思,使得输入显得有些困难。同时,对于一些配置不佳的电脑,使用时还需安装插件,对用户会造成不便。2) 图形:不显示文字,而是直接显示一些图片,让用户回答一些问题。如图片中的图形形状,或者某些东西的数量。安全性对于字符来说是质的飞跃,但同时辨认也显得有点困难,而且图片量也不会特别大。而对于简单的图片,现代计算机的矢量法模式识别和折点定位【7】算法已有了一定的发展,拥有至少一半的识别能力。所以二维图形验证码还有待改进。(视频就是动态的图片,一般都是二维的,能使机器识别的难度有一定的提高)3) 人机交互:服务器要求用户进行一些操作(主要为鼠标操作),例如将屏幕上一个物体进行拖动,到达某一个指定目标处来实现登陆。(例如滚轴解锁类型,或是将图形拖移至对应处)对于用户来说不需要视力的保障来看清字符,只需简单的拖动即可,但是机器也可以向服务器发送一个指令来做到相应的任务。5.5三维空间中的验证码1)动态验证码:正如WINDOWS系统中曾经有一个屏幕保护程序三维文字(图13)。该种验证码也是通过创造一个动态式的文字,使其在显示界面中进行平动和旋转,攻击者只有在有效解决运动对象识别的难关后才能进行字符的识别。然而这种运动并不是随机的,终将有一个循环,那么破解者可以选取一个循环并逐帧尝试识别,会有一定的可能识别。当然这种可能性非常之小。图132)三维验证码:虽然是静态的,但由于目前机器识别单个字符的概率仅有5%,识别整串字符就更是不可能。不仅如此,背景的叠加更混淆了机器对验证码的识别。不过,字符的三维化和立体旋转也在一定程度上增加了用户识别的难度。(图14)图145.6难倒用户的验证码验证码首要的目标是用户能识别并输入,一旦设计过度,就会给用户造成很大的麻烦:1)字符变形过度:字符全都挤压在一起,让人难以辨别(图15)图152)背景具有干扰性:即所谓的“喧宾夺主”,让用户不知道输入什么(图16)图163)冷僻字符:用户通常不用的字符,遇到了就很难输入(图17)图174)非常识性的验证码问题:用户都不希望仅仅为了输入验证码,还要拿来纸和笔算一算(图18、19)图18图195.7小结一个好的验证码应当具有的性质:1)易于用户识别:验证码的前提是用户能识别,否则用户不能登录网站。那么该网站就不可能收放到广大网民的欢迎了。2)干扰机器识别:验证码如果没有该效果,其用途和功能就形同虚设。3)随机生成:一旦题目数量有限,计算机就可以生成数据库来破解。4)实现简单:图20的验证码显然对设计者和使用者都很复杂。图206. 三维验证码的设计:6.1系统环境1)C#(C Sharp):是微软为.NET Framework量身订做的程序语言,C#拥有C/C+的强大功能以及Visual Basic简易使用的特性,是第一个组件导向的程序语言,和C+与Java一样亦为对象导向程序语言。【8】2)OpenGL(Open Graphics Library):是一个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图像(二维的亦可)。OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。【9】6.2设计思想生成验证码的步骤:1) 绘制一个可由用户控制旋转的三维球体2) 给球面上的每个小部分按指定规则随机一组像素值(类似噪音点)(图21,本图块面较大)图213) 将验证码中的字符投影在该球体上4) 随机噪音线5) 显示在界面上让用户识别。验证码的特点:1) 由于验证码分布于立体上,使得原来平面形式的字符不能同时出现在视角当中,总是会缺少一些部分,来影响到机器的识别。2) 由于投影面为球面使得平面上的字符会有所扭曲,从而影响机器的OCR的识别3) 由于球体是可以旋转的,攻击者不知道初始的旋转角度,识别的几率再次减小6.3测试实验由于上述验证码没有以图片形式显示,故一般的识别验证码的方法对此并不适用。针对设计的新式验证码,本文使用的试验方式是一种非常简单的办法:在用户界面上选择一个角度,将验证码转化成BMP图像让识别程序尝试识别,而得出识别成功率。下表为验证码球体相对于验证码(字母和数字)正对屏幕时机器识别的几率(每组20个):角度(x, y, z)识别几率(0,0,0)40%( ,0,0)0%(0, ,0)0%(0,0, )0%(/2,0,0)5%(0, /2,0)0%(0,0, /2)0%(/4,0,0)15%(0, /4,0)10%(0,0, /4)10%(3/4,0,0)0%(0,3/4,0)0%(0,0,3/4)0%(/8,0,0)25%(0, /8,0)25%(0,0, /8)20%(3/8,0,0)5%(0,3/8,0)10%(0,0,3/8)5%*(x, y, z)表示绕x, y, z轴旋转的度数由上可见,尽管在字符正对外侧的情况下,识别几率较大,但由于球体可以随机旋转,所以实际识别的概率是个加权平均:=(其中P为总识别概率,Pi为某一状况的识别概率,Xi为该状况) 经过粗略计算,总识别几率为4%到5%,识别几率确实不高。7. 展望7.1字符多样化将字符的种类从数字、字母拓展到汉字等方面,进一步降低机器的识别成功率。而由于汉字是方块字,投影在球面上能够遮挡更多的文字部分,使破解者更加无从下手。7.2立体多样化球体的投影比较单一,可能存在逆运算(尽管展开的几率很小)。可尝试正方体、长方体等各种多面体(图22)。当然,这样的立体会增加投影的难度,但也能更好地防止逆运算破解。图228. 结论(1) 当今的验证码不能很好地平衡服务用户、干扰机器、随机生成和实现简单这四方面,因此,验证码正向三维字符和动态字符发展,力求达到上述目的。(2) 本课题提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论