揭秘变态验证码:为何至今仍然普遍存在?

发表时间: 2024-10-11 15:48

如果你用过多邻国学语言,可能从没有想过这个软件,还能和(万恶的)验证码有关系。


它的创始人,路易斯·冯·安,还有一个响亮的名号:那就是验证码之父。




01 反向图灵测试


验证码这东西,看起来不起眼,但背后有一个很终极的问题:在互联网上,如何证明你是一个人。


在这个问题上,最有发言权的必然是计算机科学之父阿兰·图灵。他老人家在 1950 年提出的「图灵测试」,即使到了大语言模型时代,依然被 AI 研究者们视为评估机器智能的重要方式之一。总之,把AI做得越来越像人类,一直是计算机科学家们的目标。


但反过来,如何把人类和计算机区分开来,一直是个少有人研究的问题。尤其是上个世纪,人工智障水准还差太远,这基本上属于一个不成问题的问题。


直到2000年前后,互联网浪潮来袭,人们工作生活中很多部分都被搬上互联网,于是灰黑产应运而生。


早年最常见的灰黑产就是脚本机器人,攻击者们用它来海量注册账号,邮箱账号可以用来发垃圾邮件,PayPal账号可以用来盗刷信用卡,以及扰乱各种网络民调、帮助黄牛攻破在线购票平台。


脚本机器人虽然压根算不上人工智能,但怎么拦住它,并且不影响活人用户,成了个问题。


2001年,PayPal的联合创始人兼CTO麦克斯·拉夫琴(Max Levchin)发现,机器无法识别经过一定扭曲的字符文本。于是,他们在注册流程里,加入了识别扭曲字符的要求,成功降低了诈骗账号的数量。


这是验证码在商业社会的第一次亮相,首战告捷。


它的底层逻辑,就是人类与计算机在认知能力上存在差距。尤其是在复杂扭曲的图形环境里识别字母和物体,在嘈杂的场景识别语音,在视频动画里识别特定图案,以及对自然语言和逻辑的认知,很长时间里机器都做不到。


但我们现在通用的验证码方案并不来自PayPal。而是来自卡内基·梅隆大学的一个研究团队,路易斯·冯·安正好是这个团队的一员。


1995年,冯老师去了美国杜克大学学习数学,然后又跑去了计算机强校卡内基·梅隆大学,拜入图灵奖得主,有密码学之父称号的曼纽尔·布卢姆门下。


冯老师和验证码的缘分,源自系里举行的一次活动。2003年,雅虎的首席科学家来学校做了一场名为《我们无法解决的十大问题》的讲座,他提到,很多不法分子会用机器人自动注册邮箱账户,来发送垃圾邮件。


冯老师听了讲座,觉得这事儿用密码学可以解决啊,于是他回去和导师说了这事儿。几个人在一起,鼓捣出一篇论文。


在论文中,他们提出了一个全新的概念:分辨人类与电脑的全自动公共图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart),就是让计算机自主生成一些测试方案,比如在随机生成的文本上添加一些失真的效果,或者将一些动物的图片进行扭曲。


这些测试里,人类可以轻松识别出正确的文本和动物的种类,但计算机却搞不定。这样一来,这个测试就可以作为一种自动化识别人类和电脑的方案。某种程度来说,它是一种「反向图灵测试」。


这个概念缩写为「CAPTCHA」,也就是我们现在说的验证码。


冯老师也不藏着掖着,把这套方案免费送给了雅虎,雅虎一看,如获至宝,我先用为敬。


随着雅虎率先在自家邮箱产品里应用了CAPTCHA,很快就解决了垃圾邮箱的问题。此后越来越多的开发者们开始使用这套方案去识别机器人和真实用户。




02 人类可以给机器打工吗?



验证码的出现,的确解决了很多网络安全问题,但代价也不是没有。

一个核心问题,如果验证码,用户觉得很容易,那机器人大概率也会觉得它不难。但如果把验证码做得非常扭曲,安全性是上来了,那用户可能就要骂人了。


流畅的用户体验和靠谱的安全性是很难共存的。


这个事情让路易斯·冯·安非常困扰,冯老师很早就对媒体表示过:每天全球几亿人在使用验证码,每天输入验证码的时间就要花掉50万小时,而一个人的一生差不多也只有70万的小时。可以说,每天验证码就要耗掉一条生命。


为此,他开始思考如何让验证码产生更多社会价值,抵消它的浪费。


2005年,冯老师完成了他的博士论文,他的论文内容是一项名叫「ESP Game」的游戏。


这个游戏类似于你画我猜,或者综艺里的猜词游戏。登录后,系统会随机匹配两位玩家,给双方相同的图片,要求双方输入一些单词去描述这张图片。


在不能交流的情况下,两位玩家只有对同一张图片输入了同一个单词描述才算过关。两位玩家要在两分半的时间里完成15张图片的匹配。


而在冯老师看来,互联网公司完全可以利用这样的游戏,对数据库里的图片打标签,实现更准确的图片搜索。


