Google AI骗过了Google,工程师竟无计可施?
作者 | 若名
出品 | AI科技大本营
如果你通过 Google 搜索购买演唱会门票或者注册论坛账号,系统会提示你必须点击几个图框、音频或者移动鼠标等操作来确认是人类在操作验证而不是机器人。
其背后的验证机制就是 CAPTCHA(验证码),保护互联网服务免受诸如 Sybil 的攻击,这是互联网防止自动创建帐户和滥用服务的第一道防线。而 Google 的 reCaptcha 服务是最受欢迎的验证码系统之一,目前被成千上万的网站用于测试用户是否是人类,以防范机器人的攻击。
reCAPTCHA 发布之后,无论是安全专家还是研究人员都在试图挑战它,找出它的漏洞,比如一些专家就试图通过反向图像搜索、深度学习和“ 实验神经科学数据 ” 来进行攻击。这些方法要么成功率较低或者很快就被 Google 团队迅速补上了漏洞。但其中一种攻击方法让 Google 团队看上去束手无策。
马里兰大学的研究人员声提出的 unCaptcha 攻击方法 unCaptcha 可以轻松骗过 Google reCaptcha。他们使用来自实时网站的超过 450 次 reCaptcha 挑战来评估 unCaptcha,并证明可以在 5.42 秒内以 85.15% 的准确率进行破解。
该方法的原理让人万万没想到的是:在用户请求语音验证码后,只要把收到的内容转发给 Google 语音转文字 API,然后把收到的回复进行提交,最后竟然给轻易破解了。
古人问:以子之矛,攻子之盾,何如?
Google reCaptcha 团队:其人弗能应也......内心苦,说不出。
微博网友如此调侃:
怎么会这样呢?
上述研究人员最初在 2017 年开发了 UnCaptcha,他们在发表的论文《unCaptcha: A Low-resource Defeat of reCaptcha's Audio Challenge》中给出了更为详细的解释:通过 UnCaptcha 下载音频验证码,将音频分成单个数字音频片段,将片段上传到多个其他语音转文本服务(包括 Google),然后将这些服务得出的结果转换为数字编码。随后经过一些同音词猜测后,它会决定哪个语音到文本输出最接近准确值,然后将答案上传到 CAPTCHA 字段。
这还是 unCaptcha 1.0 版本,成功率便达到 85%。在这一版发布后,Google 随即修复了一些漏洞,包括提升浏览器自动检测性能以及将验证方式从数字编码切换为短语音,这成功防止了 unCaptcha 的攻击。
不过,上述研究人员在 2018 年 6 月升级了新方法,unCaptcha v2 依然可以绕过这些防御机制,并且“魔高一丈”,准确性比以前更高,达到了 90%。
这次他们还公布了 v2 版的代码和更详尽的步骤,研究人员称 unCaptcha2 的操作方法很简单:
- 导航到 Google 的 ReCaptcha 演示网站
- 导航到 ReCaptcha 的音频挑战
- 下载音频挑战
- 将音频挑战提交到 Speech To Text
- 解析响应和类型答案
- 按提交并检查是否成功
(过程演示)
由于 unCaptcha2 必须转到屏幕上的特定坐标,因此你需要根据设置更新坐标。这些坐标位于 run.py 的顶部。在 Linux 上,使用命令 xdotool getmouselocation --shell 查找鼠标的坐标可能会有所帮助。
你还需要为选择的任何语音转文本的 API 设置证书。由于 Google,微软和 IBM 的语音转文本系统看起来效果最好,因此这些系统已包含在 queryAPI.py 中。此外,你必须根据需要设置用户名和密码,对于 Google 的 API,必须使用包含 Google 应用程序证书的文件设置环境变量(GOOGLE_APPLICATION_CREDENTIALS)。
最后,使用安装依赖项 pip install -r dependencies.txt,大功告成。
到此你还有疑惑问这难道不是黑客攻击吗?Google 没报警?研究人员的说法是,他们已经联系了 Google ReCaptcha 团队,提醒 Recaptcha 更新后的系统安全性更差了,所以后者完全了解这次攻击的事件,而研究人员非但没有受到任何干扰,而且在破解成功率如此之高的情况下,ReCaptcha 团队甚至允许他们公布代码。
当然,这些研究人员这么努力找 ReCaptcha 的 bug,并善意提醒ReCaptcha 团队基础架构的问题,却没能得到 Google 的奖励,研究人员也特意强调了这一点。
ReCaptcha 团队暂时未给出应对攻击的进一步措施,但研究人员最后发布免责声明称,当 Google 再度更新 ReCaptcha 服务时,他们将不再更新 GitHub 库。因此,他们预计 unCaptcha2 攻击方法未来会失效,项目本身也会随时中断。
来源:
http://uncaptcha.cs.umd.edu/
论文链接:
http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf
代码和数据:
https://github.com/ecthros/uncaptcha
https://github.com/ecthros/uncaptcha2
(*本文由 AI科技大本营原创,转载请联系微信 1092722531)
相关文章:

