Гипотетические атаки на биткоин и другие криптовалюты

1104
Просмотры
Атака на блокчейн 51%

В этой статье рассмотрим атаки, которые могут повредить различным криптовалютам, и главным образом биткоину. Хотя большинство атак, о которых мы будем говорить, чисто гипотетические, но реальные примеры также были (например, атака на Mt.Gox и изменчивость транзакций).

Атака 51%

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

Теперь вспомним, что существует ограниченное число бикоинов, эмиссия в 21 миллион. Сатоши Накамото предусмотрел экспоненциальное увеличение сложности, чтобы регулировать спрос и предложение.

Поскольку сложность увеличивается, самостоятельно добывать монету не получается, приходится объединяться в пулы — объединять свои вычислительные мощности ради экономии ресурсов.

Когда пул занимает все большую долю в диаграмме распределения хэшрейта, он отвергает идею децентрализации. Когда группа майнеров контролирует так много мощностей, они становятся центральной властью. Фактически, когда забирается более 51% хэшрейта сети, они автоматически инициируют атаку под названием «Атака 51%».

Атака 51% происходит, когда 51% хэшрейта сети находится под управлением одного субъекта. Этот может быть майнинг пул или одна авторитетная фигура.

Забирая больше половины, история развивается как для акционера с контрольным пакетом акций. В тот момент, когда 51% находится в одних руках, разрушается децентрализованный характер и сеть открывается для множества атак:

  • Майнинг одного / эгоистический майнинг
  • Отмена всех транзакций
  • Двойные расходы
  • Случайные хардфорки

Теперь, прежде чем мы пройдем каждую из этих атак, посмотрим, как и когда может произойти атака 51%.

Когда пул становится слишком большим

Наиболее распространенная форма атаки 51% может произойти, когда майнинг пул слишком разрастается и получает более 51% всей вычислительной мощности, которая существует в сети. Это уже случилось с биткоином раньше:

В июле 2014 года GHash.io получил 51% хешета. Затем они добровольно отказались от доминирования и заявили, что никогда не заберут более 39.99% хешрейта.

В августе 2016 года Krypton и Shift, два блокчейна на Ethereum, пострадали из-за атаки 51%.

Слишком много денег

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

Представьте, что вы являетесь злоумышленником и у вас есть неограниченный капитал. Теоретически вы можете скупить все ASIC и графические процессоры, необходимые для наращивания 51% мощности цепи. Затем вы можете уничтожать ценность монеты путем либо двойных расходов, либо раздувания блокчейна через спам-транзакции.

Проблема поглощения PoW

Виталий Бутерин привел пример, как эта проблема может произойти в Эфириуме.

Предположим, кто-то создает гипотетический умный контракт активности. Условия контракта:

  • Любой майнер может присоединиться к активности/деятельности, отправив большой депозит в контракт,
  • Майнеры должны отправить доли частично законченных блоков, которые они замайнили в контракте, контракт оценивает их, а также проверяет, что вы являетесь майнерам и у вас достаточно хеш-мощности.
  • Прежде чем 60% майнеров в системе присоединятся, вы можете покинуть контракт в любое время.
  • После того как 60% шахтеров присоединятся к вам, вы будете привязаны к контракту до тех пор, пока 20 блоков не будут добавлены в цепочку хардфорка.

Новая цепочка станет больше и длиннее, поскольку 60% всех шахтеров привязаны по контракту к новому блокчейну. Стимулом участвовать в поглощении через PoW может быть как денежный интерес, так и отсутствие рисков остаться не у дел.

Теперь рассмотрим последствия атаки.

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

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

Теперь предположим, есть два майнера. Вдруг они одновременно добывают по блоку. После этого все зависит от того, какой блок признает сеть. Например, если 80% сети выбирает продолжить майнинг на блоке первого майнера, то блок второго майнера становится бесполезным — блок-сиротка в биткоине.

Но если у кого-то больше 51% мощности сети, все в его распоряжении. Он может просто добывать блоки и продолжать майнить, опираясь на них, не дожидаясь одобрения всех, потому что он — большинство. Тогда все вознаграждения и транзакционные сборы уходят в одни руки.

Отмена транзакций

Как происходит транзакция в криптовалютах (подробнее в этой статье)? Перевод отправляется на подтверждение майнерам, они проверяют ее и помещают в блок. Если биткоин находится под атакой 51%, есть вероятность того, что большинство блоков будет добыто злоумышленником. Он не может принимать какие-либо транзакции ни в один из своих блоков (это могут быть все будущие блоки в цепочке). Если это произойдет, биткоин будет уничтожен.

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

Одна из функций, которую выполняют майнеры, — это предотвращение «двойных расходов». Двойные расходы означают одновременное использование одной и той же монеты на нескольких транзакциях.

Эта проблема появляется из-за майнеров. В блокчейне транзакции происходят только тогда, когда их помещают в блоки. Предположим, что некто Анна должна отправить какому-то Борису 1 BTC, а затем она отправит ту же монету Василию. Майнеры поместят транзакцию в блок, другая не произойдет.

При атаке 51% майнеры уже скомпрометированы. Новые блоки могут инициировать двойное расходование. Эта атака обычно делается для девальвации монеты. Двойные расходы также могут происходить через форки.

Случайный форк

Форк — это разделение блокчейна. Почему майнеру с 51% хешрейта может понадобиться разделить цепь? Можно использовать форк, чтобы вернуть потраченные средства. Когда происходит форк, вы получите точный объем валюты, который был в блоке раньше. Из-за форка также могут произойти двойные расходы.

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

Насколько вероятно, что биткоин подвергнется атаке 51%?

Биткоин действительно сталкивался с этим сценарием, однако вероятность того, что это произойдет сейчас, мала. Чтобы кто-то начал атаку 51%, стимулов недостаточно. Сумма капитала колеблется. Чем выше рыночная цена, тем дороже становится атака, так как ресурс становится дороже.

Каннибализация пулов

Предположим, общий хешрейт биткоина составляет 100, из которых 30 — ваши. Теперь предположим, что вознаграждение за добычу составляет 1 BTC, а это значит, что если у вас есть 30% мощности, вы должны получить 30% от вознаграждения за майнинг, или 0,3 BTC.

Теперь есть два варианта:

Вариант 1: вы покупаете больше оборудования для майнинга: покупаете оборудования еще  на 1 уровень, тогда общий хэшрейт сети 101, а вы занимаете 30.69% в нем и получаете уже 0,3069 BTC.

Вариант 2: Вы уничтожаете пул: если мы уберем 30% вашего хэша, остальная часть сети в целом имела 70% мощности. Раньше они получали 0,7 часть от награды, а теперь всю.
Иногда 1 доля при меньшей мощности может оказаться выгоднее.

Удержанный блок

Это еще одна форма эгоистической добычи.

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

Гипотетические атаки на биткоин и другие криптовалюты

Это может дать двойную награду и вести к монополизации сети.

Сценарий № 1: майнер находит блок после того, как вы замайнили два блока — вы передаете информацию в сеть, ваша цепочка более длинная и выигрывает.

Сценарий № 2: майнер добудет блок, прежде чем вы сможете добыть второй блок — остается 50% вероятность получить одобренный блок.

Атака P-ε / P+Epsilon

PoW уязвима для определенного типа атаки, называемой «атака P + epsilon». Чтобы понять, как работает эта атака, описанная Виталиком Бутериным, нужно дать два определения:

  • Модель нескоординированного выбора — это модель, в которой у участников нет стимула работать друг с другом. Участники могут формировать группы, но ни в коем случае не достаточно большую, чтобы стать большинством.
  • Скоординированная модель выбора — это модель, в которой все участники координируются из-за общего стимула.

Блокчейн является несогласованной моделью, но что, если будет стимул для майнеров выполнять действие, которое идет вразрез с целостностью цепи? Возможно применить модель взятки злоумышленника — побудить майнеров координироваться друг с другом за выгоду. Чтобы успешно подкупить систему, злоумышленник должен иметь бюджет.

