验证码的前世今生(今生篇)

简介: 在传统验证码的末日下,新的反向图灵测试机制浴火重生。

验证码的前世今生(今生篇)


作者:南浔@阿里安全


看完《验证码的前世今生(前世篇)》也许第一感觉就是Winter is coming,互联网的人机对抗到了最黑暗的时刻。柳暗花明又一村,最黑暗的时刻也是光明即将来临的时刻——在传统验证码的末日新的反向图灵测试机制浴火重生。

0×1 验证码的划代标准

在介绍新的反向图灵测试机制前,首先我们对验证码进行划代对比。通过验证码的划代对比我们能更清楚新型验证码的特性。

验证码划代的标准是人机识别过程中基于对人类知识的应用。

第一代:标准验证码

这一代验证码是即是我们常见的图形验证码、语音验证码,基于机器难以处理复杂的计算机视觉及语音识别问题,而人类却可以轻松的识别来区分人类及机器。这一代验证码初步利用了人类知识容易解答,而计算机难以解答的机制进行人机判断。

第二代:创新验证码

第二代验证码是基于第一代验证码的核心思想(通过人类知识可以解答,而计算机难以解答的问题进行人机判断)而产生的创新的交互优化型验证码。第二代验证码基于第一代验证码的核心原理--“人机之间知识的差异”,拓展出大量创新型验证码。

如12306的验证码也是对于传统验证码的一种创新:

第三代:无知识型验证码

第三代验证码最大的特点是不再基于知识进行人机判断,而是基于人类固有的生物特征以及操作的环境信息综合决策,来判断是人类还是机器。无知识型验证码最大特点即无需人类思考,从而不会打断用户操作,进而提供更好的用户体验。

如Google的新版ReCaptcha:

阿里巴巴的滑动验证:

0×2 无知识型验证码的原理

Step 1:在Web前端周期性的对Javascript代码进行混淆和并更新加密算法,将不可信的Web前端打造成可信的客户端。在用户进行滑动操作时,基于可信的客户端采集用户操作的行为信息以及环境信息,将其加密后提交给后端的风控引擎;

Web前端因为代码都是明文形式的脚本语言,服务端想要从客户端获取可信的数据一直面临“源码面前,了无秘密”的困扰。给一个前端工程师充足的时间,似乎Web前端真的是了无秘密,如下图:

而随着攻防对抗的持续,安全的补锅匠们总能找到猥琐的方法来进行防御。Web前端虽然没有客户端防止逆向和调试的安全强度,但是却具备客户端所不具有的hotpatch能力。

参考Map-Reduce的原理,单台机器性能不行,把任务分派到多台机器并发执行。如果单份Javascript混淆的强度不可行,那么周期性的对Javascript代码自动混淆。即便攻击者能够短时间的对Web前端进行逆向,但逆向出来的功能短期之后就会在服务端失效,那么也能极大的消耗攻击者的成本。

更可怕的是丧心病狂的Google基于Javascript完全的实现一套虚拟机,核心代码使用字节码实现。周期性的对字节码格式更新逆向的成本成几何级数递增。

如果代码逻辑不更新,仅仅重复的混淆原有逻辑,那么仍然没有意义。而对于一个Web的验证码应用,核心功能只有两部分:

1、事件采集模块,采集用户的行为信息,此部分逻辑简单,也无法自动化更新代码逻辑;

2、行为数据加密模块,该部分的核心是加密算法,似乎代码逻辑自动化更新变化有足够空间。

为了保障前端的可信,需要对加密算法进行自动化更新,必须要有一个巨大的对称加密算法可选集合才能保证代码的自动化更新。而所有对称加密算法都基于Feistel分组密码结构,基于Feistel分组密码结构可以派生出无数的对称加密算法,从而可以派生出无数的的对称加密算法。

如下图,Festel分组结构的可逆性不要求加密的核心函数F可逆,故可以自动的生成任意的F函数进而派生出无数对称加密算法。

基于自动化的代码更新及混淆机制从而保障整个Web代码对抗逆向分析和调试的强度,进而将不可信的Web前端打造成可信的端。

