你猜我是不是个人·千奇百怪的验证码
不知道你在这些年的网络冲浪中,感受到了什么变化,是网速变快了?是资源变丰富了?还是页面变好看了?但无论如何,有一种东西,在你下载,访问,查询时始终如一的陪伴着你,那就是验证码。
我是人!
你听过图灵测试吗?这是一种区分人和机器人的测试,而验证码的本质,就是一种图灵测试。
还记得这个经常出现在验证码附近的图标吗?
没错,这其中的CAPTCHA,指的就是验证码。但这并不是一个英语单词,而是这段有亿点长的英文的缩写:Completely Automated Public Turing test to tell Computers and Humans Apart。英文直译“完全自动化的公共图灵测试来区分计算机和人类”。
噩梦的开始
在1999年,一个叫做Slashdot的网站(🐢:这个网站拿来学英语挺好的,推荐!)发起了一项投票,标题为“谁是世界上最好的计算机学院”。结果,麻省理工学院和卡耐基梅隆大学的学生们选了另外一种方式参加这场投票,来上一场法术大赛!(🐢:算法也算法)他们分别写了一个自动化算法来为学校投票。就这样,在其它学校的票数差不多1000票时,这两所学校就为自己刷了两万多票。
这只是一种无害的自动程序,可有些人却心怀鬼胎。很快,就有人写出了另一个算法,它的效果就不是刷票这么简单了,而是发送垃圾邮件。
Yahoo!公司率先给出了应对方案。根据程序员Luis的建议,他们生成了一堆扭曲的字符,只有正确写出才可以发送邮件,这就是最基础的验证码。
但随着光学字符识别(OCR)技术的发展,这种简单的验证码逐渐拦不住机器人了。这好办,让字符再扭曲一些就好了。但原始文本从哪里来呢?
无用之用
在当时,有许多组织致力于把实体的古籍数字化,那这事就好办了。于是,自2007年开始,Luis和他创立的reCAPTCHA创作出来这样的验证码:
在这种验证码中,其实只有第一个比较清晰的单词被用来确定你是否是真人,而第二个单词则是计算机无法识别的古籍。reCAPTCHA会把同样的图片分发给上千人,当98%以上的人给出了相同的答案,这个单词便会被标记为已识别。到今天为止,这种验证码已经帮助识别了超过25,000,000本古籍。
我是人吗?
到了2009年,谷歌收购了reCAPTCHA公司,而此时,OCR技术也随着算力增长有了极大的提高。
据谷歌公司自己的论文显示,到了2012年,AI已经可以识别超过80%的字符验证码。于是,他们不得不做出改变,图形验证码诞生了。
你不知道的是,这些图片其实就来自谷歌地球,而你完成验证码的工作,自然也不能被浪费。(🐢:免费的劳动力欸!)
你的每一次标注,其实都是在帮助谷歌训练AI,这有什么用呢?没错,自动驾驶。在各位的帮助下,运用了谷歌AI的无人驾驶汽车Waymo,可能最先达成L5级自动驾驶,也就是真正意义上的无人驾驶。
但,随着AI技术的发展,难以被识别的图像越来越少,那么,根据惯例,随之而来的就是验证码难度的又一次升高。
没错,就这样,能防住所有人(和机器人)的验证码诞生了。(🐢:请地理考生主动完成下面的题目)
或是这样
这当然只是一个玩笑。可是,据2017年的一项研究表明,机器人识别图形验证码的准确性已经达到了99.8%,而人类只有33%。
就这样,人们意识到,图形验证码该退场了。
我不是人
我们应该知道的是,无论怎样的题目,随着AI的发展,都不会绝对安全。验证码的意义应当是在不难住正常用户的基础上增加机器人的访问成本。而这一切,就要创造出一种人类意识不到而机器人很难模仿的验证手段——行为特征。使用这项技术的验证码长这样:
你不知道的是,看似简单的拖动滑块,网页却在背后实时记录着你的鼠标轨迹并与人类的特征进行比对。人类的特征长这样:
而机器人的,却近似一条直线。
没错,除了拖动滑块,点击按钮验证也是这个原理。
这项技术一诞生,就成功难住了千千万万编写机器人的程序员,可物理学家却不怕它。
很快,一个叫本杰明的物理学家给出了解决方案。他把光标看成了一个有质量的物体,给光标施加两个力,一个用于完成点击或拖动的操作,另一个则是随机干扰。就这样,类似人类的轨迹被模拟了出来。
让我给你是不是人打个分
最后,还是reCAPTCHA公司给出了解决方案,这也就是现在使用的验证码的原理。
当你按下验证码的按钮后,网页会采集你的ip,cookie(🐢:咦,是🍪,能吃吗?),浏览器缓存等数据,推断你的行为并进行风险打分。如果你是人类的概率(🐢:要不叫含人量吧)大于90%(各网站数值不同,像腾讯等更注重体验的公司会调到30%),便直接通过,否则返回一张图片验证码。如果你因为不可告人的原因用了无痕模式,你就会发现图形验证码明显变多了,就是这个原理。
尾声
当AI技术不断发展,当AI开始掌握人类独有的特质,验证码已不再纠结于“你是人吗?”这一越来越难回答的问题,而是转向判断“你的行为合理吗?”验证码发展中的每一次失败,都标志着AI技术的一次成功。这也让我们越来越好奇,如果有一天AI可以教我们如何做人,验证码又会变成什么样。
或许有一天,我们会看到这样的提示"我们怀疑您是人类,请完成人机验证"。