BTC $ 4492.44445818 (-3.19 %)
XRP $ 0.437358412 (-4.23 %)
ETH $ 134.10707464 (-2.85 %)
BCH $ 230.365169132 (-5.55 %)
XLM $ 0.1982334915 (-4.02 %)
EOS $ 3.7463611194 (-1.53 %)
LTC $ 33.4629566108 (-2.65 %)
USDT $ 0.9860637406 (1.23 %)
ADA $ 0.0462576178 (-3.21 %)
XMR $ 67.9987364464 (-3.87 %)

Типы атак, которые представляют угрозу для блокчейн-технологии

16:55 25/09/2018

Технические основы майнинга

 

Блокчейн

 

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

 

Консенсус

 

Консенсус достигается в тот момент, когда один пользователь предлагает дополнение к блокчейну, а остальные соглашаются принять его. Право предложить очередной блок определяется видом консенсуса. Можно сказать, что консенсус достигается пользователями при помощи нескольких различных подходов. Эти подходы опираются на вычислительные мощности пользователей, их финансовые возможности, количество потраченной криптовалюты и иные параметры.

 

Proof-of-Work

 

Самый первый способ достижения консенсуса, который используется в Биткоине и Эфириуме, называется Proof-of-Work. Согласно правилам этого консенсуса, очередной блок предлагается пользователем, который первым получит нужный результат вычислений. Пользователей, которые постоянно вычисляют хеш блоков, называют майнерами. Чем чаще пользователь вычисляет хеш, тем выше вероятность найти нужное значение. Как только оно найдено — майнер рассылает блок по сети.

 

В дальнейшем мы рассмотрим проблемы, связанные с алгоритмом Proof-of-Work в сети Биткоина.

 

Двойное расходование

 

Транзакция

 

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

 

Ожидание

 

Майнеры не находят новые блоки слишком часто. В зависимости от суммарной вычислительной мощности участников протокол меняет уровень сложности каждые 2016 блоков. Это изменение позволяет поддерживать среднее время нахождения нового блока на уровне 10 минут. Это значит, что некоторое время транзакции будут находиться в процессе ожидания. Все транзакции, принятые и проверенные майнером, помещаются в его пул ожидания. Лишь после этого они попадают в блокчейн. Чаще всего разные майнеры майнят блоки с одними и теми же транзакциями. Так происходит потому, что майнеры ориентируются на выгоду, а за каждую транзакцию они получают комиссию. Таким образом, транзакции с большой комиссией имеют больше шансов попасть в блок.

 

Раздвоение монеты

 

Теперь предположим, что нечестный пользователь решил дважды отослать одну и ту же монету биткоина. Он формирует две транзакции, в которых указывает одинаковые части поля “откуда”. Ранее некоторые сервисы проверяли транзакцию лишь на попадание в пул майнеров, но не в блок. Это позволяет избавиться от ненужного ожидания. Злоумышленники использовали именно эту особенность и получали 50% шанс на то, что в блок попадет неправильная транзакция. К тому времени, как владельцы сервиса обнаруживали обман, услуга была уже оказана.

 

Атака 51%

 

Предпосылки

 

Проведение атаки 51% предполагает выполнение определенного условия, которое, впрочем, не гарантирует успех. Скорее, его выполнение повышает вероятность успеха. Условие требует, чтобы злоумышленнику принадлежало более 51% вычислительной мощности всей сети. Вычисление хеш-функции в большой степени случайно и зависит от удачи: правильный блок можно получить как в первую минуту майнинга, так и не получить спустя многие недели на специализированной ферме. Однако чем больше у злоумышленника мощности, тем с большей вероятностью он будет находить новый блок.

 

Если у атакующих мощности не превышают 50%, то проведение такой операции называют “атакой альтернативной историей”.

 

Вторая сеть

 

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

 

Алгоритм атаки 51%:

 

  • Злоумышленник формирует две транзакции. Первая переправляет средства на счет получателя, а вторая — обратно злоумышленнику.
  • Первая транзакция транслируется в сеть, а вторая остается у злоумышленника.
  • После того, как транзакция была отправлена, злоумышленник даже не следит за ней. Он начинает генерировать цепочку из блоков параллельно с остальными участниками.
  • Как только получатель убеждается, что транзакция прошла успешно и была помещена в блокчейн, он выполняет свою часть обязательств. Злоумышленник получает услугу или товар.
  • Поскольку вероятность нахождения нового блока у злоумышленника больше, чем у остальной сети, он формирует свою секретную цепь блоков быстрее, чем остальные.
  • После того, как секретная цепь блоков будет опубликована, большинство пользователей признает ее правильной, поскольку она длиннее.

 

Последствия атаки

 

В результате правильно проведенной атаки в блокчейн попадёт неправильная транзакция вместо правильной. Получатель не получит денег, тогда как услуга будет оказана. При этом атака затрагивает только одну жертву. Остальные транзакции будут помещены в блокчейн в обычном режиме. К сожалению, выбор более длинной цепи блоков — это основное правило выбора правильной цепи. Более продвинутые варианты Proof-of-Work могут опираться на более сложные метрики — например, “вес” цепи, как это сделано в Эфириуме. Однако главной проблемы это не решает.

 

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

 

