分享嘉宾:刘浩真 极验
编辑整理:孙晓晴 清华大学
出品平台:DataFunTalk、AI启蒙者
导读:随着互联网技术的发展,网络上的黑灰产对抗也日益激烈。在黑灰产攻防双方你追我赶的动态博弈中,验证码扮演着提高攻击门槛、处置恶意流量、辅助风险判别等重要角色。今天将和大家分享验证码的诞生与发展过程、持续升级的开发设计技术与破解技术,以及极验在验证码设计部署上的实践案例。
一、验证码诞生与发展历史
验证码(CAPTCHA)是“全自动区分计算机和人类的公开图灵测试”的缩写,又名HIP(human interaction proof),即“人类交互行为证明”。下图为最早的验证码,于1997年设计公布并申请了专利。此验证码属于字符型验证码,是基于阅读行为的人类交互行为证明。
- 最初应用
1999年slashdot网站发起在线投票,票选全美计算机科学专业最好的学校。而由于投票系统设计得较为简单,仅支持基于IP地址的限制条件,MIT和CMU的学生编写脚本进行批量刷票。这也许是最早的刷票行为。
验证码的提出者Luis von Ahn博士与雅虎网站合作开发了EZ-Gimpy字符验证码,部署于雅虎的邮箱注册界面,阻止机器脚本大量注册免费邮箱。
除上述在线投票、账号注册场景外,验证码还应用于搜索引擎、反爬虫、有害邮件、防止爆破行为等场景。
- 最初的对手
字符验证码诞生不久,就遭遇其最初的对手OCR,即“光学字符识别技术”。下面介绍OCR的两种主流实现方式,包括图像识别算法和机器学习模型。
2003年Greg Mori等利用改进的Shape Context算法在雅虎的EZ-Gimpy数据集上达到93%的识别率。需要注意的是,EZ-Gimpy相较于当今的字符验证码更为简单,验证码上仅包括字典中出现的561个短单词字符。所以,这项工作能够达到如此高的识别率也是由于利用了EZ-Gimpy验证码公开的生成逻辑。(Shape Context算法及实现详情可参看极验公众号上相关文章)
2005年Kumar Chellapilla等利用CNN模型进行基于单字符识别的验证码识别,通过7组对比实验论证得出,该CNN模型在识别扭曲单个字符任务中的表现远超人类。
- 验证码的发展
自验证码诞生至广泛应用以来,各种加强版字符验证码和其它形式验证码层出不穷,观察其发展趋势可总结出两个特点:① 丰富题目类型;② 采集行为数据。
如下为谷歌reCAPTCHA项目的三次迭代版本。第一版选取两张扭曲的字符图片拼接后作为题目展示,本质仍属于字符型验证码。该版本的关键技术的前身是CMU的一个分布式人工识别数字化文字收集项目。验证码中展示的两张图片中仅一张(图A)是真正的题目(有明确答案),而reCAPTCHA本身无法识别另一张图片(图B)中所包含的字符。系统假设如果使用者正确识别了图A,则很大概率上也可以正确识别图B。配合大量用户对同一题目的标注结果,该系统帮助数字化了大量ORC技术难以识别的印刷文字。该版本于2018年3月31日终止服务。
当前第二代reCAPTCHA项目更为常见,包括九宫格的图片验证以及判断用户行为的checkbox。当用户点击checkbox(I’m not a robot)时,会有部分浏览器数据及用户浏览行为数据被发送至reCAPTCHA后端。如果根据以上数据难以判断或判断为有风险用户,会弹出九宫格图片进一步验证。
第三代reCAPTCHA项目直接抛弃了有界面和交互的验证码形式,而变身为角落中的一个图标,代表隐私协议。网站主部署此系统后,其JS代码会持续收集用户行为数据,进行用户风险评分(返回一个0~1的float分值,分数越低代表风险越低)。
从reCAPTCHA项目三个版本迭代发展过程中,验证码从字符验证到基于用户行为加图片验证模式,再到完全依赖用户行为数据,可以看出其20年来的发展趋势,即探索更加丰富直观的验证形式和基于多维度数据进行风险判别。
- 新型验证码探索
在字符验证码的安全性受到挑战以及被广泛反应用户体验较差后,工业界和学术界都在积极探索对用户更加友好且安全的验证形式。
如下左图所示为骰子验证码,由Dice Captcha于2010年独立制作开发。相较于字符验证码,该方法更加友好、直观、易用,并且提升了趣味性。但该方法安全性有限,可暴力破解,未得到广泛应用。而右图所示的验证码仅存在于论文中,安全性很高,但用户体验较差。
下图中名为DotCHA的验证码于2019年提出,也仅存于论文和demo中。它利用散落在三维空间中可交互的动态点,组成字符,供给用户识别。
此外还有基于传感器、小游戏等形式的验证码,而在设计一款新的验证码时,需要同时兼顾易用性与安全性两个方面。
- 行为式验证
除探索更加丰富的验证形式外,各款验证码都在尝试利用更多维的数据来提升判断准确性,其中一个主流的代表是行为式验证。
如下左图所示,是传统的基于图片或拼图的验证码与行为信息判断的结合。而右图则是用户体验更好的“无感验证”形式,即利用用户之前的行为数据进行初步风险判定,后面由Google推出的第三代recaptcha就与这种形式不谋而合。
此外,目前大多数验证码还会收集设备环境信息、网络信息等数据进行辅助判断。
二、验证码在黑灰产对抗中的角色与实践
- 验证码角色
不同于早期可以简单地按照应用场景划分验证码的角色,在黑灰产攻击手段日渐多样化的今天,验证码承担了更加系统和丰富的新角色,如用以提高攻击门槛、处置恶意流量和辅助风险判断等。
提高攻击门槛:验证码作为必备组件部署在登录、找回密码、下单、评论发帖等关键业务的入口处,可以有效防止撞库、暴力猜解等攻击,大大提高黑灰产的攻击门槛。
处置恶意流量:当前众多互联网企业已经或正在致力于结合实际业务情况,构建自己的风控系统。在风控系统判定结果的前提下,可以结合不同难度级别的验证码进行处理,提升用户体验,降低误判。
辅助风险判别:验证码收集到的行为数据可有效丰富风控系统的信息采集维度,为最终判别提供更多样的视角和依据。比如滑动拼图验证可以收集到用户滑动轨迹,图片识别验证可以收集用户鼠标点击事件。
- 验证码实践
目前实际使用的主流验证码产品的本质是一个Web应用,依赖HTTP协议。基本运作流程如下:
① 页面中提前部署基于Java或JS等代码的验证码程序;
② 经一定逻辑触发后,初始化程序及后端通讯,加载各种资源完成验证码渲染,等待用户交互;
③ 交互完成后将数据发往后端进行综合判断。下图为极验滑动拼图验证码涉及到的网络请求,包括JS、CSS、图片等文件资源请求。
上述过程中,在获取答案和提交答案两部分可能存在被破解的威胁。具体来讲,可以利用计算机视觉、机器学习算法或查库等技术得到验证码答案。之后可采用各种工具将答案以HTTP请求的方式发送给验证码的后端接口。提交答案的工具多种多样,可以简单分为模拟器提交和接口提交两大类。模拟器类工具包括PC端的浏览器模拟器,移动端的手机模拟器等。
2.1 威胁分类
根据上述对黑灰产攻击手段的分析,可以将目前验证码面临的威胁粗略分为如下几类:根据是否有人力参与,分为自动破解和人工打码。自动破解又可以根据团伙规模的大小以及是否对外出售破解能力,分为打码平台和普通破解脚本。平台又可以根据其用途分为图像识别平台和自动破解平台。在图片识别平台中,用户上传待破解的验证码图像,平台返回相应答案,如缺口位置、汉字坐标等。自动破解平台则接管整个验证过程,用户几乎不需要具备任何破解知识和技术。
另外,国内外在黑灰产对抗中面临的威胁有很大区别。以国外的sneaker bot产业为例,其中集成了注册、登录、验证、下单、抢鞋等各种功能。在破解验证码环节集成了市场上常见的各种验证码的破解方法。其产业规模庞大而目前又难以有明确的分类标准。而在国内的法律监管下,此类产业很难得到如此大的生存空间。
2.2 验证码产品安全性
2.2.1 基础设置安全性
首先为基础设施的安全性。当前绝大多数验证码本质是一个Web应用,需要前后端配合实现。因此在安全性方面需要:
保护端侧业务逻辑,相关技术包括JavaScript/Java SDK的混淆加固;
保证数据的安全可靠,通过数据加密传输等手段,降低数据被篡改和伪造的可能性;
保证前后端逻辑的健壮性,防止漏洞利用和SCA,同时还包括后端服务器的主机安全。
2.2.2 验证形式安全性
验证形式上的安全性,是验证码安全性的最直观的体现,也是学术界比较关注的研究点。
首先,根据验证码提出时的定义,即题目的设计要基于人和当下AI的能力差异,利用难题阻挡bot流量。而当bot可以正面解决验证码问题的时候,相关的AI难题也被解决了,由此反过来推动了AI技术的发展。但设计和采用AI问题时也要考虑实际应用中的诸多限制。
其次,安全性还来自于信息差和时间差,所有新形式的验证码在一开始都是安全的。而随着攻击者的深入研究和计算机技术的整体发展,任何形式的验证码安全性都会衰减甚至失效。所以验证码安全是一个在动态对抗中不停提升自己的过程。
最后,针对暴力破解手段和泛化性较差的识别模型,海量题库会带来较高的安全性。
2.2.3 数据策略安全性
可以使用设备环境信息、网络信息等辅助判断风险,也可以利用通用的或者题目特有的行为数据进行综合判断。另外针对其他维度的数据挖掘和处理能力也会带来更高的安全性。
2.2.4 运营策略安全性
开发和部署验证码的过程中我们实质上是在与bot背后的攻击者们的博弈,是人与人之间的对抗。因此验证码产品的运营也是其安全性的重要保障。运营中可以配合使用实时拦截和延时标记技术。同时可以采用基于自动反馈的动态更新方式,通过低成本的开发与维护对抗攻击者高成本的破解。
三、未来展望
推荐:极验第四代验证码
这部分介绍了可能影响验证码安全性的技术发展因素:
AI发展水平:短期内,验证码题目设计依然是要寻找人类和AI在某个能力上的差异和边界。但目前AI模型在很多单个任务上的表现已远超人类,验证码题目设计方向会向如语义加图像、语义加行为等综合性方向发展。
硬件普及水平:当前存在的许多令人眼前一亮的传感器等形式的验证码,在实际落地应用上还存在一定距离,但势必会随着计算机硬件的发展和普及产生更重要的影响。
隐私保护:隐私保护与依赖丰富数据的风控似乎是天然对立的关系,探索在有限数据空间内的人机区分方式是一个重要的方向。
社会价值:验证码最初的设计理念就是一个可能可以用来推动AI水平进步的工具,而且在数据价值日益凸显的时候,验证码或许会在数据标注等方面发挥得天独厚的优势。
四、现场问答
Q:请问验证码如何和WAF进行联动?
A:WAF的工作位置比较靠前,收集到的信息比较偏协议层部分,进行较为基本的过滤。而验证码是一个Web应用,所涉及到的数据更丰富一些。另外,还可以在设计拦截思路时进行联动,比如将WAF的风险评估分数传递至验证码识别的后端,配合延时处理理念,降低攻击者感知。
Q:请问验证码如何和其它安全设备进行联动?
A:如果是指和风控系统的联动的话,可以进行辅助判断。对于高风险用户进行较高难度的验证码校验。
Q:当前是否有人工打码和机器打码的占比统计?如何区分二者?
A:目前没有具体数据。区分人工打码和机器打码有一个小技巧,就是利用攻击者在破解过程中可能会犯的一些错误进行区分。比如模拟器为骗过鼠标轨迹检测策略,会在提交之前故意晃出一个轨迹,但大量数据分析下会发现机器轨迹仍然会呈现出固定模式,据此可判定为是机器打码。
今天的分享就到这里,谢谢大家。