刘远举:验证码世界里的革命无用论
--- Tips:点击上方蓝色【大家】查看往期精彩内容 ---
3月16日,12306售票网启用图形验证码。当用户登录时,网页上会显示8张图片,内容为动物、植物、家用电器,生活用品等等。然后,用户需要按要求点击选出其中一类物品,比如,选出8张图片中所有的“萤火虫”或“热水瓶”。只有多选正确后,才能顺利登陆12306订票系统。
12306这么做,当然是为了防止“刷票”。去年12月19日,12306网站访问量达到破纪录的297亿次,平均每秒PV(每秒页面浏览量)超过30万次。巨大的流量很大程度是各种浏览器,抢票app、黄牛使用黑客软件刷出来的。为了抢票,他们不断刷新网站,造成了网站的沉重负担。
【验证码是为了辨别电脑那头是人还是机器】
之所以能刷票,是因为计算机无法识别刷新动作是来自于电脑面前的真正的人,还是软件。所以,虽然12306在阿里的帮助下,增大了承受流量的能力,但釜底抽薪的办法,还是要制止电脑代替人进行的登陆。随着人工智能的发展,电脑可以开始模仿人,比如,微软推出的语音聊天工具。所以,本质上讲,12306的验证码方式,就是要分辨出屏幕背后到底是机器还是人,也就是说,这是一个图灵测试。
图灵测试来源于计算机科学的先驱图灵写于1965年的一篇名为《计算机器与智能》的论文。在这篇论文中,图灵预言了创造出具有真正智能的机器的可能性。 由于“智能”这一概念难以确切定义,所以,图灵提出:如果电脑能在5分钟内回答由人类测试者提出的一系列问题,且其超过30%的回答让测试者误认为是人类所答,则认为电脑具有智能,通过测试。
某种程度上,正是由于“智能”难以确切定义,所以,图灵测试只管智能的表象能否达到一定水平,并不关注智能的本质,这就为机器模仿人,完成图灵测试提供了可能性。图灵测试在很长一段时间内被视为人工智能水平的一个重要标杆。
更严谨地说,12306其实是一个逆向图灵测试(reverse Turing test)。机器通过对话或者输入验证码的方法区分被测试对象是人还是机器,回答错误或回答超时则判断被测试者是机器。与图灵测试不同的是,在图灵测试中,人们希望看到技术进步使机器与人难以分辨,而在逆图灵测试中,则恰好相反,往往是希望分辨出机器与人,杜绝欺诈。
【刷票软件也有应对之道】
从技术上看,图灵测试是,人来进行测试,机器企图骗过人,12306的逆图灵测试则是机器来进行测试,机器企图骗过机器。在现代技术下,机器肯定比人好骗。
12306的逆图灵测试,除了技术,在真实社会中,还受着经济学的约束,即必须在一定成本下完成这个测试。除了经费的问题,用户的易用性也是一个重要的因素。12306也做过类似努力,比如,不断扭动的验证码,但却因难度太大,招致了群众的抱怨,最后取消了。
总之,技术的限制、用户的易用性、成本,都降低了欺骗这个逆图灵测试的难度。
要想欺骗12306网站的验证机制,需要能够模仿人的点击,识别汉语,这两项技术相对比较成熟。唯一稍微有问题的是图片识别,虽然现在百度提出了百度大脑,拍照搜索,但实际上效果还是非常差。此次也有人利用这些公共图像识别接口进行破解,据说识别率还不错,但总体来说,机器识别图片现在的可用性还不高。
但是,刷票软件还有自己的粗暴办法。每一张图片的数字文件,都有自己特定的信息特征码,只要把图片的数字特征识别出来,然后人工把这个唯一的数字特征与某种物品联系在一起,形成一个特征码库,那么,当下一次软件遇到了这个图片,得到特征码之后,经过比对已有的特征码库,就知道这张图片应该归为那一类。
当然,实现这个目标之前,必须人工的完成所有特征码与类别的一一对应关系,所以如果图片无限的话,那么破解就不可能实现。但图片不可能无限,也不会太大。这是因为12306网站,乃至后台程序本身,也识别不了图片,12306也需要事先人工把图片与类别一一对应。实际上,这就变为一个拼人力的问题。所以,只要图片库有限,机器自然就可以非常精确、快速的完成在所有图片中选出一种物品的要求,实现机器登陆。
不过,12306还有很多后续办法。一个可行的办法是稍微改变图片,比如稍微扭曲、或者调下色调、或改变一两个像素,使特征码变掉。对12306来说,改变后的图片与图片物品类别可以很方便的全自动的建立映射关系,但对黑客来说,建立这个映射过程又需要重新来一遍。
当然,如果图片改变不大,可以用图像识别来重新建立这个映射。但无论如何,这实际上就是一个加密与解密的过程,加密方的成本总是小于解密方的。二战时期,英格玛小小一台机器,却需要一台庞大的机器才能解码,在个人电脑上利用RAR的加密,要破解却需要很多高性能的电脑连续运作非常久的时间。所以,加密与解密的成本总是不对等的,加密者提升加密的等级(成本)之后,会导致解密者困难的成倍甚至几何级增长。
但是,在真实世界中,12306却无法把这个解密者的成本提升到解密方无法接受的程度。这是为什么呢?本质上看,这是因为图灵测试关注的仅仅是智能的外表,也就是说,被测试的物体即使没有智能,只要传导了智能,就能通过测试。更简单的说,可以作弊,用人来替代机器回答。而且,12306的题目还不能让人,让用户感觉太难。
reCAPTCHA是一家提供验证码服务,从而帮助网站防垃圾、防欺诈的公司,后来为Google收购。据说,Google看中的不仅是CAPTCHA生成验证码的软件,而是把reCAPTCHA视为一种改进OCR(光学字符识别)软件的方法。
【Google利用网民群体力量识别图书】
在图书电子化的过程中,Google图书和Google新闻档案搜索都需要大量文字扫描工作,但常常遇到模糊、扭曲造成的无法识别,特别在古籍书刊中,更是如此。有了reCAPTCHA之后,Google就把这些模糊、扭曲,机器无法识别的图片放到验证码中去。
google会在验证码中放上两个单词,一个单词,google知道答案,用来判断是否是真实的人,另一个单词,则是模糊的、扭曲的单词图片,google不知道答案。当用户填对了第一个单词的时候,不管用户第二个词是什么答案,都能通过验证。
同时,Google保存第二词的答案。这就等于用户在完成验证码的时候,起到人工识别单词图片的作用。reCAPTCHA目前为10万多家网站提供验证码服务,这就意味着每天有几十万甚至上百万的人在输入验证码,帮助Google识别模糊的图书扫描件。
【刷票软件则利用群众力量应对验证码】
在中国,这个过程被商业化了,这就是所谓的打码平台。以12306网站为例,如果在刷票软件、黑客与12306的攻防战中,12306最终使用了一种机器无法完成的方法,那么,刷票软件就可以通过一个接口,把人工智能无法识别的图片转移到一个活生生的人的电脑上。
对这个人来说,他的电脑上仅出现图片,他也只需要填入识别后的结果,然后,这个结果被返回给刷票软件,刷票软件再填入网站。提供这个服务的平台,就叫做打码平台。由于验证码图片的传输与答案的返回都是全自动的,又有非常多的人在从事这个工作,所以,整个过程非常快,与正常人亲自登陆没有区别。
验证码服务必须要考虑到用户的易用性,所以,不管对机器多难,对真正的人来说,还是比较好识别的,所以,这是一个简单的体力劳动。中国是个人力资源丰富的国家,这种电脑面前的体力劳动也很便宜,目前的价格,识别一个验证码是1分钱。所以,整体来看,打码平台提供的服务不但是高效的、也是廉价的,在经济上有可行性,自然会发展起来。
【12306和刷票软件的攻防战,最后得益的是程序员?】
新的验证方式推出后,主流抢票工具均无法登录,而当天晚上,就有抢票软件公司表示,投入技术团队找出了破解方案,实现图像验证码自动识别。并称,12306推出图形验证码方式对其抢票软件没有影响,而且“成功率提升200%”。
3月18日,搜狗浏览器产品负责人表示,搜狗浏览器已进行了技术升级,已成功实现图像验证码的输入,抢票不受任何影响。短短1天多时间,12306的图片并没有完全展示一遍,而图形识别技术还并不是很成熟,所以,目前所谓的先进破解方式,很大的可能,就是打码平台。
对于这个情况,12306的产品经理与程序员是心知肚明的,那么,为何还要继续做?技术虽然带动我们社会的不断发展,但另一个根本规律却是人的规律,社会的规律。
12306不管之前是政府部门,还是现在是国有大型企业,追求更公平是其必然目标。但是,一劳永逸的获得公平,首先,需要顶层设计,涉及到探讨售票机制的本质。票是稀缺资源的分配,人类目前最合理最公平的稀缺方式的分配是抽签。
在现代计算机技术的帮助下,这种方式能极大的制约住租值耗散。比如,车牌抽签,即使有腐败但却无黄牛。但是进行顶层设计却是风险与挑战并存的,很多时候,对管理者而言,小调整比大刀阔斧要安全得多。
其次,虽然知道是做无用功,但是却无法不做。不做的理由向公众很难解释清楚,更何况,这等于把责任推给顶层设计,在企业内部,也是不可接受的。
而且,不管是刷新与服务器容量的攻防战,还是工程师与黑客之间的攻防战,都需要预算支持。所以,在一个预算约束不强烈的政府部门或企业中,这种年年改变,年年白干的局面,对具体岗位的人来说,也并非坏事。
作者文章推荐
更多作者文章,请在对话界面输入“@作者名”调取。
本微信号内容均为腾讯《大家》独家稿件,未经授权转载将追究法律责任,版权合作请联系:ipress@foxmail.com
点击↙↙↙【阅读原文】查看作者更多文章。