Вредоносные стратегии майнеров: как обмануть сеть и уйти незамеченным

Сатоши Накамото видел биткойн как полностью децентрализованную сеть, где каждый пользователь поддерживает полный узел и занимается майнингом, получая вознаграждение пропорционально вкладу в общую мощность. Но c 2011 года это предположение не выполняется: майнеры используют специализированные устройства (FPGA, затем ASIC) и объединяются в пулы для получения равномерного дохода. Популярное опасение, связанное с пулами, — атака 51%, при которой злонамеренный пул тратит биткойны дважды и цензурирует транзакции. Но майнеры могут и другими способами «обманывать» сеть, повышая прибыль без пользы для сети. Исследователи Николя Куртуа (Nicolas Courtois) из Университетского колледжа Лондона (University College London) и Леар Бахак (Lear Bahack) из Открытого университета Израиля (Open University of Israel) исследовали вредоносные стратегии нечестных майнеров и показали, что они в принципе незаметны для честных участников.

block_header

Структура заголовка биткойн-блока

Биткойн часто позиционируется как система, не требующая доверия между участниками, своего рода криптографическая утопия. К сожалению, реальность пока не соответствует идеалу. Биткойн уязвим. Единственная каноническая реализация полного узла (Bitcoin Core) — очевидная критическая точка. Кроме того, участники сети не равны.

Лишь немногие узлы сети — майнеры — выполняют две критические функции. Во-первых, они проверяют корректность транзакций. Обычный пользователь не делает этого, кроме, быть может, небольшого количества транзакций, затрагивающих его лично. Майнеры же проверяют корректность всех транзакций и формируют консенсусную версию истории транзакций — главную цепочку блоков. Во-вторых, майнеры отвечают за эмиссию валюты: затратив ресурсы на выполнение proof-of-work, они получают в награду новые биткойны и комиссию за вошедшие в найденный ими блок транзакции.

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

Простые атаки

Простейшая атака «pool hopping» была описана ещё в 2011 году Мени Розенфельдом (Meni Rosenfeld). Он показал, что если пул распределяет выплаты по пропорциональной системе, майнить в начале раунда выгодней, чем в конце. Другие методы выплаты усложняют проведение атаки, но не устраняют такую опасность.

Злонамеренные пулы могут образовать картель с долей мощности более 50% и отклонять блоки, добытые остальными участниками. Это не обязательно влечёт двойную трату («атака 51%»): вступившие в сговор майнеры могут корректно подтверждать все валидные транзакции, но в случае форка их цепочка будет признаваться главной, следовательно, убытки из-за майнинга орфанных блоков лягут на плечи честного меньшинства.

Майнеры также могут применять секретные криптографические оптимизации. Так, в работе 2013 года было показано, что задача проверки, отвечает ли двойной SHA256-хеш заголовка блока параметру сложности, достаточно в среднем 1,86 раундов соответствующей функции сжатия (SHA256 compression function), тогда как для полного вычисления хеша заголовка блока требуется 3 раунда. Столь существенная оптимизация (38%!) объясняется двумя факторами. Во-первых, заголовок блока — не случайные данные: многие поля з либо не меняются, либо меняются медленно и предсказуемо. Во-вторых, майнерам и не требуется вычислять полное значение SHA256: можно остановиться на первом ненулевом символе. Пул может разработать ещё более тонкую криптографическую оптимизацию и держать её в тайне, получая прибыль выше своей доли в сети. Впрочем, достигнутое значение 1,86 раундов, по мнению авторов исследования, близко к теоретическому минимуму; улучшить его можно разве что на 1-2%.

Эгоистичный майнинг