这个思路,被他总结为「人类计算(Human Computation)」概念。也就是把传统的,人类用计算机解决问题的流程倒过来,由计算机出题,让一群人来解决那些计算机搞不定的问题,并且收集、整合他们的解决方案。


这篇论文不仅帮他拿下了学位,「ESP Game」还被谷歌收购,成为冯老师第一个变现的项目。


回到验证码,冯老师觉得,同样是「人类计算」,既然可以用在图片领域,也可以用在文字领域。


00年代初期,很多公益组织开始尝试将书籍进行数字化,把旧书扫描成电子版。但褪色的墨水的褶皱的纸张,都会让文字扭曲模糊,导致电脑无法识别文字。


于是,冯老师开发了一个名叫reCAPTCHA的全新验证码系统。


和传统的单一验证码不同, reCAPTCHA一次会要求用户输入两个单词,一个是常规的验证码,另一个则是在书籍数字化的过程中难以识别的单词。


只要用户输入正确的常规码,那么他在第二个单词里输入的答案就会被计算机读取,和其他用户对同一个单词的识别进行比对,如果同一率高,就会被当成正确的文字,拿去进行书籍的数据化。既让用户做了验证,又帮助文献数字化,为知识的传播做了贡献,一举两得。


这个系统发明出来,立刻吸引了《纽约时报》的注意。当时《纽约时报》正在做一个旧报纸数字化的项目,想把过去130年的内容全部都数字化。借助reCAPTCHA的力量,一千多万篇内容很快完成了识别。


随后,各种各样的组织找上门,都希望用reCAPTCHA来做书籍数字化。


这套由人类和计算机共同形成的「大规模分布式计算网络」,在推出的第一年,就正确破译和转录了超过4.4亿个单词,相当于17600本书。


冯老师彻底赚麻了,每隔几个礼拜就有支票寄到学校请他签收。


这么一来,学校不爽了,你在外面接私活也就算了,还这么高调赚大钱,你让其他教职员工怎么想?于是取消了他的职位。眼看着铁饭碗没了,冯老师心一横:老子不奉陪了。


当了两年人民教师,2007年,路易斯·冯·安下海创业建立了自己的公司。


谁知这次创业只坚持了两年,冯老师,哦不,冯老板就再次收到谷歌的收购要约,含泪卖掉公司成为千万富翁,并且加入谷歌成为大厂打工人。


话说回来路易斯·冯·安提出的「人类计算」,听起来非常性感,但实际上也是一个古老的概念,我们通常称其为「众包」,也就是企业把过去由员工完成的工作,外包给不特定的大众网络。


每个使用验证码的用户,其实都在不知不觉中,为验证码背后的工作充当了免费劳动力。


但路易斯·冯·安觉得,众包模式还有其他的可能性。


虽然他本人属于含着金汤匙出身的一批人,但冯老师属于比较懂事的那种,加上母国危地马拉又是个穷国家,冯老师很早就注意到,像他这样从小接受英语教育,长大还能跑到美国上大学的属于万中无一,大部分都困在「低收入-低教育水平-低收入」的循环里。


他觉得,也许众包模式能解决这个问题。

于是2011年,当了几年大厂高级打工仔的冯老师宣布重回学校,并且和他的学生一起带来了一个全新的产品:

免费语言学习平台多邻国(Duolingo)


成立初期的多邻国和现在那个背单词打卡完全不是一个物种,它主要的业务是众包翻译平台。


也就是它会将需要翻译的页面内容拆解出来,给学习者去翻译,然后将反馈回来的翻译内容利用后台算法比对筛选,找出最佳翻译组合,最后将翻译内容以远低于人工翻译的价格提供给网站客户。


某种程度上,和reCAPTCHA又异曲同工之妙。


通过众包翻译的模式,学习者可以免费在这里学习语言,客户付费获取廉价的翻译服务,多邻国作为中介平台实现营收。


但和验证码不一样,冯老师的「众包教育」之路没有走通。这套模式并不足以让多邻国实现盈利。尽管一口气融到D轮,但投资人是要看到回报的。


于是在2015年,多邻国放弃翻译服务,转而开发用户价值,陆续上线了App内购,广告,会员服务等等等等,也就有了如今我们看到,那个擅长PUA用户,贱兮兮的绿色猫头鹰App。


到2021年,多邻国在纳斯达克上市,冯老师再次步入人生巅峰。


如今的多邻国,是一个靠着6%的付费用户,贡献70%营收的公司,看似已经变成一个用户付费主导的平台了,但事实上我们都知道,在一个游戏化的设计里,免费玩家本身就是付费玩家用户体验的一部分。


路易斯·冯·安自己也承认,免费用户的存在,能帮助公司省下大量的营销、增长和促活费用。


只要大家还有攀比心,还有收集癖和上进的动力,多邻国就能用精妙的运营手段,从用户身上获取价值。

毕竟他最擅长的事情,就是让用户免费为他打工。




03 验证码的无尽战争



尽管路易斯·冯·安早早地就离开了reCAPTCHA,但此后,这家公司依然是这个市场上最重要的玩家。

谁叫它背后,站着谷歌这么个巨头呢?

而且在他走后,验证码的江湖更加精彩。


毕竟验证码就在那儿,总会有人想方设法去破解它。


技术含量最低的,也是最容易想到的方式,就是人工暴力破解,只要你能找到价格足够低的人力,雇人填写验证码就是一项划得来的生意。


你要做的只是做一个API接口,把验证码转发给打码平台,平台就会把任务分配给身处世界各地的打码工,打码工识别后把答案传回去,就能实现自动化的操作了。


但人工破解并不完美,2013年,斯坦福大学一项研究演示,主流网站上的验证码解决准确率大约只有85%,当研究人员给三个不同的人提供相同的验证码时,三人同时输入正确的比例,只有71%。况且,人工破解的速度也并不够快。


要打败这套「反向图灵测试」,还得靠足够强大的AI。


2014年,谷歌内部专家提出了一套基于强化学习的验证码解决算法,可以用99.8%的准确率解决最困难的扭曲文本变体。


这个准确率有多恐怖,研究人员找来活人,让他们识别同样难度的验证码,人类的正确率也只有33% 。


人类一败涂地啊。


到这个阶段,传统验证码对AI来说已经如土鸡瓦狗,冢中枯骨了。


谷歌觉得,是时候给破解者们上上强度了。


2012年,reCAPTCHA开始探索图片验证码,它要求用户从谷歌街景的图片中,识别人行横道,路灯和其他物品。延续了reCAPTCHA的作风,用户的标记会被拿去发挥余热,为谷歌地图和搜索训练模型。


到2014年,谷歌正式推出了全新的验证码解决方案No-CAPTCHA。也就是我们熟悉的「我不是机器人」按钮。


正如这个方案的名称,No-CAPTCHA不再使用传统的验证码来考察人类的认知能力,而是对用户的交互方式展开分析,观察鼠标运动轨迹,分析用户之前访问过的页面,从而判断访问者是不是活人。


到2017年,谷歌更是推出了全新的reCAPTCHA v3。


这个版本对用户来说,几乎完全取消了验证码环节,直接通过后台分析用户户行为进行判断,只有在无法判断时,才会弹出传统的图形验证码来辅助进一步验证。


除了谷歌和reCAPTCHA之外,也有其他的开发者在试图平衡验证码的安全性和易用性。


有人希望用硬件进行安全验证,登录注册的时候插一个U盘到电脑里。


有人希望用面部识别验证,让摄像头证明你生而为人。


至于常见的「拼图」式验证码、旋转式验证码,则是另一个流派。这类游戏验证码并不会给出明确的任务指示,AI很难搞清楚要怎么做,但人类只要看到这些游戏,本能的就能理解它的逻辑。


甚至还有更走火入魔的,利用一些高语境问题来做验证。


比如拿「宫廷玉液酒」做验证码,可能只有中国用户才能填出「一百八一杯」。这就已经违背了验证码作为区分人和机器的初心了。


当然,我们也必须承认,如今AI的发展一夜千里,无论防御手段如何进化,只要通过条件是已知的,那任何反向图灵测试本质上都是可以被破解的。


但如果我们用另一种方式去解读,验证码的意义,从来不止于网络安全。


至少路易斯·冯·安和reCAPTCHA,从一开始就没有单纯把它当成一种安全策略。


相反,无论是「反向图灵测试」还是「人类计算」,reCAPTCHA都认为,验证码与人工智能息息相关,他们从一开始就承认,验证码是一种非常优雅的人工智能训练工具,因此任何给定的测试都只能是暂时的。


更重要的是,验证码身上还有着诸多限制,为了让验证码能够适配不同教育水平,不同国族文化,不同生活经验的用户,它必须被设计为独立于一定语境之外的,无需事先训练或者长期培养才能通过的。比如看图识字母,比如选择图片。


从这个角度看,验证码就像一场注定失败的战役,它想要分辨人类与机器,但它所考察的,却是那些最不能体现「生而为人」特质的。


这就是验证码的悖论所在,它试图用一项任务衡量人性含量,但人性恰好是无法通过高效完成任务去验证的,不确定,不精确,才是人的特征。


谷歌放弃识别型验证码,转而从用户行为去做验证,也必然是看到了这条悖论。


正如谷歌前员工,负责打击点击欺诈的舒曼所言:真正的人类无法很好地控制自己的运动功能,无法在多次交互中以相同的方式多次移动鼠标。


他说:「人类行为具有难以欺骗的‘熵’。」


但更终极的问题在于,当人工智能更进一步,学会模仿人类行为上的不精确,不稳定之后,又有什么能证明人类与机器的差异?


而这一切,都无数次的回应了《纽约客》那个著名的互联网格言:


「在互联网上,没人知道你是一条狗」。