基本上上过网的人,都知道验证码是个什么东西。这些歪歪扭扭的字母、数字和汉字每天都在各种网站上不断的刷新,挑战着网友们的眼力。这玩意的历史,其实比你想象的要短的多,但其诞生的短短十几年时间里,已经经过了各种曲折而意想不到的发展。而今,借助现代IT技术的东风,验证码也踏上了一条全新的道路。
早期的尝试
验证码的英文叫“CAPTCHA”,这是一个炫酷词组的缩写——“Completely Automated Public Turing test to tell Computers and Humans Apart”,直译就是“用于区分计算机与人类的全自动公开图灵测试”。图灵测试大家都比较熟悉,是由图灵提出的一个著名试验,实验者通过询问一台机器与一个人类一系列问题,如果实验者无法分辨两者的区别,那么这台机器便通过的图灵测试。
验证码是图灵测试的反向简化版本,不是由人来判断对方是不是机器,而是由机器来判读对方是不是人。在互联网的早年间,各个网站都是没有验证码的,最多有一些黑客出于躲避敏感词检测的目的,故意把单词用很怪的方式打出来。就像把XXX打成“氵工氵尺 民”这样。到了21世纪初,随着垃圾邮件和欺诈软件的盛行,开始有公司利用验证码的思想来保护自己的网站。比如2001年PayPal就曾让人类输入类似验证码的扭曲字母。
验证码这个名词真正被发明出来是在2003年,这比很多概念晚多了,比如神经网络70年代就已经有很多人在研究。卡内基梅隆大学的Luis von Ahn,Manuel Blum, Nicholas J.Hopper等人首次提出了“CAPTCHA”这个词。他们对验证码系统做的很深刻的研究,并且将其付诸程序化。自此大量的验证码开始被应用到网站中,有效的阻止了黄牛软件的肆虐。时至今日,每天有过亿的验证码被人们不断地输入着。
Luis的脚步
Luis在2003年发明了验证码,两年之后他完成了自己的博士论文,在其中他提出了结合人类与计算机的能力共同解决问题的概念。他认为,计算机强于大量数据的计算,而人类在感知图像等方面的优势是计算机仍难以胜任的,每天有如此之多的验证码被人输入,不用来做点什么实在是太可惜了!
Luis那时候喊出的口号是:“stop spam, read books.”他做到了。2007年,他创立了reCAPTCHA工作室,提供了一种新型的验证码服务,成为“视觉单词识别系统”(optical character recognition, 简称OCP)。他们把纸质书籍扫描下来,再用软件切分成一个个的单词,做成验证码和真的验证码捆绑在一起,由用户输入。当同一副图片被多人标记为同样的单词时,软件就会将其记录下来,并和其他的单词拼凑成一本完整的电子书。如果你见过那种红色的验证码标志,并且码文由两段内容组成,大概很容易知道我说的是什么。
这个点子实在很赞。这样一来数以万计的验证码就成功的被用来转换那些实体书籍,而不用耗费昂贵的人工来打字。Google也发现了这个系统的绝妙之处,于是他们决定——收购他们。2009年,reCAPTCHA成为了谷歌旗下的一员,利用这个系统,Google电子化了大量的图书,并把它们发布在了Google books上。到了2012年,除了图书,reCAPTCHA还为谷歌街景翻译了大量门牌号。可谓功勋卓著。下次遇到这种验证码的时候,你就知道自己在做一件多么酷的事儿。
各方面的挑战
验证码很常见,但是几乎每个人都烦他,毕竟是多了一道很麻烦的工序。实际上随着信息技术的发展,验证码收到的挑战也越来越多。
在早年间,破解验证码的方式非常简单暴力,那就是靠人来解。有人专门在第三世界国家开办血汗工厂式的公司,接收大量的验证码然后由人力输入破解之,这种公司被称为“验证码农场”。2010年,利用验证码农场来破解一百万个验证码,只需要1000美元。这种方法理论上是无解的,毕竟对面是真的人,当然成本也是最高的。
另一方面,机器学习,图像处理等技术近年来蓬勃发展了起来。计算机检测图片当中字母数字的能力越来越高了。为了应对这种威胁,验证码开始朝着猎奇的方向发展,扭曲文字,增加干扰线,把背景色与文字颜色相混等等,连浓眉大眼的reCAPTCHA也加了好几条线上去。这起到了一定的效果,但是对使用者的干扰更大。输入不成功的概率越来越大,大家纷纷想砸电脑。
更可怕的是,2014年的WOOT大会上,Bursztein展示一种通用的验证码破解程序,这种基于强化学习的算法对市面上大对数验证码效果都不错。这证明靠扭曲文字的方式增加难度以及再也没用了,受伤的只能是用户。
但用户们已经很抓狂了。更不必说有视觉障碍、认知障碍等等疾病的残障人士,他们输入一次验证码比登天还难。人们并不想要更复杂的验证码,而是想要简化它。于是各种各样的方案被开发出来,希望在简化手段的同时拦住电脑。包括滑动式验证码、点击式验证码等等。至于效果嘛……别的不说,12306绝对是大大的反例了……
未来:“我不是机器人”
还记得刚刚说的reCAPTCHA吗,这次,他们换logo了!
不,这不是重点,重点是,他们彻底革了验证码的命。reCAPTCHA开发出了一种全新形式的验证码装置。你只需要点击一下那个方框,就完成了验证工作。十分简单,毫不繁琐。连网站页面都变得清爽了起来。而其拦截成功率比传统的文字验证码高上好几倍!
那么这种新reCAPTCHA是怎么工作的呢?简单来说,当你进入了这个页面的时候,软件就开始收集你的各种信息,包括你的IP、cookies、时间、分辨率、鼠标的移动、键盘的操作和其他各种杂七杂八的数据,当你点击完成时,这些信息被服务器处理并最终判断你是不是一个真人。所以新reCAPTCHA所收集的信息比传统文字验证码更多,也更难破解。
通常,这样一个感知模型需要庞大的数据量支撑才能训练成功,幸好reCAPTCHA有一个强大的后台——Google公司。Google极力的促进的这项服务的开展,他们一点都不缺少用户数据。而今,你已经可以在国外的各大网站上见到它的身影,包括youtube、facebook等等。
“Tough on bots,Easy on humans”,这是reCAPTCHA的口号,诚如所言。这项服务完全是免费的,只需要在他们的网站上注册一下,就可以获得接口使用。如果你想要,完全可以搞一个在自己的网站上玩。比用各种丑丑的验证码有趣多啦!
结语
验证码诞生至今不过15年左右,其身上已经烙上了信息时代技术大发展的烙印。Google致力开发的新型验证码让我们看到了一个更为方便快捷的未来,更重要的是,技术发展的目标应当是让人更加方便的生活,而非增添烦恼。相比之下,12306是不是应当羞愧一下下呢?