Однако, если злоумышленник решит атаковать блокчейн, здесь начинается «атака p + epsilon». Для справки презентация Виталика:

Гипотетические атаки на биткоин и другие криптовалюты
https://www.slideshare.net/ethereum/

Если вы голосуете также, как другие, вы получаете приз. Если голоса не совпадают, все проигрывают.

Как вы думаете, что тогда будут делать игроки? Конечно, они собираются голосовать, чтобы получить гарантированный выигрыш. И в таблице появляется тот, кто дает взятку. Он платит взятку «ε», только когда один голосует, а другие — нет. Однако в такой ситуации, когда все голосуют, равновесие Нэша (ключевое понятие теории игр, когда стратегия одного зависит от стратегий всех, иначе выигрыш не увеличивается) смещается:

Гипотетические атаки на биткоин и другие криптовалюты

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

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

Черный список

Черный список — это форма атаки против одного объекта. Представьте себе, что есть очень важная персона, у которого много денег, и его нужно сместить (это делает какой-то крупный пул).

Есть обычные блоки, есть блоки этого пула и есть блоки с транзакциями важной персоны.

Самая наивная стратегия — отклонять блоки с ненужными транзакциями. Для этого нужно задать такие правила 100% майнеров. Но при владении 51% хэша это уже становится возможным через форки.

Если мощностей меньше 51%, но все равно значительно, применяется другой сценарий «Feather Forking». Он несет математическое основание, но его суть в том, что если у злоумышленника хотя бы 20% хэшрейта и он отказывает подтверждать определенные блоки, другие майнеры имеют вероятность, что их блоки не подтвердятся, тогда отправителю неугодной транзакции нужно покрыть их убытки размером комиссии, которая будет больше половины BTC.

Гибкость транзакций

Нужно понимать, что любое небольшое изменение входных данных резко изменит хэш на выходе. А как известно, все транзакции хэшируются.

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

Что делать, если данные были подделаны до того, как они вошли в блок? Даже если люди узнают об этом позже, никто не может это изменить.

Оказывается, что подписью, которая идет вместе с входными данными, можно манипулировать, что, в свою очередь, может изменить идентификатор транзакции. Например,  у вас есть набор блоков, который говорит «3 + 1 = 4», а затем кто-то приходит и меняет его на «2 + 2 = 4», результат все тот же в обоих случаях, но внутри все изменилось.

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

Одним из самых известных примеров была атака Mt Gox в 2014 году, с одной из крупнейших бирж было украдено биткоинов стоимостью 450 миллионов долларов.

После обновлений атака невозможна.

Таймджекинг / timejacking

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

Таким образом, в качестве меры предосторожности, ноды отклоняют любой блок, который превышает 120 минут.

Теперь предположим, что есть атакующий, который хочет атаковать определенную ноду.

Во-первых, можно запустить атаку Sybill — это атака, в которой злоумышленник контролирует несколько узлов в сети, это может произойти за счет запуска тысяч поддельных узлов и присоединения их к сети. При выполнении атаки злоумышленник манипулирует отметками времени узлов в пределах 70 минут. Это в основном создает разрыв в 140 минут между целевым узлом и остальной частью сети.

Теперь атакующий, используя свои мощности, запускает новый блок с отметкой времени, которая на 190 минут превышает реальное время.

Когда этот новый блок транслируется, целевой узел немедленно отклоняет его, поскольку, согласно им, он не находится в пределах 120 минут. Для целевого узла блок равен 190 + 70 = 260 минут.

Тем не менее, каждый другой узел принимает блок, потому что он находится в пределах 120 минут (190-70 = 120), а майнеры во всех других узлах начинают добывать на нем.

Таким образом, злоумышленник теперь успешно выбил узел из остальной сети. Атакованный узел начинает работать над своей собственной цепочкой, пока все остальные работают в другой.

Таймджекинг — очень страшная атака. Фактически, группа злоумышленников может тайком вывести группу майнеров и увеличить собственный хэшрейт.