验证码的魔道之战

2015-09-10 07:22张襦心
新民周刊 2015年49期

张襦心

网上消费已经进入中国乡村,新技术对于年青一代农村务工者来说不难,但年龄偏大的务工者大多还是不会使用。

因为神一样的验证码,12306被“喷”惨了。是谁为12306打造了这套验证系统?背后又有着怎样的考虑?本刊记者就此展开了调查。不过,在对调查结果展开叙述前,各位有必要先跟随记者来了解一下验证码的前世今生,这有助于您对12306验证系统的了解。

验证码之“大禹治水”

估计每个上网的人,都有过看不清验证码而抓狂的经历,越着急越出错,有时候恨不得摔键盘。

这还不算悲催。据验证码创始人2008年的统计,当时每天全球范围内就有大约2亿次验证码输入,每次浪费10秒钟,意味着全人类为了输入验证码,每天要浪费55万个小时。时过7年,这个数字想必还要再翻几番。

这就令人产生了一个疑问:人类为什么要造出这么“反人类”的存在?为什么验证码非要歪歪扭扭、模模糊糊地令人生厌?

老网民应该都有印象,这个世界本来没有验证码。公元2000年前,堪称互联网的荒蛮时代,那时候刚刚开天辟地不久,天地一片混沌,根本没有什么安全概念。垃圾邮件和垃圾评论应运而生。

1994年,美国亚利桑那州,有一对在互联网世界里臭名昭著的律师夫妇Cantor和Siegel,为了宣传自己的移民顾问服务,写了一段小程序,把 “绿卡抽奖”的广告邮件,同时发送给了两人能够穷尽的近6000个Usenet新闻组的用户,这就是垃圾邮件的起源。这一事件因此也被称为“绿卡事件”。当时这对夫妇只花了不到20美元的上网通信费用,就吸引来了25000个客户,赚了10万美元。后来还把这段“成功经验”写了一本书:《网络赚钱术》,宣传这种“前所未有的几乎无需任何成本的营销方式”。

“绿卡事件”导致很多服务商的服务处于瘫痪状态。遭受邮件骚扰的用户,纷纷跑到新闻组里声讨,有人甚至留言说:“我恨不能用椰子壳和SPAM午餐肉罐头砸扁他们”。从此美国大名鼎鼎的午餐肉品牌“SPAM”,就变成了互联网垃圾信息的别名,沿用至今。

尽管“绿卡事件”的始作俑者被口诛笔伐,但“赚钱的示范效应”历来都是惊人的。愤怒声中,一些触觉敏锐的商人觉察到了其中的商机,从此潘多拉的盒子就被打开了。

图表:2016 年铁路出行购票七大变化。

第二年,有人写出了可以大批量发送电子邮件的程序。紧接着,又有人拿出200万个邮件地址出售。到了1997年,垃圾邮件已经泛滥成灾。

有垃圾邮件,就有反垃圾邮件。

有人将这段缠斗过程,戏称为“大禹治水”:

“首位安全架构师女娲取五彩之石,炼就密码三次错误自动锁定账户之禁制,才将天空补完。”

“天”虽补完,“水”患依旧横行,蛮荒野兽肆虐,它们或者采用慢速扫描,或者利用密码轮询账号,以避过“女娲”所留“密码三次错误自动锁定账户”的禁制。“尧帝派鲧治水”,“鲧”定堵水之策——限访问者IP,堵“洪水”源头,“洪水”因此而改道,或经代理,或走“肉鸡”,“鲧”治“水”历时九年,“水”患难除,疲于奔命,卒于“羽山”。

“鲧”之子“禹”定疏水之策,立“定海神针”——以验证码确定正常访问者身份,是人是妖一眼看穿,杜绝洪水肆虐,终解大患,此乃验证码之由来。

这里面的“大禹”,其实就是雅虎。

别看雅虎今天已经变得跟“纸老虎”差不多了,当年它可是互联网第一代创业标杆,也是互联网早期最重要的免费邮箱提供商。而免费邮箱,恰恰是垃圾邮件的最爱。雅虎发现:垃圾邮件,竟然都来自自己的服务器。通过机器程序注册,短时间内就可以自动创建上千个电子邮件地址,然后就可以利用这些地址发送垃圾邮件了。

于是雅虎就找到了在卡内基·梅隆大学硕博连读的——Luis von Ahn。这家伙当时才21岁,不愧是拿过“麦克阿瑟天才奖”的人物,向世人展示了学神和学霸的差距,就是谁解决问题更简洁、更优雅。

如何分辨正在注册的究竟是人还是机器呢?Luis von Ahn想到了一个非常简单而又巧妙的设计。让计算机先产生一个随机的字符串,然后用程序把这个字符串的图像进行随机的污染、扭曲,再显示给显示器前的人或者机器,这玩意,就是验证码(CAPTCHA)。很显然,人类能够辨识这些字符,计算机可就傻眼了——当时计算机的辨识技术还很落后。

虽然验证码拦截住了大部分的恶意注册和垃圾信息,但也带来了用户时间的浪费。

有人会说,输入一次不就10秒钟吗?对学渣而言,你给他一年他也敢潇潇洒洒地浪费啊?但“神”可不是这么想的。

Luis von Ahn掐指一算,全人类一天就要浪费55万个小时。这些时间怎么能收集起来,让它产生价值?

优质男想到了拿这些零碎时间,来帮助纸质图书进行数字化,称之为“reCaptcha”。比如150 年前的《纽约时报》,从前我们要数字化,要不就是手动输入,需要花费巨大的人力、资金,要不就是扫描后靠软件识别,但软件识别的准确率很难保证。尤其不少文章,已经因为年代久远,油墨褪色,变得更难辨识。而Luis von Ahn要做的,就是把扫描件上的单词切割抽取出来,然后与一组自动生成的字符混合,生成验证码。于是《纽约时报》从 1851 年到现在的所有报纸,总共超过1300万篇文章,就这么借助广大网友之手,成功地录入了计算机。一个令人生厌、又为了安全不得不做的输入验证码,就这么变成了一个对人类知识宝库做贡献的公益之举。因而Luis von Ahn又被称为著名的众包先驱,《彭博商业周刊》誉其为“人类计算”的先锋,即借由计算机和网络平台,发挥人类技能,去解决大规模、复杂的问题。

2009年,谷歌收购了这个天才的项目。随后人们就发现,咦?验证码里怎么会出现疑似门牌号码的图片?没错,这些就是门牌号,来自Google拍摄的街景。为了提高地图的准确度,那些机器人识别不出来的门牌号码,就可以丢给reCaptcha让广大网友帮忙识别咯。

没有验证码的验证码

所谓道高一尺,魔高一丈。

当年“魔”还只是发发垃圾广告获利,后来用计算机还能破解密码、盗号、操纵网络舆论和投票……试想,如果没有验证码,黄牛用个电脑程序就可以把大量12306的火车票购入囊中。

巨大的黑金利益,催生了破解验证码的疯狂。而在极客的世界里,攻守验证码,也变成了一种较量刀法和剑术的“赛事”。

为了防止验证码被轻易破解,十几年间验证码陆续发展出了多种形式。比如验证码最早是数字,后来是字母,然后是数字加字母,后来腾讯又推出了汉字验证码。汉字就汉字吧,还给汉字打上了马赛克。验证码还开始跟手机短信结合。如果没有验证需求,在微信已经一统天下的今天,手机短信几乎失去了存在的必要。

但上述不管怎么变,验证码都依然处于输入字符的时代。而惯于挑战人类想象力的谷歌则反向行之,先是推出了图片验证码,后来又致力于把人类再从输入验证码中解放出来。

这个牛气闪闪的项目,就是上面谷歌收购的reCaptcha的新版。去年底,谷歌宣称,他们开发了一种没有验证码的验证码 “No Captcha reCaptcha”),只提供了一个复选框,里面写着“I'm not a robot”(我不是机器人)。当你打钩之后,谷歌就能利用“风险分析引擎”进行全方位测评,以此来判断你到底是不是真人。

谷歌敢颠覆传统验证码的背后,有着强大的人工智能技术的支撑。“风险分析引擎”,就像一个善于搜集蛛丝马迹,深谙行为分析术的超级FBI。据reCAPTCHAs的产品经理Vinay Shet说,他们会收集大量信息,包括IP地址和cookies,然后通过收集这些数据看对方是否和过去在互联网上的行为一致,来判定这个用户究竟是不是机器人。即便是在单击复选框之前移动鼠标的那一瞬间,谷歌都可以借此区分一个真人和一个自动程序之间的那点微妙的差异。

如果你被谷歌判断为“可疑”,那它就会给你传统的验证码进行第二次验证。这里面既包括升级版的字符验证码,也包括图片验证码——早在2009年,谷歌就研发出了这种新型的图片验证码。谷歌高级研究科学家Rich Gossweiler当时表示:“我们的技术拓展了图形验证码的表现形式,使其不再局限于字符,也让分辨验证码图形的过程不再枯燥无味,而平添了不少乐趣。”而且图片验证码还可以根据网站的主题创建,例如,迪士尼网站可以采用卡通图片,eBay则可以采用销售的商品图片。

如果您有兴趣去细看谷歌的图片验证码。您就会觉得有点眼熟,跟12306最近被吐沫星子淹死的验证码如出一辙!

大学生创业项目

现在,话题可以回到12306了。话说12306的验证码4年6版本,说出来也是一部血泪史。它的“技术梗”,甚至从这家网站2010年1月30日刚诞生,就已经被吐槽,每年春运订票进入高峰期,12306都会成为“话题之王”:有时候登陆12306比登陆钓鱼岛还难,或者登陆了没法点购买,能点购买了没法付费,付费了收不到短信通知……广大购票者一时怒火滔天: 3亿多元的软硬件投入,就做出了这么个玩意?

好在随着这些年的升级改进,12306终于变得不那么难用了。但怎么对付“黄牛党”,却一直缺乏妙招。据说网络黄牛信奉天下武功,唯“快”不破。用抢票软件本来就比12306网站要快一些,更何况网络黄牛每天都挂在网页上不停地刷。

为了阻挡黄牛,12306的验证码已经从数字-字母-加减法-闪烁变形字母-干扰线变形字母,升级到了最新的图片验证码。

记者注意到,如今被吐槽的“图片验证码”,其实12306早在今年3月15日就已经推出。叫好、拍砖的皆有。

微博ID为“中国民间评论员”的网友评论说:“12306这新验证码果然威武!看图识字,可以幼教启蒙了。”而Azura则抱怨:“昨天买票的时候还是正常的验证码。今天买票的时候说让我选图片,关键是怎么选都不对啊,怎么搞。后来发现,要两个图片一起点,你说坑爹不坑爹啊?!”

但当时春运已过,图片验证码并没有掀起多大的反响,直到9个月后,新一年春运即将到来之前,才一举蹿成了“网红”。

为12306提供图片验证码的,此前有媒体报道,为“北京点触互联科技有限公司”。从工商注册资料可以看出,这是一家2015年12月3日才刚刚成立的新公司,公司位于中关村商圈,法定代表人为宋超,注册资本为100万元。线索似乎暂时中断。但长期跑科技口的老记或许能想起,当年有几个大学生对外称自主研发了一种“点触验证码”,曾在浙报传媒主办的新媒体创业大赛上拿到二等奖,吸引了数百万的天使投资。为首的那位大学生,名字即为宋超。

记者通过查阅相关资料,证实两位“宋超”确实为同一人,今年26岁。

那是在2011年的11月,宋超当时还是哈工大计算机学院网络信息安全专业的研一的学生,他接手了学校大学生创业联盟注册的子公司“千元软件工作室”,平时接点外包项目赚钱。有一次在团队头脑风暴时,偶然想到了“点触验证码”的点子。宋超后来曾对媒体表示:“传统的验证码输入方式已经20多年没变化了,其操作习惯已远不适应当下。我们首创的点击、拖动验证方式更加简单、高效,足以引发一场验证码革命。”他们的验证码就是让用户在特殊处理过的组合图片中识别特定区域的意义,比如在几张图片中识别出水果,让用户用点击、拖拽、触摸的方式,完成验证码的输入。

2012年4月,宋超报名参加了浙报传媒的“中国首届新媒体创业大赛”,据说比赛还没有结束,传媒梦工场创投基金就表现出了投资兴趣。该基金是由传媒梦工场联合阿里资本及创新工场共同发起创业投资基金。

但在那个时候,宋超还要忙于学业。而互联网创业的特点,就是如果跑得不够快,那就会死得很快。学业还是创业,让宋超似乎陷入了“创业躁郁症”,曾在自己的微博上感慨:“大学生创业最缺的不是创意,不是经验,不是决心,而是时间!”

最终他和两位伙伴选择了休学创业。 2012年9月,杭州微触科技有限公司成立,宋超担任了CEO。2014年1月,该公司正式开始商业化运作,累计盈利超过200万元,曾计划在2015年上半年完成A轮融资1000万元。其间公司总部已由杭州搬至北京,并经历了多次股权变更。2013年5月28日,韩光明从投资人中退出。2015年3月,最初创业“三剑客”之一的郝忠翁也从投资人名单中消失。宋超也在媒体采访中坦承:“由于有段时间公司发展困难,资金流出现紧张。一名同学看不到希望,跳槽走了。”到2015年5月27日,杭州微触股东实缴出资额,从变更前的梦工厂传媒有限公司6万、张扬3.36万、宋超20.64万,变为传媒梦工厂6万、张扬3.36万、龚甜3.45万、宋超17.19万。

而在新成立的北京点触中,自然人股东只有张扬和宋超两位。到目前为止,该公司的客户包含了12306、中国邮政、金山快盘、浙江在线、IT之家、新文化网社区等。与12306合作的这一外包项目,据宋超本人称,服务价格超过了100万元,委托方则是铁科院电子所。

本来是作为第一大客户案例的项目,却遭来了铺天盖地的批评,该公司的压力骤增。

目前无论是北京点触,还是铁科院电子所,对该项目都是三缄其口。

记者致电北京点触,该公司的吴姓负责人表示:“公司最近承受了很大的压力,不太方便接受采访。”给宋超发送的采访邮件,未得到回复。而铁科院电子所,则对该外包项目是否进行了招标、中标原因等问题,也未有回应。

从该公司网站公布的一些验证码案例看,其图片清晰美观,趣味感强。但在12306上却显得非常模糊劣质。

这似乎是铁科院电子所主导的结果。铁科院电子所副所长朱建生近日在媒体上承认:“为了防范抢票软件的自动识别,我们会对图片做出微调、旋转、切割的处理。这样做主要是为了在方便旅客购票和打击抢票软件中寻找平衡。”

攻守之战

成本与效果,是检验“验证码”的唯一真理。

一位曾在BAT就职的技术管理者告诉记者:“图片验证码的获取与维护成本,比字符验证码更高。因为字符都是现成的,可以随意变形、加干扰线等,识别不受背景知识和文化差异的影响。而一张图片的内容不能变,只能在图片的组合与出题上加以变化,图库也需要专门去获取。”

朱建生近日称:“将对验证码中数万张图片进行优化,剔除一些辨识度不高的图片,提高图片的清晰度。”“南方人没见过或北方人没见过的,或各地叫法不同的,未来在优化时都将进行筛除。”

网友总结的抢票“技术”。

这显然也是一件耗费人工与时间成本的事情。如果成本大,但效果好,这似乎也是值得投入的事情。但上述人士认为:“图片验证码比字符验证码更容易破解。”他举了腾讯为例。“腾讯是国内对验证码最上心的的公司之一。可以设想一下,是黄牛倒票利润大?还是QQ盗号利润大?目前QQ盗号的黑色产业都已经呈现集团化和行业细化的特征了。为了应对QQ盗号,腾讯必须采用目前最先进的验证码技术。而他们采用的,就是字符验证码。如果图片验证码真的效果好,腾讯早就采用了。”

据其推算,12306的图片数量应该没有几万张,有可能是在1万张左右,这个量并不大,可以先把所有图片都刷出来,并加上备注,形成自己的图片库。当破解程序遇到验证码的时候,虽然它并不认识这些图片是什么,但通过比对,可知这些图,跟自己图片库里的某些图相同,由此便可以进行破解。谷歌、百度现有的图片识别,将会帮助加快这一过程。即使12306增加验证码的难度,但图片的组合与题目的变化,总体而言是有限的。而字符的变形则是无限的。从目前来看,字符验证码,依然是判断正在输入的是真人还是程序的最简单、高效的方法。

在12306图片验证码推出不久,猎豹移动曾表示:抢票不受影响,速度还提升了1秒。紧接着,就有技术高手公开了破解方法和代码,原理如下:1.12306存储的图片并非无限多2.模拟点击完全没问题3.智能识别图像虽然有难度,但是所有图片可以用MD5来标志。

日前,360浏览器“春运抢票开发团队”也对外宣布, 360浏览器已经攻破了12306的图片验证码。在本次春运抢票初期,360浏览器就破解了12306图片验证码,成功率达到95%左右。不到两天,12306展开了“报复”,增加图片验证码的数量与关键词,并提升识别难度。不过360浏览器工程师们也开始了新一轮破解大法,还喊出了“为全国人民干一票!”的口号。最后宣称已在购票登陆和提交支付环节均能自动识别验证码。

当然无论是字符验证码,还是图片验证码,都会遭遇一个终极难题,那就是“人工打码”。如今百度上随便一搜,就可以看到大量招聘兼职打码的小广告。比如有家打码平台给出的任务价格是1000张1.2元,还有奖励机制,活跃会员以全职妈妈、残障人士、收入不高的上班族为主。

人工打码的存在已经不是一天两天了。《纽约时报》早在2010年即有报道称,一些发送垃圾邮件的公司会将填写验证码的工作外包给发展中国家(中国、印度等国)的工人,每填写1000个验证码可获得0.8-1.2美元的报酬,还有专门的经纪人和中间人。一位孟加拉的验证码经纪人在自己的简介网页上称,公司拥有30台电脑,实行三班倒,可以每周7天、每天24小时地开展工作。

记者注意到,还有知名自媒体声称,12306推出图形验证码,其实是在下一盘很大的棋,即想把验证码变成广告展示位。其实打广告,这确实是宋超选择创业的初衷之一。上文提到,2009年谷歌推出图形验证码的时候,也支持各家网站根据自己的主题创建,增加跟网友的互动。

但这在12306上恐怕行不通。江南春可以在楼梯间装液晶屏,利用的是人的闲置时间。而抢票争分夺秒,谁还有闲心去看广告。广告云云,不过是臆想罢了。