Поскольку во всех типах капчи системы ИИ показывают результат лучше человека, исследователи задались задачей придумать более эффективные методы защиты от ботов.

Например, mCaptcha — опенсорсная CAPTCHA, работающая по принципу proof-of-work. Её уже можно встретить на некоторых сайтах.

mCaptcha не требует распознавать картинки велосипедов или тротуаров, она работает гораздо проще, обычно посетителю достаточно нажать одну кнопку. Здесь не нужно решать головоломки, просто mCaptcha нагружает компьютер пользователя вычислительными задачами — и проверяет результат. Предполагается, что злоумышленнику невыгодно брать на себя такую нагрузку для DDoS-атаки.

Как работает mCaptcha


Алгоритм работы простой.

Для ограничения скорости работы пользователей в mCaptcha используется система proof-of-work (PoW) на основе SHA256.

Когда пользователь хочет что-то сделать на сайте, защищённом mCaptcha,

  1. Он должен сгенерировать доказательство работы (много математических вычислений, которые займут некоторое время) и отправить его mCaptcha.
  2. Доказательство проверяется:
    • В случае неуспешной проверки доступ к сайту блокируется.
    • Если проверка прошла успешно, читайте дальше, будет выдан токен, который необходимо отправить вместе с запросом/формой на целевой сайт.
  3. Перед обработкой запроса целевой сайт проверяет отправленный токен с помощью 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 состоит в том, чтобы сервер злоумышленника проделывали больше работы для отправки запроса, чем ваш сервер для выдачи ответа. Сугубо экономический расчёт.

Для регистрации в системе нужно создать новый аккаунт и добавить туда свой сайт:



Среди прочего, указать три параметра:

  • среднее количество посетителей;
  • максимальное количество посетителей, которое выдерживает сайт;
  • граничное количество, которое сайт точно не выдержит (опционально).

От этих параметров зависит значение Cooldown Duratoin, которое устанавливается в секундах.

Затем добавляем сгенерированный сниппет на страницы сайта и логику проверки на сервер. Разработчик заявляет, что виджет mCaptcha и админская панель полностью совместимы c LibreJS и другими блокировщиками, то есть не должны блокироваться:



Другие виды CAPTCHA


Основное предназначение CAPTCHA — защита сайтов от DDoS-атак, то есть от массированного трафика со стороны ботов, в том числе защита от брутфорса (поиске паролей методом перебора). В процессе такой атаки есть смысл включить фильтрацию посетителей с помощью CAPTCHA, что делает проведение атаки на порядок дороже и потенциально нерентабельным для злоумышленника.

Новые методы приходится придумывать в том числе из-за бурного прогресса в машинного обучения, которое в задачах распознавания образов уже превосходит человека.


Разновидности CAPTCHA

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


Время и точность решения различных типов CAPTCHA людьми и ботами, источник

На сегодняшний день точность ботов в решении задач составляет 85–100%, причём в большинстве задач она превышает 96%. Это существенно превышает диапазон точности человека (50–85%). Кроме того, время решения задач ботами значительно ниже во всех случаях, за исключением reCAPTCHA, где время решения человеком (18 с) практически совпадает со временем решения ботами 17,5 с).

Таким образом, со всеми типами CAPTCHA боты сейчас справляются лучше человека.

Хабы: Информационная безопасность, Обработка изображений, Open Source, Разработка веб-сайтов
Метки:
Обложка для соцсетей:

Комментарии (20)


  1. Nurked
    24.09.2023 16:55
    +1

    Тоесть сидим и джём спамеров с квантовыми компьютерами, которые будут считать капчи за битки?


    1. YegorP
      24.09.2023 16:55
      +1

      А с квантовыми компьютерами кому-то нужны будут битки? И спамеры?


      1. Nurked
        24.09.2023 16:55
        +1

        Кстати, если битки таки да, то вот про спаммеров не знаю. Мне кажется ещё древние научились спамить и облапошивать.


  1. ubx7b8
    24.09.2023 16:55
    +4

    Про PoW была статья 2 года назад - PoW вместо капчи / Хабр (habr.com)


  1. Alexey2005
    24.09.2023 16:55
    -3

    Пора переходить на PoS вместо капчи, чтобы сайт на каждый запрос просто временно снимал некоторую сумму с кредитки, потом возвращая её обратно.
    Это сразу отсечёт кучу потенциальных ботов, поскольку придётся заводить множество рабочих карточек, да ещё и держать на них приличную сумму денег. Уже 100500 запросов в секунду не сделаешь, потому что тогда в PoS потребуется "завесить" миллионы баксов.


    1. rsashka
      24.09.2023 16:55
      +7

      Еще не хватало реквизиты карты раздавать на каждом сайте, чтобы кто-то деньги снимал.


    1. miralumix
      24.09.2023 16:55

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


  1. akakoychenko
    24.09.2023 16:55
    +11

    Лично у меня, когда заходят разговоры о PoW для капчи, только возникает риторический вопрос, - идеологи реально настолько недальновидны, что не думают о последствиях, или им просто пофиг на них?

    Реальным злоумышленникам (а не студенту, захотевшему попарсить ради изучения питона) вычислительные мощности для подобных задач обходятся невероятно дешево. Ботнеты, хостинг, взятый за ворованные кредитки. Надо будет капчу браузером решать - начнут ломать мелкие сайты и использовать браузеры их посетителей в период посещения, как ботнет, будут в расширения хрома инжектить решатели. Когда надо найти где-то вычислительную мощность, чтобы загрузить одно ядро на 3-5 секунд с контекстом сильно меньше мегабайта, то для хакера вариантов почти бесконечное множество. Они эту мощность найдут, но заплатят за это простые пользователи, у которых будут чуть меньше держать батареи, чуть дольше сайты открываться, и так далее, ибо и за себя, и сотню парней порассчитывать надо.

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


  1. Barnaby
    24.09.2023 16:55
    +5

    Поскольку во всех типах капчи системы ИИ показывают результат лучше человека, исследователи задались задачей придумать более эффективные методы защиты от ботов.

    Для ограничения скорости работы пользователей в mCaptcha используется система proof-of-work (PoW) на основе SHA256.

    Хотите сказать что решение традиционной капчи через ИИ требует меньше ресурсов, чем расчет SHA256 который можно делать даже на старом асике для биткоина? Звучит крайне неубедительно.


  1. aamonster
    24.09.2023 16:55
    +2

    Что-то меня эта идея смущает.

    Грубо говоря, если мы хотим, чтобы злоумышленник на доступ к ресурсу потратил 1 цент – то и нормальный юзер потратит 1 цент (а то и больше, учитывая, что злоумышленники могут купить ресурсы оптом задёшево). Т.е. эдакий paywall – но спрятанный?


    1. nixtonixto
      24.09.2023 16:55
      -2

      1 цент среднестатистический юзер не считает — вовремя выключив свет или воду, можно сэкономить больше. А вот для злоумышленника это может превратиться в миллион центов.


  1. SanSYS
    24.09.2023 16:55
    +1

    злоумышленнику невыгодно брать на себя такую нагрузку для DDoS-атаки.

    для DDoS этого и не требуется

    Капча защищает эндпоинты от различных атак методом перебора, а не от кучки машин, цель которых довести сервис до отказа в обслуживании
    А это можно сделать и без прохождения капч, разве что ваш WAF не отвечает за её решение

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

    Ещё немного про DDoS: а как ваш сервис себя поведёт, если на него упадёт 100_000 неверно решённых капч ща минуту?


    1. pda0
      24.09.2023 16:55

      Ещё немного про DDoS: а как ваш сервис себя поведёт, если на него упадёт 100_000 неверно решённых капч ща минуту?

      По идее должен нормально. Для сервера не требуется ничего считать, только проверить на равенство пару строк.


      1. SanSYS
        24.09.2023 16:55

        Я про ситуацию, когда капча не end-to-end, а с независимой третьей стороной (так типа правильно)

        Возьмём для примера самые популярные:


  1. IvanPetrof
    24.09.2023 16:55

    Байка

    В доме знаменитого американского изобретателя Томаса Эдисона была весьма необычная входная дверь. Очень-очень тугая. Знакомые Эдисона, заходя к нему в гости, всё время удивлялись и даже возмущались – почему так тяжело открывается входная калитка. Кто-то из друзей сказал ему: - Такой гений, как ты, Томас, мог бы сконструировать калитку получше.

    - А мне кажется, - ответил Эдисон, - калитка сконструирована прекрасно. Она соединена с насосом домашнего водопровода. Каждый, кто приходит ко мне, накачивает в цистерну 20 литров воды.

    собственно вопрос: Существуют ли алгоритмы pow, решающие реально нужные задачи, а не просто молотящие бесполезные хэши?


    1. hierarchical
      24.09.2023 16:55

      Майнинг в браузере. Но это уже злой умысел со стороны сайта.


      1. IvanPetrof
        24.09.2023 16:55

        Я немного про другое. Говоря pow я и имел в виду майнинг. Только сегодня майнинг работает работу по поиску "красивых" хэшей, а было бы прикольно, если бы работу, которую выполняют стороны, можно было полезно использовать (типа различных проектов распределённых вычислений ( seti@home или какой другой поиск лекарств. Да хоть обучение нейросетей)).


  1. johnfound
    24.09.2023 16:55

    Как работает mCaptcha

    Замедляем и загружаем всех. Людям пофиг, так как уже привыкли к медленным сайтам, а ботам будет плохо потому что дорого.


    Я правильно понял концепцию?


    1. pda0
      24.09.2023 16:55

      Написал ниже как делал своё такое. Каптча защищает форму ввода. Подбор сложности можно сделать так, чтобы выполнение занимало пару секунд. За это время человек едва ли успеет ввести текст. Т.е. честный пользователь и не заметит, что что-то работало.


  1. pda0
    24.09.2023 16:55

    Делал такую систему лет 15 назад. :) Задолбали спамеры - реализовал такой подход. В форму отправлялся скрипт считающий sha1, хеш и часть сообщения. Скрипту надо было подобрать остальное и вставить в форму, которая проверялась при постинге сообщения. Сложность была подобрана так, что бы вычислялось за пару секунд.

    Нажимать ничего не надо было. Просто через пару секунд кнопка "отправить" становилась активной.

    Поскольку защита нужна была от спамеров, то каптча включалась только при регистрации и трёх первых постах.