用高中数学理解AI “深度学习”的基本原理
本文作者尚俊霖,全职产品经理,业余自学机器学习。最近开始写硬核科普,欢迎关注公众号欠拟合(ID:Underfit)。Google 研发了十年自动驾驶后,终于在本月上线了自动驾驶出租车服务。感谢“深度学习”技术&#…

Linux I2C工具查看配置I2C设备【转】
转自:http://blog.chinaunix.net/uid-26895763-id-3478882.html 在處理音訊相關的問題時,我通常會找個方法來讀寫codec中register的值。幸好linux上也有這樣的工具 – i2c tools。先到lm-sensors下載soure code,然後cross compile成arm的執行…

Ruby之类定义
介绍几种不常见的类定义方法: 1. Struct PersonStruct.new(:name,:age,:sex)pPerson.new("liyuchun")puts p Struct生成一个仅仅包含数据属性的类。但是你可以在这个类的基础上扩展: PersonStruct.new(:name,:age,:sex)class Persondef …

引用 引用 引用 学会求知 学会共处 学会做人 学会做事
◆学历不等于能力和水平,学校学到的在社会能用上的只有15%,而在社会能学到85%。◆世上很多发生的事必有其原因,必有其结果,必有其收获。◆心态归零,天道酬勤。◆老板是私营企业家,赚了小钱是自己的…

python写一个通讯录step by step V3.0
python写一个通讯录step by step V3.0 更新功能: 数据库进行数据存入和读取操作 字典配合函数调用实现switch功能 其他:函数、字典、模块调用 注意问题: 1、更优美的格式化输出 2、把日期换算成年龄 3、更新操作做的更优雅 准备工作 db准备…

#每天一种设计模式# 模板方法
《松本行弘的程序世界》对模板方法(Template method)的说明非常清晰: 在父类的一个方法中定义算法的框架,其中几个步骤的具体内容则留给子类来实现。 比如一个用于公司欢迎同事的程序: class Adef initializename "jinbin"word …

如何更好地玩转GitHub?
本文作者黄昱俊,国资企业投资部总经理,主要负责投资部门建设、投资流程管理、投后资源管理。历经10年,从医疗器械研发工程师到投资管理的蜕变,业余尝试ETF量化投资。 本文介绍如何在GitHub上更新Fork以及PullRequest给源项目。 在…

System Center Data Protection Manager 2007补助说明
在 DPM 服务器上配置 Windows 防火墙 1. 在 Control Panel(控制面板)中,单击 Windows Firewall(Windows 防火墙)。2. 在 General(常规)选项卡中,验证是否已开启 Windows 防火墙&am…

可伸缩系统的设计模式(译)
Ricky Ho在他的博客中分享了该文章,该文章是一个简单的概括分享,详细的可以参见他博客的其它详细文章。下面主要是意译。 1、Load Balancer:负载均衡 – 由分发者来决定哪个工作者处理下一个请求,这种决定可以基于不同的策略。 “…

Boson_Netsim_6使用方法
使用说明: netsim6.0只有在英文操作系统下才能释放出正确的pdf文件,大家可以到文档中心下载以下3个pdf文件: SequentialLabs.pdf:解压后复制到安装目录下的\MyLabs\ccna_sequential\Sequential Labs (CCNA)\common中覆盖相应的文件…

Ruby之Enumerator类
今天发现了Ruby1.8.6和 Ruby1.9.2的一个不同之处,试运行以下代码: require findputs Find.find("./data").class 在Ruby1.9.2中,最后的结果是Enumerator,而在Ruby1.8.6中,结果则是find: no block given (L…

澎思科技获IDG资本数千万元Pre-A轮融资 推出AI安防全场景软硬件解决方案
1月8日,人工智能安防公司澎思科技宣布完成数千万元 Pre-A 轮融资,该轮融资由 IDG 资本领投,高捷资本、上古资本、洪泰基金跟投。澎思科技表示,此轮融资会更多用来“修炼内功”,进一步夯实公司的技术研发和产品落地能力…

看linux书籍做的一些重要笔记(2011.07.03更新)
(1)制作启动盘 •用户可以用dd,cat,cp等命令自行将这些image文件制作成启动盘。 •例如: •ddif/mnt/cdrom/RedHat/images/bootdisk.img of/dev/fd0 •cp /mnt/cdrom/RedHat/images/bootdisk.img /dev/fd0 •cat /mnt…

C++ Primer 读书笔记 (1)
我的《C Primer》扉页记着购书的日期和地点:C Primer 2009.11.28购于西区求索。那时对于这本厚书一直心怀敬畏,仿佛是眼前的一座大山。那时,虽然已经大四,但是对于面向对象的理解还很肤浅(相当肤浅),只能用C编写一些简…

招聘:兼职ASP 高级工程师
工作职责:1、负责ASP网站设计和页面制作;2、配合运营团队做客户服务支持;3、参与海洋工作室其他相关设计工作。 职位描述: 1. 要求有很强大ASP开发功底;2. SQL Server使用经验;3. 有与策划者和美工合作的习惯;4. 可独立开发&…

GitHub重大好消息:私有仓库可无限制免费创建
作者 | 一一 出品 | AI科技大本营 GitHub 被微软收购之后,第一次公布了有利于广大程序员的好消息。 1 月 8 日,GitHub 宣布无限制的免费为普通用户提供私有仓库服务,这给程序员每年省下了 84 美元。此前,企业要创建私有仓库进行代…

“AI下乡”:华为和袁隆平一起种海水稻,欲改造1亿亩良田
作者| 琥珀 出品| AI科技大本营我们总是无法忘怀“杂交水稻之父”袁隆平的名字,即便后来很多学者对他的成就有所争议。距今,三系杂交水稻的发现已经过去了 50 多年,袁隆平也近 90 岁高龄,但他依然活跃在农业生产一线。想必近日不少…

finecms设置伪静态后分享到微信不能访问怎么处理
finecms设置伪静态后分享到微信不能访问,分享的链接自动增加了一串参数,类似这样的***.html?fromsinglemessage&isappinstalled0,刚开始ytkah没注意,以为是微信屏蔽了不安全网址,后面在论坛上问了一下,…

Access和SQL server开启表间关系,并实现更新或删除母表数据自动更新或删除子表数据...
1.Access开启表间关系,并实现删除母表数据自动删除子表数据: 在Tables等界面 - > 右键 - > Relationships... -> 弹出Relationships窗口 -> 选择需要关联的表 -> 双击Relationships窗口空白位置 -> 弹出 Edit Relationships 窗口 -> 就可以看到Enforce Re…

推荐并简要分析一个silverlight的相册DEMO--ImageSnipper(V2)
下面就是它的一些演示截图。 首先是缩放,旋转和透明处理:然后是文字水印处理:然后是使用Ink的涂鸭:相信做为一个相册(图片浏览)的基本功能已经没什么问题了。下面来看一下这个DEMO的类图ÿ…

Ruby之Tempfile
今天又机会尝试了下Ruby的Tempfile库,相比于自己创建临时文件再删除的方法简便了很多。 require tempfiletmp Tempfile.new("tmp")tmp.path # > /tmp/tmp20110928-12389-8yyc6w 不唯一tmp.write("This is a tempfile") tmp.rewind tmp.read…
快车 FlashGet 3.1 修正版(1057)
快车 FlashGet 3.1 修正版(1057) SM发布于 2009-06-25 23:43:23| 2326 次阅读 字体:大 小 打印预览感谢VxuE的投递快车(FlashGet)是互联网上最流行,使用人数最多的一款下载软件.采用多服务器超线程技术、全面支持多种协议,具有优秀的文件管理功能.快车是绿色软件,无…

Python模拟微博登陆,亲测有效!
作者 l 上海小胖 来源 l Python专栏(ID:xpchuiit)转载请联系授权(微信ID:pythonzhuanlan)今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!…

Ruby调用shell命令
原来发在diandian的几篇旧闻,也一并转到iteye上来吧。 1. exec exec echo "hello $HOSTNAME" 用echo命令来取代当前进程,无法知道命令是否成功 2. system system(echo "hello $HOSTNAME") 运行一个子shell来避免覆盖当前进程&a…

mac os下valgrind的安装
valgrind是一款性能分析工具,功能强大。 在mac os下的安装略有不同,特写此文以记之。 现在最新的版本是3.8.1 tar jxvf valgrind-3.8.1.tar.bz2 cd valgrind-3.8.1 ./configure sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer m…

Google Voice开始发送邀请函
今天收到了Google Voice的邀请函,标题为“Youve been invited to Google Voice”。最近关于Google Voice 的新闻不少,出于好奇登录http://www.google.com/voice 递交了申请,没有想到这么快得到了邀请函。邮件特别强调“ Please note that Goo…

Python开发(基础):字符串
字符串常用方法说明 #!/usr/bin/env python # -*- coding:utf-8 -*- # class str(basestring): # """ # str(object) -> string # # Return a nice string representation of the object. # If the argument is a string, the return value …

Linux与Windows文件共享命令 rz,sz
一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地; 与ssh有关的两个命令可以提供很方便的…

Python爬虫小偏方:如何用robots.txt快速抓取网站?
作者 | 王平,一个IT老码农,写Python十年有余,喜欢分享通过爬虫技术挣钱和Python开发经验。来源 | 猿人学Python在我抓取网站遇到瓶颈,想剑走偏锋去解决时,常常会先去看下该网站的robots.txt文件,有时会给你…

八百客与51CTO结了梁子?
转载于:https://blog.51cto.com/simon/171348