2009-11-17 5 views
12

CAPTCHAs, которые просят пользователей прочитать искаженный текст, хороши для зрячих людей, но это ужасный барьер для тех, кто слепые или имеют другие инвалидности. Альтернативы аудио иногда доступны, но все равно не помогают тем, кто является глухим и слепым, и может быть трудно использовать с помощью прошивки (который уже читает вам слова).Breaking CAPTCHA для благородного назначения

Там существует несколько решений, которые люди используют для решения CAPTCHA, от имени пользователя, такие как WebVisium и Solona, но это зависит от наличия операторов добровольцев (например, Солона, видимо, имеет только один доброволец, чтобы вы должен надеяться, что он проснулся, когда вам нужна помощь).

Мне кажется, что объем решений CAPTCHA, необходимых слепым людям, очень низок - я бы предположил, что меньше, чем несколько сотен в день в густонаселенной стране, такой как Великобритания. Это означает, что в отличие от плохих людей, которые хотят совершить какое-либо действие много раз за короткий период времени, служба помощи CAPTCHA для слепых может позволить себе выделить значительный вычислительный ресурс - например, облако компьютеров в Amazon EC2 - для идентификации представленного текста ,

Мой вопрос заключается в следующем: предполагается, что вам не очень нужна скорость, и у вас много компьютеров, есть ли алгоритмы, позволяющие вам разрешать CAPTCHA, искажающие текст, которые сегодня распространены, например, те, которые используются reCaptcha? Или эти проблемы действительно трудноразрешимы даже при большом количестве ресурсов и времени?

Несколько замечаний:

  1. На данный момент, мой вопрос только теоретическое, но очевидно, любая такая служба будет иметь тщательно контролировать доступ держать спамеров. Возможно, только зарегистрированным слепым людям будет разрешено использовать его.

  2. Я знаю, что несколько лет назад я использовал an old Yahoo CAPTCHA was broken, используя алгоритм, который работает в секундах на одном компьютере. Я спрашиваю, могут ли быть нарушены современные CAPTCHA, возможно, медленнее и с большим ресурсом.

  3. Я знаю, что появляются новые типы CAPTCHA, которые задают пользователям identify kittens или orient a picture. Они пока не получили широкого распространения, поэтому я сейчас просто прошу об искажении текста.

+0

Это на самом деле не отвечает на ваш вопрос, но вы можете быть заинтересованы в некоторых других системах ограничения скорости, которые могут быть полезны для поддержания доступности при блокировании спама большого объема, таких как HashCash. – Patonza

+0

Спасибо, Patonza. К сожалению, пока сайты не начнут использовать альтернативы, люди с ослабленным зрением должны будут выяснить, как обойти CAPTCHA (или оставаться исключенными из части Интернета). –

+1

некоторые спамеры теперь просто платят реального человека в случайной чужой стране, чтобы сидеть там и фактически выполнять операции CAPTCHA, то есть идентифицировать буквы/котята/ориентацию изображения/и т. Д. как вы это предотвращаете? – Jason

ответ

4

В основном решения искажение текста CAPTCHA, состоит из трех отдельных этапов:

  1. Узнайте, где интересные детали
  2. Сегмент текст на отдельные буквы
  3. распознать буквы

Единственная проблема, которая остается довольно сложной для компьютеров, - это вторая на е. Первый обычно не очень тяжелый, если только вы не наткнетесь на the CAPTCHA from hell. И третье решение решаются на компьютерах с гораздо лучшим успехом, чем у людей.

Интересный сайт для изучения того, как CAPTCHA разбиты, является одним из OCR Research Team.

+0

Спасибо, Иоганнес. Существуют ли стратегии для атаки на проблему 2 с использованием нескольких компьютеров, возможно, не очень быстро? –

+0