Стратегия «эгоистичного майнинга» на первый взгляд контринтуитивна. Казалось бы, в интересах майнера распространить найденный блок по сети как можно быстрее, чтобы другие участники признали его частью главной цепочки: только так майнер получит награду. Тем не менее, есть стратегия, позволяющая нечестному майнеру М получать больше, на определённое время «утаивая» свой блок. Расмотрим её подробно.

  1. Большую часть времени М действует честно.
  2. Если М нашёл блок первым, он распространяет его внутри собственного пула. «Эгоистичный» пул далее майнит поверх секретного блока Б11. Теперь М опережает сеть на 1 шаг.
  3. Предположим, что в любой момент времени есть не более двух конкурирующих ветвей блокчейна: публичная и секретная.
  4. В некоторый момент в сети появляется блок-конкурент Б21. В этот момент М обнародует Б11 и продолжает майнить поверх него, тогда как сеть майнит частично поверх Б11, частично поверх Б21, в зависимости от скорости распространения блоков.
  5. У М теперь нет преимущества по длине цепочки, но поскольку он майнит поверх секретного блока дольше, его шансы найти продолжение своей цепочки выше.
  6. Если же (редкое событие!) М до обнародования Б11 находит продолжение своей цепочки Б12, М продолжает майнить секретную цепочку до тех пор, пока преимущество по длине цепочки снова не станет равным 1. Тогда М обнародует всю секретную цепочку, которая, будучи на блок длиннее, будет принята сетью как главная.

Можно доказать, что если эгоистичной стратегии придерживается один майнер, то его ожидаемая прибыль больше, чем вклад в мощность сети. Тем не менее, такая стратегия вряд ли применяется на практике: только для очень крупных пулов увеличение дохода было бы существенным. Также неочевидны последствия, если «эгоистичных» майнеров много или если участники «эгоистичного» пула применяют вредоносные стратегии против него же. Косвенным признаком эгоистичного майнинга могло бы быть увеличение доли орфанных блоков. Авторы исследования проанализировали блокчейн и показали, что доля орфанов с 2012 года не растёт и составляет от 0,43 до 1,77%.

Из проведённого анализа следует, что для честных майнеров в случае форка оптимальной стратегией является выбирать версию цепочки случайным образом. Доверять меткам времени блоков не следует: эгоистичный майнер мог их изменить.

Отбрасывание и утаивание блока

Стратегия «отбрасывания блока» (block discarding) была рассмотрена ещё в 2011 году. Это простая и исключительно деструктивная стратегия, уменьшающая прибыль пула-жертвы. Злонамеренный майнер посылает пулу только частичные решения (shares), отбрасывая полные.

«Утаивание блока» (block withholding) основана на похожей идее, но, в отличие от block discarding, прибыльна для нечестного майнера. Рассмотрим её подробно.

  1. Исходим из следующих предположений. Все майнеры состоят в пулах. Комиссии за транзакции пренебрежимо малы. Майнеры не меняют пулы очень часто (т. е. без pool hopping). Схемы выплаты награды в пулах различаются несущественно и в пределе вознаграждают майнеров в точности пропорционально их доле в мощности сети.
  2. Пусть нечестные майнеры контролируют 20% мощности сети. Половина из них присоединяется к случайно выбранным честным пулам, половина образует собственный пул.
  3. Если «внедрённый» в честный пул вредоносный майнер находит полное решение, он не посылает его пулу. В результате доход честных пулов падает, но внедрённые майнеры получают то же вознаграждение. Оператор пула может заметить, что пул получает меньше прибыли, чем ожидалось, но не может узнать, кто из участников утаивает блоки: большинство честных участников находят блоки исчезающе редко. В итоге честные пулы получают примерно 88% от ожидаемой прибыли.
  4. Другая половина нечестных майнеров, объединённые в закрытый пул, получают прибыль примерно на 13% выше честных пулов.
  5. Расчёты показывают, что при такой схеме нечестные майнеры получат примерно на 6% больше прибыли, чем при честном майнинге. При любой мощности нечестных майнеров оптимальным разделением мощности между внедрением в честные пулы и майнингов в своём пуле будет 50/50.

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

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

Источник: Nicolas T. Courtois, Lear Bahack «On Subversive Miner Strategies and Block Withholding Attack in Bitcoin Digital Currency»

P.S. Обратите внимание на другое исследование о стратегиях майнеров.

Tip



Categories: Безопасность, Майнинг, Технологии

