反机器的验证码,反人类的12306

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

阅读全文
MapleRecall 作者:王昌改

来自美国的四位程序员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说道。

facebook人脸识别。/smashingmagazine

与此同时,越来越智能的验证码也将另一部分人类挡在了外边,那就是视觉残障者,他们根本无法辨认出那些扭曲文字的真正写法。澳大利亚的一名盲人韦恩•霍金斯在接受采访时就指出:“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)”即可。也就是说,用户不必再输入一些失真的单词或数字了,谷歌表示在大多数条件下,他们可以判断出一个真人和一个自动程序之间的不同,据说区分人类和机器之间的微妙差异,在于单击之前移动鼠标的那一瞬间。

2015年12月4日,山东省日照市,手机网购火车票验证码。/东方IC

参考资料

李秋洁、茅耀斌、王执铨(2012),《CAPTCHA技术研究综述》,南京理工大学自动化学院。

毛远哲(2013),《CAPTCHA技术的应用研究————从识别技术原理说起》,软件开发。

David Bushell(2011),“ In Search Of The Perfect CAPTCHA”,Smashingmagazine.

Vinay Shet(2014),"Street View and reCAPTCHA technology just got smarter",Google Online Security Blog.

Vinay Shet(2014),"Are you a robot? Introducing “No CAPTCHA reCAPTCHA",Google Online Security Blog.

题图:La garconniere The apartment 1960 real :Billy Wilder Jack Lemmon COLLECTION CHRISTOPHEL /东方IC

选择性限制计算机系统访问办法
验证码的早期雏形。
它是现代验证码的开端,通过“扭曲字符识别”,进行变形、缩放,或者在字符背后添加干扰背景的验证码形式,从而有效地防止了当时OCR(光学字符识别)的攻击。
OCR
指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。
Optical Character Recognition,光学字符识别,指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。OCR的概念是在1929年由德国科学家Tausheck最先提出来,并申请了专利。后来美国科学家Handel也提出了利用技术对文字进行识别的想法。
阿兰•图灵
英国计算机科学家、数学家、逻辑学家、密码分析学家和理论生物学家,被视为计算机科学之父。
英国计算机科学家、数学家、逻辑学家、密码分析学家和理论生物学家,他被视为计算机科学之父。图灵对于人工智能的发展有诸多贡献,例如图灵曾写过一篇名为《机器会思考吗?》(Can Machines Think?)的论文,其中提出了一种用于判定机器是否具有智能的试验方法,即图灵测试。至今,每年都有试验的比赛。此外,图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础。
全自动开放式人机区分图灵测试
简称CAPTCHA,即验证码。
Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA。最早是在2002年由卡内基梅隆大学的路易斯·冯·安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。卡内基梅隆大学曾试图申请此词使其成为注册商标,但该申请于2008年4月21日被拒绝。
字符分割
指将验证码中那些掺杂在文字字里行间长短粗细不一的短线从图像中分离出来的过程。
指将验证码中那些掺杂在文字字里行间长短粗细不一的短线从图像中分离出来,以便于单独进行识别的过程,字符分割可以大大降低验证码识别的难度。字符分割方面用到的技术更多,不过在这方面,人却比计算机有较大的优势。目前一种较安全的验证码设计方式就是直接在所有字母中加一条横线,对人类阅读几乎无影响,对计算机切分就比较困难了。
Solve Media
一家位于美国纽约的CAPTCHA制作公司。
它是一家私人控股的公司,成立于2009年,主要业务是在验证码上为他们的客户嵌上广告。2013年6月,它优化了手机客户端上验证码的内容,并且透露了其合作伙伴Songza和联合利华。
计算机视觉形象标识
谷歌在2009年研发的一种图片验证形式。
谷歌在2009年研发的一种图片验证形式,通过一个关键词来确定下列图形中与之相似的图像。
  • 1947年
    英国科学家阿兰·图灵提出了判断机器是否能够思考的著名试验,被称为”图灵测试“。
  • 1998年
    Mark D. Lillibridge等人研发出“选择性限制计算机系统访问办法”,成为验证码的前身。
  • 2002年
    美国卡内基梅隆大学的路易斯·冯·安正式提出CAPTCHA(验证码)这个词,全称为”全自动开放式人机区分图灵测试“ (Completely Automated Public Turing test to tell Computers and Humans Apart)
  • 2009年
    美国卡内基梅隆大学的路易斯·冯·安开发出reCAPTCHA技术,旨在利用CAPTCHA来帮助典籍数字化的进行。
  • 2009年
    美国纽约的Solve Media公司将验证码应用到商业领域,开创了广告验证码这一新形式。
  • 2012年
    谷歌除了使用reCAPTCHA扫描文字图片,开始采用Google街景拍摄的门牌号码照片。
  • 2014年
    谷歌宣布他们的验证码将会被一个简单的复选框所代替,用户只需勾选“我不是机器人(I'm not a robot)”即可。
控制升温2℃,就能拯救地球? 美国死刑复核,宁放过不杀错 修宪当总统,华裔女孩的美国梦
菜单