Chrome 浏览器的用户对于下面这个框框应该不陌生:
当你勾选方框,谷歌会根据风险分析引擎判定浏览网页的到底 “是不是人”。这是一种简洁又相对有效的人机识别方式,作用是把一些机器爬虫筛掉。
“在网上,没有人知道你是一条狗。”这是互联网刚刚开始进入大众市场的一句经典宣言,现在大数据的加持下,这个结论可能被动摇了,但是对于网页和应用的所有者来说,他们很多时候都无法识别网络的另一端到底是机器还是人。
21 岁天才少年的创举最早遭遇这个问题的是雅虎。2000 年,雅虎邮箱是当时的当红炸子鸡,弄潮儿人手一个,是信息收发的主流方式。一些黑产盯上了这个渠道,用机器注册了大量的马甲邮箱,用于发垃圾邮件、网络诈骗。一个时年 21 岁的、还在 CMU 上学的天才少年路易斯 · 冯 · 安给雅虎设计了一套人机验证方案,就是最初的字符验证码。
当时,图像识别对于计算机是个挑战,对人类而言却是小菜一碟,通过这种方式,验证码可以轻松地把黑产拦截在门外。验证码从此变成了一种身份认证标配,被广泛使用在各种网站上,发明者路易斯 · 冯 · 安在计算机行业声名鹊起。
随着 OCR、计算机视觉技术的发展,计算机在图像识别上的能力升级,单纯基于字符的验证码被爆破了。为了给机器制造一点麻烦,安全人员采用了各种办法去 “弄脏”字符,包括字体变形、扭曲、翻转等等。在这个过程中,路易斯 · 冯 · 安还做了一件创举,当时有很多古书籍、旧报刊需要电子化,而很多古籍由于印刷质量、保存状况等原因,很多内容是 OCR 无法识别的,路易斯 · 冯 · 安想,既然每天有很多人在电脑前识别一些电脑认不出来的字符,能不能在做人机验证的同时顺便把古籍电子化把这个工作 “众包”给网友?于是,文章开头的 reCaptcha 也诞生了。
这是 reCaptcha 一个经典的交互界面,两个字符中其中一个是计算机能判别的,另一个是古籍上面扫描下来的无法识别的。用户在输入验证码的同时,顺便也参与了古籍电子化工作。
2009 年,reCaptcha 被谷歌收购,如文章开头展示的一样,谷歌现在很多人机认证的场景都是由 reCaptcha 在提供技术支持。
单纯从技术攻防角度,基于字符的验证方式早就被爆破了。无论是变形多厉害的字符,用图像分割技术切到一定的颗粒度,采用卷积神经网络算法也能很准确地识别出来。腾讯安全曾经协助警方破获过一个国内的 “打码”团伙,他们用 AI 对验证码进行爆破,爆破率最高可以达到 98%,剩余 2% 以用众包的方式找人去解决。
我们网上看到的 “想做兼职吗?动动手指就能赚钱”的短信,很多时候就是黑产团伙发的招募信息。一些三四线城市空闲时间很充裕的用户坐在电脑前手动输入一个个验证码,积攒到一定数量后,从中介手里拿到一定的报酬。据不完全统计,这个链条上有百万级别的从业者。
但黑产是一个典型的讲究成本收益的 “生意”,好比我们随处可见的家用大门机械锁,其实就是有限的排列组合,只要是小偷精力无限,总有一天能试到一把钥匙能打开。在验证码黑灰产也是一样,AI 计算需要高性能的计算机、人工识别需要酬劳,都需要付出成本,目前在无利可图的网站,字符验证码还是一种很流行的人机验证方式。