Chrome浏览器的用户对于下面这个框框应该不陌生:
当你勾选方框,Google会根据风险分析引擎判定浏览网页的到底“是不是人”。这是一种简洁又相对有效的人机识别方式,作用是把一些机器爬虫筛掉。
“在网上,没有人知道你是一条狗。”这是互联网刚刚开始进入大众市场的一句经典宣言,现在大数据的加持下,这个结论可能被动摇了,但是对于网页和应用的所有者来说,他们很多时候都无法识别网络的另一端到底是机器还是人。
21岁天才少年的创举
最早遭遇这个问题的是雅虎。2000年,雅虎邮箱是当时的当红炸子鸡,弄潮儿人手一个,是信息收发的主流方式。一些黑产盯上了这个渠道,用机器注册了大量的马甲邮箱,用于发垃圾邮件、网络诈骗。一个时年21岁的、还在CMU上学的天才少年路易斯·冯·安给雅虎设计了一套人机验证方案,就是最初的字符验证码。
当时,图像识别对于计算机是个挑战,对人类而言却是小菜一碟,通过这种方式,验证码可以轻松地把黑产拦截在门外。验证码从此变成了一种身份认证标配,被广泛使用在各种网站上,发明者路易斯·冯·安在计算机行业声名鹊起。
随着OCR、计算机视觉技术的发展,计算机在图像识别上的能力升级,单纯基于字符的验证码被爆破了。为了给机器制造一点麻烦,安全人员采用了各种办法去“弄脏”字符,包括字体变形、扭曲、翻转等等。在这个过程中,路易斯·冯·安还做了一件创举,当时有很多古书籍、旧报刊需要电子化,而很多古籍由于印刷质量、保存状况等原因,很多内容是OCR无法识别的,路易斯·冯·安想,既然每天有很多人在电脑前识别一些电脑认不出来的字符,能不能在做人机验证的同时顺便把古籍电子化把这个工作“众包”给网友?于是,文章开头的reCaptcha也诞生了。
这是reCaptcha一个经典的交互界面,两个字符中其中一个是计算机能判别的,另一个是古籍上面扫描下来的无法识别的。用户在输入验证码的同时,顺便也参与了古籍电子化工作。
2009年,reCaptcha被Google收购,如文章开头展示的一样,Google现在很多人机认证的场景都是由reCaptcha在提供技术支持。
单纯从技术攻防角度,基于字符的验证方式早就被爆破了。无论是变形多厉害的字符,用图像分割技术切到一定的颗粒度,采用卷积神经网络算法也能很准确地识别出来。腾讯安全曾经协助警方破获过一个国内的“打码”团伙,他们用AI对验证码进行爆破,爆破率最高可以达到98%,剩余2% 以用众包的方式找人去解决。
我们网上看到的“想做兼职吗?动动手指就能赚钱”的短信,很多时候就是黑产团伙发的招募信息。一些三四线城市空闲时间很充裕的用户坐在电脑前手动输入一个个验证码,积攒到一定数量后,从中介手里拿到一定的报酬。据不完全统计,这个链条上有百万级别的从业者。
但黑产是一个典型的讲究成本收益的“生意”,好比我们随处可见的家用大门机械锁,其实就是有限的排列组合,只要是小偷精力无限,总有一天能试到一把钥匙能打开。在验证码黑灰产也是一样,AI计算需要高性能的计算机、人工识别需要酬劳,都需要付出成本,目前在无利可图的网站,字符验证码还是一种很流行的人机验证方式。
独树一帜的12306
“一辈子保持对生活和世界的新鲜感和好奇心,不断探究身边事物的本质,虚怀若谷,格物致知,再加上那么一点点运气,你就能通过12306的购票验证了。”
这是一个关于12306的段子,看到的人都会会心一笑。
在验证码领域,12306绝对是独树一帜的存在,它有着极高的安全系数,不仅有效地拦截住了机器人、各种自动化抢票助手,也把很多真人拦截在门外。
对大多数人来说,买火车票是低频场景,一年可能买不了几次;加之也没有第二个渠道可以买,12306会设置这样的验证码环节,可能也是吃准了这一点。但是对于绝大多数需要顾及用户体验的服务提供商来说,过分复杂的验证码会让用户流失,不可取。
目前应用比较广泛的几种人机验证方式,包括上文提过的字符验证、图像识别(例如“点击下图中倒立的文字”)、滑块验证(例如“拖动鼠标完成拼图”)等等。
滑块是用户体验比较友好、同时安全系数也相对较高的一种认证方式,因为它在图像验证的基础上往前走了一步,基于采集用户的行为数据、环境数据等等多维度来判断用户是人还是机器,例如人类拖动滑块一般是先快后慢:先是快速拖到缺口附近,再在缺口附近进行精准地校验,并停留片刻释放;机器的活动轨迹相对而言比较规则。
在网上搜索“滑块验证码”,有N个帖子是关于“如何用***破解滑块验证”的,很多已经被证明有60%以上的识别率,但是识别成本也会比较高。又回到一个老生常谈:没有攻不破的系统。安全人员要做的事情,就是把攻击门槛提高,让黑产觉得投入产出比不值得而放弃。
易用优先还是安全优先,这是安全人员吾日三省吾身的问题。像票务网站、炒鞋、电商网站,这些网站的用户账号体系很有价值,对黑灰产而言是“大户人家”,这些网站在设置验证码的时候,安全性是首要考虑的。
腾讯云防火墙,最近对远程登录的身份校验也进行了一次功能升级,采用了账号密码+微信双因子认证方式。常规情况下双因子认证一般需要一个物理令牌,能保障安全性但是使用体验欠佳,而借助微信辅助身份认证,提前对运维人员的微信号进行授权,就可以通过账号密码+微信认证远程登陆服务器,解决了一些移动办公场景下服务器运维的需求。
在可见的未来,验证码还是一种行之有效的人机识别方式,安全人员和黑产在在验证码上的对抗还会持续。但我们可以稍微宽慰的是,现在市面上大部分验证码在实操层面上都是比较难以攻克的,一是单个验证码生命周期很短暂,很快会失效;第二个是验证码需要很强的图片识别技术,而且有些图片只能在前端浏览器、客户端显示出来,对于根本就没有前端的服务器来说,用机器去跑脚本可能都看不到,也就无法解码。
除了黑产之外,对于各种密码、验证码来说,还有更大的对手,据腾讯安全云防火墙产品负责人周荃推测,就是量子计算。业界普遍承认的一个事情,量子计算被开发出来了之后,现有的密码体系和信任体系、网络信任体系会全部崩溃,可能最难的密码可能也只需要几分钟的时间就可以尝试出来。但安全研究人员也认为,后量子时代正常的密码也可以设置得非常复杂,所有的计算机也可以基于量子计算去设计一套密码,届时也会有相应的办法能够去保护安全。