Поскольку во всех типах капчи системы ИИ показывают результат лучше человека, исследователи задались задачей придумать более эффективные методы защиты от ботов.
Например, 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 состоит в том, чтобы сервер злоумышленника проделывали больше работы для отправки запроса, чем ваш сервер для выдачи ответа. Сугубо экономический расчёт.
Для регистрации в системе нужно создать новый аккаунт и добавить туда свой сайт:
Среди прочего, указать три параметра:
- среднее количество посетителей;
- максимальное количество посетителей, которое выдерживает сайт;
- граничное количество, которое сайт точно не выдержит (опционально).
От этих параметров зависит значение
Cooldown Duratoin
, которое устанавливается в секундах.Затем добавляем сгенерированный сниппет на страницы сайта и логику проверки на сервер. Разработчик заявляет, что виджет mCaptcha и админская панель полностью совместимы c LibreJS и другими блокировщиками, то есть не должны блокироваться:
Другие виды CAPTCHA
Основное предназначение CAPTCHA — защита сайтов от DDoS-атак, то есть от массированного трафика со стороны ботов, в том числе защита от брутфорса (поиске паролей методом перебора). В процессе такой атаки есть смысл включить фильтрацию посетителей с помощью CAPTCHA, что делает проведение атаки на порядок дороже и потенциально нерентабельным для злоумышленника.
Новые методы приходится придумывать в том числе из-за бурного прогресса в машинного обучения, которое в задачах распознавания образов уже превосходит человека.
Разновидности CAPTCHA
Поэтому для детектирования людей предлагаются иные альтернативы, в том числе логические игры, сложноструктурированные вопросы и задачи. Пока ни один из них не работает достаточно надёжно — одни задачи оказываются слишком сложны для обывателей, а другие слишком просты, так что их можно автоматизировать.
Время и точность решения различных типов CAPTCHA людьми и ботами, источник
На сегодняшний день точность ботов в решении задач составляет 85–100%, причём в большинстве задач она превышает 96%. Это существенно превышает диапазон точности человека (50–85%). Кроме того, время решения задач ботами значительно ниже во всех случаях, за исключением reCAPTCHA, где время решения человеком (18 с) практически совпадает со временем решения ботами 17,5 с).
Таким образом, со всеми типами CAPTCHA боты сейчас справляются лучше человека.
Хабы: Информационная безопасность, Обработка изображений, Open Source, Разработка веб-сайтов
Метки:
Обложка для соцсетей:
Комментарии (20)
Alexey2005
24.09.2023 16:55-3Пора переходить на PoS вместо капчи, чтобы сайт на каждый запрос просто временно снимал некоторую сумму с кредитки, потом возвращая её обратно.
Это сразу отсечёт кучу потенциальных ботов, поскольку придётся заводить множество рабочих карточек, да ещё и держать на них приличную сумму денег. Уже 100500 запросов в секунду не сделаешь, потому что тогда в PoS потребуется "завесить" миллионы баксов.rsashka
24.09.2023 16:55+7Еще не хватало реквизиты карты раздавать на каждом сайте, чтобы кто-то деньги снимал.
miralumix
24.09.2023 16:55Тогда лучше сразу ввести верификацию по паспорту, чтобы в случае дудоса можно было просто проверить документы злоумышленника)
akakoychenko
24.09.2023 16:55+11Лично у меня, когда заходят разговоры о PoW для капчи, только возникает риторический вопрос, - идеологи реально настолько недальновидны, что не думают о последствиях, или им просто пофиг на них?
Реальным злоумышленникам (а не студенту, захотевшему попарсить ради изучения питона) вычислительные мощности для подобных задач обходятся невероятно дешево. Ботнеты, хостинг, взятый за ворованные кредитки. Надо будет капчу браузером решать - начнут ломать мелкие сайты и использовать браузеры их посетителей в период посещения, как ботнет, будут в расширения хрома инжектить решатели. Когда надо найти где-то вычислительную мощность, чтобы загрузить одно ядро на 3-5 секунд с контекстом сильно меньше мегабайта, то для хакера вариантов почти бесконечное множество. Они эту мощность найдут, но заплатят за это простые пользователи, у которых будут чуть меньше держать батареи, чуть дольше сайты открываться, и так далее, ибо и за себя, и сотню парней порассчитывать надо.
Ну и да, кто реально выиграет, так это производители железа. Они то и раньше выигрывали за счет постоянного ожирения софта и факта, что пяти-восьмилетнего смартфона не хватает для банального мессенджинга и серфинга, и владельцу полностью исправного устройства с такими же требованиями к нему, как и в момент покупки, приходится его обновлять, так теперь, за счёт капч, железо начнёт ещё быстрее и радикальнее устаревать, ибо сложность должна будет постоянно и неуклонно расти, чтобы удерживать себестоимость одного решения на одном и том же уровне, невзирая на появления нового железа
Barnaby
24.09.2023 16:55+5Поскольку во всех типах капчи системы ИИ показывают результат лучше человека, исследователи задались задачей придумать более эффективные методы защиты от ботов.
Для ограничения скорости работы пользователей в mCaptcha используется система proof-of-work (PoW) на основе SHA256.
Хотите сказать что решение традиционной капчи через ИИ требует меньше ресурсов, чем расчет SHA256 который можно делать даже на старом асике для биткоина? Звучит крайне неубедительно.
aamonster
24.09.2023 16:55+2Что-то меня эта идея смущает.
Грубо говоря, если мы хотим, чтобы злоумышленник на доступ к ресурсу потратил 1 цент – то и нормальный юзер потратит 1 цент (а то и больше, учитывая, что злоумышленники могут купить ресурсы оптом задёшево). Т.е. эдакий paywall – но спрятанный?
nixtonixto
24.09.2023 16:55-21 цент среднестатистический юзер не считает — вовремя выключив свет или воду, можно сэкономить больше. А вот для злоумышленника это может превратиться в миллион центов.
SanSYS
24.09.2023 16:55+1злоумышленнику невыгодно брать на себя такую нагрузку для DDoS-атаки.
для DDoS этого и не требуется
Капча защищает эндпоинты от различных атак методом перебора, а не от кучки машин, цель которых довести сервис до отказа в обслуживании
А это можно сделать и без прохождения капч, разве что ваш WAF не отвечает за её решениеТак что даже простецкий скрипт гугл рекапчи в3, который ничего пользователю последние лет 5 не показывает, ощутимо сократит количество потенциальных желающих побрутфорсить ваши апишки
Ещё немного про DDoS: а как ваш сервис себя поведёт, если на него упадёт 100_000 неверно решённых капч ща минуту?
pda0
24.09.2023 16:55Ещё немного про DDoS: а как ваш сервис себя поведёт, если на него упадёт 100_000 неверно решённых капч ща минуту?
По идее должен нормально. Для сервера не требуется ничего считать, только проверить на равенство пару строк.
SanSYS
24.09.2023 16:55Я про ситуацию, когда капча не end-to-end, а с независимой третьей стороной (так типа правильно)
Возьмём для примера самые популярные:
IvanPetrof
24.09.2023 16:55Байка
В доме знаменитого американского изобретателя Томаса Эдисона была весьма необычная входная дверь. Очень-очень тугая. Знакомые Эдисона, заходя к нему в гости, всё время удивлялись и даже возмущались – почему так тяжело открывается входная калитка. Кто-то из друзей сказал ему: - Такой гений, как ты, Томас, мог бы сконструировать калитку получше.
- А мне кажется, - ответил Эдисон, - калитка сконструирована прекрасно. Она соединена с насосом домашнего водопровода. Каждый, кто приходит ко мне, накачивает в цистерну 20 литров воды.
собственно вопрос: Существуют ли алгоритмы pow, решающие реально нужные задачи, а не просто молотящие бесполезные хэши?
hierarchical
24.09.2023 16:55Майнинг в браузере. Но это уже злой умысел со стороны сайта.
IvanPetrof
24.09.2023 16:55Я немного про другое. Говоря pow я и имел в виду майнинг. Только сегодня майнинг работает работу по поиску "красивых" хэшей, а было бы прикольно, если бы работу, которую выполняют стороны, можно было полезно использовать (типа различных проектов распределённых вычислений ( seti@home или какой другой поиск лекарств. Да хоть обучение нейросетей)).
johnfound
24.09.2023 16:55Как работает mCaptcha
Замедляем и загружаем всех. Людям пофиг, так как уже привыкли к медленным сайтам, а ботам будет плохо потому что дорого.
Я правильно понял концепцию?
pda0
24.09.2023 16:55Написал ниже как делал своё такое. Каптча защищает форму ввода. Подбор сложности можно сделать так, чтобы выполнение занимало пару секунд. За это время человек едва ли успеет ввести текст. Т.е. честный пользователь и не заметит, что что-то работало.
pda0
24.09.2023 16:55Делал такую систему лет 15 назад. :) Задолбали спамеры - реализовал такой подход. В форму отправлялся скрипт считающий sha1, хеш и часть сообщения. Скрипту надо было подобрать остальное и вставить в форму, которая проверялась при постинге сообщения. Сложность была подобрана так, что бы вычислялось за пару секунд.
Нажимать ничего не надо было. Просто через пару секунд кнопка "отправить" становилась активной.
Поскольку защита нужна была от спамеров, то каптча включалась только при регистрации и трёх первых постах.
Nurked
Тоесть сидим и джём спамеров с квантовыми компьютерами, которые будут считать капчи за битки?
YegorP
А с квантовыми компьютерами кому-то нужны будут битки? И спамеры?
Nurked
Кстати, если битки таки да, то вот про спаммеров не знаю. Мне кажется ещё древние научились спамить и облапошивать.