今天请大家先做一个验证码测试:
嗯,大家肯定看出来了,今天推荐的论文跟验证码特别是那个臭名昭著的CAPTCHA相关。首先大家可能都不知道CAPTCHA这个词其实是个缩写,它的全称是Completely Automated Public Turing test to tell Computers and Humans Apart,也就是说,它被用来当成一个区分人和机器的图灵测试。典型的应用场景就是在这种可能会被攻击者进行暴力破解的地方(或者说要节省服务器资源)加一个CAPTCHA来延缓处理响应的速度:
CAPTCHA的特点就是给文字做各种变形,还加上各种噪声、啊背景线条之类的干扰,最开始这个测试还挺好用,后来慢慢就不太灵了,不过在最近几年好像又比较有用了——凡是没法通过CAPTCHA测试的大概率就是人类,而只有机器才能搞得定越来越稀奇古怪的各种CAPTCHA验证码。大概是出于对这种反人类验证方式的愤怒,本文作者试图通过深入调查,证明CAPTCHA已经不再能够有效区分non-human网络流量,于是就有了今天这篇WWW 2024论文The Matter of Captchas: An Analysis of a Brittle Security Feature on the Modern Web
其实在2020年代,CAPTCHA早就没那么可靠了,但是没有什么公认的官方结论或者标准去把它标记为“deprecated”,大家只是从直觉上感觉到CAPTCHA的危机(有许多针对CAPTCHA的安全攻击)。本文作者决定进行定量的评估,他们分析了14款目前网上可用的CAPTCHA solver;通过对20个不同的CAPTCHA方案生成的超过15000张图像进行的实验评估,作者发现,针对CAPTCHA的攻击的成功率非常之高(超过80%,我们人类都要羞愧吧),特别是针对其中13款CAPTCHA方案,甚至不需要什么预训练,直接上通用的solver就搞定了,而针对8款CAPTCHA方案,平均只需要2.1次尝试就能顺利通关(嗯,我们人类不配做智能生物)。在绕过CAPTCHA之后,就可以按照下图的流程去尝试暴力破解各种网络服务的接口啦~
作者选取了下表中列出了的这些CAPTCHA solver(这里面最好笑的是有一个针对台湾省铁路订票系统的solver,他们恐怕是不知道前几年我们被12306支配的恐惧),也总结了这些solver能够对抗CAPTCHA系统的哪些防护特征(security feature那一栏),例如O代表overlapping char也就是字体之间会有点重叠,C代表Curve Noise也就是背景里面加入一些杂乱的曲线,L代表Line Noise就是背景里面的直线干扰,而N指的是Background Noise也就是背景的一些干扰(例如各种杂色斑点?)。
本文作者在做实验时追求的目标是尽可能少地训练这些solver,看看它们能否“智能”地解决问题。实际上,作者有点狡猾地把一些不太好的结果全部藏在附录了,待会我们后面继续看,先看看他们搞定的case:
看起来这些CAPTCHA系统确实比较弱。回到刚刚说的,在对付奇葩CAPTCHA的时候,实际上现有的solver也没那么厉害,比如作者(虽然里面没有一个中国人)在分析我大天朝的一些CAPTCHA系统的时候,发现solver的表现就有点惨:
我们发现这里面搜狐立了大功,于是还专门去试了下,其实就是下面这种,可能是因为里面加了一些小字,用来愚弄solver(可怜的AI并不知道这些小字是欺骗性的?)
上面我们也讲过了,这篇论文有意思的地方其实是它的附录,简直就是《让人恐惧的CAPTCHA大赏》,这些CAPTCHA各有各的特色(当然他们也许不知道以前还有一个让你做微积分的CAPTCHA,要利用积分函数的对称性巧妙地解出积分的值为0)。
让我们最后看看AI无法征服的CAPTCHA吧(国货之光,百度那个是什么鬼!):
论文:https://sajjadium.github.io/files/www2024captchas_paper.pdf
代码:https://github.com/scannerpaper/artifacts