在文章开头,老狐先给大家玩一个验证码的游戏,猜出图中验证码字母。
请计算出图中验证码的结果。
好了,我们还是回到标题上来,聊一聊验证码是怎么为难我们人类的。
验证码的由来
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,区分人类和机器人将会变得越来越困难,验证码只会更加复杂繁琐。
而作为一个普通的网络用户,老狐只希望输入验证码的方式能简单一点。
审核编辑:刘清