当前关注:互联网苦「验证码」久矣

时间:2022-08-28 08:47:19       来源:36氪

经常使用互联网的你,一定见过下面这个家伙吧?

没错,它就是验证码。

可别小看这个家伙,很多人都在它面前栽过跟头。


(相关资料图)

想象个场景:你登录12306网站,发现还有最后一张余票,正准备下单时,验证码弹了出来,很不巧,你手速慢了一步,近在眼前的回家机会和你失之交臂。

先别气急败坏,大部分人都遇到过这样的窘境,或许这不是你的问题。根据360浏览器提供的大数据,用户一次性填对验证码的概率只有8%,两次输入正确的比例也不过27%。

国民级抢票平台12306网站,为了防止黄牛刷票,不断增加验证码难度,仅2015年,就推出了581种验证码方式。

看下图,感受一下,能3秒钟说出正确答案的朋友,请原地封神,哈哈~

我们都知道,验证码的出现,是为了防止机器恶意攻击而设置的屏障。通过验证码题目,将计算机和人做区分——将人放行,把计算机拦截在外。

但也不可否认,如今的验证码已经不再是简单的输入数字和字母这么简单,有的题目简直怀疑人生。人们不禁感慨,我该如何证明自己是个正常的人类?

今天,我们一起来聊聊验证码的前世今生。

验证码的前世今生

1. 验证码是什么

验证码的专业术语叫“全自动区分计算机和人类的图灵测试”,通过设置特定的题目来区分当前设备背后是人在操作还是机器。

2. 验证码的用途

主要用于防止:黑客穷举破解密码(再复杂的密码通过无限穷举和排列也可以被破解)、自动化程序注册僵尸用户(下文提到的雅虎邮箱就是惨痛的教训)、第三方程序恶意抓取内容(内容型平台的护城河)、自动化程序发帖评论(造成社区秩序混乱、质量下降)、批量操作(比如刷票)等。

中国工商银行注册页面

3. 验证码怎么出现的

2000年左右,人们主要通还是过邮件交流,雅虎邮箱堪称当时互联网行业的“杀手级”应用,很多中国人的第一个电子邮箱后缀就是@yahoo.com。

有流量的地方就会有黑产。

当年国际上最大的黑产是尼日利亚人,世纪之交时,他们开始用机器注册大量的雅虎马甲邮箱,用来发送垃圾邮件,进行网络诈骗,被媒体称作“雅虎男孩”。当时用户打开自己的邮箱,充斥着各种垃圾邮件,苦不堪言。

这个问题困扰了雅虎很久,当时被列为“雅虎十个无法解决的问题”之一。

后来一位叫路易斯·冯·安的人为雅虎设计了一套人机验证方案,也就是最早的字符验证码。

当时的验证码还比较简单,主要是一些简单的数字,利用了“人类会识字,但机器不会”的原理,这把当时的黑产打了一个措手不及。验证码的上线,将困扰雅虎很久都垃圾邮件问题得到了明显解决,用户体验呈指数级提升。

4. 验证码被迫增加难度

道高一尺,魔高一丈,黑产怎么会被轻易打败?可以说,验证码给我们带来的困扰,全都是黑产的“功劳”。

你出数字图形验证码,我就用OCR光学识别;你的图片加上噪点,我就去除噪点;你出滑动验证码,我就用浏览器测试工具模拟人类滑动。

拿OCR技术举例:很多人应该都听说过OCR技术,平时我们用手机将图片拍摄扫描自动转化成文本文字,使用的就是OCR技术。2003年有人通过图像识别算法对简单字符型对验证码进行自动化识别,可以达到93%的成功率。可怕吧?科技是把双刃剑,为我们带来便捷的同时,也被坏人所利用。

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

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

研发解码程序的难度和成本越来越高,到后来,索性衍生出了“打码员”的黑色利益链条。黑产们雇佣大量真人,通过系统派发打码任务,打码员根据任务到相关网站人工识别验证码,从而获得收益。

验证码最大的天敌是真实的人,当人与人进行对抗时,基本技术发挥不了多大的作用。

5. 验证码有哪些种类

正如上文所说,验证码被反验证技术倒逼升级,从简单数字、字母,到加减法,再到后来闪烁变形字母、干扰线变形字母,甚至到变态级的选图题…

其实字符扭曲,基本就可以阻挡住大部分机器的识别了,已经算是比较高的难度,在当时的20年内,其安全性也都能排在前列。

如今的验证题目,比如算术题,除了简单的加减乘除外,有时还会考平方计算(没上过初中或许还真答不对)。

为了防止机器识别,甚至汉字还用上了古文字;滑动滑块也是比较有效的方式,通过判断滑动的时间和快慢来识别是否是机器在操作(笔者曾经多次因手速滑动太快而为误认为是机器,真想喊冤);随着二维码的普及,扫码登录的方式也被更多网站所使用,自己证明自己,有意思;当然,像人脸识别、指纹识别、声纹识别等高级的验证方式也在进行探索和实验,目前主要用于银行类网站。

随着技术的发展,近些年,还有许多新型验证方式诞生。比如Gif动画验证码,通过提供GIF动态的验证码图片,使得识别器不容易辨识哪一个图层是真正的验证码图片;手机语音验证码实现自动语音播报,同时短信也能同时发送到用户手机,实现双保险确保万无一失;视频验证码是验证码中的新秀,随机数字、字母和中文组合而成的验证码动态嵌入到MP4,flv等格式的视频中,增大了破解难度。

