不能为了拦住坏人,而拦住所有人
每当春运抢票时……
掀桌!
快来个人告诉我1和2哪个才是紫砂壶!!!
还有登录一些专业网站时……
哼!
欺负宝宝读书少!
宝宝找人打你!
但是你有没有想过,为什么程序猿们要设计出介种奇葩验证码呢?
下面我们就结合腾讯来了解验证码“冤屈”的前世今生。
在2008年之前,凡是在网页上登录QQ都得输入验证码。当时的策略是“一视同仁”,给所有用户下发验证码。
经过一段时间的摸索,团队开始意识到一个问题:
验证码的初衷,是为了拦住“坏人”,而不是拦住“所有人”。
举个例子,你在家里开个Party,为了防止不怀好意的人趁机混进来,你请了保安在门口进行安检。
可是,有没有必要对所有来客都进行安检呢?如果是认识多年的好友,或是常来你家串门的邻居呢?
如果你全都同等对待,友谊的小船肯定说翻就翻。
因此,腾讯开始尝试对那些明显是正常用户的行为免去下发验证码。
也就是通过安全大数据的能力,自动区分机器与正常用户,向机器下发验证码拦截,对好人则免验证码直接登录,以此提升用户体验。
在腾讯,这项平衡安全和体验的策略工作称之为“免验”。
在下发“免验”策略初期,只能免掉10%的验证码。
随着数据积累和能力的提升,免验比例也在不断提高,力求免去正常用户辨别验证码的苦恼。直到现在,免验策略还在持续优化。
验证码更新,要比坏人“更快”
但
道高一尺,魔高一丈
电商、团购、互联网金融崛起,黑产从业者的可图之利增多,验证码的战场正式进入了一段破解与抗破解的持久博弈。
业界普遍把验证码设计得越来越复杂。
长久下来,就形成了机器人和用户都看不懂的尴尬局面。
显然
这条路是走不通的
在长期的试错和斗争中,腾讯的研究人员发现坏人在破解验证码时存在一大死穴——时间。
从一套新的验证码出现,到坏人成功破解,再集成到自动化软件流入黑市,整个过程需要一个周期。
那么,如果我们更新验证码的速度快于坏人的工作周期,问题不就迎刃而解了?
基于这种对抗理念,在2011年7月,“魔术师”验证码诞生了。如同魔术师快得让人看不清的手法,魔术师验证码采用了高频的切换策略,不停的更换字体,使对抗形成了“敌方未破我先变”的局面。
原有验证码 vs 魔术师验证码
果然,敌人自动机大军的步伐被成功遏制,铩羽而归。
字库都用枯竭了,还有啥办法?
但为了巨大的潜在利润
敌人永远不会消停
由于魔术师的字体库已经跑了一年,再加上图像识别技术的发展,坏人几乎遍历研究。
以前,只要验证码的字体一切换,破解率立马就会刷刷地往下掉。而后来,破解率仅小掉一下马上又反弹了。
换字体策略失效!该怎么办?
研究人员发现,任何一种自动机,对验证码的识别率都不可能达到100%,有验证成功的图片,肯定也有验证失败的图片。
做个假设,某种自动机的破解率是10%,也就是指在100张图片里,有90张无法识别。那么我们把这90张图片收集起来,每次都给它下发这些图片,10%的破解率会瞬间掉到0%。
因为此时,自动机已陷入了绕不开的死结。
根据这个思路,2013年元旦前,“猜你喜欢”验证码诞生了。“猜你喜欢”通过分析自动机行为特征,自动寻找、收集自动机的弱点,反复攻敌之弱。
在体验上,“猜你喜欢”摆脱了对图片复杂性的依赖,做到了“高清无码”,正常用户的识别率也大幅提高。在安全性上,防破解效果立竿见影.
当坏人学会了人工智能
坏人永远不停歇
对抗也越发激烈
黑产也运用起了人工智能,推出验证码的杀手锏–打码平台,从设计原理上突破验证码。
他们招募大批的打码工人,进行流水线作业。
而让这个情况更糟糕的是打码和深度学习结合,打码平台和使用打码平台的开发者给自动机破解程序提供样本,通过神经网络学习,破解程序可以很快做到较高的破解率。
再加上OCR(文字识别技术)的发展,字符验证码对抗非常艰难。
此时,许多新型的验证码出现了:
世界上没有绝对破不了的验证码。
随着机器学习的不断发展,程序猿遇到的挑战也将越来越多。
不断尝试和跟坏人斗智斗勇,更多新型验证码也正在研究当中。
验证码团队不会采用一成不变的单一验证手段,而是配合策略,组合下发,快速迭代。
可以肯定的是,无论是过去、现在,亦或是不远的将来,对抗黑产,这都注定是一场没有硝烟的血战。