俗话说得好,“常在网上走,哪有不验证”。我们爱也好恨也罢,每天谁不抓耳挠腮输入几个验证码呢?

然而验证码说到底是一种被动防御的对策,今天我们快速梳理梳理验证码从无到有的发展历程,并且介绍一种思路非常前沿的黑科技,改被动为主动如丝般顺滑的:不验证的验证码——无感验证。

让程序员互相伤害的“验证码”是什么?_第1张图片


一、 为什么要验证

验证码是为了反垃圾。早在90年代,雅虎邮箱就频频遭到机器产生的大量垃圾邮件骚扰,那时鉴别人/机的需求就已出现。路易斯·冯·安(Luis von Ahn)带领团队设计了一款被称为CAPTCHA的小工具,其背后的思路就是,人类可以轻松识别,但是机器识别困难,从而可以区分人类和机器。

让程序员互相伤害的“验证码”是什么?_第2张图片


二、 如何验证

那么,人类和机器到底有什么区别呢?

让程序员互相伤害的“验证码”是什么?_第3张图片


所谓CAPTCHA,就是Completely Automated Public Turing Test To Tell Computers and Humans Apart,即“全自动区分计算机和人类的公开图灵测试”(...说人话!)——验证码。图灵测试在这里成为识别的关键,而简单问答则是最常用的手段。

让程序员互相伤害的“验证码”是什么?_第4张图片


图零测试通常是基于对人类知识的验证(Knowledge-based authentication, KBA),这里的知识主要指对图形的识别和一些简单的分析。

三、 ***爱恨情仇

然而随着机器识别能力和对人类知识学习的不断深入,破解普通验证码的成功率越来越高,对于跳出“知识”识别思维定式的需求越来越明显。

让程序员互相伤害的“验证码”是什么?_第5张图片

如果一味追求“知识层面上的难度挑战”,为了应付越来越聪明的机器,验证码的难度也不断升高,对于人类用户来说打扰感也愈加强烈,甚至不乏这种让人完全摸不着头脑的“验证码”:

让程序员互相伤害的“验证码”是什么?_第6张图片


所以已经完全有必要开拓新思路,从其他的角度来辨别人类独有的而机器难以模仿的特征,那就是行为。

让程序员互相伤害的“验证码”是什么?_第7张图片

谷歌在几年前推出了一款跳出“知识”窠臼的“我不是机器人”验证,整个验证过程只需要用户在页面上“我不是机器人”前的一个复选框打钩即可,其背后的原理就是谷歌通过收集分析大量真实用户的鼠标行为,来判断到底是人类操作还是机器操作。

让程序员互相伤害的“验证码”是什么?_第8张图片


同样利用机器难以模仿的人类行为特征,滑块验证码近来引起了广泛关注,因为这种验证过程同样不需要用户做过多思考(调用知识),而且适应了移动端没有鼠标轨迹的客观条件,通过分析用户手指滑动速度、对齐位置等生物特征来判断操作者是人还是模拟人类的机器。

四、 终极验证:无感验证

然而,验证来验证去,无论再怎么轻松简单,还是会对用户整个使用流程造成一定的打扰。就没有什么办法能够......不验证吗?!

让程序员互相伤害的“验证码”是什么?_第9张图片


其实答案是肯定的,现在已经有一些风控如顶象平台推出了无需验证即可判别使用者身份的验证体系,其原理其实也非常简单。风控引擎在用户尝试登陆或者做其他传统需要验证的操作行为前,就会对操作环境进行扫描,并对一些关键参数做分析,包括常用IP、地理位置、使用习惯、恶意特征、设备指纹等。基于大量模型和数据的分析,风控引擎便可以对用户身份做出一个预先的判断。如果风控引擎认为使用者是“好人”,便直接放行;如果判定为“机器”,则不予放行;如果存疑,便祭出验证码,您且滑一滑吧。

让程序员互相伤害的“验证码”是什么?_第10张图片


基于行为的验证过程配合风控决策,有明显的几个优势:

让程序员互相伤害的“验证码”是什么?_第11张图片

1、 阻断机器垃圾

这也是验证码本身最本源的诉求了,识别出正常人类用户后直接放行,而机器却不能发布垃圾信息。

2、用户体验好——无思考验证

确需验证的情况下(比如首次使用),与传统图片验证或语音认证等方式不同,用户在进行滑块验证之时无需进行计算或思考,短时间内即可顺滑进入下一步操作,用户体验大幅提高。

3、智能风险阻断

传统验证过程无法完全对抗模仿能力日益强劲的机器,但是滑块验证与风控决策紧密关联,机器反复尝试也无法通过验证,可以阻断机器操作从而拦截非正常用户,不仅垃圾信息,其他的多种机器有害行为都会被拦截,包括爬取、盗用等。