喂!你是不是人啊? 你说你是? 那请证明一下你配做个人:
当你每天上网面对这些千奇百怪的验证码时,你其实正在参加“图灵测试”:验证码的英文名,叫 Completely Automated Public Turing test to tell Computers and Humans Apart,翻译过来是“全自动区分计算机和人类的图灵测试”,简称 CAPTCHA。
这些验证码的目的只有一个:防住机器人。
什么是机器人呢? 在网上不断抓取信息的爬虫; 跟你抢周杰伦和陈奕迅演唱会门票的外挂; 批量注册账号,发垃圾小广告的脚本; 还有打“呼死你”骚扰电话的服务,都是机器人,也就是“自动化程序”。
如果有黑客利用大量机器人轮番向服务器发送请求,就相当于组织了一个「僵尸网络」发动攻击,能让很多平台的服务器瘫痪。
验证码,就是安全人员和这些“黑产”对抗的产物。但道高一尺魔高一丈,随着机器人不断变强,验证码要面临一个抉择:是难到变态,还是大道至简?怎么判断谁是活人?
视频版
↓↓ 看完这个视频就知道了 ↓↓
↑↑ 信我,真的超级好看 ↑↑
图文版
验证码的逻辑很简单:如果要防住机器人,那就需要设计一些题,这些题对人类来说很很好答,但对计算机来说很难。
初代目的验证码一般长这样,当时的计算机还认不出它们。 因为人类的视觉,在「识别」 和「分割」能力上,要远远强过当时的计算机。
但难归难,随着计算机技术的发展,很多人还是找到了一些破解方案。
为了防破解,验证码就变得越来越难。它的背景和字形逐渐扭曲,一路卷成了这样:
验证码的种类也越来越丰富。比如遭遇黄牛抢票之后, 12306 痛定思痛,在 2015 年升级成了图片验证码。图片涵盖了 581 种物品,细分为 12 个品类,能够充分检测用户九年制义务教育的成果。
大洋彼岸的谷歌,也祭出了reCAPTCHA 第二代。这种变态难度的验证码挡住了多少机器人不知道,但挡住了一大堆真人用户那是肯定的。
我们自己还遇到过一些验证码,如果立体几何还给老师了,那连这题是什么意思都看不懂......
这就是我们每个用户都经历过的过程:眼睁睁看着原本单纯善良的验证码,在残酷的现实逼迫下,逐渐扭曲、变态起来......
但更残酷的现实是,即便是提升到了变态难度的验证码,还是会被破解。且不说什么高级手法,有些破解手法简单到惊人,但也高效到惊人。
比如有一种专门破解验证码的黑产,叫“验证码农场”。在农场里,人类会被异化为廉价的机器。当机器人遇到验证码之后,会直接把验证码返回给农场,由廉价好用的人类工人来识别验证码,再把答案返回给机器人。
这些人类工人通常来自第三世界国家。比如印度一家公司在 2008 年就雇用了 1000 名工人来破解验证码,每破解 1000 个验证码的成本只要1-3 美元,每天大概能破解 25 万个验证码。
这还不是最狠的。还有利用人类的欲望,一分钱都不付的破解方案: 有人曾试过建立一个成人网站,让访问的用户通过识别验证码,来换取成人网站上的照片。双方相互白嫖,各取所需,受伤的只有验证码自己。
战局发展到这一步,验证码已经很被动了。但真正让验证码绝望的,是AI 技术的大进化: 如今的AI有数据给它喂养,有GPU给它训练,有算法不断给它优化,要啥有啥,飞速进化。
到了 2014 年,在识别文字验证码这件事上,人类在 AI 面前一败涂地。根据 Google 的实验,像这种验证码,人类的识别率是 33.3%,而 AI 的识别率呢?
是 99.8%。
即便是 Google reCAPTCHA v2 中这种变态难度的验证码,在 AI 的进步面前也不堪一击。根据这篇论文,几位哥伦比亚大学的研究人员用 AI 识别这种的验证码的准确率超过了 70%,而且解决一个验证码平均只需要 19 秒。
如果你觉得这些前沿研究离你太远,那也有近在身边,甚至就偷过你个人信息的案例: 2017年,绍兴市公安局挖出了一个叫“快啊”的打码平台,这群大哥利用深度学习技术识别验证码,准确率高达 98% 以上,光是在被抓捕前的 3 个月内,就已经提供了超过 259 亿次的验证码识别服务,一年赚了 1300 多万......
所以现在,验证码必须面对一个残酷的现实:如果非要比刷题,那么人类早晚会被 AI 按到地上摩擦。一路把验证码的难度卷上去,结局只能是把你我这样的真人用户都挡在外面,反而是 AI 能凭借巨量的训练随意进出。
所以,人类到底要怎么做呢? 答案是:调转方向,把验证码再“变简单”。
我们要认清一个现实:无论怎么努力,验证码都绝不可能挡住所有机器人;但验证码也只是整个网络安全系统中的基础一环而已,只要能尽量提高入侵成本,就算是完成了自己的任务。
验证码不能难到挡住真实用户,所以必须变得简单、无感。但同时又要维护安全,那么真正的审核,就需要埋在表面之下。
比如在 Google 的 reCAPTCHA 二代中,你只需要点击一下这个「我不是机器人」的框,就可以进入网站。
这是因为在你点击的那一刻,Google 已经根据你鼠标的轨迹,电脑里存储的Cookies,IP 地址,位置和缓存的浏览器数据等信息,对你“是不是人”这一问题做出了综合的判断。
但如果是机器人用同一 IP 地址频繁点击,或者虽然是真人,但由于一些上不了台面的原因,开着无痕模式上网,那么此时网站获取不到你的 Cookies,缓存等信息,就会认为你是可疑用户,弹出验证码。此时你再欲火焚身,也得先冷静下来答题才行。
国内的腾讯云等服务,也提供了类似的无感验证,所以你经常不需要输入验证码,也可以直接登录。
这种更常见的滑动验证码,也并不是说只要把滑块移动到指定地点就能破解了。腾讯云告诉我们,在你滑动的过程中,系统会结合浏览器、网络、设备等相关信息综合判断风险情况;滑动过程中的鼠标轨迹,也属于检测项之一:一般机器的滑动操作是匀速的,或者有明显的规律性加减速,并且匹配完美,但真实用户的操作并不完美。
很多服务商,还提供了风控等级调节功能,让网站管理者自主判断风险大小。比如在正常情况下,你只需要有 30% 像人,就能进入网站。
但如果网站遇到大量恶意访问的危险情况,或者页面本身很重要,那可能需要具备 9 分人性才能进入。
你应该已经感受到了,如今的验证码要判断你是不是真人,并不是真让你答题,而是观察你有没有人类的特征。
比如你再怎么努力,也很难让鼠标的轨迹画成一条直线,或者每隔固定的时间切换网页,但机器人却可以轻松做到;但正因为它能做到,所以反而通不过测试。这正是如今的验证码区分活人和机器人的标准之一。
如果说曾经,人类比机器更聪明;那么如今,人类跟 AI 相比却更笨,有更多的缺陷、情感,更不完美。正因为我们是人,才会有欲望,会犯错,会感情用事,而不能像机器一样,每时每刻都做着最优运算。
所以验证码的未来,并不会越来越难,它的下一个理想形态,是要告诉每一个真实的用户:做个人吧!
不过......故事并不会到此为止。
还记得视频开头提到的图灵测试吗?2014 年,在纪念图灵逝世 60 周年的图灵测试竞赛中,一个叫 Goostman 的机器人最终获胜。
获胜的原因并不是它能够自如地回答人类的各种问题,而是它故意把自己说成是一名来自乌克兰的 13 岁男孩,于是它在对话中出现的各种语法小错误,反而更让人确信,它就是一个人类。
网站和黑客,代码和代码的对抗,注定还要继续。很快,机器人会比你更像人,甚至可以教做人。
那个时候的验证码,又该是什么样呢?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.