Step 2:后续风控引擎会基于用户操作的行为特征、用户环境信息、用户对应的设备指纹及其设备信誉综合进行决策,判断是否需要对该次操作进行二次判断或者是直接阻断。

0×3 无知识型验证码的优点

无知识型验证码有三大核心优点,分别是用户体验,风险识别,风险拦截。

用户体验:

无知识型验证码针对大多数的用户能够无需思考,直接通过。不存在业务和流程的打断,体验流畅,对用户体验的提升毋庸质疑。

风险识别:

因为随着机器学习的发展让机器掌握人类具有的知识也不再是难点,无知识型验证码不再基于知识来挑战机器,而是基于人类的固有行为特征以及操作的环境信息综合进行风控决策,攻击者难以批量的模拟出可以欺骗风控引擎的正常人类的的操作。

风险拦截:

普通的验证码基于知识对机器发起挑战,无法做到对机器进行阻断。因为知识的挑战还需要兼顾人类的体验,机器通过的概率只能做到无限的降低而无法消除。而无知识型验证码基于后端的风控决策,可以对不同风险的操作提出更高难度的验证码乃至阻断,有更大空间对风险进行消除和拦截。

0×4 总结 

目前阿里聚安全提供的滑动验证产品,目前对外提供免费试用,欢迎申请免费试用

最后,希望新型的验证码能够建设更简单和安全的互联网: )


作者:南浔@阿里安全,更多安全类知识及资讯,请访问阿里聚安全博客

相关文章
|
2月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
657 0
|
8月前
|
存储 固态存储 文件存储
一台电脑最多能接几个硬盘?
电脑硬盘扩展指南:从硬件接口(SATA、M.2、USB)到供电散热,再到操作系统盘符限制,本文全面解析一台电脑最多能接多少硬盘。普通用户适合2-4块硬盘,专业人士可扩展至8块以上,企业服务器则无明确上限。通过RAID阵列或NAS设备,还能突破传统限制,满足海量存储需求。了解这些技巧,助您合理规划存储方案!
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer到底解决什么问题?
本文希望围绕“Transformer到底是解决什么问题的”这个角度,阐述NLP发展以来遇到的关键问题和解法,通过这些问题引出Transformer实现原理,帮助初学者理解。
Transformer到底解决什么问题?
|
算法 程序员
从代码到哲学:编程中的启示与人生思考
在编写代码的过程中,我们不仅构建程序,也在无形中编织着生活的哲理。每一行代码都像是生命中的一步,它们共同构成了复杂而精彩的生命之旅。本文将从编程的角度出发,探讨技术实践中的深刻启示,以及这些启示如何影响我们对生活、工作和自我成长的理解。
312 3
|
存储 固态存储 测试技术
电脑性能的影响因素
电脑性能的影响因素【10月更文挑战第31天】
792 2
|
9月前
|
自然语言处理 测试技术 API
MindIE BenchMark
MindIE Benchmark工具通过部署昇腾服务化配套包,以终端命令方式测试大语言模型在不同配置下的推理性能和精度。它支持Client和Engine两种推理模式:Client模式适用于多用户并发场景,兼容多种接口;Engine模式直接调用底层API,测量NPU卡的真实性能。该工具支持多个数据集进行精度和性能测试,如CEval 5-shot、CMMLU、GSM8K等,并将结果保存为本地csv文件。评测方法包括调用大模型输入题目,解析返回结果并与正确答案比较,计算平均分和其他指标如准确率、EM等。
|
11月前
|
机器学习/深度学习 并行计算 异构计算
WINDOWS安装eiseg遇到的问题和解决方法
通过本文的详细步骤和问题解决方法,希望能帮助你顺利在 Windows 系统上安装和运行 EISeg。
561 2
|
算法 NoSQL 安全
Lettuce的特性和内部实现问题之Lettuce的多连接模式与连接池模式有何不同
Lettuce的特性和内部实现问题之Lettuce的多连接模式与连接池模式有何不同
393 2
|
前端开发 Java Spring
springboot 整合 netty框架, 实现 心跳检测,自动重连
springboot 整合 netty框架, 实现 心跳检测,自动重连