首页 > 其他分享 >一文读懂验证码的前世今生

一文读懂验证码的前世今生

时间:2022-12-29 18:11:06浏览次数:36  
标签:字符 今生 验证 网站 验证码 用户 读懂 识别

  俗话说得好,“常在网上走,哪有不验证”。我们爱也好、恨也罢,每天谁不抓耳挠腮输入几个验证码呢?

  想象个场景:马上春运了,登录12306网站,发现还有最后一张余票,正准备下单时,验证码弹了出来,但是输入验证码错了好几次,好不容易成功了,票已经没有了,结果近在眼前的回家机会和你失之交臂,大家当时是不是特别气?其实也不用太生气,因为大部分人都遇到过这种窘境,或者这并不是你的问题。

 

 

  根据360浏览器的大数据统计,用户一次性填对验证码的概率只有8%,而中国铁路12306平台为了防止黄牛刷票,不断增加验证码难度,所以12306推出了581头神兽“焰狰马”(581种验证方式),内容涵盖12个大领域,33万多个排列组合选项,用户如果一次性成功输对12306验证码的平均时间为5秒,以热门线路车票秒光情况看,输错一次购票成功率就直降80%,而三次以上输入正确的网友也仅65%,比75%的高考录取率还低。

 

看下图,感受一下,能3秒钟说出正确答案的朋友,请让小编我膜拜一下,哈哈~

  我们都知道,验证码是目前大多网站所支持并使用于注册登录的,就在于其作用能有效防止恶意登录注册,验证码每次都不同,这就可以排除用其他病毒或者软件自动申请用户和自动登录。这就是验证码的真正作用,能够防止别人进行恶意攻击,而且大家也会注意到一点,在有些网站和APP上,如果频繁发送验证码,用户请求注册会提示XX时间后再发送验证码,在这一点的设置上,也很好地减少了恶意攻击网站的冲击。

  如今的验证码已经不再是简单的输入数字和字母,有的验证码简直怀疑人生。今天,我们一起来聊聊验证码的前世今生吧!

 一、验证码的前世今生

1、什么是验证码

  首先,先科普下验证码的官方解释:验证码称“全自动区分计算机和人类的图灵测试”,是一种区分用户是计算机还是人的公共全自动程序。

2、验证码的用途

  当各种计算机系统无法识别人类和计算机时,计算机技术也能给人类带来麻烦,例如:

  (1) 邮箱的泛滥注册,导致垃圾邮件满天飞;

  (2) 投票的野蛮刷票,导致投票结果不公正;

  (3) 车票的插件抢占,导致返乡车票买不到;

  (4) 自动地发帖评论,导致社区秩序混乱、质量下降。

  验证码的主要作用就是为了防止恶意破解密码、自动化程序注册僵尸号、第三方程序恶意抓取内容、自动化程序发帖评论、刷票等。

3、验证码的出现

  2000年左右,大家主要还是通过邮件交流,雅虎邮箱堪称当时互联网行业的“杀手级”应用,很多中国人的第一个电子邮箱后缀就是@yahoo.com,但大家要知道,有流量的地方就会有黑产,当年国际上最大的黑产是尼日利亚人。世纪之交时,他们开始用机器注册大量的雅虎马甲邮箱,用来发送垃圾邮件,进行网络诈骗,被媒体称作“雅虎男孩”。当时用户打开自己的邮箱,充斥着各种垃圾邮件,苦不堪言。而这个问题困扰了雅虎很久,当时被列为“雅虎十个无法解决的问题”之一。

  后来一位名叫路易斯·冯·安的人,他是一个计算机天才,为雅虎设计了一套人机验证方案,也就是最早的字符验证码。当时的验证码还比较简单,主要是一些简单的数字,利用了“人类会识字,但机器不会”的原理,这把当时的黑产打了一个措手不及。验证码的上线,将困扰雅虎很久的垃圾邮件问题得到了明显解决,用户体验呈指数级提升。

4、验证码被迫增加难度

  随着计算机技术的不断进步,黑产的技术也是层出不穷,所以他们怎么会被轻易打败呢?可以说,验证码给我们带来的困扰,全都是黑产的“功劳”,为了突破验证码的保护,发展出了以下的计算机技术:

4.1 OCR技术

  OCR英文全称是Optical Character Recognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。现在这技术已经比较成熟,实际应用场景比如:

    (1) 一个手机APP就能帮忙扫描名片、身份证,并识别出里面的信息;

    (2) 汽车进入停车场、收费站都不需要人工登记了,都是用车牌识别技术;

    (3) 我们看书时看到不懂的题,拿个手机一扫,APP就能在网上帮你找到这题的答案。

太多太多的应用了,OCR的应用在当今时代确实是百花齐放。

  但OCR技术只能处理一些简单的字符型验证码,稍微复杂一些的,比如扭曲和翻转的字符,处理的难度就比较大了。因此后来很多网站开始使用复杂型字符,以抵抗反验证技术。

4.2 机器学习模型

  2005年,有人利用机器学习模型对单个字符对验证码进行自动化识别,计算机对识别成功率竟然还比人类对成功率高。但训练机器的难度和成本是很高的,从技术门槛上已经极大的提高了反验证的难度。再后来,验证码继续升级,推出了算术题、图像识别题等高难度题目,让反验证技术难上加难。

4.3 伪装的手机基站

  要想破解短信型验证码,伪装的手机基站需要首先屏蔽目标手机的信号,然后以这个手机号码去尝试登录网站,还要能够伪装目标手机去接收短信。这各个环节都要在短时间内完成,简直就是Mission Impossible,而且每一步都是违法违规,破解成本高到天际了。

4.4 终极的“伪装”

  验证码最大的天敌是真实的人,有句话说“能打败人类的,终将是人类自己”,所以当人与人进行对抗时,基本技术发挥不了多大的作用。

 

5、验证码的种类

  你们知道都有哪些千奇百怪的“验证码”吗?下面我们一起来看看以下的几种类型。

5.1 字符型

  字符验证码,是我们日常最经常见到的验证码。在图片上随机产生数字、英文字母或汉字,一般有4位或者6位验证码字符。通过添加干扰线、添加噪点以及增加字符的黏连程度和旋转角度来增加机器识别的难度。但这种传统的验证码随着OCR技术的发展,能够轻易地被破解。

5.2 点击型

  点击类验证码,大部分是给出一张包含文字的图片,通过文字提醒用户点击图中相同字的位置进行验证,点击型验证码的安全性较高,而且用户体验较好。用在一些重要的计算机系统,例如:动车售票网站、大型购物网站、大型视频网站等用户量较大、数据安全要求高的地方,采用点击型验证码,可以有效识别人类,避免其他计算机的攻击。

5.3 计算型

  计算型验证码,通常是一些数学公式,需要人类发动聪明的大脑进行复杂的运算,才能得出正确的结果。

但除了简单的加减乘除外,有时还会考平方计算(没上过初中或许还真答不对)。

5.4 滑动型

  滑动验证码,也叫行为验证码,比较流行的一种验证码,通过用户的操作行为来完成验证。例如:拖动滑块的轨迹会是一个先快后慢的过程:先快速拖动,后慢慢对齐,再瞬间释放。

  滑动验证码的原理就是使用机器学习中的深度学习技术,根据一些特征来区分是否为正常用户。通过记录用户的滑动速度,还有每一小段时间的瞬时速度,用户鼠标点击情况,以及滑动后的匹配程度来识别。而且,不是说滑动到正确位置就是验证通过,而是根据特征识别来区分是否为真用户,滑到正确位置只是一个必要条件。

5.5 短信型

  短信验证码,是最常用的一种方式,各种APP一般会采用这种方式,简单直接,通过发送验证码到手机,这也是针对真实用户做的调整,保证用户操作的真实性,缺点就是有信息泄漏的可能。不过现在有些发送验证码是与手机号码相对应,而且一般有效期仅为60秒-90秒,目的是为了不留其他人钻空子的机会。

5.6 语音型

  语音验证码,也属于手机端验证的一种方式,一般为系统拨打电话给用户,用户接听电话,系统将验证字符(一般为数字)以语音的形式告诉用户,用户获得验证字符,在网站登录界面输入即可登录。

5.7 视频型

  视频验证码,将随机数字、字母和中文组合而成的验证码动态嵌入MP4、FLV等格式的视频中,增大识别器破解难度。验证码视频动态变换、随机响应,可以有效防范字典攻击、穷举攻击等攻击行为。视频中的验证码字母、数字组合,字体的形状、大小,速度的快慢,显示效果和轨迹的动态变换,增加了恶意抓屏破解的难度。其安全度远高于普通的验证码,而且这种形式的验证码在使用过程中用户不会感到枯燥,由于其提高了机器识别的难度,因此可以适当降低用户识别的难度,使用户更容易辨识。

5.8 扫码型

  扫码型验证码,实际上就是首先确保在手机上已经成功登录,然后通过扫描二维码的方式在PC上继续登录。该方式是各大视频网站、购物网站的常用方法。

  验证码属于安全验证的一种。而安全验证,无外乎是如下三个方面的判断:

  (1) 基础信息判断:如注册时要设置的用户名、密码、找回密码的问题和答案,这是对用户身份有一个基础判断;

  (2) 判断是真人:出现在我们经常见到的图形、数字、选图验证码等,用来判断你是不是真人;

  (3) 判断是本人:以上两个方式,只能判断你是真人,且是知道一定真实信息的真人,但还无法确定你就是账号的所有者。所以就出现了短信验证码、微信扫码、人脸识别等验证方式。

  目前很多网站已经在使用双重认证或多重验证的方式来保证用户和网站的安全。除了输入用户名、密码外,在发送验证码前还会进行滑块验证。

  最后,验证码如何才能更安全、更易用?这是大家都在思考的一个问题。验证码的发展史,就是人机抗衡的革命史,没有任何解决方案可以一劳永逸,但在可控的范围内,我们可以选择更友好的方式,在体验上,在特殊人群上,都可以做的更好一点点。作为“人类与计算机的角斗场”的验证码,将迎来更多的攻防机会,同时也会给我们的社会带来更多的改变。

免责声明:本账号部分分享的资料来自网络收集和整理,所有文字和图片版权归属于原作者所有,文章仅供读者学习交流使用,并请自行核实相关内容,如文章内容涉及侵权,请联系后台管理员删除。

标签:字符,今生,验证,网站,验证码,用户,读懂,识别
From: https://www.cnblogs.com/youdingte/p/17013190.html

相关文章

  • 【百家稷学】卷积神经网络的前世、今生与未来(武汉工程大学技术分享)
    最开始做我们这个技术公众号的时候,我定了3个层次的目标。第1层目标,输出100万字原创技术文章,去年年中的时候已经达成。第2层目标,走进100所高校和100个企业进行学习与分享,如今......
  • Java千问24:一文读懂Java语言方法的重写(覆盖、Override)
    ​很多初学Java语言的小伙伴,在学到“面向对象”这块内容的时候,都会学到的一个概念,那就是“方法的重写”。重写又叫覆盖,英文名为“Override”。虽然”重写”、”覆盖”、“O......
  • 实现app短信验证码功能这样做就很简单!
    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册、登陆、支付等场景,a......
  • 深度干货!一篇 Paper 带您读懂 HTAP | StoneDB 学术分享会第①期
    在最新一届国际数据库顶级会议ACMSIGMOD2022上,来自清华大学的李国良和张超两位老师发表了一篇论文:《HTAPDatabase:WhatisNewandWhatisNext》,并做了《HTAP......
  • 网络爬虫 -- 验证码识别
    0x00下载安装tesseract1、下载地址http://digi.bib.uni-mannheim.de/tesseract/2、安装成功后,配置环境变量3、检查是否设置成功tesseract-v4、安装tesseract库和pillow库......
  • 实现app短信验证码功能这样做就很简单!
    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册、登陆、支付等场景,a......
  • 一文读懂什么是低代码开发?
    世界在应用程序上运行,商业世界也不例外。**面对变化,企业过去依赖的传统应用程序开发流程可能不再有效。从头开始构建软件解决方案需要花费数月甚至数年的时间来规划、设计......
  • 图文验证码识别
    对于大多数图文验证码,均可以使用开源OCR识别库进行处理,比如ddddocr,接下来以ddddocr库进行示范一、ddddocr库安装和使用安装pipinstallddddocr使用代码示例im......
  • 页面调整、登录功能_验证码显示、代码实现
    页面调整会做出以下的功能列表查询,登录,添加,删除,修改删除选中,分页查询,复杂条件查询 <%@pagecontentType="text/html;charset=UTF-8"language="j......
  • 【验证码逆向专栏】某验三代滑块验证码逆向分析
    声明本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!本......