[Перевод] Переход с reCAPTCHA на hCaptcha

07e6417a74aa70f4f214fa9b119871db.png

Блог Cloudflare

Недавно мы сменили нашего провайдера капчи с Google reCAPTCHA на сервис независимой компании hCaptcha. Мы рады этому изменению, потому что оно помогает решить проблему конфиденциальности, присущую сервисам Google, а также даёт больше гибкости в настройках капчи. Поскольку это изменение потенциально влияет на всех клиентов Cloudflare, хотим подробно объяснить причины.


d87a67a7b63e1806199536834a708ac5.png

Одна из услуг Cloudflare — фильтрация ботов. Для этого используется ряд техник. Когда мы абсолютно уверены в присутствии бота, то сразу блокируем эти запросы. Если запросы поступили от человека или хорошего бота (например, поискового), мы их пропускаем. Но бывают ситуации, когда мы не уверены на 100%, тогда предлагаем решить «задачку».

У нас разные типы задачек, некоторые полностью автоматизированы, но одна требует вмешательства человека. Эти задачи известны как капчи (CAPTCHA от Completely Automated Public Turing Test to Tell Computers and Humans Apart, где несколько T отбросили, иначе получилось бы CAPTTTCHA). Как правило, такие задачи легко решают люди, но они трудны для машин.

a5c65555daa3b794ec38e181d243a98e.png

С первых дней существования Cloudflare мы использовали сервис reCAPTCHA от Google. Он начался как исследовательский проект в университете Карнеги-Меллон в 2007 году. Google купила проект в 2009 году, примерно в то же время, когда Cloudflare только начинал свою работу. Сервис reCAPTCHA предоставлялся бесплатно в обмен на данные из него (ответы людей), которые Google применяла для обучения систем машинного зрения. Когда мы искали капчу для Cloudflare, то выбрали reCAPTCHA, потому что система была эффективной, могла масштабироваться и предлагалась бесплатно — что тоже было важно, поскольку услуга очень востребована у клиентов Cloudflare.


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

Кроме того, возникали проблемы в некоторых регионах, где сервисы Google периодически блокируются. В одном только Китае живёт 25% всех пользователей интернета в мире. Поскольку некоторые из них не могут зайти на сайты из-за капчи Cloudflare, то это уже становится и нашей проблемой.

Проблем конфиденциальности и блокировки было достаточно, чтобы задуматься об отказе от reCAPTCHA. Но у нас банально не доходили руки до этого. Как и большинству технологических компаний, нам трудно было поставить приоритет на удаление какой-то функции, которая нормально работала в большинстве случаев, вместо реализации совершенно новой полезной функциональности для своих клиентов.


Ранее в этом году Google сообщила о введении платы за reCAPTCHA. Компания полностью в своём праве. Учитывая объём трафика Cloudflare, несомненно, такие расходы на сервис reCAPTCHA заметны даже для Google.

И это вполне рациональное решение для Google. Если стоимость обучения классификации изображений в машинном обучении не окупает затрат на reCAPTCHA, то имеет смысл попросить некоторую оплату за свою услугу. В нашем случае выходит несколько миллионов долларов в год на использование reCAPTCHA только для бесплатных пользователей. Наконец, у нас накопилось достаточно факторов, чтобы начать поиск лучшей альтернативы.


Мы оценили ряд провайдеров капчи, а также построили собственную систему. В конце концов, признали лучшей альтернативой hCaptcha. Вот факторы, которые обеспечили победу этой системе:

  1. они не продают персональные данные, собирают только минимально необходимую информацию, прозрачны в описании, что именно собирают и как используют, и они обязались использовать эти данные только для сервиса hCaptcha в Cloudflare;
  2. производительность (как по скорости загрузки тестов, так и по скорости решения задач) во время нашего A/B тестирования оказалась так же хороша или лучше, чем мы ожидали;
  3. надёжное решение для слабовидящих и других пользователей с проблемами доступа;
  4. поддержка Privacy Pass, чтобы уменьшить частоту капчей;
  5. работа в регионах, где заблокирован Google;
  6. сотрудники hCaptcha оказались крайне отзывчивы и эффективны.


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

