图片来自网络
壹读微信号:yiduiread
春节还有两个月,好多人却要在这寒冷冬日里练习手速了。没错,我说的就是在12306网站上抢火车票。你们想的也是这件事吧?
和上网购物一样,登录时依次填写用户名、密码,接下来是图形验证码……等等,这是什么鬼?“请点击下图中所有的美男子”、“请点击下图中所有的非智能眼镜”……在这个分秒必争的时刻,12306上的购票验证码让抢票者瞬间“抓瞎”。而且还他喵的是多选!有统计说,每输错一次验证码,就意味着当次购票成功率下降80%。
那些软妹币啊老虎狮子还算是“送分题”,碰上了七星瓢虫、武林门派之类的,还不如直接刷新。其实,网站验证码的出现,是为了让机器不容易识别的。结果这一道对人来说有些多余的安全防护,生生地被一些网站弄成了“反人类”。
今天,壹读君(微信:yiduiread)就和你聊聊验证码到底有啥用。
其实很绅士的值班壹读君 | 国贺33
本质上是图灵测试
估计没有网民没遇到过验证码,在一家论坛上面对提示,紧盯着屏幕上的几个数字、一串字符或者奇异的波浪线,小心翼翼地把它输到空白框里。老司机们可能有印象,在2000年前是没有验证码这东西的。
输入验证码的过程,其实是让机器判断你到底是真人还是软件。“验证码”的英文名字很拗口,叫CAPTCHA(CompletelyAutomated Public Turing test to tell Computers and HumansApart),翻译过来是“全自动区分计算机和人类的图灵测试”。
△挂上“图灵”二字,瞬间觉得填个验证码也高大了许多
验证码的诞生,是为了杜绝通过软件设计的“注册机器人”进行恶意注册,进而产生大量的垃圾用户(僵尸用户)以及垃圾点评信息。这得说回到2000年左右,互联网仍是一番原生态景象。雅虎公司最早受到大量通过机器程序注册的困扰,犯罪者在短时间内自动创建上千个电子邮件地址,然后利用这些地址发送垃圾邮件。
为此,雅虎找到了刚刚进入卡内基•梅隆大学硕博连读的Luis vonAhn,后者为雅虎研究了一种强制用户输入某个适当变形的字符串,以检验注册者到底是机器还是人。按照当时的技术,没有电脑能通过这种测试:人为扭曲的验证码毫无规律地以图形方式呈现,必须通过肉眼辨识才能通过验证。
△验证码的发明人Luis von Ahn
说到底,验证码的初衷是为了限制机器。这个对用户来说稍显多余的步骤,很快就遍布了互联网的各个角落,Luis vonAhn在2008年时预计,全世界每天有2亿个验证码被用户填写,想必在7年之后,这个数字又翻了几番。所以说,当你填写一个验证码的时候,背后正是垃圾邮件发送者和程序员之间的一场热战。
最暴力的验证码破解法——雇人来刷
我们每天在网上付费、登陆论坛或者多次输错密码后,都得面对各式各样的验证码的考验,而到现在我们也没有摆脱垃圾邮件或网络水军的骚扰。按照其发明人Luisvon Ahn的表述,如何绕开验证码激励着垃圾邮件发送者展开一场军备竞赛。
为了防止验证码被轻易破解,十几年间验证码陆续发展出了多种形式,但直到今天使用最广泛的仍是基于字符的图片类验证码。这类验证码最易产生,具有标准答案,不受背景知识和文化差异的影响。其图像中包含有数字、字母或其他文字,字符序列既能与背景图像进行融合,又能做出扭曲、变形之类的处理,所以破解的难度很大。我们平日里常去的网站,大都使用了这种基于字符的图片验证码。
在平面字符的基础上,还曾诞生过3D验证码,它对于机器更难破解,但生成难度很高,用户体验也不如字符更简单,所以已被弃用。说到难度,总有道高一尺的存在,比如这样的数学验证码,想通过就得算出答案。结果是计算机没法回答,学渣们哭晕在厕所。这样一看,各种奇葩验证码并没有广泛应用的可能。
有了验证码,确实在一定程度上阻止了恶意的机器人程序,比如遏制了垃圾评论,保证在线投票的真实性,也保护网站不被批量注册。不过,即便是个门外汉,你也能看到这些行为仍在网络上横行,可见验证码并不是绝对安全的防护屏障,它所针对的也只是大量的普通用户而已。
验证码诞生之初,就可以通过人力暴力破解的方式绕过测试,但代价太过高昂。在一些招工网站上,可以搜到一些公司发布的广告,专门雇人全天人工阅读、输入验证码。纽约时报在2010年曾报道说,一些发送垃圾邮件的公司将填写验证码的工作外包给发展中国家(中国、印度等国)的工人,每填写1000个验证码可获得0.8-1.2美元的报酬,还有专门的经纪人和中间人。一位孟加拉的验证码经纪人在自己的简介网页上称,公司拥有30台电脑,实行三班倒,可以每周7天、每天24小时地开展工作。
虽然费用低廉,但规模有限,人力填写验证码并不是十分赚钱。不过,计算机不能完成的任务已经越来越少,许多技术博客都会定期宣布对Gmail、雅虎等知名网站的验证码破解成功。因为在一个验证码中,每个字母都是由一定数量的像素组成,恶意软件如果能数出像素数,就可以知道它“看”到了什么字母。而互联网公司通常不会做出回应,因为这很容易鼓励那些人更“走火入魔”地破解验证码。
验证码正在拿你当苦力
随着软件的发展,人与计算机之间的差别会越来越小,发明人Luis vonAhn认为,或许3-5年内,能完全识别验证码的软件就将出现。这就要求更有效的验证码,比如听一段音频(类似英语听力?),或者要求用户起兴作首诗。好吧,12306上那些区分动物、人物的图片,也不失为一种尝试。
但另一方面,验证码的识别技术十分必要,除了增强自身的安全性,验证码本身作为一种图灵测试,也综合了图像处理、机器识别、模式识别、人工智能等多个领域的研究,这些成果可以被应用到多个领域,最直观的便是手写文字识别技术(OCR)。更为直接的用途,比如说生活中常见的摄像头识别车牌。验证码识别在国外已经有了专门的对抗赛,也形成了相关的产业和理论体系。在国内,2010年就有人用KKN算法破解了四家银行的验证码,识别率超过80%。
其实,在你输入某些验证码的同时,也不知不觉做了一回文字的“搬运工”。2005年,Luis vonAhn对验证方式进行了更改:注册者输入验证码时,提供给两个字符串,一个是真正的验证码,另一个则来自某个古老文献中难以辨识的单词或词组。注册者需要自己辨识、输入这两个字符串。
奥妙就在第二个字符串上,这个通过扫描仪、OCR软件甚至整理者都难以辨识的字符,可以通过大量注册者的“举手之劳”,很快得到确认。如果把互联网档案馆的文本都校对一遍,每天处理100万个单词需要400年,而加入到验证码中,每天可以校对160本书,精度超过99%。2009年9月,Google专门购买了这项技术,作为书籍扫描中难以辨认字符的识别工作。
Louis von Ahn的办法,堪称利用群体智慧进行大数据计算的典范。顺便提一句,她当年的博士论文,就是人力计算机(HumanComputation)。
最后回到被大量吐槽的12306。验证码是为了防御机器的,现在却把真人都给难住了。出现这样的系统,是因为旧的验证码体系已经完全被攻破、起不到防刷的作用,不得不采用新的方案。
一套新规则出现可能是好事。从实际效果看,这些低像素的图片着实难住了普通人,理论上也让机器学习更加困难,所以是故意为之。在打击黄牛和抢票软件的效果上,仍有待观察,有科技公司就表示攻破这些图形验证码并不困难,因为12306上使用的581种图片(哪怕是5810种图片),只要有足够的耐心,把所有图片都刷出来并加上备注,就能实现破解。
其实吧,壹读君(微信:yiduiread)隐隐觉得,12306可能在下一盘很大的棋:把验证码变成广告位,简直是丧心病狂的商机啊啊啊啊!
参考资料:
段永朝:《社会计算实例:10秒钟验证码能干什么?》,财经网,2011年6月3日
孙宏超:《12306奇葩验证码防得住黄牛吗?》,腾讯科技,2015年12月8日
王璐:《验证码识别技术研究》,中国科学技术大学[微博],2011年5月
许明:《验证码的识别与反识别》,南京理工大学[微博],2007年6月
维基百科:reCAPTCHA
Lev Grossman,《Computer Literacy Tests: Are YouHuman?》,Time,2008年6月5日
VIKAS BAJAJ,《Spammers Paying Others to SolveCaptchas》,NYTimes,2010年4月6日
公众号转载,请联系我们并取得授权
(声明:本文仅代表作者观点,不代表新浪网立场。)