Break Google ReCAPTCHA: ReCAPTCHA科普
来源:互联网 发布:支付宝小程序源码 编辑:程序博客网 时间:2024/05/22 17:32
这两天看了一篇论文: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%的人工识别工作。
关键点在于,ReCAPTCHA的验证码生成规则。验证码由两部分组成:K和S。其中,K是一个正常的、已知的验证码;S是扫描版图书中的某个不能识别的词段。
当网站使用此验证码时,用户需要依次输入识别出来的文本,如果K的识别正确(通过和后台记录的结果做比对),那么ReCAPTCHA就认定,S的识别在大概率上也是正确的。对于每个词段,会做若干次识别,取最多数的结果作为S的识别结果。这样,ReCAPTCHA在给网站提供拦截保护的同时,也在无形中利用了大量的人力资源,做了图书数字化的工作。所以,如果以后再遇到类似的验证码的话,不必太埋怨,其实你每一次有效的输入,都是在为纸质图书数字化贡献力量!
如今,ReCAPTCHA的用途不仅仅局限在图书数字化,它还能帮助改善地图的准确度(Google会将一些门牌号的图片和已知的数字验证码组合,让用户在做验证时顺便帮它把门牌号码也给识别了,很聪明吧),为更深层次的AI提供海量的宝贵数据。
最近再把那篇论文翻译一下,好好学习下针对ReCAPTCHA有哪些有效的攻击方式,思考思考有什么相应的应对措施。
更新
自己对这篇论文的翻译在此:我虽不是人类:且看我如何攻破Google的ReCAPTCHA
- Break Google ReCAPTCHA: ReCAPTCHA科普
- 解决google人机验证recaptcha
- 验证码之google的reCAPTCHA使用
- reCAPTCHA 服务
- 关于 reCAPTCHA 验证码
- DVWA reCAPTCHA key: Missing
- reCAPTCHA Android API 简介
- reCaptcha验证码 ( by quqi99 )
- 谷歌收购 ReCaptcha 2009
- Using reCaptcha with java/jsp
- Google 验证码Recaptcha.RecaptchaControlMvc asp.net mvc3.0应用方法
- 我虽不是人类:且看我如何攻破Google的ReCAPTCHA
- JEZ reCAPTCHA 谷歌驗證碼插件及使用方法
- ReCAPTCHA:让恼人的 CAPTCHA 技术造福人类
- 在Rails里使用ReCaptcha添加验证码
- Test the usability of the latest version of reCaptcha
- reCAPTCHA:通过网络安全措施进行基于人类的的字符识别
- 中国人工智能极客团队MentalTrotter:成功破解了谷歌的reCAPTCHA验证码
- adb shell 命令详解
- 半阈值化的应用说明及利用函数threshold实现半阈值化的方法
- Android values适配问题
- avformat_open_input()源码分析
- 算法8—不通过比较,找出两个数的最大值
- Break Google ReCAPTCHA: ReCAPTCHA科普
- GDAL学习总结
- Sqlite数据库sqlite3命令
- JNI笔记
- 1.6 五分钟学会OpenStack 基础知识
- hive大数据倾斜总结
- android Html5学习代码
- ubuntu下编译protobuf
- 二叉树的四种遍历的递归和非递归的实现