После нескольких поисков в Интернете кажется, что Йоханнес прав, что его проблема 2 (известная как «сегментация» - см. Http://en.wikipedia.org/wiki/Segmentation_(image_processing)) действительно является тяжелой частью этой проблемы , Было бы неплохо понять, почему сегментация настолько сложна и (кажется) сопротивляется параллелизации, но это, по-видимому, самый точный ответ тех, которые я получил. Спасибо, Йоханнес! –

+0

Спасибо. Я не очень уверен, что распараллеливание поможет вам в части сегментации. Прежде всего, изображения обычно малы и не содержат слишком много потенциальных областей. Во-вторых, в то время как правильная сегментация теоретически приведет к лучшему распознаванию символов, у вас нет уверенного способа узнать. Особенно с искаженными и пересеченными буквами вы можете «распознавать» разные буквы в зависимости от сегментации, но все без четкого победителя, который будет правильным. Кроме того, вы редко получаете больше одной попытки для одного CAPTCHA, поэтому попытки использования нескольких возможных решений часто не работают. – Joey

0

Внедрение CAPTCHA, безусловно, сделало Интернет менее доступным для слабовидящих, и я согласен с вами в цитировании этого как серьезная проблема, заслуживающая большего внимания и заботы.Однако, несмотря на то, что CAPTCHA может быть и не удалось обойти на популярных веб-сайтах, я не думаю, что это жизнеспособное долгосрочное решение для нуждающихся. Действительно, день, когда варианты CAPTCHA, которые сейчас присутствуют на таких сайтах, как Facebook, Google, MySpace и т. Д., Могут быть надежно и последовательно нарушены - это день, когда они станут устаревшими и оставленными для более сильных вариантов того же или совершенно нового решения (так как вы подразумевалось, что отличные кошки от собак на фотографиях были популярной альтернативной тенденцией).

Когда дело доходит до доступности в Интернете, то, что я думаю, что люди с ограниченными возможностями нуждаются сейчас, - это пропаганда. Чем больше людей свяжутся с компаниями-разработчиками программного обеспечения, группами с открытыми исходными кодами, так и с органами стандартизации и высказываются по поводу этой потребности, тем больше будет повышена осведомленность и что (надеюсь) приведет к более активным действиям от имени сообщества разработчиков. В конечном итоге было бы замечательно видеть, что сайты, такие как Google или Facebook, предлагают альтернативные методы доступа только для пользователей с ослабленным зрением.

Идеализм в стороне, я думаю, что продуктивно заниматься другими способами, как вы упомянули в сети добровольцев CAPTCHA, возможно, даже с разработкой чего-то вроде OpenID для тех, кто имеет соответствующие инвалидности, как универсальный проход для проверки формы.

Что касается технического аспекта вашего вопроса, я не думаю, что доступность дополнительной вычислительной мощности позволит вам надежно и последовательно нарушать CAPTCHA. В спаме есть много денег, и вы можете быть уверены, что у теневых компаний SEO и спамеров есть огромное количество серверов в их распоряжении. Как отметил Йоханнес Рёссел, если вы хотите узнать больше о том, как это делается и где сложны технические проблемы, изучите оптическое распознавание символов (OCR) и посмотрите на широкий спектр перекосов номер/букву, который встречается на сайтах с высоким трафиком.

+0

Спасибо, Марк. Разница между этой ситуацией и ситуацией с спамером или теневым SEO-человеком заключается в том, что они должны разрывать CAPTCHA много раз за очень короткий период, тогда как слепой человек (или служба, работающая от их имени) имеет гораздо меньший объем и скорость требование. Таким образом, если бы был относительно дорогостоящий алгоритм (где затраты измеряются во времени или процессоры или оба) для решения определенного типа CAPTCHA, это не обязательно означает, что большие сайты откажутся от этого типа CAPTCHA, и мы не можем сделать вывод, что теневые пользователи уже будут его использовать. –

+0

Я понимаю и соглашаюсь с вашей логикой, но моя точка зрения заключалась в том, что мощность процессора не является проблемой. Проблема заключается в распознавании символов OCR, которое в настоящее время недостаточно продвинуто, чтобы точно и последовательно идентифицировать более сложные варианты CAPTCHA. Если OCR недостаточно устойчиво, чтобы автоматически идентифицировать намеренно неверно истолкованных персонажей так, как это может сделать человеческий мозг, единственной альтернативой является получение образованных догадок при грубом принуждении к решению, которое, по моему убеждению, может потерпеть неудачу не из-за доступной мощности ЦП, а потому других связанных с сетью проблем/ограничений. – Mark

+0

Рассматривали ли вы другие способы обеспечения доступа для пользователей с ослабленным зрением, которые включают работу с поставщиками услуг, чтобы обойти, а не победить, CAPTCHA? – Mark

0

This related SO question10 имеет ряд хороших идей в нем, в том числе DEFCON talk, который утверждает, что использует несколько OCR и голосование прорывает много простых CAPTCHA. Это предлагает метод решения кандидата: распределите проблему по нескольким серверам, каждый из которых запускает один или несколько инструментов OCR параллельно, собирает результаты и берет наиболее популярный ответ. Комментарии приветствуются.

1

Мой ответ на ваш вопрос: «Эти проблемы действительно трудноразрешимы даже при большом количестве ресурсов и времени?» заключается в том, что именно по этой причине CAPTCHA работают.

Мое понимание заключается в том, что целью CAPTCHA является доказать, что вы человек, а не спам-бот. reCAPTCHA - это новый подход к этой теме, поскольку они принимают изображения, которые представляют собой текст, который не может быть разрешен механизмами распознавания оптических символов. Разница между человеком и машиной в этом случае заключается в том, что специализированный алгоритм (ы) попытался интерпретировать этот образ и потерпел неудачу, в то время как «нормальный» человек обладает внутренней способностью интерпретировать текст последовательно по-человечески. Это, как говорится, в будущем мы надеемся, что кто-то придумает лучшие двигатели OCR, чтобы было меньше вмешательства человека в оцифровку информации о мире. Мы надеемся, что кто-то придумает приемлемое решение этой проблемы.

С вашей точки зрения, вы пытаетесь сделать CAPTCHA более доступным для слепых людей, которым еще нужно доказать, что они люди, а не спам-боты - сообщество должно осознать эту проблему и найти способ чтобы идентифицировать людей менее ориентированным образом.

+0

Вы говорите, что изображения «не могут быть решены с помощью OCR ... двигателей». У вас есть доказательства для этого? Просто говоря, что они должны быть неподъемными, это не значит, что они есть. (И они все еще могут быть эффективными для прекращения злонамеренного использования, даже если они взломаны с достаточно неэффективным алгоритмом.См. Комментарий к отвечу Марка Хэммонда.) –

+0

Возможно, вас заинтересует «reCAPTCHA: человеческий персонаж Распознавание через меры безопасности в Интернете» (http://recaptcha.net/reCAPTCHA_Science.pdf). Одним из выводов авторов является «Таким образом, любая программа, которая может распознавать эти слова с неравномерной вероятностью, будет улучшением по сравнению с современными программами OCR». reCAPTCHA - это текстовые изображения, отсканированные интернет-архивами (http://www.archive.org/index.php), и теперь Google Books (http://googleblog.blogspot.com/2009/09/teaching-computers-to -read-google.html), которые представляют собой 20% слов, которые OCR не может решить. – pgwillia

2

CAPTCHA был создан, чтобы избежать обнаружения машин. Он предназначен для чтения только людьми. Сделать его более читаемым для слепых/глухих людей добавляет риск того, что машины смогут понять их снова, тем самым сводя на нет их эффект.

Спамеры нашли очень эффективный способ разбить более популярный CAPTCHA. Они просто нанимают дешевых рабочих, чтобы читать их, в обмен на несколько центов за рабочий счет.В результате существует небольшая индустрия, которая нарушает работу CAPTCHA для создания миллионов учетных записей, которые затем могут использоваться для отправки большего количества спама. По сравнению с суммой, полученной спамерами, издержки практически отсутствуют. Аналогичное решение может быть использовано слепыми/глухими людьми, которые отправили бы изображение CAPTCHA некоторым дешевым рабочим в Китае или где бы они ни находились, где они ответят правильными словами, и слепой/глухой человек сможет продолжить. К сожалению, слепым людям нужна эта услуга только несколько раз, в то время как спамерам необходим непрерывный поток, поэтому эти рабочие предпочитают работать вместо спамеров. (Плата лучше.) Тем не менее, лучшим решением было бы отправить CAPTCHA другому другу, позволить им читать и/или расшифровывать его и возвращать ответ.

Стиль ReCAPTCHA также считывает слова. Простое приложение распознавания речи может распознавать все сказанное, хотя распознавание речи по-прежнему требует больших оптимизаций. Тем не менее, вы можете захотеть работать под этим углом, заставляя приложение слушать звуковой байт вместо этого.

Когда можно сломать CAPTCHA, они просто подумают о лучших методах, подобных CAPTCHA. Методы 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 действительно имеют значение. У шрифтов Serif, как правило, есть еще несколько шипов и украшений. К счастью, есть алгоритмы, которые могут преобразовывать коробку в любую другую фигуру с четырьмя углами.

Обычные приложения для распознавания текста предполагают, что буквы в основном прямые и будут просто проверять несколько горячих точек, чтобы найти совпадение. Таким образом, они иногда ошибаются из-за шума. Чтобы взломать CAPTCHA, вам понадобится более чувствительное совпадение, предпочтительно «XOR-ing» изображение буквы CAPTCHA с изображением одной из 52 букв, а затем подсчет количества черно-белых точек для вычисления отношения. Предполагая, что белый = 1 и черный = 0, результат XOR должен быть почти черным для лучшего соответствия.

Я думаю, что несколько спамеров уже нашли полезные алгоритмы для взлома CAPTCHA, но для них, сохраняя эти алгоритмы в секрете, просто удерживая их в бизнесе.


Другой комментарий, больше текста. :-)

Сегментация была бы проблемой, но решить ее невозможно. Это очень сложно. Но когда вы очистили изображение, должно быть возможно рассчитать две строки. Одна строка, которая касается нижней части каждой буквы и второй строки, которая касается верхней части. Тем не менее, хорошие CAPTCHA не будут помещать буквы в одни и те же строки, но те, кто не очень хорош, могут быть потресканы, просто следуя строкам. (Guess? ReCAPTCHA помещает буквы между двумя строками!) С двумя строками вы знаете, что первая буква начнется слева, поэтому вы можете попробовать наложить все 52 возможности там, пока не найдете совпадение. Когда вы его нашли, перейдите вправо для второго. И далее, пока вы не прочтете все письма. С двумя линиями, которые помогут вам, вам не нужна полная коробка.

Письма имеют тенденцию использовать постоянное соотношение между шириной и высотой. С двумя строками вы можете рассчитать высоту полной буквы и, таким образом, получить хорошую оценку соответствующей ширины.

По-прежнему, разработка правильного алгоритма для расчета этого всего немного для моих плохих математических навыков. Вам понадобится эксперт-математик, чтобы взломать этот алгоритм.

+0

Спасибо Алекс. Существуют ли существующие алгоритмы предлагаемого вами алгоритма? Кажется сложным реализовать, и не ясно, что он будет работать - например. Я не уверен, что ваш шаг 1 («очистка») прост, и Йоханнес указывает в своем ответе, что ваш шаг 2 («сегментация») на самом деле самый сложный бит. –

+0

«должно быть программное обеспечение, способное вычислить коробку вокруг буквы» - к сожалению, это из моего исследования является неправильным. Эта проблема «сегментации» на самом деле является шоустопом, как указывает Йоханнес в своем ответе. –