Мы сотрудничаем с hCaptcha по двум направлениям. Во-первых, стараемся перенести большую часть технической нагрузки hCaptcha на свою платформу, чтобы снизить их затраты. Во-вторых, мы предложили поменять сторону платежа, чтобы не они платили нам, а мы платили им. Это гарантирует им ресурсы для масштабирования своих услуги и удовлетворения наших потребностей. Хотя это влечёт некоторые дополнительные расходы, но они гораздо дешевле reCAPTCHA. А взамен — гораздо более гибкая платформа и гораздо более отзывчивая команда.


Когда мы только начали работать над этим проектом, предполагалось, что главными триггерами для капчи станут явные правила для файрвола и ботов — Cloudflare Bot Management и Firewall. Но предположение оправдалось лишь отчасти. В то время как Firewall/Bots стали главным триггером, на них приходится лишь немногим более 50% капч.

Вот раскладка в процентном отношении, когда демонстрируется капча для клиентов Cloudflare:

Правила для файрвола и ботов — 54,8%
IP-файрвол — 18,6%
Уровень безопасности — 16,8%
DDoS — 6,3%
Ограничение трафика — 1,7%
Правила WAF — 1,5%
Прочие — 0,3%

Firewall/Bots rules — это правила, написанные нашими клиентами, для безусловной демонстрации капчи. Например, безусловный показ капчи, если вероятность бота (Bot Management score) ниже значения для автоматической блокировки запросов, но выше некоего другого порогового значения. Ещё одно распространённое правило — капча для 100% всех запросов ко всему сайту или определённой конечной точке. Таким образом клиенты пытаются ограничить трафик или помешать автоматизированным системам выполнять какие-то действия на сайте вроде заполнения учётных данных на странице авторизации в систему или автоматического заполнения формы с регистрационными данными. Это приводит к тому, что некоторые сайты на Cloudflare выдают сотни миллионов капч в день.

Вторая по популярности причина — наш IP-файрвол. Эти правила похожи на правила для файрвола и ботов, но гораздо более общие — на уровне IP, ASN или страны. Большинство капч генерируется по правилам для ASN или страны. Предположительно, наши клиенты испытывают некоторый уровень недоверия к посетителям из определённых ASN (например, из облачной инфраструктуры) или определённых стран.

Далее идут уровни безопасности. Здесь два варианта использования: 1) как тупой инструмент репутации IP-адресов и 2) режим обороны (I«m Under Attack Mode). Хотя мы рекомендуем клиентам использовать второй режим только во время активной DDoS-атаки, некоторые клиенты оставляют эту опцию на постоянной основе как рудиментарную форму ограничения скорости и фильтрации трафика.

Время от времени капчи включаются одной из автоматизированных систем: недавно наши специалисты из отдела защиты от DDoS-атак научили Gatebot автоматически включать капчи для сглаживания небольших пиков трафика в определённых сценариях. Теперь Gatebot может создавать временные правила для демонстрации капчи потенциальным злоумышленникам.

Наконец, некоторые клиенты ставят капчу в качестве переопределяющего действия в наборах правил для ограничения трафика (Rate Limiting) или для WAF.

Мы также посмотрели, клиенты какого типа чаще всего запрашивают капчи. Так, на бесплатных клиентов приходится примерно 40–60% от общего количества капч в Cloudflare. Среди платных выделяются корпоративные. По нашим расчётам, Cloudflare придётся выдавать несколько миллионов капч в секунду, если один или несколько клиентов попадут под атаку.


Любое изменение в наших системах всегда значительно улучшает ситуацию для отдельных клиентов, но временно ухудшает для других. Мы и команда hCaptcha стремимся решать любые проблемы. Если у вас как клиента Cloudflare возникли проблемы с новой реализацией hCaptcha, пожалуйста, опубликуйте сообщение на форуме или откройте тикет с максимально подробной информацией.

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

20d46f79673b7084d3096c5750788f1e.png

Нам кажется, что визуальные (и звуковые) капчи — не идеальное решение. Cloudflare старается уменьшить количество показов капчи, а со временем надеемся полностью их исключить. Разработчики новой системы называют её во внутреннем чате не «New CAPTCHA», а »(No)CAPTCHA».

© Habrahabr.ru