越来越“变态”的验证码,到底在验证什么?

news2024/11/15 7:36:15

验证码要验证的是它所面对的是真实的人还是计算机程序。最开始的验证码非常的简单,只要输入几个数字就可以。不知道从何时开始见证了变得越来越变态,变得花样不断的验证,验证码就不仅仅是视力的挑战了,有的时候已经是视力及智力的双重挑战。

还有大家经常看到的验证码,猜出图中验证码字母。

请计算出图中验证码的结果。

好了,我们还是回到标题上来,聊一聊验证码是怎么为难我们人类的。

验证码的由来

2000 年,雅虎当时还是全球最大的网络邮箱服务商,雅虎邮箱的用户经常收到许多垃圾和诈骗短信。

这种经历放在今天,就是你下班回到家,发现自己门口摆满了快递。

但注意,其中只有一个快递是你自己购买的,其他的快递都是别人发的垃圾。

你为了找到自己的快递,只好拆了全部的快递。这时,你恐怕只会后悔自己有这一个快递。

当时受到影响的不止雅虎,还有许多互联网公司。

黑客们利用脚本机器人大量注册账户,进行评论注水、黄牛抢票、撞库扫号等影响互联网企业运营的行为。

现如今,“ 天下苦验证码久矣 ”,而在二十年前,则是“ 天下苦脚本机器人久矣 ”。

后来雅虎找到在卡内基梅隆大学的路易斯·冯·安(验证码之父)等人,与他们合作。

*路易斯·冯·安(验证码之父)

他们利用当时的人机验证机制,为雅虎设计了一套防御机器人的程序,并首次提出了“验证码”的概念。

验证码,更专业的名字是“全自动区分计算机和人类的图灵测试”,简称 CAPTCHA。

验证码的作用是让计算机区分人类和计算机。大家熟知的图灵测试是让人区分人和计算机,与验证码作用刚好相反。

因此,有些人也将验证码叫做“反向图灵测试”。

文本类验证码

然而,一切没有那么容易。

早期的验证码非常简单,只是普通的字母组合,干扰的信息很少,而文字识别技术( OCR )的应用甚至要比验证码早 30 年。

没过多久,黑客利用 OCR 成功破解了验证码。

于是,计算机科学家们继续寻找更好的防御机制。

他们在验证码的字符中加入更多的干扰因素,将字符连接、变形、空心,变成动态,加入更复杂的背景。

总之,一切都是为了降低脚本机器人的识别成功率。

然而降低机器人识别正确率的效果是暂时的,降低用户的识别成功率却是永久的。

我经常遇到无法识别的验证码,要么需要刷新,要么输入错误。

此时计算机对我的判定是:你 不 是 个 人!

这句话听起来是不是好像是在骂人。

2008 年,两位英国纽卡斯尔大学的计算机研究人员发布了一篇论文。

在论文中,他们用新的字符分割法来识别微软、雅虎和谷歌的验证码。

微软和雅虎的验证码识别正确率超过 60%,谷歌的验证码识别率较低,为 8.7%。

虽然谷歌这个数字看起来比雅虎和微软优秀,但脚本机器人可以发动大量攻击,100 万次尝试就将有 8.7 万个验证码被破解。

因此,这个结果仍然是无法令人满意的。

在这份论文中,研究人员还列出了用户会混淆的几个验证码:

比如:

开头是字母 “ d ” 还是 “ cl ” ?

这是哪几个字符?

别问我答案,我也不知道。

虽然变形扭曲的字符能提升拦截脚本机器人的效率,但真人用户同样难以辨别验证码,也被阻挡在外。

甚至有研究表明,通过卷积神经网络模型( CNN ),机器识别扭曲字体的正确率还要高于人类。

验证码杀敌一千,自损一万。

简单文本内容的验证码已经无法满足需要,于是,又出现了答题类的验证码。

验证码成了考题,用户输入正确的答案才能通过验证,这种形式的验证码虽然能暂时有效阻挡脚本机器人,但却对用户不友好,受到许多吐槽。

因此,答题验证码并不常见。

毕竟,当你遇到文章开头这种验证码,你可能不会愿意计算出答案,而是直接关闭页面。 

文本类验证码面对脚本机器人的攻击,渐渐招架不住,研究人员决定调转方向,开发采用图像选择类的验证码。

图像选择类验证码

相比于文本类的验证码,图像选择类验证码对用户友好很多,只需点击图像,不再依赖键盘输入,而且图像验证码趣味性更强。

例如根据题目要求在几张照片中找出符合要求的照片即可,体验起来像是玩连连看。

2007 年,研究人员提出了图像选择类验证码,之后迅速受到研究人员和用户的欢迎。

毕竟,谁会喜欢考试而不喜欢游戏呢?

2015 年 3 月,12306 为了防止黄牛抢票引入了图片验证码,引发热议。

抢过火车票的小伙伴对此肯定不陌生,为了不被 12306 的验证码难住,不得不调闹钟提早登录 12306。

刚开始,图像选择类验证码还能起到不错的保护效果。

然而,随着图像识别技术的发展,特别是 AI 技术的进步,人们可以训练机器学习分类图片,破解图像。

例如,国外的研究人员就利用 SVM 分类器和卷积神经网络模型等方式,来破解部分图像选择验证码。

来自卡内基梅隆大学的一个团队在 2017 年发布论文表示:

他们通过收集 260 万个验证码和短语,以及 2100 万张图片,经过卷积神经网络的训练,最终可以使机器在 2 秒内以 77% 的正确率通过 12306 的验证码。

为了阻挡脚本机器人的攻击,维护人员不得不制作更多新的验证码图片,利用新的验证码图片还未被机器学习,以此来降低机器的识别正确率。

于是更多奇怪的验证码被制作出来。

然而,我们普通用户成了最大的受害者,各种奇葩的图片验证码让人难以区分,连登录自己的账户,都变成了一件难事。

不过一些研究统计表明,在图片验证码的正确率上,机器在某些方面的图像感知能力也已经领先人类。

既然图像选择验证码也干不过机器,研究人员再次使出绝招:调转方向!

行为轨迹类验证码

无论文本还是图像都是以问答的形式来验证人和脚本机器人,脚本机器人通过学习,表现比人类还要稳定。

于是,研究人员发明了行为轨迹类的验证码,而它的原理就是利用人类在行为轨迹上不如机器稳定。

以我们熟悉的滑动验证码为例:

当我们将左边的滑块向右拖动,后台服务器不仅验证用户能否正确地将滑块填进空缺位置,还要记录用户的鼠标位置,滑块的移动轨迹等信息。

通常来说,相对于脚本机器人,人类的滑动轨迹都是非匀速的,不准确的。

尤其是像我这样肢体不灵活的人,越接近空缺位置,速度越慢,直到合上滑块。

这个过程有很多不稳定的因素,正是通过不稳定的轨迹,后台服务器才会识别该操作来自于人,而不是稳定的脚本程序。

虽然滑动验证码相比之前的验证码是一个进步,但破解验证码的方式也在跟着进步。

2010 年,日本京都大学的研究人员向外界公布了滑动验证码,并于 2012 年投入商用。

2014 年,马德里康普斯顿大学的研究人员就宣布他们破解了滑动验证。

如今,加入了学习模型的智能脚本机器人也能通过学习人的滑动轨迹,通过做出变速,折返、抖动等行为轨迹来模仿人类,骗过服务器。

行为轨迹类的验证码还有更简单无感的方式,点击验证,直接点击按钮,服务器通过收集检测用户的环境信息来判断是真人还是脚本机器人。

这无疑是目前所有验证码中用户体验最好的,但它也并非绝对安全,而且还存在用户隐私泄露的风险。

短信验证和扫脸认证

现在,短信验证已经成为最常见的验证方式之一。

在小编的手机短信中,两类短信最多。

一类是验证码短信,一类是需要发送“ TD ”才能退订,但退订后又还能收到新短信的垃圾营销短信,而最实用的快递签收短信只能排在第三。

短信验证通过绑定手机号码来确认该用户是否是本人,跳出了网络这一维度,调用了外部设备,安全程度比以上几种验证码有所提升。

但验证码短信恰恰成了这种验证方式的薄弱环节。

不法分子可以通过建立伪基站,截取用户短信验证码,获得登录甚至交易权限。

又或者,通过诈骗获取用户的验证码。

另一方面,短信验证码又是最不友好的验证方式之一,尤其是手机不在的时候,还要找手机,解锁、记住验证码,再输入验证码,这是我最讨厌验证码的时刻。

如今,一些对安全要求较高的验证通道已经卷向了扫脸验证,需要对着手机前后移动,调整角度,眨动眼睛才能登录。

然而这种看似安全的方式也不是绝对安全,百度搜索可看到许多扫脸认证被破解的信息。

验证码的另类敌人

这时小编不禁想:我们普通用户登录个账号怎么就这么麻烦。

本质上而言,验证码技术的战争是网站维护人员与黑客攻击者之间的竞争。

双方你追我赶,验证码的技术在 20 年里已经多次迭代。

从最简单的输入字母到需要调动用户摄像头的刷脸验证,破解技术也从曾经的 OCR 发展到如今的 AI。

然而,最受伤的却是我们这些普通用户,验证方式逐渐复杂,意味着我们要在验证码上花更多时间和更多手段。

验证码要面对的敌人,并不仅仅是脚本机器人或技术顶级的黑客,还有毫无技术含量的人类。

一些不法分子建立了验证码破解平台,将验证码打包发送至平台,以非常低廉的价格雇佣一批人。

人工输入正确验证码答案,并建立数据库,用来破解验证码,这个方法简单粗暴却有效。

AI 也学会了这一方式。

据媒体报道,一个测试 AI 的机构发现 OpenAI 的 GPT4 会假装成一个视障人员,让人类帮他输入验证码。

没错,AI 甚至学会了欺骗人类免费帮它劳动。

面对越来越接近人类的 AI,区分人类和机器人将会变得越来越困难,验证码只会更加复杂繁琐。

而作为一个普通的网络用户,小编只希望输入验证码的方式能简单一点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CB5309高集成国产2.4 GHz射频前端放大器功放芯片

目录 什么是射频前端?CB5309简介芯片特性 什么是射频前端? 射频前端是射频收发器和天线之间的一系列组件,主要包括功率放大器(PA)、天线开关(Switch)、滤波器(Filter)、双工器(Duplexer和Diplexer)和低噪声放大器(LNA)等,对射频信…

【Nginx】第七章 Nginx原理与优化参数配置

7.1 Nginx原理 master-workers的机制的好处 首先,对于每个worker进程来说,独立的进程,不需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多。 其次,采用独立的进程&…

如何直接在线抠图人像?掌握这两个方法,轻松编辑你的照片!

在日常工作和生活中,我们经常需要对照片进行抠图操作,特别是对人像进行抠图,以便更换背景或添加特效。然而,对于那些没有接受过专门培训的人来说,使用复杂的图像编辑软件可能会感到非常困惑和无所适从。别担心&#xf…

如何设置微信小程序启动页及其全屏背景色?

一、设置启动页 打开微信小程序就会进入pages里面的第一个页面,所以只需要在pages.json中,把启动页写在pages的第一项就可以了 二、去掉导航栏,实现全屏显示效果 先清除全局的导航栏标题,在需要全屏的页面,添加以下代…

初级应急响应-Windows-常用命令

命令:regedit 说明:注册表 命令:Taskmgr 说明:任务管理器 命令:Msconfig 说明:系统配置(包含启动项) 命令:eventvwr.msc 说明:事件查看器 命令:co…

前端(vue)npm如何发布自己的包

1.首先vue create xxx创建一个空的项目(lib和local文件夹怎么来看后面的步骤) 2.将自己的方法或者组建文件夹放在src同层目录下,我这边是local文件夹 3.在APP.vue页面引入本地文件测试自己的方法有没有问题 4.在package.json中的scripts中配置…

3D轻量化引擎HOOPS Communicator中的反向代理

一、HOOPS Communicator概述 HOOPS Communicator由三个主要组件组成:Web查看器、服务器和数据创作工具 (1)Web GL Viewer:该组件嵌入在客户端的Web浏览器中,负责显示CAD数据、PMI视图、属性、测量、数据标记等。 服…

【Flutter】包管理(7)Flutter 状态管理 BLoC 从基础到实践

文章目录 一、前言二、BLoC 的基本概念三、在 Flutter 中使用 BLoC四、BLoC 的高级用法五、BLoC 的最佳实践六、购物车应用的实例七、总结一、前言 在 Flutter 开发中,状态管理是一个非常重要的话题。正确的状态管理策略可以使我们的代码更加清晰,更易于维护。 本文将深入探…

【Linux】详解进程控制 ( 再谈进程退出 | 程序替换exec*类型函数 )

再谈进程退出进程程序替换引入程序替换原理有哪些替换函数execl:execlp:execv:execvp:execle: execve: 接续上篇博客 “详解进程控制 ( fork函数 | 写时拷贝 | 进程退出 | 进程等待 )” 再谈进程退出 进程退出会变成僵尸状态,将自己的推出结果写入task_…

芯片等高科技制造业 如何实现安全的跨网数据交换?

芯片是信息产业的基础,一直以来占据全球半导体产品超过80%的销售额,在计算机、家用电器、数码电子、自动化、电气、通信、交通、医疗、航空航天等几乎所有的电子设备领域中都有使用。 所以,对于芯片这种高科技制造业来说,数据的安…

装饰模式(Decorator)

别名 装饰者模式(Wrapper)。 定义 装饰是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。 前言 1. 问题 假设你正在开发一个提供通知功能的库,其他程序可使用它向用户发送关于重…

Debezium系列之:Debezium 通知

Debezium系列之:Debezium 通知 一、概述二、Debezium 通知格式三、可用的通知四、启用 Debezium 通知五、访问 Debezium JMX 通知六、自定义通知渠道七、配置自定义通知渠道八、Debezium 核心模块依赖项九、部署自定义通知渠道十、配置连接器以使用自定义通知通道 一…

MFC加载3ds模型初步

网上下一个资源,名为 OpenGL三维场景绘制.rar; 看一下它是用MFC和opengl,自己绘制三维场景; 运行一下,有一个exe可以运行; 有一个较新版本的不能运行;这应是缺少VC运行库; 下面单独…

Linux下RPM软件包管理

目录 1、软件包管理介绍1.1、软件包分类1.2、源码包1.3、RPM包 2、RPM包管理-包命名和依赖性2.1、RPM命名规则2.2、RPM包依赖性 3、RPM包管理-安装升级和与卸载3.1、包全名与包名3.2、RPM安装3.3、RPM包升级3.4、卸载 4、RPM包管理-查询4.1、查询是否安装4.2、查询软件包详细信…

Gitlab将本地代码推送到远程空仓库

目录 引言 1、设置Git为源代码管理插件 2、创建Git仓库 3、设置多个远程仓库 引言 如果我们的本地代码想上传到公司内部的服务器,首先我们需要在VS2022中创建Git仓库,然后设置远程仓库的地址,才能将本地代码推送到远端。在远端会根据你本地…

表格式表单-table式from表单-合并行-合并列

效果: 使用【colspan】合并行 和【rowspan】合并列 html: <!-- 添加或修改报告数据库对话框 --><el-dialog :title"title" :visible.sync"open" width"1500px" append-to-body><el-form ref"form" :model"form&q…

Android Jetpack Compose之Checkbox的使用

Android Jetpack Compose 是一个现代化的 UI 工具包&#xff0c;为开发者提供了一种声明式的方式来构建出美观且功能强大的 Android 应用。在本文中&#xff0c;我们将详细介绍其中的一个重要组件——Checkbox。 一. Checkbox 简介 Checkbox 是 Jetpack Compose 中的一个组件&…

STM32单片机(三)第四节:GPIO输入练习2(光敏传感器控制蜂鸣器)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

一文学会如何使用Docker

Docker常见使用 1、Docker安装 ## 下载阿里源repo文件 $ curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo $ curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum clean …

详解8种不同类型的防火墙

什么是防火墙&#xff1f; 防火墙是一种监视网络流量并检测潜在威胁的安全设备或程序&#xff0c;作为一道保护屏障&#xff0c;它只允许非威胁性流量进入&#xff0c;阻止危险流量进入。 防火墙是client-server模型中网络安全的基础之一&#xff0c;但它们容易受到以下方面的攻…