Экономический аспект

 

Один из разработчиков Биткоина Питер Тодд считает, что чем моложе криптовалюта, тем вероятнее успех такой атаки. Основной механизм атаки опирается на подавление правильной цепи вычислительной мощностью. В случае новой криптовалюты это вполне реально. Если же мы говорим о криптовалюте с длинной историей, то ее поддерживает огромное количество майнеров. Для проведения такой атаки понадобятся значительные вложения. Она попросту не окупит себя.

 

Альтернативные атаки

 

Атака-гонка

 

Атака-гонка (race attack) — это слегка измененное раздвоение монеты. Она опирается на медленное подтверждение прошедшей транзакции и ограниченность знания получателя. Получатель не может посмотреть, какие именно транзакции были отправлены майнерам. Он может лишь убедиться, что транзакция уже в блоке, или запросить от отправителя ее копию. В таком случае злоумышленник сначала транслирует поддельную транзакцию майнерам и лишь некоторое время спустя передает корректную получателю.

 

Даже если получатель лично отправит транзакцию майнерам, те при проверке обнаружат, что поле “откуда” уже используется в пуле неподтвержденных транзакций. Вероятнее всего, будет отброшена транзакция, пришедшая позже. Таким образом, даже при частичной проверке намерений отправителя и попытке контроля получатель может быть обманутым. Естественно, такая атака не удается, если майнеры сбрасывают все сомнительные транзакции или демонстрируют содержимое потенциального блока и майнинг пула всем желающим.

 

Атака Финни

 

Атака Финни также опирается на раздвоение средств. Как и в предыдущем случае, для ее успешного выполнения получатель должен считать транзакцию успешной. Она работает, даже если получатель выждет небольшое количество времени, чтобы убедиться в отсутствии претензий к блоку. Для проведения такой атаки злоумышленнику необходимо лично майнить блок. Теоретически ему даже не нужно 50% от производительности всей сети.

 

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

 

Атака провалится, если ещё один блок будет найден до того момента, как отправитель получит результат. Тогда сделка будет проведена по всем правилам. Как и в случае с атакой 51%, чем меньше мощность, тем меньше шансов на успех.

 

Атака Vector76

 

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

 

Атака происходит следующим образом:

 

  • Злоумышленник составляет две транзакции. Первая переводит на веб-кошелёк много биткоинов, вторая переводит на какой-то счёт мало денег.
  • Мошенник начинает майнить блок с первой транзакцией внутри. Как только блок получен, вторая транзакция рассылается по сети, и сразу за ней первая транзакция передается напрямую жертве.
  • Жертва видит правильную транзакцию на зачисление средств на онлайн-кошелек и ставит это действие в очередь. В это время неправильная транзакция уже распространилась по сети, и теперь она будет мешать правильной транзакции попадать в пул майнеров.
  • Как только участник сети закрывает блок с неправильной транзакцией, злоумышленник передает свой блок жертве, а та, в свою очередь, зачисляет средства, не подозревая об обмане. После этого мошенник мгновенно запрашивает средства обратно.
  • Жертва передает средства обратно. В это время фальшивый блок не признается сетью потому, что уже есть правильный. В результате злоумышленник выведет средства со счета жертвы даже после получения подтверждения.

 

Известные происшествия

 

Ghash.io 55%

 

Пул майнеров под названием Ghash.io в июле 2014 достиг 55% мощности сети Биткоин. Участники пула добровольно снизили свой вклад в общую мощность до 40%.

 

Verge

 

С апреля 2018 года криптовалюта Verge трижды подвергалась атаке 51%. В общей сложности удалось вывести $16 000 в первый раз и $1,7 млн. — во второй. Относительно третьего раза до сих пор существуют разные мнения — можно ли назвать произошедшее атакой. Оба подтвержденных раза были обусловлены дырами в программном обеспечении.

 

Bitcoin Gold

 

В течение трех дней, начиная с 16 мая 2018 года, злоумышленник держал под контролем более 51% вычислительных мощностей Bitcoin Gold. В ходе атаки было проведено множество двойных расходований монет на биржах. Сумма потерь оценивалась в $18 миллионов.

 

MonaCoin

 

В мае 2018 года японская монета MonaCoin потеряла около $90 000 в ходе атаки, которая продолжалась с 13 по 15 мая. Ее причиной стала скорость нахождения новых блоков. Скорее всего, неизвестному удалось намайнить сразу два блока. Впоследствии, использовав этот факт, хакер сформировал секретную цепь и воспользовался правилом выбора более длинной цепи.

 

Послесловие

 

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

 

В любом случае, уязвимости Proof-of-Work давно известны, поэтому рядовым пользователям следует больше внимания уделять собственной безопасности. К сожалению, массовые атаки на сеть не могут быть отражены локально, и их устранение целиком лежит на плечах разработчиков.

 

 

Сергей Борсук, Blockspoint

Нашли ошибку? Выделите её и нажмите Ctrl + Enter чтобы сообщить администратору.

Самые актуальные новости о криптовалютах и блокчейне. Прочтите первым!

Зачем мне это?

Загрузка...