12

要求用户阅读扭曲文本的验证码对视力正常的人来说很好,但对盲人或有其他残疾的人来说是一个可怕的障碍。音频替代品偶尔可用,但仍然不能帮助那些既聋又盲并且很难与屏幕阅读器一起使用的人(它已经在给你朗读单词)。

存在一些使用人工来代表用户解决 CAPTCHA 的解决方案,例如WebVisiumSolona,但这些解决方案依赖于志愿者操作员的可用性(例如,Solona 显然只有一个志愿者,所以你必须希望他需要帮助时醒着)。

我突然想到,盲人所需的 CAPTCHA 解决方案数量非常少——我猜在像英国这样人口众多的国家,每天不到几百个。这意味着,与想要在短时间内多次执行某项操作的坏人不同,针对盲人的 CAPTCHA 辅助服务可以投入大量计算资源(例如,Amazon EC2中的计算机云)来识别呈现的文本。

我的问题是:假设您不太关心速度,并且您有很多可用的计算机,是否有算法可以让您解决当今常见的文本失真验证码,例如reCaptcha使用的那些?或者即使有大量的资源和时间,这些问题是否真的难以解决?

几点注意事项:

  1. 在这一点上,我的问题只是理论上的,但显然任何此类服务都必须仔细控制访问以阻止垃圾邮件发送者。也许只有注册的盲人才能使用它。

  2. 我知道几年前使用在单台计算机上运行几秒钟的算法破坏了旧的雅虎验证码。我在问现代验证码是否可以被破解,也许更慢并且有更多资源。

  3. 我知道一些新的 CAPTCHA 类型正在出现,它们要求用户识别小猫定位图片。这些还没有普及,所以我现在只是询问文本失真。

4

5 回答 5

4

基本上解决文本失真验证码包括三个单独的步骤:

  1. 找出有趣的部分在哪里
  2. 将文本分割成单个字母
  3. 认识字母

剩下的唯一对计算机来说相当困难的问题是第二个问题。第一个通常不是很难,除非你偶然发现了来自地狱的验证码。第三个问题由计算机解决,其成功率比人类高得多。

OCR 研究团队提供的一个有趣的网站,用于了解 CAPTCHA 是如何被破解的。

于 2009-11-17T22:51:45.480 回答
2

验证码的创建是为了避免机器检测到单词。它仅供人类阅读。使其对盲人/聋人更具可读性会增加机器能够再次理解他们的风险,从而使其效果无效。

垃圾邮件发送者确实找到了一种非常有效的方法来破解更流行的验证码。他们只是雇用廉价劳动力来阅读它们,以换取每个工作帐户的几美分。因此,有一个小行业围绕着破解 CAPTCHA 来创建数百万个帐户,然后这些帐户可用于发送更多垃圾邮件。与垃圾邮件发送者获得的金额相比,成本几乎为零。盲人/聋人可以使用类似的解决方案,他们会将 CAPTCHA 图像发送给中国或任何地方的一些廉价劳动力,他们将用正确的单词回复,盲人/聋人将能够继续。不幸的是,盲人只需要几次这项服务,而垃圾邮件发送者需要持续流动,因此这些劳动者更愿意为垃圾邮件发送者工作。(薪水更好。)不过,

ReCAPTCHA 样式还可以读出单词。一个简单的语音识别应用程序可能能够识别所说的任何内容,尽管语音识别仍需要更多优化。不过,您可能希望从这个角度工作,让应用程序改为收听声音字节。

当有可能破解验证码时,他们只会想出更好的类似验证码的方法。OCR 技术仍在改进,因此将做更多工作以使 CAPTCHA 更难。也就是说,直到 OCR 在识别单词方面变得和人眼一样好……

可以创建一个算法,尽管速度很慢。有 26 个小写字母和 26 个大写字母以及 10 个数字,想出一个算法应该不会太难。但是,对于 Serif 和 Sans-serif 字体,组合的数量需要加倍。尽管如此,如果您尝试以与 CAPTCHA 中的字母类似的方式弯曲所有字母,您应该能够检测到被 CAPTCHA 字母覆盖最多的字母。那将是最有可能的候选人。仍然需要您从图像中清除线条、污垢和其他伪影,人眼识别起来比计算机更容易。您需要以下步骤:

  1. 清理图像。
  2. 检测字母的位置。
  3. 对于每个字母 3a。通过检查左侧确定字母的曲线。3b。对每个可能的字母/数字进行叠加,以找到最能覆盖它的字母/数字。(这是最有可能的字母。)
  4. 找到单词后,请检查字典以确保它是真实单词。(除非验证码不使用真实的单词。)

即使他们可以扭曲验证码中的字母,也应该可以通过查看每个字母的左侧然后尝试对每个字母应用相同的曲线来检测他们使用的扭曲旋转。(52 个组合,加上 10 个数字,如果还使用数字。)基本上,您会尝试在每个字母周围放置一个框,然后检查哪个字母包含最少的空白。这是最有可能的信。

这不经常用于 OCR 的主要原因基本上是对速度的需要。步骤 3a/b 往往很慢,尤其是在您必须考虑字体样式的情况下。


使这个答案更大,但回复其中一个评论:

有几种方法可以清理图像。您需要一些颜色过滤、降噪和能够通过图像识别嘈杂线条的算法。DEFCON _您指出的幻灯片显示了一些简单的技术来过滤掉一些噪音。它表明,基本的图像处理工具已经可以使图像更清晰,便于机器阅读。简单的模糊会清除随机点和细线,而滤色器会过滤掉嘈杂的颜色。下一步是尝试在 CAPTCHA 中的每个字母周围放置一个框,希望系统能够识别它们的位置。我不知道任何实用的算法,但应该有办法识别它们。有可以从位图创建矢量图像的软件,因此应该有能够计算字母周围的框的软件。这个盒子很可能没有矩形角,因此您必须扭曲所有 52 个字母以匹配同一个盒子。斜体或粗体应该' 不会有太大的不同,因为这些风格只是额外的扭曲。不过,Serif 或 Sans-serif 确实有所不同。衬线字体往往有更多的尖峰和装饰。幸运的是,有一些算法可以将一个盒子转换为任何其他具有四个角的图形。

常规的 OCR 应用程序会假设字母大多是直的,并且只会检查一些热点以找到匹配项。因此,他们有时会因为噪音而弄错。要破解 CAPTCHA,您需要更敏感的匹配,最好将 CAPTCHA 字母图像与 52 个字母之一的图像“异或”,然后计算黑白点的数量以计算比率。假设白色=1 和黑色=0,XOR 的结果应该是几乎黑色的最佳匹配。

我认为一些垃圾邮件发送者已经找到了一些有用的算法来破解 CAPTCHA,但对他们来说,将这些算法保密只会让他们继续做生意。


另一条评论,更多文字。:-)

分割会是一个问题,但也不是不可能解决的。它只是极其复杂。但是当你清理了图像时,应该可以计算出两条线。一行触及每个字母的底部,另一行触及顶部。但是,好的 CAPTCHA 不会再将字母放在同一行上,但那些不太好的 CAPTCHA 可以通过遵循这些行来破解。(猜猜?ReCAPTCHA 将字母放在两行之间!)在两行中,您知道第一个字母将从左侧开始,因此您可以尝试在那里叠加所有 52 种可能性,直到找到匹配项。找到一个后,向右移动第二个。直到你读完所有的信。有两条线引导您,您不需要一个完整的盒子。

字母倾向于使用宽度和高度之间的恒定比率。使用两行,您可以计算整个字母的高度,从而很好地估计匹配的宽度。

尽管如此,对于我糟糕的数学技能来说,制定正确的算法来计算这一切还是有点过分了。你需要一位专业的数学家来破解这个算法。

于 2009-11-18T01:28:01.610 回答
1

我对您的问题的回答“即使有大量资源和时间,这些问题真的难以解决吗?” 是指出这正是验证码起作用的原因。

我的理解是,验证码的目的是证明您是人类而不是垃圾邮件机器人。reCAPTCHA 是对这一主题的一种新颖诠释,因为它们拍摄的图像代表了 OCR(光学字符识别)引擎无法解析的文本。在这种情况下,人和机器之间的区别在于,专门的算法试图解释这个图像并失败了,而“正常”人具有以一致的人类方式解释文本的内在能力。话虽如此,我们希望将来有人会想出更好的 OCR 引擎,以便在数字化世界信息时需要更少的人为干预。我们希望有人会为这个特定问题提出一个易于处理的解决方案。

从你试图让盲人更容易使用 CAPTCHA 的角度来看——他们仍然需要证明他们是人而不是垃圾邮件机器人——社区需要意识到这个问题并找到一种方法来识别人们一种不太以视觉为中心的方式。

于 2009-11-18T01:17:50.477 回答
0

这个相关的 SO 问题有很多好主意,包括一个DEFCON 演讲,声称使用多个 OCR 和投票会破坏许多简单的验证码。这提出了一种候选解决方法:将问题分布在多台服务器上,每台服务器并行运行一个或多个 OCR 工具,收集结果,并获取最流行的答案。欢迎评论。

于 2009-11-18T01:02:35.503 回答
0

验证码的引入无疑使视障者更难以访问网络,我同意你的观点,认为这是一个值得更多关注和关注的重大问题。然而,虽然 CAPTCHA 可以并且已经在流行的网站上不一致地绕过,但我认为这对于有需要的人来说不是一个可行的长期解决方案。事实上,目前出现在 Facebook、Google、MySpace 等网站上的 CAPTCHA 变体可以可靠且持续地被破解的那一天就是它们将变得过时并被抛弃的那一天,无论是相同的更强大的变体还是全新的解决方案(因为您暗示,在图片中区分猫和狗一直是一种流行的替代趋势)。

谈到在线可访问性,我认为残障人士现在最需要的是宣传。越多的人联系软件公司、开源团体和标准机构并说出这种需求,就会提高更多的意识,这将(希望)导致代表开发社区采取更多行动。最终,很高兴看到像谷歌或 Facebook 这样的网站为他们的视障用户提供替代访问方法。

抛开理想主义不谈,我认为像您在 CAPTCHA 志愿者网络中提到的其他途径是富有成效的,甚至可能为有相关残疾的人开发类似 OpenID 的东西作为通用表单验证通行证。

至于您问题的技术方面,我认为仅靠额外的处理能力并不能让您可靠且持续地破解 CAPTCHA。垃圾邮件中有很多钱,您可以肯定,阴暗的 SEO 公司和垃圾邮件发送者都拥有大量服务器可供使用。正如 Johannes Rössel 所提到的,如果您想了解更多关于这是如何完成的以及技术困难所在的信息,请研究光学字符识别 (OCR) 并查看在高流量站点上发生的各种数字/字母倾斜。

于 2009-11-17T23:52:31.283 回答