验证码属于安全验证的一种。

而安全验证,无外乎是如下三个方面的判断:

1)基础信息判断

比如注册时设置的用户名、密码、找回密码的问题和答案,对用户身份有一个基础判断。

2)判断是真人

这就出现了我们经常见到的图形验证码、数字验证码、选图验证码等,用来判断你是不是真人。

3)判断是本人

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

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

全民被验证码“白嫖”

或许你还不知道,验证码除了用来区分人和计算机,还在免费白嫖集体网民的智慧。

还记得上文提到的路易斯·冯·安吗?在发明了初代验证码后,他在2004年带领团队又上线了一个叫recaptcha的验证码系统。

当时有很多文献和图书都想做数字化(也就是我们现在看到的电子图书),但很多古书褪色严重,计算机无法识别,于是路易斯·冯·安想到了一个办法:把一个验证码分为两部分,用户需要输入两个验证信息,前面的验证码,用来区别真人与机器;后面的验证码是古书上机器无法识别的内容,用户提交的结果会发送到数据库,把许多人达成共识的答案再经由后台人员甄别,得出来的就是古书的正确内容,以此供计算机学习。据说准确率能够达到99%。

即便放到现在来看,这也仍然是一个聪明绝顶的想法。群众的力量是强大的,有数据统计,通过这种方式,验证码系统每天能够数字化两亿个字符,到今天为止,已经数字化2500万本书。当时纽约时报一整年的所有内容,只需要4天就能实现全部数字化。

2009年,谷歌收购了recaptcha,利用这个方式扩充自家的谷歌图书项目,谷歌图书馆目前已经是全球最大的电子图书馆,拥有近3000万册图书。

人的贪婪是无限的,只让网民翻译古书已经不能满足期待,于是recaptcha 2.0版本应运而生,你应该也不陌生,看看下面这个图片:

谷歌的AI技术一直是其骄傲的地方。

拿谷歌的AI无人驾驶技术来说,想提高机器判断精准度,其实并没有什么捷径可走,需要无数数据和样本供机器学习和训练,这是一项成本极高又很耗时间的投入。

谷歌如何做的呢?

他们将道路上的图片抓拍,并用在验证码上,让网民帮其判断,并将这些结果数据传回机器学习。如果说这是一个天才想法,应该不为过吧?

验证码的一些思考

1. 验证码是最优解吗?

验证码的出现绝对是无奈之举,它对用户的干扰很大。

仔细思考你会发现,验证码其实并不能完全解决问题,甚至在一些极限情况下会出现不成立,比如:验证码能成立的前提是【发起恶意行为时,相比机器自动化完成,人工成本更高】,但在人工非常廉价的地方,只需要付出少许的成本就可以利用真人顺利完成验证,验证码完全失效。

但在目前的技术实现上来看,验证码虽然不是一个好的设计,但确实是一个有效的设计。如果没有验证码系统,每年春运,我们根本抢不到票。

2. 验证码的适老化问题

当年轻人在判断到底是“0还是o”,“日还是曰”时,对于老年人简直是灾难。

在《移动互联网(APP)适老化通用设计规范》中也明确对验证码做了要求,不过纵观目前国内的互联网产品,在验证码适老化方面还有很大的提升空间。除了提供传统验证码放大能力以外,还应该支持更多元的验证方式,比如语音验证码等。

3. 验证码能一劳永逸吗?

随着技术的持续发展,未来计算机和人类的差距会越发缩小,验证码是阶段性背景下的产物,人和机器的对抗还将持续进行下去。

4. 有没有可替代的方案

目前也陆续出现了更多元的验证方式,比如指纹、虹膜、体感、声纹技术等,不过目前推广起来难度较大,这些技术的使用需要搭配额外的硬件来实现,抛开硬件的价格,精度本身都是个大问题,更何况安全性和便捷性也并不一定高。

苹果推出了私人访问令牌(无感验证),当用户开始使用手机时,系统就会自动开始跟踪记录,综合用户完成的一系列动作来判断设备背后是真人还是机器。但这是以牺牲个人隐私和数据为代价。尽管苹果承诺这些数据不会被用作其他用途。

5. 验证码的安全性和体验性

要对验证码进行升级,就必须考虑安全性和体验性,既要在交互上尽可能少的阻碍用户,又要做到足够安全,这本身就是很难平衡的天平。

近几年,国内互联网产品都在努力改进验证码方式,很多网站已经改为了短信验证码/扫码登录的方式,在用户体验和便捷性上都有了不小的提升,不过考虑到扫码也会存在潜在安全性,部分网站还是会将传统验证码和扫码结合使用,双重防护。

结语

笔者认为,虽然目前我们还没有更好的办法进行人机验证,不过可以尽可能少的对用户使用进行阻碍,在不必要的环节尽可能少的使用验证码。验证码慎用,验证码慎用,验证码慎用。

虽然痛恨它,但也感谢它,更要继续超越它,验证码的发展史,就是人机抗衡的革命史,没有任何解决方案可以一劳永逸,但在可控的范围内,我们可以选择更友好的方式,在体验上,在特殊人群上,都可以做的更好一点点。

记住,人永远是最高级的生物,无论何时。

关键词: 验证方式