Блокчейн-системы на базе POW Major Attack

Вкратце: всего лишь с 30% мощности сети возможна и выгодна атака большинства. Я что-то упустил?


Вообще говоря, блокчейны, основанные на аутентификации Proof-of-Work, используют объем работы как вес голоса.

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

Транзакция считается подтвержденной обычно после того, как над ней было добыто 6 блоков. В большинстве случаев даже 2 блока считаются достаточными, но давайте рассмотрим безопасное решение 6 блока. Теперь предположим, что у меня есть 30% мощности сети.

У меня и сети один и тот же префикс блокчейна. В этот момент я начинаю работать и добавлять к нему свои собственные блоки, игнорируя остальную часть сети. Шансы, что мне удастся построить блокчейн, длина которого не меньше длины самой длинной цепочки в сети к моменту «подтверждения» транзакции, составляют примерно 15% (ссылка ниже).

Это означает, что я могу отменить подтвержденные транзакции в 15% случаев. Теперь все, что мне нужно, это заработать больше денег на восстановленном блоке, чем я плачу за общую вычислительную мощность. Это возможно. Если «подтвержденный» блок хотя бы наполовину заполнен моими транзакциями, общая сумма денег может легко составить 2 миллиона долларов США (ссылка ниже). Возврат с вероятностью успеха 15% означает, что будет по крайней мере один блок каждые два часа (один блок каждые десять минут).

Но 2 часа работы обошлись мне примерно в 140 000 долларов.

Или, что еще более важно: честная игра не обязательно кажется более прибыльной.

Игра по правилам в течение двух часов приравнивается сегодня к доходу около 1,2 миллиона долларов США (если вы владеете 30% мощности сети).

Кажется выгодным время от времени атаковать систему, даже при 30% мощности сети.

(Очевидно, что я скорее отменю множество «маленьких» транзакций, чем крупную, чтобы никто не стал подозрительным и не стал ждать дополнительных подтверждений.)

Что мне не хватает?

Несколько моментов: - Я не рассматриваю такие вопросы, как "нападающий может быть легко найден". Это может быть, а может и не быть правдой. Но это не относится к вопросу: возможно ли и выгодно ли атаковать сеть с 30% мощностью сети. - Если вы утверждаете, что я не ошибаюсь и это правда (в чем я сомневаюсь), пожалуйста, укажите степень вашего знакомства с протоколом и безопасностью системы.

Ссылки:

  • Вероятность успеха при мощности сети 30% (математика здесь проста, но неуклюжа, чтобы ее точно записать) https://pastebin.com/RhnGi04W

  • Один блок содержит несколько тысяч биткойнов (а именно несколько миллионов долларов США) https://blockchain.info/

  • Стоимость биткойна в долларах США https://coinmarketcap.com/currencies/bitcoin

  • Прибыль и затраты всей сети биткойнов: https://digiconomist.net/bitcoin-energy-consumption

    (Я примерно оценил один час своей рабочей прибыли: total_bitcoin_mining_income/365/24*0,3, так как мне принадлежит 0,3 мощности сети)

Разве это не то, что они называют «эгоистичным майнингом»?
@OsiasJota: Нет. Атака эгоистичного майнинга — это другая атака, которая подробно описана в соответствующем документе . Атака эгоистичного майнинга — это атака на качество цепочки, т. е. позволяет майнеру получить больше блоков в блокчейне, чем честная стратегия. Это не имеет ничего общего с двойной тратой.

Ответы (1)

Атака, которую вы описываете, правильная. Это атака на свойство «общий префикс» блокчейна, которое примерно указывает на то, что противнику должно быть трудно заставить две честные стороны принять два разных блокчейна одновременно, когда они расходятся более чем на kблоки, где kявляется параметром. В вашем случае вы установили k = 6.

Фактически атака, которую вы описываете, была проанализирована в оригинальной статье Сатоши . Если вы посмотрите на последний раздел (11. Расчеты), Сатоши вычисляет вероятность успеха описанной вами атаки. В частности, он исследует вероятность успеха со стороны злоумышленников для различных значений переменной, которую он называет q, которая указывает на мощность состязательного майнинга. Для вашего случая, q = 0.3. Затем он использует переменную z, чтобы указать количество блоков, которое нужно ждать, прежде чем принять транзакцию как подтвержденную, в вашем случае z = 6. В анализе Сатоши это соответствует распределению Пуассона, и примерно вероятность успеха злоумышленника действительно равна p ~= 0.15. На самом деле Сатоши точно вычисляет случай z = 5и q = 0.3получает p = 0.1773.

В оригинальной статье есть определенные zрекомендации относительно того, сколько блоков следует ждать, чтобы достичь границы вероятности состязательности p < 0.1%. Для q = 0.3, минимум z, который достигает этого z = 24. Итак, если вы хотите иметь возможность противостоять 30% противнику, вы должны дождаться 24 подтверждений.

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

Анализ Backbone является улучшением по сравнению с анализом Сатоши по нескольким причинам. Я упомяну несколько:

  • Распределения вероятностей задаются точно (как биномиальные распределения и распределения Бернулли), а не приблизительно (как распределения Пуассона).
  • Противник произволен и не обязательно следует стратегии, которую мы предсказали или о которой знаем.
  • Безопасность доказана, а не просто интуитивно предполагается.
  • Система моделируется и анализируется с точностью до интерактивных машин Тьюринга с использованием теоретических инструментов информатики.

Чтобы точно увидеть оператор Common Prefix, посмотрите Определение 3 (Common Prefix) в разделе 3.2 (Требуемые свойства протокола). Тот факт, что биткойн обладает этим свойством, доказан в разделе 4.2 (свойство общего префикса) в рамках теоремы 15 (общий префикс). Там дана точная формула для kчисла блоков, которое вам нужно подождать, чтобы понять, что цепочка не может быть реорганизована обратно в эту точку: k = ηκf. Переменные η, κ, fуточняются в Разделе 4 (Анализ) под Таблицей 1 (Параметры нашего анализа). Этим переменным трудно дать конкретные цифры, поскольку они зависят от состояния и производительности сети, а также от сложности майнинга. Для биткойна у нас есть этоκ = 256— битовая длина хеш-функции (майнинга). Я оптимистично оцениваю продолжительность раунда примерно в 10 секунд (время, которое требуется большой части, скажем, 90% сети, чтобы узнать о недавно добытом заголовке блока), и поэтому, поскольку блок находится в среднем каждые 10 минут, у нас есть то, что fкасается 0.0003биткойнов. Я не знаю, как ηточно оценить.

Дело в том, что теорема об общем префиксе достигается для случая, kкогда «исполнение типично» (типичность установлена ​​в теореме 10), что зависит от параметров ηκ. Предпосылкой типичности является то, что последовательности изучаемых последовательных раундов имеют по крайней мере ηκдлину. Предположение о том, что эта величина велика, необходимо для применения границ Чернова к биномиальному распределению: типичность достигается в этом числе с подавляющей вероятностью . Если это число мало, вероятность больше не является подавляющей, и безопасность системы может дать сбой.

Такой анализ типичен для криптографических систем, включая цифровые подписи, схемы шифрования, доказательства с нулевым разглашением и так далее. Злоумышленник способен добиться успеха с вероятностью, которая ограничена функцией с одной свободной переменной: эта свободная переменная является параметром безопасности ( ηκв случае магистрали), и функция пренебрежимо мала в этом параметре, что означает, что вероятность экспоненциально падает по мере того, как параметр увеличивается. В случае Биткойна вероятность двойных расходов падает экспоненциально по мере увеличения размера блокчейна наверху, но она не является незначительной для k = 6, особенно когда противник силен.

Чтобы ответить на ваш более конкретный вопрос, что это экономически целесообразно: вы правы, что можете перевести 2 миллиона долларов за одну транзакцию биткойнов. Однако я считаю маловероятным, что получатель такой транзакции сочтет ее безопасной после k = 6; необходимо использовать значение, близкое к k = 25. Разумно принять более низкие значения kдля меньших количеств и потребовать больших значенийkдля больших сумм. Хотя точную вероятность трудно рассчитать, все же большинство бирж и других автоматизированных сервисов, принимающих платежи в криптовалюте, применяют разумные ограничения, и я ожидаю, что они увеличивают их для сумм, исчисляемых миллионами долларов (обычно это делается путем запроса одобрения транзакции человеком). для чрезвычайно крупных транзакций, что определенно дает достаточно времени для надлежащего подтверждения работы). Экономические затраты на разветвление цепочки, приводящее к отказу от блока, кратко проанализированы в статье « Биткойн как общедоступный источник случайности».. Учитывая этот анализ, можно сбалансировать стоимость разветвления блокчейна с потенциальной прибылью, которую можно получить, выполнив успешную двойную трату, умноженную на вероятность успеха со стороны противника, рассчитанную из Backbone. Это может позволить стороне точно определить желаемое значение kдля различных денежных параметров с учетом точных пределов состязательности, таких как q = 0.3.

Я знаю, что этот ответ был немного техническим и не давал много конкретных цифр, но я надеюсь, что он пролил некоторый свет на то, почему описываемая вами атака действительно возможна, хотя мы все равно назвали бы ее «незначительной». Поскольку вы спросили мои учетные данные, я являюсь аспирантом в области криптографии, специализирующимся на основах протоколов блокчейна на факультете компьютерных наук Афинского университета. Aggelos Kiayias, написавший статью для Backbone, является моим советником (я не участвовал в написании этой статьи). Поскольку он мой учитель, я хорошо знаком с его работой, особенно потому, что мы используем модель, разработанную в backbone, для последующей работы. Я научный сотрудник IOHK, где мы создаем основы криптовалюты, которую мы называем Cardano, и анализируем ее с математической точки зрения. Вероятность состязательного успеха в попытках выполнить разветвления блокчейна, а также их анализ всплывают в моей собственной работе, в которой я пытаюсь построить боковые цепи, взаимодействующие с несколькими блокчейнами. Мы часто доказываем границы пренебрежимости в этих условиях.