Открыть сервис

Капча

Капча (от англ. CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — это автоматизированный тест, предназначенный для определения того, кто взаимодействует с компьютерной системой: человек или программа-робот (бот). Капчи используются в качестве меры защиты веб-сайтов и онлайн-сервисов от автоматизированных атак, спама, массовой регистрации аккаунтов, перебора паролей и другого вредоносного автоматического взаимодействия.

История

Предпосылки и первые разработки

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

В 2000 году исследователи из компании Yahoo! (организация признана иноагентом и запрещена в РФ? — Yahoo! Inc. не признана экстремистской или террористической в РФ) столкнулись с проблемой массовой регистрации поддельных почтовых ящиков ботами. Для решения этой задачи они привлекли учёных из Университета Карнеги — Меллона, в том числе Луиса фон Ана, Мануэля Блума, Николаса Дж. Хоппера и Джона Лэнгфорда. Результатом их работы стала первая версия теста, который получил название CAPTCHA.

В 2000 году сам термин CAPTCHA был официально введён и описан в одноимённой научной статье. Первоначальные капчи представляли собой изображения с искажённым текстом, который человек мог прочитать, а программы оптического распознавания символов (OCR) того времени — нет.

Развитие и распространение

С развитием технологий распознавания образов и машинного обучения простые искажённые текстовые капчи перестали быть надёжными. Это привело к ряду эволюционных изменений:

Современное состояние

Сегодня капчи остаются важным, но не единственным элементом кибербезопасности. Они эволюционировали от простых искажённых текстов до сложных интерактивных заданий (например, «выберите все квадраты с велосипедами», «поверните изображение»). Одновременно с этим, с развитием нейросетей и компьютерного зрения, ботами регулярно демонстрируется способность обходить многие типы капч, что поддерживает состояние «гонки вооружений» между защитниками и злоумышленниками.

Типы и механизмы работы

Все капчи можно разделить на несколько основных типов в зависимости от модальности предъявляемого задания.

Текстовые капчи

Самый старый тип. Пользователю показывается изображение с искажёнными (деформированными, зашумлёнными, перечеркнутыми линиями) буквами и/или цифрами, которые необходимо ввести в текстовое поле. Искажения затрудняют распознавание программами OCR, но, как правило, остаются читаемыми для человека.

Аудиокапчи

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

Графические (изображенческие) капчи

Пользователю предлагается классифицировать набор изображений. Например, выбрать все изображения, содержащие магазин, автомобиль, светофор или велосипед. Алгоритмы компьютерного зрения долгое время не могли справляться с такими задачами на уровне человека. Этот тип широко использовался в reCAPTCHA v2 и до сих пор применяется на многих сайтах.

Поведенческие (невидимые) капчи

Современный подход, реализованный, например, в reCAPTCHA v3. Система не предъявляет пользователю видимого задания. Вместо этого она в фоновом режиме анализирует множество параметров взаимодействия с сайтом:

На основе этих данных строится вероятностная модель, и пользователю присваивается «оценка человечности». Если оценка слишком низкая, система может запросить дополнительный тест (изображений или текста) или вовсе заблокировать действие.

Интерактивные и логические капчи

Вместо ввода текста или выбора изображений пользователю предлагается выполнить простое действие, которое трудно автоматизировать. Примеры:

Обход и критика

Способы обхода

С момента появления капч ведётся активная работа по их обходу. Основные методы включают:

  1. Автоматическое распознавание: Использование библиотек компьютерного зрения (например, OpenCV) и нейросетей для распознавания искажённого текста или классификации изображений. Современные нейросети, в частности GAN (генеративно-состязательные сети), способны обходить многие типы графических и текстовых капч с высокой точностью.
  2. Использование сервисов распознавания (CAPTCHA Farms): Существуют компании и частные лица, предоставляющие услуги по ручному решению капч за деньги. Скрипт обхода отправляет изображение капчи на сервер такого сервиса, где его в реальном времени решает наёмный работник (сотрудник «фермы»), а затем ответ возвращается на сайт. Стоимость услуги составляет доли цента за одну капчу.
  3. Атака на API: Если сайт использует капчу, но не проверяет её на серверной стороне корректно, злоумышленник может подделать ответ, манипулируя данными, отправляемыми через API, минуя визуальный тест.
  4. Эксплуатация уязвимостей сессий: Некоторые реализации позволяют повторно использовать один и тот же решённый токен капчи для нескольких действий, что позволяет боту решить одну капчу, а затем применять её для сотен регистраций.

Критика

Альтернативы и будущее капч

На смену классическим капчам приходят иные методы аутентификации пользователей:

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

Техническая реализация на стороне сервера

Размещение капчи на сайте (как правило, не является предметом отдельной статьи для Википедии, но в рамках обзора стоит упомянуть). Процесс взаимодействия выглядит следующим образом:

  1. Сервер генерирует задание (изображение, аудиофайл или запрос к стороннему API).
  2. Браузер пользователя отображает задание.
  3. Пользователь вводит ответ или выбирает изображения.
  4. Данные (например, токен и ответ) отправляются на сервер.
  5. Сервер проверяет ответ с использованием секретного ключа (например, обращаясь к API Google для случая reCAPTCHA).
  6. Если ответ верен, сервер выполняет запрошенное действие (регистрация, публикация комментария).

Наиболее популярные сервисы для внедрения капч на стороне сервера включают reCAPTCHA (Google), hCaptcha (альтернатива с упором на конфиденциальность), а также открытые библиотеки, генерирующие собственные капчи (например, Securimage для PHP).

Статья основана на информации из следующих источников:

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →