【回声】反机器的验证码,反人类的12306

【回声】反机器的验证码,反人类的12306

【回声专题】反机器的验证码,反人类的12306

摘要:验证码技术最初是用来防止程序对计算机的攻击,但是12306验证码为了抵御黄牛的攻击将验证码设置得繁琐复杂,以致众多网友抢不到票,不免本末倒置。

来自美国的四位程序员Mark D. Lillibridge, Martín Abadi , Krishna Bharat 和Andrei Broder应该不会想到,18年后大洋彼岸的中国人民,正在一个名叫12306的铁路购票网站上与验证码斗智斗勇,当初他们用来防御机器人的设计如今却遭到中国人民的强烈吐槽。

上个世纪九十年代末,网络还刚刚兴起。可是用户面临的一个亟需解决的问题就是在使用搜索引擎的时常常被恶意计算机程序篡改搜索结果,以及大量的垃圾邮件不断干扰人们的正常通讯,给用户的使用带来严重困扰。

验证码的出现是为了“反机器”,是为了将人类和计算机程序区分出来的算法,目的是为用户上网提供安全保障。

于是上文的四名程序员就在1997年研发出一种 “选择性限制计算机系统访问办法”!(Method for selectively restricting access to computer systems)。在他们给美国专利局提交的专利申请中,详细论述了这一办法的想法和细节,他们通过“扭曲字符识别”,也就是我们现在经常看到最普通的那种对字符进行变形、缩放,或者在字符背后添加干扰背景的验证码形式,从而有效地防止了当时OCR!(光学字符识别)的攻击。

但是这种限制办法面临最核心的问题就是你如何区分坐在电脑前的是一个人类而不是一段计算机程序?早在1947年科学家阿兰•图灵!就认为人和机器人是有区别的,他提出的“图灵测试”可以通过询问机编写的一系列问题进行测量判定,即“人向机器提问”。但是验证码却是“反图灵测试”,即“机器向人提问”。2003年,美国卡耐基•梅隆大学的路易斯•冯•安领导的CMU研究组正式提出“验证码”这一概念,全自动开放式人机区分图灵测试 (Completely Automated Public Turing test to tell Computers and Humans Apart),简称CAPTCHA。

CAPTCHA的目的就是区分计算机和人类的一种程序算法 ,这种程序必须能生成并评价人类容易通过但计算机却通不过的测试。但这个要求本身就是一个悖论,因为这意味着一个 CAPTCHA必须能生成一个它自己不能通过的测试。为了与计算机抗衡,人们便开启了各种各样的验证码设计之路。

一个稳健、能被广泛使用的CAPTCHA需要能够快速产生大量测试,需考虑用户在语言、文化背景、甚至身体状况方面的差异。

在CAPTCHA设计中,文本验证码是一种较为普遍的验证码形式。它需要用户识别并输入扭曲图像中的字符,通常采用两种手段提高测试的安全性: 1、图像变形.对字符进行尺度缩放、旋转、扭曲等加大识别难度。2、添加噪声.添加线、块、较小的字符等噪声干扰识别. 按照不同的字符生成方式,基于标准字型库、基于印刷体和基于手写体的形式变化等。

随着字符分割和OCR技术的发展,通过采用像素点计数、垂直水平投影等图像预处理手段就可以很容易地破解这些文本CAPTCHA。目前,谷歌算法对扭曲文本类验证码的识别率已经达到了99%,换句话说,此类验证码已经不再能准确检测出坐在电脑前的是人类还是程序了。但是为了保证网络服务的安全性,人们必须不断开发出在较长时间内能抵御机器攻击的CAPTCHA技术。

图像验证法因此应运而生。它是基于图像分类、目标识别、场景理解等计算机视觉领域较难的AI问题。开发者可以建立图像数据库,通过图像分类,例如:呈现给用户某种动物的4幅图片及一张动物名称列表,用户不需要键入动物名称,只需从下拉列表中选择即可。

