在上网过程中,你肯定会遇到过类似这样的东西:
猛一看:为什么我得向计算机证明我是人类?
细一想:即使我勾选了那个框,就能证明我是人类吗?那些AI机器人难道不能勾选同样的框吗?
计算机为什么要问这个问题?它在背后又是如何测试是真人在点击的?
想回答这个问题,我们得看看验证码的发展过程。
在互联网的上古时期,雅虎发现自家的聊天室经常出现“机器人”,这些机器人注册进入聊天室,疯狂地发送垃圾广告,让人不胜其烦。
“抓狂”的雅虎向卡内基梅隆大学求助,路易斯·冯·安(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万种书籍,非常惊人。
由于文本验证码容易被机器人破解,为了增加难度,还出现了图片验证码和数学验证码。
验证码越来越复杂,经常是输入了几次都不对,把人都快逼疯了。
但是无论是文本验证码还是图片验证码,在AI能力飞速提升的时候,都力不从心了。
研究发现,当今的人工智能技术可以识别最困难的扭曲文本变体,准确率达到99.8%。
一些攻击者还找到了另类的办法,例如把验证码图片发送到低工资的地方,由人工快速破解。
更极端的例子,攻击者创建色情网站,要求用户输入验证码作为解锁内容的条件,而这些验证码实际上来自其他网站。
用视觉验证的方式已经不再是一种安全的选项。
2013年,Google开始部署新的验证码,名字很长,
no CAPTCHA reCAPTCHA
,简称noCAPTCHA吧。
noCAPTCHA只需要用户去点击一个“我不是机器人”复选框即可,非常简单。
系统会在你点击的过程中,监测和分析你的行为。
人类行为
:正常人类用户点击复选框时,表现出自然的页面停留时间,鼠标移动轨迹和点击速度。
机器人行为
:自动化程序可能会立即点击复选框,没有鼠标移动或鼠标移动路径异常。
除了用户行为以外,noCAPTCHA还会收集设备信息和浏览器的指纹,一并发给后台做验证。
如果系统怀疑你是机器人(没有鼠标移动,或者移动太快),它可能会要求你完成额外的任务,用旧式的验证码来进行验证。
验证码被机器人痛恨,也被大部分人类厌烦,顺畅的上网过程不断地被它打断。
但是如果没有验证码,我们的网络世界肯定会是一团糟。
从最初的GIMPY到reCAPTCHA,再到no CAPTCHA reCAPTCHA,验证码在不断进化。