腾讯技术工程 · 2021年09月02日

面对聪明的AI,行为验证码凭什么保护我们?

01 前言:为什么会有这个系列

大家好,欢迎来到《不写代码也能看懂的风控安全系列》。在这一专题,我们将一窥验证码的前世今生,去探秘“验证码为什么越做越简单”这一问题。

本专题将验证码的20年发展历程分为3大时代:

· 比谁更丑 → 图像对抗时代 → 参看前文

· 比谁更精 → 行为对抗时代 → 本文揭秘

· 比谁更深 → 资源对抗时代 → 前沿报告

全文3300字,阅读预计15分钟,喜欢你就赞我一下!

02 魔法对抗魔法:行为验证的时代

上篇咱们回顾了图像对抗的十年发展史,最终结论是:在图像这样对抗阶段太靠前的舞台,识别能力上是难以抵抗机器学习的发展的。那么,能不能用魔法对抗魔法,AI 抵御 AI 呢?

好消息,自2015年起,伴随着AI在防守端的应用,验证码的新时代也崛起了!

这个大时代不仅堪称代码高手之间的左右互搏,而且对于用户而言,也是体验感的福音——多种行为式交互的验证方法百花齐放。之所以称之为行为验证时代,正是因为,它们多数需要用户进行拖动、滑动、转动等操作。

image.pngimage.png

【各类行为验证码合集】

当然,行为验证码的推广也会面临用户的挑战,而最让我们惊讶的是,行为验证最初被挑战的理由竟然是:

它太简单了!我没有安全感!

用户A:“这么简单的验证码,就一个按钮划过去,太简单了,我没有安全感。”

用户B:一个极客小伙子,直接show出其轻松识别位置再模拟控制鼠标滑动过去的程序。

看到用户A的留言时,我们也不禁感慨:其实产品中显著出现用户能感知到的安全环节,对用户而言就是一种安全感,虽然真正的安全往往已经生效在用户看不见的地方,我们安全人的价值也正是在此。

image.png

对于用户B以及无数尝试挑战一线公司安全产品以学习锻炼的同学而言,

确实,滑动验证码很简单。

滑动形态在这日均数十亿次的使用中,正常用户基本能达到90%以上,和上时代极端低于10%的某些图像验证形成了鲜明对比。

image.png

【各类验证方式通过时长图(部分数据来自新闻报道)】

那用户B极客精神小伙的数十次乃至数百次模拟通过,就算成功突破了吗?

如上文所回顾的图像对抗的十年,如果对抗阶段太靠前,是否通过瞬间可知,那么无论做怎样的对抗都一定会在强大的黑灰产集团产业化的运作下,陷入无穷尽的拉锯战中,这也必然会殃及用户,导致出现一系列“奇葩”的验证码。

因此,延迟打击就是极好的迷彩服,只要滑到位置,就能通过,但是伴随着量级提升,很多微小的特征就会被放大从而显露。当验证码穿上了迷彩服,眼前的通过并不意味着真正通过,累计的恶意分将在爆发真正危害时遏制它,类似微信信用分一样,在整个产品使用的周期中不断评估用户的真人程度。

那,滑动验证是怎样区分这一系列的行为到底是真人还是机器人呢?

03 其实行为验证不靠行为

轨迹是最初的创新点,也同样是最早被黑灰产攻克的难点。确实,机器行为和真人行为是具有巨大差异的,下图是两者轨迹记录的对比:

image.png

【正常人】

image.png

【机器人】

特别说明:上图仅出于示意目的抽样少量真人与机器人行为踩点形成,非真实分类算法

乍一看,好像人机验证的问题这样就能以防守方的大胜利告终了,然而不是的。

只靠轨迹得出的真人/机器的识别答案是不靠谱的!

和图像时代的对抗核心同样的道理,只要对抗阶段可以被反复调试,就一定会被黑灰产解决。

这里不吹嘘轨迹,似乎和咱们常识上的认知不太一样。那,轨迹到底有什么缺点呢?

笔者分析过多种黑产用破解工具,他们对轨迹的生成,既有轨迹库也有采用sin等曲线式函数制造抖动辅助生成,甚至还有从业者分享其利用遗传算法自己训练了可以通过的轨迹。

既然不是靠轨迹,那么,为什么滑动成为主流呢?

截至当下,滑动类型验证码投入使用已经超过7年,意味着它依旧有着极高的对抗价值:它的出现,将更多的保护代码嵌入到前端,从而形成一个能够进行长久对抗的舞台,在这各新的舞台之上,是代码保护与资源效率的巅峰之战。

04 左青龙之代码保护

4.1 为什么代码需要保护?

代码保护是个挺难理解的技术名词,本意就是一种保护代码,使之不容易被人所理解和阅读的技术。

为什么需要保护代码呢?因为前端代码是公开的。咱们都使用过浏览器来体验互联网服务,浏览器是最常见的一个入口,而且,它不仅是服务的入口,更是一个强悍的本地代码执行器,作用是在打开一个网址后,发送若干的“请求”,获取到网站等所提供的各种服务数据,这些数据里有代码、图片等等。这意味着,只要是浏览器执行的,就必然是“代码交付”的!即使是手机app,也能被一层层解壳逆出源码,从而得知其逻辑,如不对代码进行保护,将意味着前端传回的是否是真人的验证信息,都将不可信。

