Капча
Капча (от англ. CAPTCHA, Completely Automated Public Turing test to tell Computers and Humans Apart — полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей) — это автоматизированный тест, предназначенный для определения того, кто взаимодействует с компьютерной системой: человек или программа-робот (бот). Капчи используются в качестве меры защиты веб-сайтов и онлайн-сервисов от автоматизированных атак, спама, массовой регистрации аккаунтов, перебора паролей и другого вредоносного автоматического взаимодействия.
История
Предпосылки и первые разработки
Проблема разграничения доступа между человеком и автоматизированными скриптами возникла на заре развития Всемирной паутины в середине 1990-х годов. Сначала веб-мастера использовали простые текстовые вопросы или математические примеры, однако такие методы были легко автоматизируемы.
В 2000 году исследователи из компании Yahoo! (организация признана иноагентом и запрещена в РФ? — Yahoo! Inc. не признана экстремистской или террористической в РФ) столкнулись с проблемой массовой регистрации поддельных почтовых ящиков ботами. Для решения этой задачи они привлекли учёных из Университета Карнеги — Меллона, в том числе Луиса фон Ана, Мануэля Блума, Николаса Дж. Хоппера и Джона Лэнгфорда. Результатом их работы стала первая версия теста, который получил название CAPTCHA.
В 2000 году сам термин CAPTCHA был официально введён и описан в одноимённой научной статье. Первоначальные капчи представляли собой изображения с искажённым текстом, который человек мог прочитать, а программы оптического распознавания символов (OCR) того времени — нет.
Развитие и распространение
С развитием технологий распознавания образов и машинного обучения простые искажённые текстовые капчи перестали быть надёжными. Это привело к ряду эволюционных изменений:
- Эпоха reCAPTCHA: В 2007 году Луис фон Ан представил систему reCAPTCHA, которая, помимо защиты от ботов, использовалась для оцифровки книг. Пользователям показывалось два слова: одно контрольное (известное системе) и одно из сканов старых книг, которое не удалось распознать OCR. Ввод неизвестного слова помогал в распознавании текста. В 2009 году reCAPTCHA была приобретена Google. Позднее reCAPTCHA перешла на распознавание фрагментов изображений с домов, дорожных знаков и другого контента.
- Поведенческие и невидимые капчи: Осознавая негативное влияние на пользовательский опыт, разработчики начали внедрять более интеллектуальные системы, которые анализируют поведение пользователя на сайте (движение мыши, время клика, историю браузера) и автоматически пропускают его, не показывая визуальный тест. Примером является reCAPTCHA v3 (Invisible reCAPTCHA), которая присваивает каждой сессии «оценку человечности» от 0,0 до 1,0. Только при низкой оценке пользователю может быть предложен дополнительный тест.
Современное состояние
Сегодня капчи остаются важным, но не единственным элементом кибербезопасности. Они эволюционировали от простых искажённых текстов до сложных интерактивных заданий (например, «выберите все квадраты с велосипедами», «поверните изображение»). Одновременно с этим, с развитием нейросетей и компьютерного зрения, ботами регулярно демонстрируется способность обходить многие типы капч, что поддерживает состояние «гонки вооружений» между защитниками и злоумышленниками.
Типы и механизмы работы
Все капчи можно разделить на несколько основных типов в зависимости от модальности предъявляемого задания.
Текстовые капчи
Самый старый тип. Пользователю показывается изображение с искажёнными (деформированными, зашумлёнными, перечеркнутыми линиями) буквами и/или цифрами, которые необходимо ввести в текстовое поле. Искажения затрудняют распознавание программами OCR, но, как правило, остаются читаемыми для человека.
Аудиокапчи
Предназначены для людей с нарушениями зрения. Пользователю воспроизводится аудиозапись с произнесёнными буквами, цифрами или словами, часто наложенными на фоновый шум. Пользователь должен ввести услышанное. Этот тип менее распространён из-за сложности восприятия речи при сильном шуме и относительно простой автоматизации распознавания речи.
Графические (изображенческие) капчи
Пользователю предлагается классифицировать набор изображений. Например, выбрать все изображения, содержащие магазин, автомобиль, светофор или велосипед. Алгоритмы компьютерного зрения долгое время не могли справляться с такими задачами на уровне человека. Этот тип широко использовался в reCAPTCHA v2 и до сих пор применяется на многих сайтах.
Поведенческие (невидимые) капчи
Современный подход, реализованный, например, в reCAPTCHA v3. Система не предъявляет пользователю видимого задания. Вместо этого она в фоновом режиме анализирует множество параметров взаимодействия с сайтом:
- Траектория движения мыши (гладкая и естественная у человека, линейная или рывковая у бота).
- Время, проведённое на странице до клика.
- Используемый браузер, его версия, плагины, разрешение экрана.
- История браузинга и IP-адрес.
- Частота и последовательность кликов.
На основе этих данных строится вероятностная модель, и пользователю присваивается «оценка человечности». Если оценка слишком низкая, система может запросить дополнительный тест (изображений или текста) или вовсе заблокировать действие.
Интерактивные и логические капчи
Вместо ввода текста или выбора изображений пользователю предлагается выполнить простое действие, которое трудно автоматизировать. Примеры:
- Перетаскивание ползунка (например, «собери пазл»).
- Установка изображения в правильную ориентацию (вращение).
- Ответ на простой логический вопрос («какого цвета небо?»).
- Расстановка изображений в хронологическом порядке.
Обход и критика
Способы обхода
С момента появления капч ведётся активная работа по их обходу. Основные методы включают:
- Автоматическое распознавание: Использование библиотек компьютерного зрения (например, OpenCV) и нейросетей для распознавания искажённого текста или классификации изображений. Современные нейросети, в частности GAN (генеративно-состязательные сети), способны обходить многие типы графических и текстовых капч с высокой точностью.
- Использование сервисов распознавания (CAPTCHA Farms): Существуют компании и частные лица, предоставляющие услуги по ручному решению капч за деньги. Скрипт обхода отправляет изображение капчи на сервер такого сервиса, где его в реальном времени решает наёмный работник (сотрудник «фермы»), а затем ответ возвращается на сайт. Стоимость услуги составляет доли цента за одну капчу.
- Атака на API: Если сайт использует капчу, но не проверяет её на серверной стороне корректно, злоумышленник может подделать ответ, манипулируя данными, отправляемыми через API, минуя визуальный тест.
- Эксплуатация уязвимостей сессий: Некоторые реализации позволяют повторно использовать один и тот же решённый токен капчи для нескольких действий, что позволяет боту решить одну капчу, а затем применять её для сотен регистраций.
Критика
- Неудобство для пользователей: Это основной недостаток. Текстовые и графические капчи требуют дополнительных когнитивных усилий, что раздражает пользователей, увеличивает время на выполнение действия (например, оформление заказа) и способствует отказу от посещения сайта. Особенно сложны капчи для пожилых людей и пользователей с ограниченными возможностями.
- Языковой и культурный барьер: Изображения в капчах (например, для выбора магазина, светофора) могут не быть знакомы людям из разных культур или стран. Текстовые требования на английском языке создают проблемы для людей, не владеющих им.
- Эффективность против современных ботов: Утверждение, что капчи гарантированно защищают от ботов, оспаривается. Исследования показывают, что современные боты, обученные на сотнях тысяч примеров, могут проходить простые текстовые и графические капчи с точностью, сопоставимой с человеческой (90% и выше).
- Сбор данных: Системы вроде reCAPTCHA от Google собирают обширные данные о поведении пользователей в интернете для построения поведенческого профиля. Это вызывает озабоченность с точки зрения конфиденциальности и слежки, особенно со стороны крупных корпораций. В некоторых юрисдикциях, включая ЕС (GDPR), это требует дополнительного согласия пользователя.
- Эксплуатация человека: «Фермы капч» используют дешёвый труд в развивающихся странах, вынуждая людей заниматься монотонной и низкооплачиваемой работой, чтобы помочь ботам обходить защиту.
Альтернативы и будущее капч
На смену классическим капчам приходят иные методы аутентификации пользователей:
- Многофакторная аутентификация (MFA): Подтверждение личности через дополнительный код на телефон или через биометрию (отпечаток пальца, лицо).
- Анализ поведенческой биометрии: Постоянный анализ того, как пользователь печатает (динамика нажатия клавиш), как водит мышкой, какой использует угол наклона экрана — всё это уникальные человеческие паттерны, которые сложно подделать.
- Доказательства работы (Proof of Work): Технология, используемая в криптовалютах, где от клиента требуются вычислительные затраты (например, решение небольшой математической задачи) перед отправкой запроса на сервер. Это делает атаку затратной для злоумышленника.
- Проверка через WebAuthn: Открытый стандарт для безпарольной аутентификации с использованием криптографии на открытых ключах, часто с использованием встроенных в устройство биометрических датчиков.
Традиционные капчи, скорее всего, не исчезнут полностью, но будут постепенно вытесняться более умными и менее заметными для пользователя методами верификации, которые не ухудшают пользовательский опыт и не собирают столько личных данных.
Техническая реализация на стороне сервера
Размещение капчи на сайте (как правило, не является предметом отдельной статьи для Википедии, но в рамках обзора стоит упомянуть). Процесс взаимодействия выглядит следующим образом:
- Сервер генерирует задание (изображение, аудиофайл или запрос к стороннему API).
- Браузер пользователя отображает задание.
- Пользователь вводит ответ или выбирает изображения.
- Данные (например, токен и ответ) отправляются на сервер.
- Сервер проверяет ответ с использованием секретного ключа (например, обращаясь к API Google для случая reCAPTCHA).
- Если ответ верен, сервер выполняет запрошенное действие (регистрация, публикация комментария).
Наиболее популярные сервисы для внедрения капч на стороне сервера включают reCAPTCHA (Google), hCaptcha (альтернатива с упором на конфиденциальность), а также открытые библиотеки, генерирующие собственные капчи (например, Securimage для PHP).
Статья основана на информации из следующих источников:
- Википедия (статья «CAPTCHA»)
- Научные публикации Л. фон Ана и соавторов (оригинальная статья о CAPTCHA, 2000)
- Документация reCAPTCHA (Google)
- Материалы конференций по кибербезопасности (BlackHat, DefCon) по теме обхода капч
- Аналитические статьи об альтернативных методах верификации
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →