查看原文
其他

揭秘!验证码中的“陷阱”。。。

隐水 鲜枣课堂 2019-04-07

作者:隐水

来源:知乎
著作权归作者所有。


迷之“验证码


如果你真的以为验证码是用来验证你是不是人的。。。


那你就太天真了。。。


“只要你上网,就一定会接触到验证码。”

                                      ------尼古拉斯凯奇


在浏览各种网站中我们会遇到各种各样的验证码,如果单从百度百科定义上来看:
【验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。】

通俗一点来说就是一种为了防止你利用计算机做出恶意获益行为的工具。

可是单从防止你是恶意刷票这一点来说,设置一个复杂的验证码未免有点兴师动众,或者说过于麻烦。


至于验证码背后所隐藏的阴谋我们还得从它的作者说起。

▼卡内基梅隆大学的路易斯·冯·安(Louis Vuitton)



就是这货


他17岁考入卡内基梅隆,18岁师从曼纽尔·布鲁姆(因计算复杂度理论及在密码学和程序校验上的应用而获得图灵奖)。


在一开始那个年代,黑客是肆无忌惮的,他们编写了一种能够大量、重复编写信息的程序,伪装成人类用户,肆无忌惮地朝网络上倾倒大量的、无意义的“僵尸”信息,垃圾邮件、垃圾广告、垃圾评论到处乱飞。


论坛被灌水,有用的信息很快会被淹没,很多网站的正常运营遭到破坏。除此之外,还有数之不尽的程序机器人使用不断尝试的方法恶意破解密码、恶意刷票,从中获取非法的利益。其中最大的邮件商意识到他们的客户群每天被各种垃圾邮件灌满。


没办法了。在LV 21岁的时候,雅虎就找到他:“LV啊,你给我们做个验证码呗。”


于是验证码就做出来了。。。

路易斯在导师布鲁姆的帮助下很快设计了一个程序,它先是产生一个随机的字符串,比如smwm,然后对这串字符进行随机的扭曲、重叠、污染,再显示给要进行操作的用户。只要能够识别这个变形了的smwm的,就是人类。


灌水问题很快得到了解决,但是这货并不满足于解决灌水。

他想:“雅虎找到了我,我就是大人物啊,我是要改变世界的啊。我怎么能只做微小的工作呢。我要搞点大动静。”


    


当全世界数以十亿计的人每天都会浪费几秒钟的时间参与辨认文字这一简单活动的时候。。。。


他开始思考,其中浪费的人脑智力是否能得到更好的应用呢?


Luis Von Ahn的最终设计是,让人们用这些脑力解决一些计算机无法解决的“图书数字化”。


在计算机时代以前,印刷术已经存在了数百年,但这些印刷术所产生的书本和报纸等等,对于计算机来说都是模拟信号,仅以图像的形式存在,而非以数字化的形式存在。



但是,早期的印刷术并不精确,文字大小不一,形象有差别。而且因为印刷品年代久远,拥有各种细微的缺损和污染。这对人眼来说不是什么大问题,但对计算机来说就麻烦了。


说干就干的LV很快开工了:他扫描了一些过期的旧报纸,将扫描得到的图片在计算机的分析下拆开成单词片段,再将这些单词作为验证码发送给用户。


有人要问了,先前的那些验证码,系统是知道答案的,但这些书籍拆下来的单词,系统自己也搞不清楚答案,那怎么知道用户的判断结果对不对呢?

                               


路易斯用一贯简洁优美的思路解决了这个问题,并将它起名为reCAPTCHA(意思是“二次验证码”):


他让用户一次性辨识两个单词,其中一个是系统生成的真正的验证码,另外一个是从旧报纸上截下来的单词。如果用户输对了第一个验证码,那么输对第二个单词的几率也很高。




看了上面这个图,大家是不是感觉到了一点不妥呢?


没错,扫描出来的图片和真正的验证码长得那么不像,reCHAPTCHA这个项目又人所皆知,用户一眼就能看出来右边那个“345”是假的验证码。很多认真的用户会乐意为辨识古书籍献出一份力,但并不是每个人都那么乐于助人,那些爱捣蛋的用户很可能会故意输入错误的单词。


为了防止恶意捣乱、提高答案的可信程度,路易斯后来还要对两个验证码进行加工,让它们成为“孪生子”:


下面左边的这个morning,就是从旧报纸里截取出来的,是不是跟右边的overlooks长得很像呢?如果用户分不清那个是真验证码,哪个是“假验证码”,他们会更配合工作。路易斯还将同一个未知的单词输送给多个用户,如果所有用户辨识的结果一致,都是“morning”,那么就认为这个单词被“搞掂”了。




用这一个方法,在短短几个月时间内,路易斯让网民们帮忙完成了纽约时代130年来所有旧报纸的存档电子化。。。。


这原本可是个让人望而生畏的大工程啊。。。



reCAPTCHA很快被Google收购,现在已经成为了Google旗下的一项免费服务:任何人都可以申请将reCAPTCHA用在自己的网站上,你不仅可以为你的网站建立一个防止垃圾信息的堡垒,还让你的用户们得以参与到完善人类电子图书馆的丰功伟业中来。


不仅是翻译书籍,就比如我们平时所用到的百度图片搜索 你搜个太阳 于是出来了一堆太阳; 你搜个小草出来了一个草原 ;你搜一个黑框眼镜出来了一个...






你真的以为图片搜索那么厉害啊。电脑能搜出来你认为主观上的东西,其实是每次我们在做图片验证码的辨认的时候,我们在给网络这一张张图片下定义取名字。


你可能说有些人不对啊,但你要是100个人说某个图片是太阳而只有一个人说是小草,那电脑也可以以极大概率认为它的正确性。


其实我们每次搜索验证码的过程就是在给各大搜索引擎以及图书馆打工的过程。。。

  


其实不仅是输验证码,有些时候很多大学老师让你们翻译英语句子也是因为她给别人翻译文章懒得翻译了让你们翻译之后互相批改最后交差。(老师别打我!)



话说,看完此文,小枣君第一个想到的是12306。。。


有木有人和我一样。。。 

                                         



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存