image.png

这就像小时后课堂上传递纸条,如果中间有想恶作剧的同学,可以截获并篡改纸条的内容,或许一段潜在的缘分,就在此终结了。

受保护的代码里不仅仅记录了滑动的轨迹,更有大量的特殊计算,以综合判断用户环境的健康度:

1:不同型号的GPU对于一些色彩计算后的呈现是不同的;

2:不同的浏览器会有不同的指纹;

3:不同版本系统库函数的结果也有差异。

复杂的计算逻辑以及层层互相影响的混淆加密,都在加大代码被解密的难度,而正常人有着高性能的浏览器可以自动完成这些复杂的计算。因此,这一系列监测手段的目的就在于驱使黑灰产采用真机设备来运作,加大其产业成本。

4.2 保护住代码就能上百倍降低攻击速度

所谓代码保护,就是保护这个计算浏览器诸多特征的逻辑。

那么这时候有人会问了,为什么把坏人逼到只能用真人浏览器才能完成验证的死角,就能大幅度增加黑产攻击成本?

因为完全通过真机设备模拟完成的业务攻击,其实成本非常高,其作恶的规模也将受限。举个栗子,采用浏览器打开qq.com,他会下载如图所示的,如此大量的网页文字图片和音视频等资源,但他们的目标数据其实只有下图那一点点。

image.png

【打开qq.com时各类元素加载时序图】

采用浏览器模拟机的方式不仅耗时长(相比只获取qq.com文本仅需的94ms),更会占用更大的内存cpu。而一旦代码保护被突破,黑灰产能采用更高效率的编程语言实现同样的结果,那他们的攻击效率就能获得百倍以上的提升。

image.png

【攻速降低99.99%】

所以,如果说上个阶段的对抗核心在于“如何让图片更难被机器识别,且易于被人识别”,那么这个时代的核心就是“通过前端埋点代码挖掘出大量真人特征(轨迹只是其中一种),再保护代码不被坏人破解进而伪造”。一方面通过海量特征进行真人/机器的区分,另一方面也逼迫黑灰产采用更高成本的硬件来进行对抗。因此,逼向真人设备并不是目的,而且真人设备的好坏行为也有对应的专门研究,在此不展开描述。

4.3 代码保护有哪些武林秘籍?

有诸多技术手段可以实施代码保护,它们主打的思路也不尽相同:

1:代码压缩:入门阶段,用替换变量去掉空格等方法,降低代码大小与可读性

2:数据加密:初级阶段,将具备意义的轨迹和浏览器特征值加密传回服务器

3:代码混淆:中级阶段,将程序环环相扣,改变关联逻辑,让代码极难阅读

4:虚拟引擎:高级阶段,对代码解析重新设计,能改变习惯性语法,如“+”号并不表示“加”的功能。

image.png

【常见混淆方法】

image.png

【混淆前】

image.png

【混淆后】

这些防御工具各不相同,也像马奇诺防线一样都有各自的利弊,所以安全防护也需要是一套组合拳。当下,安全主战场也在向采用动态JS等组合技术迁移,进一步加大破解时所需的对抗成本。

05 未来&挑战:适老化产品普及

回顾这几年的验证码变迁,行为验证码带来的用户体验是更好的,虽然伴随着少数用户觉得反而缺乏安全感的乌龙,但科技向善的理念正是希望人们无需学习成本,也能便捷享受到互联网时代的服务。

在行为验证之后,站在新的浪潮之巅的,是适老化产品的普及。

image.png

产品的“适老化”概念源于建筑环境领域,意为要考虑老年人身体机能、心理状态、认知水平、所处环境等各方面的因素特点,提供满足他们需求的功能设计及应用服务,让老年用户可以和其他用户一样平等、便捷地使用智能技术产品。

在相关政府部门出台的政策文件中,与“适老化”经常一起出现的词语是“无障碍”。国务院办公厅的《实施方案》中所提到一项重点任务是:“推进互联网应用适老化改造……鼓励企业……将无障碍改造纳入日常更新维护。”

为了适应这一需求,安全产品-【无感验证】正在成为新一代验证码的形态,无需用户进行任何操作。而可以想象的是,黑灰产也必然会涌入这一原本是为用户提供便捷服务的入口。

至此,验证码揭秘系列就结束了,十几年的对抗走出了人们的视线。我猜你这时候要问了,既然你写到了了左青龙,还有一位右白虎在哪儿呢?

它就藏在波涛汹涌的对抗水面之下,是对抗经验的沉淀,是对抗资源的累积,更是组织结构的不断提升。未来安全在这里的发展,也未必只是比拼对抗时刻谁更强大,而更像是大国博弈,看攻防两端,谁整合能力的效率更高。安全事业,已然走进了这样的一套逻辑。

注:文章图片来源自网络

原文:腾讯技术工程
来源:我在鹅厂做安全
作者: 业务安全小学生

推荐阅读

更多腾讯AI相关技术干货,请关注专栏腾讯技术工程
推荐阅读
关注数
8125
内容数
211
腾讯AI,物联网等相关技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息