Remove ads
принцип защиты сетевых систем от злоупотребления услугами Из Википедии, свободной энциклопедии
Доказательство выполнения работы (англ. proof-of-work, POW, PoW) — принцип защиты сетевых систем от злоупотребления услугами (например, от DoS-атак, организации рассылок спама или публикации своей, альтернативной, версии цепочек блоков в блокчейн). Идея в том, что можно настолько усложнить клиенту доступ к обращениям на сервер, что злоупотребления массовыми обращениями станут принципиально нерентабельными. Для этого при каждом обращении к серверу клиент должен предоставить результат выполнения некоторой достаточно длительной работы (например, решение задачи), результат которой легко и быстро проверяется на стороне сервера (см. односторонняя функция). Главная особенность применяемых вычислений заключается в асимметрии затрат времени — они значительны на нахождение решения и весьма малы для проверки[1]. Подобные схемы также известны как client puzzle (функция клиентской головоломки), computational puzzle (вычислительная головоломка), или CPU pricing function.
Не следует путать этот способ защиты с капчами, которые предлагают задачи, лёгкие для человека, но трудные или вовсе неразрешимые для компьютера. Доказательство выполнения работы изначально ориентировано на нахождение решения по заранее известному алгоритму за некоторое конечное время, но для проверки полученного решения требуется относительно малое количество операций[1]. Наибольшее распространение и развитие POW-технологии получили в криптовалютных системах.
Впервые выдвижение требования доказательства выполнения работы приведено в статье «Pricing via Processing or Combatting Junk Mail»[1] в 1993 году. Авторы предложили следующую идею: для доступа к общему ресурсу пользователь должен вычислить некоторую функцию, весьма сложную и ресурсоёмкую, но при этом решаемую за приемлемое время. Вычисление функции на стороне клиента должно быть гораздо сложнее, чем проверка результата на стороне сервера. Одним из обязательных требований к функции является её неамортизируемость — при нахождении нескольких решений времени требовалось бы пропорционально их количеству. По предположению авторов, подобные дополнительные расчёты не создают препятствий для отправки нескольких обычных писем с компьютера рядового пользователя, но необходимость постоянных вычислений делает отправку спама очень ресурсоёмкой. По независимым оценкам, подобные системы приводят фактически к существенному ограничению количества писем, которые возможно отправить за день с одного компьютера[2].
В 1997 году Адам Бэк запустил проект Hashcash, посвящённый защите от спама. Задача формулировалась следующим образом: «Найти такое значение x, что хеш SHA(x) содержал бы N старших нулевых бит».
В 1999 году появляется термин proof of work — использован он был в статье «Proofs of Work and Bread Pudding Protocols» (авторы — Маркус Якобссон и Ари Джуелс) в журнале Communications and Multimedia Security[3].
16 августа 2004 года Хэл Финни в своём письме на форуме шифропанков предложил использовать многоразовое доказательство выполнения работы (англ. reusable proof-of-work, RPOW, RPoW) для организации электронной валюты[4].
Вскоре Сатоси Накамото предложил криптовалюту биткойн, где доказательство выполнения работы использовано для значительного усложнения двойного расходования. Было предложено нахождение хеша блока информации через функцию SHA-256 с подбором параметров, чтобы у результата заданное число старших бит было нулевым. В дальнейшем в других криптовалютах (например Litecoin) вместо SHA-256 стали применяться KDF, такие как scrypt, bcrypt, PBKDF2 и другие[5].
Список наиболее распространённых функций, применяемых в системах доказательства выполнения работы:
Эксперты продолжают обсуждать, является ли POW-защита достаточно эффективной против DoS-атак и спама[16][17].
Биткойн, как и многие другие криптовалюты, потенциально может подвергаться «атаке 51 %»: если под контролем злоумышленника находится больше половины всех вычислительных мощностей сети, то у него появляется возможность подтверждать только свои блоки, при этом игнорируя чужие. Это не только позволяет ему получать всю эмитирующуюся при этом криптовалюту, но и блокировать все или выбранные транзакции, что потенциально может приводить к «исчезновению» со счетов криптовалюты, полученной по тем транзакциям, которые не будут включены в новый вариант блокчейна[11].
Двойное расходование (двойная трата) — повторная передача одних и тех же активов. Данная атака делится на несколько подтипов.
При эгоистичном майнинге (англ. selfish mining) целью злоумышленника является контроль над сетью при том, что он обладает вычислительными ресурсами суммарной мощностью менее 50 %. Это достигается за счёт того, что злоумышленник заявляет, что его пул более выгоден для майнинга, чем другие пулы, что привлекает сторонних майнеров. Атакующий публикует блоки таким образом, чтобы вычислительные ресурсы других майнеров и пулов были потрачены впустую. Приблизительный ход алгоритма такой:
Почти при каждом исходе честные майнеры оказываются в проигрыше, что вынуждает их присоединиться к преступному пулу[20].
Противники POW-подхода, помимо ряда потенциальных проблем с безопасностью, выделяют следующие недостатки:
Попытки избавиться от недостатков POW привели к появлению POS (англ. proof-of-stake, доказательство доли владения) и многочисленных гибридных вариантов.
Примеры гибридных схем, совмещающих идеи POS и POW, можно найти во многих криптовалютах. В них блокчейн состоит из блоков обоих типов, что делает переписывание историй транзакций непростой задачей, так как POW-блоки служат контрольными точками, если брать во внимание суммарную сложность работы во всей цепочке. Обычно в таких алгоритмах POW-блоки служат показателями реальной работы, что даёт дополнительную гарантию надёжности для продавцов при работе с транзакциями. POW-блоки можно использовать для эмиссии валюты, а POS-блоки - рассматривать как потенциальный доход от депозита[24].
Нереализованный пока прототип алгоритма, заключающийся в том, что холдеры вступают в общий процесс только после проведения некоторой работы POW-участниками, что уменьшает шансы на атаку 51 %, так как мажоритарный владелец не сможет единолично контролировать создание новых блоков[25].
Принцип работы алгоритма:
Деньги отправляются на адрес, являющийся хешем случайного числа, с этого адреса их гарантированно нельзя потратить, так как вероятность подобрать ключи к нему стремится к нулю. Взамен майнер получает постоянный шанс найти PoB-блок и получить за него награду. Майнинг в данном случае устроен так, что шансы на успех зависят от количества сожжённых монет. Проводя аналогии, сжигание — это как невозвратный POS-депозит или инвестиции в виртуальное железо для POW-майнинга. С экономической точки зрения данный алгоритм лучше подходит для поздних этапов развития криптовалюты, когда уже сгенерирована большая часть денежной массы[26].
Алгоритм proof of capacity (или proof of space) заключается в следующем: для майнинга необходимо выделить существенный объём памяти на компьютере, после чего многократным хешированием из публичного ключа и случайных чисел создаётся большое количество крупных блоков данных. В каждом блоке данных из последнего заголовка получаем индекс, после чего выбираем небольшой кусочек блока с этим индексом, чанк (англ. chunk). Чем больше памяти выделено, тем больше получаем чанков. Должно выполняться условие, что хеш чанка и последнего заголовка должен быть меньше, чем цель. Таким образом, каждый мегабайт памяти используется как аналог лотерейного билета и увеличивает шанс на успех при майнинге[27].
Алгоритм proof of research (доказательство проведённого исследования) был разработан в проекте GridCoin для того, чтобы направить вычислительные мощности PoW-сетей на решение научных задач на платформе BOINC. В proof of research одновременно используется proof of work для вознаграждения участников за выполненные вычисления и proof of stake для поощрения долговременного участия в проекте[28].
Системы на основе POW являются чрезвычайно ресурсоёмкими.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.