Break Google ReCAPTCHA: ReCAPTCHA科普

这两天看了一篇论文:I’m not a human: Breaking the Google reCAPTCHA。论文中简单介绍了Google的ReCAPTCHA服务,然后主要针对其中两种验证码方式提出了绕过或攻击方案,并做了模拟测试。

最近打算把这篇论文翻译一下,这里,先补了一下关于ReCAPTCHA的一些背景。

ReCAPTCHA

ReCAPTCHA最初是由Luis von Ahn开发,用于识别电脑用户是真实的人类,而不是机器人,同时也被用于图书的数字化。于2009年9月被Google收购。

不得不提的CAPTCHA

这里又不得不再解释一下CAPTCHA。CAPTCHA,就是万恶的验证码,全称是Completely Automated Public Turing test to tell Computers and Humans Apart,是一种应答测试,来判断用户是不是真实的人类。这个词最初由Luis von Ahn在2003年提出,而实际上类似用途的验证码在1997年就已经开始使用了。验证码测试有时也会被称作是逆图灵测试。

使用CAPTCHA最典型的用途,就是在网站上,比如注册、登录时,判断用户是真实的人而不是机器,避免网站遭受恶意注册与攻击。一般用户通过一个验证码测试需要10s左右。作为一个早期的验证码开发者,Luis von Ahn意识到,大量的用户所做的这些成千上万上亿的10s操作,其实是非常宝贵的资源,应该加以利用。ReCAPTCHA就应运而生了。

ReCAPTCHA能做什么

ReCAPTCHA提供了最基本的验证码服务,同时,还利用大量用户的人工识别结果,来帮助对扫描版的图书做数字化。ReCAPTCHA最初的口号就是“Stop spam, read books.”(拦截垃圾邮件,识别扫描图书)。当然,现在ReCAPTCHA的功能远不止于此。

那么,ReCAPTCHA是怎么做到能够识别扫描版图书的呢。扫描版的图书其实都是一张张的图片,我们知道,可以用OCR技术来识别图片上的文字。但是OCR毕竟准确率并不是100%,尤其对于特别久远的图书(字迹并不清晰),再加上扫描的质量也不高,可能只有80%的信息能够被正确识别,对于剩下的20%信息,只能由人工肉眼来识别了,工作量非常非常大。ReCAPTCHA就能来做这剩下20%的人工识别工作。

Break Google ReCAPTCHA: ReCAPTCHA科普_第1张图片

关键点在于,ReCAPTCHA的验证码生成规则。验证码由两部分组成:K和S。其中,K是一个正常的、已知的验证码;S是扫描版图书中的某个不能识别的词段。

Break Google ReCAPTCHA: ReCAPTCHA科普_第2张图片

当网站使用此验证码时,用户需要依次输入识别出来的文本,如果K的识别正确(通过和后台记录的结果做比对),那么ReCAPTCHA就认定,S的识别在大概率上也是正确的。对于每个词段,会做若干次识别,取最多数的结果作为S的识别结果。这样,ReCAPTCHA在给网站提供拦截保护的同时,也在无形中利用了大量的人力资源,做了图书数字化的工作。所以,如果以后再遇到类似的验证码的话,不必太埋怨,其实你每一次有效的输入,都是在为纸质图书数字化贡献力量!

如今,ReCAPTCHA的用途不仅仅局限在图书数字化,它还能帮助改善地图的准确度(Google会将一些门牌号的图片和已知的数字验证码组合,让用户在做验证时顺便帮它把门牌号码也给识别了,很聪明吧),为更深层次的AI提供海量的宝贵数据

Break Google ReCAPTCHA: ReCAPTCHA科普_第3张图片


最近再把那篇论文翻译一下,好好学习下针对ReCAPTCHA有哪些有效的攻击方式,思考思考有什么相应的应对措施。

更新
自己对这篇论文的翻译在此:我虽不是人类:且看我如何攻破Google的ReCAPTCHA

你可能感兴趣的:(机器学习)