![](https://habrastorage.org/webt/mr/nd/-s/mrnd-splhzsy4ahqblu67xu1hie.png)
Поскольку во всех типах капчи системы ИИ показывают результат лучше человека, исследователи задались задачей придумать более эффективные методы защиты от ботов.
Например, mCaptcha — опенсорсная CAPTCHA, работающая по принципу proof-of-work. Её уже можно встретить на некоторых сайтах.
mCaptcha не требует распознавать картинки велосипедов или тротуаров, она работает гораздо проще, обычно посетителю достаточно нажать одну кнопку. Здесь не нужно решать головоломки, просто mCaptcha нагружает компьютер пользователя вычислительными задачами — и проверяет результат. Предполагается, что злоумышленнику невыгодно брать на себя такую нагрузку для DDoS-атаки.
Как работает mCaptcha
Алгоритм работы простой.
Для ограничения скорости работы пользователей в mCaptcha используется система proof-of-work (PoW) на основе SHA256.
Когда пользователь хочет что-то сделать на сайте, защищённом mCaptcha,
- Он должен сгенерировать доказательство работы (много математических вычислений, которые займут некоторое время) и отправить его mCaptcha.
- Доказательство проверяется:
- В случае неуспешной проверки доступ к сайту блокируется.
- Если проверка прошла успешно, читайте дальше, будет выдан токен, который необходимо отправить вместе с запросом/формой на целевой сайт.
- В случае неуспешной проверки доступ к сайту блокируется.
- Перед обработкой запроса целевой сайт проверяет отправленный токен с помощью mCaptcha.
Как видим, система работает просто. С точки зрения пользователя всё автоматизировано. От него требуется только нажать на кнопку, чтобы инициировать процесс.
Алгоритм mCaptcha динамически изменяет сложность PoW, так что обычный пользователь даже не заметит задержки при доступе к сайту. С другой стороны, серверы потенциальных злоумышленников будут серьёзно нагружать вычислительными задачами (задержка до 2–3 секунд перед доступом к сайту), что сделает их работу нерентабельной. Вот примерное время выполнения теста (WASM-библиотека) на процессоре Core i7-9750H в разных Firefox и Chromium (в миллисекундах):
Сложность | Firefox (мс) | Chromium (мс) |
---|---|---|
500000 | 401 | 399 |
1000000 | 413 | 355 |
1500000 | 398 | 351 |
2000000 | 394 | 354 |
2500000 | 1495 | 1338 |
3000000 | 1556 | 1311 |
3500000 | 3971 | 3418 |
4000000 | 4235 | 3488 |
4500000 | 4116 | 3458 |
Основная идея mCaptcha состоит в том, чтобы сервер злоумышленника проделывали больше работы для отправки запроса, чем ваш сервер для выдачи ответа. Сугубо экономический расчёт.
Для регистрации в системе нужно создать новый аккаунт и добавить туда свой сайт:
![](https://habrastorage.org/webt/eo/hz/uy/eohzuyqepa5mypgjq-fmmsowges.png)
Среди прочего, указать три параметра:
- среднее количество посетителей;
- максимальное количество посетителей, которое выдерживает сайт;
- граничное количество, которое сайт точно не выдержит (опционально).
От этих параметров зависит значение
Cooldown Duratoin
, которое устанавливается в секундах.Затем добавляем сгенерированный сниппет на страницы сайта и логику проверки на сервер. Разработчик заявляет, что виджет mCaptcha и админская панель полностью совместимы c LibreJS и другими блокировщиками, то есть не должны блокироваться:
![](https://habrastorage.org/webt/v0/pj/k9/v0pjk9uct5ji6ozho79b-ouasps.jpeg)
Другие виды CAPTCHA
Основное предназначение CAPTCHA — защита сайтов от DDoS-атак, то есть от массированного трафика со стороны ботов, в том числе защита от брутфорса (поиске паролей методом перебора). В процессе такой атаки есть смысл включить фильтрацию посетителей с помощью CAPTCHA, что делает проведение атаки на порядок дороже и потенциально нерентабельным для злоумышленника.
Новые методы приходится придумывать в том числе из-за бурного прогресса в машинного обучения, которое в задачах распознавания образов уже превосходит человека.
![](https://habrastorage.org/webt/za/bs/tk/zabstkaj6yd4vt7k2drqdae7dga.png)
Разновидности CAPTCHA
Поэтому для детектирования людей предлагаются иные альтернативы, в том числе логические игры, сложноструктурированные вопросы и задачи. Пока ни один из них не работает достаточно надёжно — одни задачи оказываются слишком сложны для обывателей, а другие слишком просты, так что их можно автоматизировать.
![](https://habrastorage.org/webt/wy/gv/b0/wygvb0gfowjwmo-hnupnyomrmfo.png)
Время и точность решения различных типов CAPTCHA людьми и ботами, источник
На сегодняшний день точность ботов в решении задач составляет 85–100%, причём в большинстве задач она превышает 96%. Это существенно превышает диапазон точности человека (50–85%). Кроме того, время решения задач ботами значительно ниже во всех случаях, за исключением reCAPTCHA, где время решения человеком (18 с) практически совпадает со временем решения ботами 17,5 с).
Таким образом, со всеми типами CAPTCHA боты сейчас справляются лучше человека.
Хабы: Информационная безопасность, Обработка изображений, Open Source, Разработка веб-сайтов
Метки:
Обложка для соцсетей: