在上网过程中,你肯定会遇到过类似这样的东西:

猛一看:为什么我得向计算机证明我是人类?

细一想:即使我勾选了那个框,就能证明我是人类吗?那些AI机器人难道不能勾选同样的框吗?

计算机为什么要问这个问题?它在背后又是如何测试是真人在点击的?

想回答这个问题,我们得看看验证码的发展过程。

01

精妙的发明

在互联网的上古时期,雅虎发现自家的聊天室经常出现“机器人”,这些机器人注册进入聊天室,疯狂地发送垃圾广告,让人不胜其烦。

“抓狂”的雅虎向卡内基梅隆大学求助,路易斯·冯·安(Luis von Ahn)和他的同事们接了这个活儿。

路易斯出生在贫穷的危地马拉,位于中美洲。

他的母亲非常重视教育,花了很多钱让他进入教英语的私立学校,8岁时就给他买了Commodore 64 计算机,从此路易斯对计算机产生了浓厚的兴趣,18岁时申请到了美国杜克大学,2000年进入卡内基梅隆读博士。

路易斯仔细研究了这个问题以后,开发了一个叫做GIMPY的系统。

GIMPY会从字典中选择一组单词,将它们以损坏/扭曲的方式,显示在特定背景的图像中,然后要求用户输入该图像中显示的单词。

人类用户能够识别出这些单词,但当时的机器人却不行,于是它们就无法进入聊天室了。

这种方式简单有效,又很容易集成到现有网站中去,邮箱系统、论坛、电商、游戏等系统纷纷采用,验证码很快便流行开来。

GIMPY就是第一代验证码,路易斯给它起了一个长长的名称:"Completely Automated Public Turing test to tell Computers and Humans Apart",中文意思是 "完全自动化的公共图灵测试,用于区分计算机和人类", 简称CAPTCHA,中文一般说“验证码”。

有了验证码以后,受到最大影响的还是用户,我们不得不眯起眼睛,小心翼翼地输入这些单词,输错了就得重来一遍。

路易斯看到这种情况,又开始琢磨了,既然用户费了这么大劲,为什么不把“识别单词”这个事儿给利用起来,让它产生价值呢?

比如有很多书籍,想数字化进入电脑得时候,就得用OCR技术扫描。

但是对老旧书籍,字体模糊,OCR也识别不了,那能不能让人来识别呢?

比如有个单词是fox,在书中模糊看不清了,那就形成图片,当作验证码让用户来识别。

用户A看到了,识别成了"fxx"

用户B看到了,识别成了"fox"

用户C看到了,识别成了"foc"

用户D看到了,识别成了"foo"

每个用户都有自己的识别结果,系统可以在后台做交叉验证,如果发现大多数用户都输入了fox,那fox就可以认为是是正确的词。

这样用户付出的劳动变成了有价值的“人肉OCR”。

可是,这么弄验证码的话有个巨大的漏洞:因为系统也不知道正确答案,机器人就可以随意输入了!

路易斯就想了另外一招,每次展示两个词。

一个词是系统已知的,当作真正的验证码。

另外一个词是系统不确定的单词,让用户做人肉OCR。

举个例子,下图中的morning这个词OCR识别不了,就把它当成不确定的词,让用户识别。

与此同时,再提供一个系统已经知道的词“overlooks”,当作验证码。

只有那些正确地输入了overlooks的用户,系统才认为这是一个真人,才会对他输入的另外一个词做进一步处理(例如交叉验证)。

2007年,路易斯发表了一篇论文,把这种验证码称为reCAPTCHA。

reCAPTCHA 不仅提升了网络安全,还充分利用了广大网民的劳动,确实是一个精妙的发明

2009年,Google看到reCAPTCHA在大规模数字化项目(如图书数字化、档案整理等)上的潜力,把它收购了,开始了一个雄心勃勃的Google图书馆项目,计划将世界上的每一本书都数字化,创建一个供所有人访问的数字图书馆。

截至2019年,Google利用扫描技术和reCAPTCHA,一共录入了4000万种书籍,非常惊人。

02

全新升级

由于文本验证码容易被机器人破解,为了增加难度,还出现了图片验证码和数学验证码。

验证码越来越复杂,经常是输入了几次都不对,把人都快逼疯了。

但是无论是文本验证码还是图片验证码,在AI能力飞速提升的时候,都力不从心了。

研究发现,当今的人工智能技术可以识别最困难的扭曲文本变体,准确率达到99.8%。

一些攻击者还找到了另类的办法,例如把验证码图片发送到低工资的地方,由人工快速破解。

更极端的例子,攻击者创建色情网站,要求用户输入验证码作为解锁内容的条件,而这些验证码实际上来自其他网站。

用视觉验证的方式已经不再是一种安全的选项。

2013年,Google开始部署新的验证码,名字很长,no CAPTCHA reCAPTCHA,简称noCAPTCHA吧。

noCAPTCHA只需要用户去点击一个“我不是机器人”复选框即可,非常简单。

系统会在你点击的过程中,监测和分析你的行为。

人类行为:正常人类用户点击复选框时,表现出自然的页面停留时间,鼠标移动轨迹和点击速度。

机器人行为:自动化程序可能会立即点击复选框,没有鼠标移动或鼠标移动路径异常。

除了用户行为以外,noCAPTCHA还会收集设备信息和浏览器的指纹,一并发给后台做验证。

如果系统怀疑你是机器人(没有鼠标移动,或者移动太快),它可能会要求你完成额外的任务,用旧式的验证码来进行验证。

03

展望未来

验证码被机器人痛恨,也被大部分人类厌烦,顺畅的上网过程不断地被它打断。

但是如果没有验证码,我们的网络世界肯定会是一团糟。

从最初的GIMPY到reCAPTCHA,再到no CAPTCHA reCAPTCHA,验证码在不断进化。

然而,道高一尺魔高一丈,无论验证码如何进化,攻击者总是能找到破解之法。

希望将来能找到一个兼顾安全性和便捷性的办法,让我们拭目以待吧。

全文完,觉得不错的话点个赞或者在看吧!

近期爆文