17 replies

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

  2. Кстати, владелец пула BTCGuild перед его закрытием как раз жаловался, что на пуле наблюдается долгосрочное падение прибыли, как раз похожее на атаку “утаивания блоков”. Так что, не исключено что кое-кто этим уже и пользуется против конкурентов (*строго смотрит в сторону китайских мега-пулов).

  3. «pool hopping» — это фикция.

  4. Читайте внимательней. Статья из исторического разряда – в ней указаны проблемы “честного майнера” 2011(!)года.

    Авторам перевода: Спасибо, познавательно.

    • Сама статья (первая версия) опубликована в январе 2014, это авторы ссылаются на исследование 2011 года.

  5. Сброд какой-то… Вам не срать на майнеров? Уронят цену битка в два раза и все распри сами собой закончатся. Посмотрите на реальную картину с ценой битка – если сатоши сольет всего 100к битков все ваши демагогии по поводу майнеров не будут иметь никакого смысла.

    • Вы забыли, что всего 3 года назад средняя цена биткойна была 4.5$. Четыре с половиной доллара Карл, и всего три года назад! И это при том, что его общее колличество было на несколько миллионов меньше. Сейчас же, спустя три года, увеличилось число монет, но при этом стоимость не упала, а поднялась до заоблачных 250$! Прочитайте, что писали о перспективах стоимости всего три года назад. Например, кто-то верил, что прежде чем цена за один биткойн достигнет отметки в 100$ уполовинивание награды майнеров пройдет не раз и не два. А это срок в 10 и более лет. И что мы видим? Всего три года, и 250$ !!!
      Забудьте о пузыре, пузырь это всего лишь демонстрация потенциала, причем на очень ранней стадии, опережающей свое время. Если скосить бугры, то рост биткойн постоянный, и весьма агрессивный. Взять хотя бы период с января этого года (2015) по август. Вполне уверенный рост почти в два раза, а это почти 100% увеличения стоимости всего за пол года. И все это без резких пузырей, а просто плавный, естественный рост. Сохраняя среднюю динамику, мы весьма скоро увидим предыдущий пик стоимости, и это будет будет его реальная, не спекулятивная, рыночная цена. Просто, в конце 2013-го, мы преждевременно заглянули в будущее.

      • “с января этого года (2015) по август. Вполне уверенный рост почти в два раза” — простите, ШТА?) В январе курс был 250-300, как сейчас.

        • 14 января дневная свеча закрылась на 170… Откатившись 15 января до 207, и затем цена неделю болталась в районе 200. Причем мне удалось спокойно закупиться на 180. Если бы я этого не делал, то и не говорил бы о профите. А так, проверенно лично!

  6. Основные моменты:
    1) оптимизация хеширования
    И что в этом плохого? Алгоритм хеширования открытый хоть заоптимизируйся 🙂

    2)махинации пулов
    Все известные махинации легко отслеживаются а то приимущество которые получают крупные майнеры давно известны и это не страшно потому что как только пул начнет мухлевать тогда он сразу потеряет доверие и следовательно мощность.

    3) махинации майнеров внутри пула
    Это проблема самих пулов и на каждую махинацию у пула есть пару методов борьбы.

    И в чем уязвимость биткойна? Очередная бредотень…

    • 2) что значит “давно известны”? О том и речь, что даже крупные пулы могут утаивать блоки, и никто с этим ничего не сделает. Другой вопрос, что прибыль от таких манипуляций должна окупать усилия по внедрению.

      • Да может и тогда он получит дополнительное преимущество но за это он заплатит дополнительными рисками и с точки зрения защиты сети в этом нет ничего плохого

        • А чем он рискует? С точки зрения защиты сети в этом есть своего рода упущенная выгода: когда пулы применяют специфичные стратегии, общий эффективный хешрейт выходит ниже, чем если бы те же мощности использовались “честно”.

          • Когда ты придерживаешь новый блок кто то другой может найти блок и на основе другого второй и тогда майнер потеряет и вознаграждение за первый и в время которое потратил на нахождение второго болока это и называется риски.
            Мошность при этом не уменьшается.

  7. неплохо

    • Ага, вот так [img]http://vk.com/rtrg?r=ockZvf5LyPw3pRIgk0hvMCKHo4Nl8hMeruz4MclPpNpq9eABKVfdelaHaIuG3Ub4R5OQqNcNnSmJWAacZqmW5a163dRJYn6QDVgxCVhl6o/bdivNnySA1T1jeLP/QdocF6lTqD1Ku01SwDVwW8jGEI9ROBAdUEZJ6lEeCK4cg-[/img]

Trackbacks

  1. Вредоносные стратегии майнеров: как обмануть сеть и уйти незамеченным | digitaleconomy.gq

Поделитесь своими мыслями

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s