Lite_stream
@Lite_stream

Proof of work как защита от разного вида спама?

Исходные данные: есть онлайн видео редактор (веб клиент)

Проблема: пользователь может спамить псевдо пустыми видосами, захламляя место на сервере

Есть ли какие-либо недостатки у следующего подхода: взять хэш-функцию, расчёт которой довольно мал (чтобы валидировать на сервере безболезненно), для target'а Proof of wark'а выбрать такие подходящие хэши, чтобы для среднего пользователя расчёт был 5-15 секунд (оно будет считаться при сохранении отредактированного видоса, и при сохранении можно показать пользователю прогресс бар с хинтами мол идёт обработка видео (а не расчёт хэша :), поэтому по UX'у не должно ударить)), скажем, на 1'000'000 раундов (то есть вероятность подходящего хэша 1/1e6), а в качестве данных хэша взять:
unix дата (валидные будут считать только +- n времени) + данные видоса + id пользователя + nonce
Ну и собственно валидным считается только тот видос, хэш (что выше) удовлетворяет условию target'а
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
pro100chel
@pro100chel
Python && PHP Developer
Эффективность и применимость PoW в любой защите (будь то спам, дудос или еще что) зависит от многих факторов.

Давай пройдемся по твоей проблеме. Кто-то засерает твой сервер пустыми видосами. Ты решил поставить PoW защиту. При правильной реализации, злоумышленник, действительно больше не сможет спамить видосами очень часто, поскольку для валидации каждой загрузки ему потребуется произвести работу. Проблема вроде как решена.

Теперь давай рассмотрим воздействие данной меры на обычных пользователей. Проблема как таковая только одна - клиенты с упоротым железом, а это: мобилки (в том числе и древние), и калькуляторы (говнобуки и древние десктопы). Да, параметры защиты можно корректировать (сдвигом roundов хеширования), но есть большая проблема - разница вычислительных ресурсов может быть огромной. Возьми, какой-нибудь говнобук из 2к10 и комп от хупер писи за 500к, не стоит думаю объяснять разницу в производительности. В итоге получаем невозможность какой-либо медианы, применимой абсолютно для всех пользователей. Для большинства пользователей - вполне возможно, что найдем среднее значение производительности, но не для всех, у кого-то точно будет вычисляться очень долго. Внедрение индивидуальных параметров хеширования для каждого пользователя в зависимости от его производительности (как либо считаем хешрейт и на сервер отправляем для генерации задачи) добавляет уязвимость (возможность подделки значений производительности злоумышленником) и делает защиту менее эффективной.

Теперь рассмотрим эффективность защиты (фактор замедления злоумышленника) и сделаем несколько выводов.

1. Старым методом злоумышленник больше не сможет вредить системе. (после внедрения защиты злоумышленнику придется ковырять как все устроено и писать обход защиты).

2. После написания обхода, злоумышленник на том же устройстве (откуда шла атака) сможет выполнить X запросов (X зависит от производительности его устройства и параметров PoW защиты).

3. Злоумышленник в случае, если его не будет устраивать скорость атаки, сможет делегировать выполнение работы для обхода PoW-защиты на сторонние устройства. Другие личные компьютеры, дедики или ботнет.
В случае использования, некоторых алгоритмов хеширования (предположим sha256), злоумышленник может воспользоваться специализированными устройствами (ASIC) для получения огромной производительности. Так же выполнение хеширования можно возложить на GPU, что также даст высокую производительность.

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

==========
Борьба защиты и атаки бесконечна и каждому действию защитников есть противодействие со стороны злоумышленников.

Задача защитников не сделать систему на 100% защищенной (это с большой долей вероятности невозможно), а максимально снизить воздействие атакующих на систему и сделать атаку невыгодной (дорогой) для злоумышленников.

Внедрение защиты PoW доставляет проблемы злоумышленникам в виде необходимости реверс-инженеринга клиентской части защиты, необходимости поиска ресурсов для решения задач (покупка/аренда/наличие) и внедрение системы распределения задач хеширования.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
У подхода минусов возможно и нет, потому что PoW изначально как защита от спама и задумывался, а вот с реализацией могут быть проблемы, например антивирусы могут ругаться, принимая за майнер, ОС видя 100% загрузку процесса может начать прижимать ресурсы для приложения, для пользователя 10-15 секунд это очень большое время, а для атакующего 10-15 секунд CPU может быть вполне приемлемое время, смотря какие прибыли он из этого извлекает.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы