Капча
Капча (от англ. CAPTCHA, аббревиатура от англ. Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — способ аутентификации по принципу «вызов—ответ» (challenge-response), применяемый в вычислительной технике для определения, является ли пользователь человеком, чтобы предотвратить атаки ботов и спам[1]. Термин был введён в 2003 году Луисом фон Аном, Мануэлем Блумом, Николасом Дж. Хоппером и Джоном Лэнгфордом. Классическая разновидность капчи в виде искажённых символов впервые была реализована двумя независимыми группами в 1997 году. В отличие от стандартного теста Тьюринга, проводимого человеком, капча предлагается компьютером и иногда называется обратным тестом Тьюринга[2].
Наиболее широко распространены сервисы капчи: reCAPTCHA от компании Google[3][4] и независимая hCaptcha[5]. В среднем для прохождения стандартной капчи человеку требуется около 10 секунд[6]. С развитием искусственного интеллекта возможность обхода таких тестов возрастает, а появление мошеннических подделок капчи снижает её эффективность.
Назначение
Целью капчи является предотвращение спама на сайтах — например, рекламного, регистрационного и извлечения данных (data scraping). Механизм позволяет эффективно блокировать автоматические «набеги» ботов[7]. Более новые реализации оценивают поведение пользователя в сети, чтобы проверить, является ли он человеком[8]. Обычно капча появляется только при подозрительной активности (например, при слишком частом открытии страниц или кликах по ссылкам).
История
С 1980—1990-х годов в интернет-среде существовало желание сделать текст нечитаемым для автоматизированных систем[9]. Первыми такие хаки применяли хакеры, изменяя написание слов при обсуждении чувствительных тем на форумах, чтобы обходить фильтры по ключевым словам. Для этого использовались похожие символы, например, HELLO заменялось на |-|3|_|_() или )-(3££0, так что фильтр не мог учесть все варианты. Позднее это стало известно как leetspeak[10].
Одно из первых коммерческих применений капчи — тест Гаусебека-Левчина, применявшийся на сайте idrive.com в 2000 году для защиты страницы регистрации[11].[9] В 2001 году PayPal внедрил такие тесты для борьбы с мошенничеством, предлагая пользователям «ввести искажённый текст, который сложно распознать программам»[12]; сооснователь и технический директор PayPal Макс Левчин сыграл ключевую роль в коммерциализации технологии.
Популярная система reCAPTCHA была приобретена Google в 2009 году[13]. Помимо предотвращения автоматических атак, Google использует reCAPTCHA для оцифровки архивов The New York Times и книг из Google Books (2011 год)[14].
Технические особенности
Капчи автоматизированы и требуют минимального администрирования, что выгодно для стоимости и надёжности[15]. Современные текстовые капчи требуют от пользователя одновременного применения трёх навыков: инвариантного распознавания (распознавание букв вне зависимости от искажений), сегментации (отделение символов друг от друга в усложнённом изображении) и синтаксического анализа (общее понимание последовательности символов)[16].
Каждая из этих задач по отдельности сложна для компьютера. Совмещение всех трёх делает капчу особенно устойчивой[17]. Помимо безопасности, капча используется как эталонная задача для проверки методов искусственного интеллекта. В работе фон Ана, Блума и Лэнгфорда говорится, что любая программа, успешно проходящая капчу, способна решать сложные задачи ИИ[18]. Сложность капчи обеспечивает либо стабильную защиту, либо стимул для ИИ: если программа её решает — значит преодолена труднейшая задача искусственного интеллекта.
Доступность
Графические капчи затрудняют доступ к ресурсам для слепых и слабовидящих пользователей[19]. Большинство вспомогательных технологий (например, экранные дикторы) не способны их интерпретировать, что делает сервисы с капчей недоступными для части пользователей. Использование капчи может противоречить законодательству о доступности веб-сайтов, например стандарту Section 508 в США.
Вместо визуальных заданий возможны альтернативы — например, распознавание речи, аудиокапча, математические задачи, логические головоломки или вопросы по тривиальным знаниям[20]. Некоторые реализации позволяют выбрать аудиоальтернативу, хотя и такие схемы были взломаны[21]. Также реализуются математические капчи (MAPTCHA), но такие задания затруднены для людей с дискалькулией[22]. Для повышения удобства разрабатываются методы, сочетающие капчу и JavaScript: боты не могут корректно исполнять сценарии и не видят нужного поля[23]. Более сложные задачи — логические, визуальные или на знание — также способны выступать в роли капчи[24].
Обход капчи
Существует два основных способа обхода капчи: дешёвая человеческая рабочая сила и автоматизация с помощью машинного обучения[25]. По словам бывшего специалиста Google по клик-фроду Шумана Гхосемаджумдера, действуют множество сервисов для автоматического решения капчи[26].
Ранние типы капчи нередко имели стандартную длину и ограниченные наборы слов, что делало возможным автоматические атаки методом угадывания и анализа; чрезмерная ставка на сложный фон в изображении также облегчала взлом. Лёгкие модификации задания часто нейтрализовали такие эксплойты. Современные системы, включая reCAPTCHA, используют наложение и слияние символов, мешая сегментации и усложняя автоматизацию.
В 2013 году компания Vicarious заявила о разработке универсального алгоритма распознавания капчи с точностью до 90 %[27]. Основатель reCAPTCHA Луис фон Ан отметил, что подобные заявления делаются регулярно, — с 2003 года их было не менее 50[28].
В 2014 году на конференции Usenix WoOT Эли Бурштейн и соавторы продемонстрировали универсальный алгоритм на основе обучения с подкреплением, преодолевающий сложные схемы капчи. В 2018 в ходе ACM CCS’18 Йе и соавторы представили атаку на основе глубинных сетей, способную взламывать все 11 актуальных схем текстовых капч у наиболее популярных сайтов, обучаясь на 500 примерах[29].
Иногда капча обходится с помощью дешёвой рабочей силы: задания передаются людям — зачастую на «фабрику кликов». По данным W3C (2005), такие работники способны разгадывать сотни капч в час[19]. В 2010 году учёные из Калифорнийского университета в Сан-Диего оценили стоимость решения миллиона капч в $1000.
Другой способ — размещение капчи на стороннем сайте, где ничего не подозревающие посетители решают капчу, а результаты используются злоумышленниками[30].
В 2023 году нейросеть ChatGPT обманула работника сервиса TaskRabbit, заявив, что не является роботом и имеет нарушения зрения[31].
Существует множество интернет-компаний (например, 2Captcha, DeathByCaptcha), предлагающих услуги по разгадыванию капчи (автоматизированные или с использованием людей) по ценам порядка $0,5 за 1000 заданий[32]. Они предлагают программные интерфейсы (API) для интеграции решения капчи в те инструменты, против которых капча и предназначалась[33].
Ховард Иенд выделяет две ошибки в архитектуре капчи: повторное использование идентификатора сессии известного изображения и размещение капчи на общих серверах[34]. Если часть программного кода работает на стороне клиента (например, текст отображается локально), возможно восстановление правильного ответа. Нередко для проверки на стороне клиента используются хеши типа MD5 — это также даёт возможность атак методом перебора[35].
Альтернативные формы капчи
Предлагаются варианты, основанные на распознавании изображений — пользователям предлагается определить объекты на картинке. Такие задания считаются сложнее для ИИ, чем текстовые, и более устойчивы к автоматизации. В работе Чью и др. были опробованы три типа «картинной» капчи, лучшей из которых оказалась anomaly CAPTCHA: 100 % участников успешно проходили её за 42 секунды при вероятности не менее 90 %[36]. Datta и др. (IMAGINATION, 2005) предложили искажение изображений как системную основу защиты[37].
Microsoft (Джереми Элсон и др.) разработала систему ASIRRA — пользователь различал кошек и собак на фотографии. Эта система показывала 99,6 % успешного прохождения за 30 секунд среди людей; опыт её использования был оценён как более приятный, чем обычные текстовые задания[38]. Проект был закрыт в октябре 2014 года[39].
Мошеннические псевдо-капчи
Иногда ложные капчи применяются для распространения вредоносного ПО. Злоумышленники убеждают пользователя скопировать и выполнить вредоносный скрипт (обычно якобы для прохождения проверки), который устанавливает шпионские программы для кражи паролей и персональных данных. Такие мошеннические схемы оказываются более эффективными, чем другие, за счёт «усталости от проверок» — пользователи кликают капчу автоматически, не вчитываясь в предупреждения[40].
Примечания
Литература
- von Ahn, L; M. Blum and J. Langford. (2004) Telling humans and computers apart (automatically). Communications of the ACM, 47(2):57-60.
Ссылки
- Verification of a human in the loop, or Identification via the Turing Test, Moni Naor, 1996.
- Inaccessibility of CAPTCHA: Alternatives to Visual Turing Tests on the Web — рабочая группа W3C.
- CAPTCHA History от PARC.
- Reverse Engineering CAPTCHAs, Abram Hindle, Michael W. Godfrey, Richard C. Holt, 24 августа 2009.




