验证码失败了20年
TL;DR: 每种验证码的生成(扭曲文本、更难的文本、图像网格)最终都被机器击败。现在,随着每个人都使用代理来运行真实的工作流,这场游戏已经从测试浏览器可以做什么变成了验证它是谁。这就是为什么Browserbase正在通过Verified和Web Bot Auth构建代理身份,因为最好的验证码“解答者”根本看不到验证码。如果你在模糊的图像网格中点击了每一个交通信号灯、公交车和人行横道,你就参与了互联网历史上持续时间最长的安全实验之一。那些点击是在解决验证码:测试你是否是人类。随着1990年代末期网站的受欢迎程度上升,滥用它们的动机也随之增加。垃圾邮件发送者创建了成千上万个虚假账户,机器人抓取搜索引擎,脚本淹没了论坛广告。每个流行的网站都面临着同样的问题:如何区分人类和机器?验证码是“完全自动化公共图灵测试以区分计算机和人类”的反向首字母缩略词,最早由卡内基梅隆大学的Luis von Ahn、Manuel Blum、Nicholas Hopper和John Langford在2003年的论文中提出。这是一个反向图灵测试。原始的图灵测试要求人类通过对话识别机器;而验证码则颠倒了这个测试,因此机器提出问题,测试通过的条件是回应者表现得像人类。目标不是证明智能。而是让自动化的成本高于攻击的价值。二十多年来,每种验证码最终都被愚弄,而每一代都会遵循相同的周期:防御者建立新的挑战→它工作了一段时间→攻击者学会解决它→防御者构建新的东西→重复。这是一场无休止的猫鼠游戏。让我们跳入这个竞技场:猫(计算机)对老鼠(验证码)。一级:你能读懂这个吗?第一个答案出乎意料的简单:让计算机阅读。早期的验证码显示了扭曲的文本(扭曲的字母、不均匀的间距、随机的线条、嘈杂的背景)。对于人类来说,通常是微不足道的。我们的脑袋在通过缺失的像素和失真识别模式方面表现得非常优秀。然而,计算机却不是。当时的光学字符识别(OCR)在干净打印文本上表现良好,但在字符旋转、拉伸、重叠或遮挡时却挣扎。关键的假设是感知是困难的部分。如果计算机无法判断一个字符的结束和下一个字符的开始,它就无法读取这个词。好一段时间,它确实有效。一个扭曲的单词阻止了自动化脚本,同时几乎没有减慢人类的速度。AltaVista和Yahoo采用了早期系统,这种方法工作得足够好,以至于卡内基梅隆的研究人员正式创造了这个术语。然后OCR变得更好。🐈 攻击者意识到,他们无需一次性解决整个验证码。大多数文本验证码是分阶段生成的:渲染文本、应用失真、添加噪音、绘制模糊线条、输出图像。那么,如果验证码是分阶段创建的,那么它也可以分阶段被击败。攻击者建立了计算机视觉管道,去除了背景噪声,将图像阈值化为黑白,分割字符为单独区域,并将这些区域输入OCR。看似AI问题的事变成了图像处理问题。一旦分割变得可靠,识别准确率就跃升。那些使书籍数字化和读取路标的技术使计算机成为可以解决验证码的工具。老鼠迈出了它的步伐,而猫则适应了。现在该重复了。等级2:让文本更难。防御者认为,如果攻击者可以分段字符,那么让分段变得不可能。验证码变得激进(重叠字母、不自然形状、嘈杂背景),有些扭曲到看起来更像抽象艺术而不是文本。大约在这个时候,von Ahn注意到了一些事情。数以百万计的人每天花费几秒钟来解决验证码,这是一个巨大的视觉识别工作,立即消失了。如果这项努力可以有用呢?这个想法变成了reCAPTCHA。它不是随机文本,而是显示来自书籍和档案的扫描单词,这些单词是OCR无法自信读取的。每个解决的挑战都有助于数字化印刷材料。短时间内,大家都得到了好处,网站得到了保护,图书馆也得到了数字化。然后机器学习出现了。🐈 传统的OCR依赖于手工设计的规则(边缘检测器、字符模板、分割启发式),这些规则在设计者改变失真时依然有效。机器学习消除了硬编码。不再是教计算机如何识别字符,而是研究人员在数百万个示例上训练模型,让它们学习模式。神经网络识别严重扭曲的字符,即使没有完美的分段,因为传统OCR困扰的噪音仍然携带足够的信号来恢复答案。旨在阻止机器的验证码最终变得对人类来说比对模型更困难。老鼠提高了筹码,但猫则继续适应。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