但是这种CAPTCHA有个明显的弊端,用户一旦拥有了这个图像数据库,算法自然不攻自破。为了增加破解难度,一家国外的流浪动物领养网站将传统的单选模式扩大到多选模式,结果显示随机猜测攻击的成功率仅为1/54000。谷歌通过一种基于图像方向识别的CAPTCHA what's up,测试要求用户将一幅图像旋转到它的垂直方向。

在“验证码”这片星辰大海上,国外的研究者往往是各出奇招。2009年,一家位于美国纽约的Solve Media公司甚至将验证码应用到商业领域。当你在登陆购物网站或是收发邮件时,不必再纠结于那些乱七八糟的数字和字母的组合,取而代之是广告或常见品牌的标志。当弹出一幅广告图片时,你只需填入它是哪家公司即可,这个便是广告验证码。自打该系统上线以来,Solve Media就吸引了2000多家出版商以及超过75个广告商使用这个平台,包括丰田、微软、环球影业、美国在线和Tribune等。

Facebook在2011年还推出了社会身份识别信息的验证形式。“我们会提供你的好友的照片让你来填写他们的姓名,黑客们可能会知道你的密码,但却不知道你的朋友是谁。”Facebook安全部的主管Alex Rice说道。

与此同时,越来越智能的验证码也将另一部分人类挡在了外边,那就是视觉残障者,他们根本无法辨认出那些扭曲文字的真正写法。澳大利亚的一名盲人韦恩•霍金斯在接受采访时就指出:“CAPTCHA根本就是无法识别残疾人类”。他在互联网上发动了请愿,动员那些互联网公司放弃验证码这一愚蠢的验证形式。即使CAPTCHA有语音验证,但语音背景噪音大且难以辨认,并且由于语音验证对资料库和网络带宽要求比较高,所以这项应用并不能广泛运用到各种网络服务中。

被嫌弃的12306验证码成为阻挡大家过年回家的防线,面对骂声和质疑,12306奋发图强,投入多,收效微,在解决购票问题上渐行渐远。

中国铁路总局2013年上线的12306网站不仅需要确保在公众在同时进行购票时网站不会瘫痪,还要想办法与那些抢票软件做斗争。过去两年时间里,12306网站验证码机制频繁升级,显示形式也越来越奇葩,其中,2013年12月升级为彩色动态验证码;2014年1月升级为新版静态验证码;2014年12月升级为完全看不清的“群魔乱舞”验证码;2015年3月16日,需要一定知识储备、眼神不好下不了手、手机端更难看清且使用至今的图片验证码正式上线。

12306解释说图形验证码难度加高是为了防止黄牛。虽然高难度的验证码使来自外界的攻击变小了,但用户体验却变差了。在今年的春运抢票中,许多网友就直呼12306网站的验证码变太变态,验证码无法辨清,在输错一次之后票就没了。

根据360浏览器公布的数据显示,12306网站的购票验证码共有581种,按照要输入两个关键词的规则,排列组合多达336980种。一次性输入准确的比例为8%,两次输入准确的比例为27%,三次甚至4次以上输入准确的比例为65%。如果一次性输入成功的平均用时为5秒的话,按照热门车票“秒光”的情况计算,每输错一次验证码,就意味着当次购票成功率下降80%左右。

其实,12306网站备受诟病的验证码是对谷歌在2009年发明的计算机视觉形象标识(Computer Vision problem of image labeling)的借鉴,只不过谷歌远没有这么丧心病狂。12306网站降低了验证码的图片质量,增加了关键词,当你在输错刷新多次后图片还会由8张变成16张,这让12306网站验证码看起来不仅不人性化,还特别的“反人类”。

相比起12306越走越复杂的验证码之路。国外的科技公司正着手把这个恼人的玩意变得简化。去年年底,谷歌正式宣布他们绝大部分的“验证码”都将被一个简单的复选框所代替,用户只需勾选“我不是机器人(I'm not a robot)”即可。也就是说,用户不必再输入一些失真的单词或数字了,谷歌表示在大多数条件下,他们可以判断出一个真人和一个自动程序之间的不同,据说区分人类和机器之间的微妙差异,在于单击之前移动鼠标的那一瞬间。

[详细]