不知道从什么时候开始想在B站上找个视频学习一下,登录时发现验证码变成了这样:
下午六点结束了一天的工作,天气炎热,想着点个外卖吃完了再回家免得自己做饭,点开KFC发现验证码又变成了这样:
那些曾经让我们一度“怀疑人生”不好辨认的扭曲字符验证码好像在我们的日常生活中出现得越来越少。
究其根本,还是要从验证码这一让人又爱又恨的发明开始讲起。
现在国内大家最常见的营销方式是什么?你可能会想到:广告、短信、电话等等。但在第一批“00后”出生的那个年代,互联网行业商业化正式萌芽发展,最常被用来当作营销工具的当属邮件,在当时的互联网邮箱服务提供商中以Yahoo(雅虎)最为出名。
像现在大多数人一天会接收到3~5条垃圾短信一样,那时每个人的邮箱里也必不可少的存在大量的垃圾邮件。这些大部分来源于一群会敲代码、写自动程序的人,垃圾邮件无休止地发送给雅虎带来了用户体验差,邮件打开率低,邮件成本消耗高等问题。除此之外,还有一些不法分子利用邮件进行网络诈骗,他们无所不用其极,甚至还引起了白宫的注意。
2002年,一个来自卡内基梅隆大学的学生提出了“验证码”的概念,即全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart),简称CAPTCHA。经实践证明,验证码在当时有效地解决了以上问题,正确地区分了使用雅虎邮箱的是机器还是人类。
但后来时代变迁,科技进步,20年多前发明的“字符验证码”不能顺应时代发展的潮流必将遇到重重困难,安全性也便不言而喻。
脚本外挂泛滥,人与机器的对抗
“以毫秒级识别网站上的英文+数字验证码省去手敲烦恼,准确率高达90%”这是某网站的传统字符验证码自动输入脚本的功能说明。当在百度搜索“验证码脚本”的关键词后,我们发现类似这样的自动输入英文、数字的验证码脚本近年来一直层出不穷。
这些自动输入的验证码脚本准确率不仅高而且识别速度很快,从上面动图我们能看到输入速度基本是一秒一个。当羊毛党、黄牛、水军等利用这些脚本进行登录、注册或者抢购验证时,巨大的危机便在配置了这类验证码的网站或软件上悄然而至。而后,这些互联网平台的所有者们面临的将是巨额损失。
那脚本又是如何准确识别出这些字符验证码的呢?
卷积神经网络击溃字符验证码
卷积神经网络(Convolutional neural network,以下简称“CNN”),一种广泛应用于图像和视频识别、图像分类、自然语言处理等任务的神经网络。
早在 2003 年就有研究人员利用图像识别算法对字符验证码进行识别并得到了一个令人满意的识别效果。而CNN这个早就实际应用于银行支票等图像识别场景的利器,自然也会被放到验证码的角斗场中。在这两者之间的对抗中,字符验证码从一开始就处于被碾压的状态。
在各种深度学习框架和开源项目变得唾手可得的今天,训练一个 CNN 模型并在某一款字符验证码上快速得到可观的识别率也变得特别简单。
在2021年6月的一项实验中,我们随机生成了3000张图片,共 29726 个标签/目录(因为有的标签生成了 2 张或者多张图片)以如下方式组织了数据集:
CAPTCHA 库默认配置下生成了包含常见的字符扭曲、重叠和点、线的干扰的字符验证码:
实践结果发现本次测试模型对新生成的样本的识别准确率接近80%,且本次训练耗时仅用了11分钟。(实验详情:https://mp.weixin.qq.com/s/jAa1cw6f3QmwPrjttiw8Ow)由此可见,用卷积神经网络识别验证码的方法尤为高效,此次实验用时不到一刻钟便训练出了准确率近80%的模型。当黑灰产想要牟取利益时,机器条件允许,加长训练的时间,准确度完全可以达到95%以上,在这种情况下卷积神经网络便可毫不费力地逐渐击溃本就安全性不高的字符验证码。
廉价打码工人,人与人之间的对决
“验证码是为了区分‘人类’和‘机器’,如果我不使用脚本程序而是就通过真正的人进行验证那不就没办法把我阻拦在外了?”没错,那些黑灰产也是这样想的。但是,怎么能取得跟用自动程序一样的效果呢?永远不把聪明用在正途的黑灰产们想出了一个好办法:以极低的价格雇佣一些贫困国家或者地区的廉价劳动力并让他们在某些平台上进行人工识别字符验证码。这些平台被称为“CAPTCHA farms”也就是“打码平台”,那些劳动力也有个统一的名字叫做“打码工人”。
据研究调查得出全球打码人力输出大国排名分别是:印度、巴基斯坦、委内瑞拉、菲律宾、印尼、越南、肯尼亚、坦桑尼亚、新加坡。中国作为全球人口最多的国家虽然未曾榜上有名,从事打码工作的人也不在少数,大多集中于全职主妇、大学生这样的低收入或零收入人群。
只需要一台电脑,输入几个数字或是字母,按下空格键就能提交,验证码自动更换,鼠标这时甚至都不用派不上任何用场。这样没有技术含量的机械工作显然让传统的验证码不再具有任何安全性。不过现在大多数网站或者软件都会采用不同于字符验证码的滑动拼图、文字点选等应用了新技术的行为式验证码,打码平台对这些形式的验证码来说威胁要比字符验证码小得多。
鱼与熊掌二者皆不可得
人们常说“鱼与熊掌不可兼得”,一款好的验证码必定是同时满足两个条件:一是安全性高,二是用户体验感好,但在字符验证码面前,鱼和熊掌都没有。就像上文中提到的那样,卷积神经网络的应用使字符验证码的破解率和识别率变得越来越高,当时的验证码厂商们也清楚地意识到这一问题。于是他们通过扭曲或使数字和字母部分重叠,图片上加噪点、线条等方式意图让机器难以回答出正确的答案,殊不知这些操作也加大了真正的人类用户识别验证码的难度,给用户造成了不好的体验。直至20年后的今天我们仍能听见大家对这类字符验证码体验不好的吐槽。
结语
显然,安全性低、体验感差的传统字符验证码逐渐消失在人们的视野中是时代的选择。现在的验证码形式已经开始多样化发展,比起字符验证码安全性和体验感都有质的提升。尽管仍有很多人在使用验证码的时候仍然觉得麻烦,但验证码真真切切能保护我们的账号和信息安全。我们都知道事物都是在实践中不断发展进步的,从字符验证码到行为式验证码就是最好的证明。所以多给验证码厂商们一点时间吧,相信不久的将来就会有更安全更好用的验证码