Вы здесь

Размышления о протоколе «ничего на кону». Теоретическая атака на алгоритм «доказательство доли»

В Nxt, первой монете на чистом доказательстве доли, реализован простой алгоритм для определения следующего генератора блоков (известного как «форжер»). Объяснение алгоритма дано здесь. Если в двух словах, то чем больше у вас на балансе монет NXT, тем выше вероятность того, что вы соразмерно балансу «выкуете» следующий блок. Фактическая генерация блоков осуществляется протоколом путем случайной выборки. Будучи простым, быстрым, эффективным, незатратным в плане расхода электроэнергии, этот протокол может работать даже на немощном устройстве Linux или дешевом VPS.

Размышления о протоколе «ничего на кону». Теоретическая атака на алгоритм «доказательство доли»

На протяжении многих лет этот простой алгоритм POS подвергался мощной критике со стороны конкурентов, исследователей, диванных экспертов и их «подпевал». Основной аргумент против – протокол «ничего на кону», будучи недостаточно защищенным, уязвим к атакам.

С другой стороны, эмпирические данные показывают, что на практике при использовании протокола «ничего на кону» нет абсолютно никаких атак на Nxt, а также Ardor/Ignis/Bits/AEUR и их клонов и имитаторов Zero, Zilch, Zip, Nada, Nothing.

Стоит учитывать, что блокчейн Nxt только что отпраздновал свой 5-й по счету производственный юбилей, а сеть Ardor собирается отпраздновать свой первый день рождения в январе. Еще в декабре 2017 года обе монеты были оценены в сумму, превышающую 1 миллиард долларов США. В течение этих 5 лет Nxt выдержал многочисленные атаки, выполненные разными способами, но, как ни странно, на практике ни разу не было атак на протокол «ничего на кону».

Вполне возможно, что атака на протокол «ничего на кону» не представляет собой такую уж серьезную угрозу?

Я решил изучить этот вопрос.

Атака на протокол «ничего на кону» хорошо объясняется в документе Эфириума: «В случае форка, будь то случайная или злонамеренная попытка переписать историю и реверсировать транзакцию, оптимальной стратегией для любого майнера является майнинг на каждой цепи, чтобы майнер получил свою награду независимо от того, какой форк выигрывает. Таким образом, если предположить, что финансово заинтересованных майнеров очень много, злоумышленник может суметь отправить транзакцию в обмен на какой-нибудь цифровой товар (обычно другую криптовалюту), получить его, затем инициировать форк в блокчейне с первого блока после транзакции и вместо этого отправить себе деньги; и даже с 1% от общей доли форк злоумышленника выиграет, потому что все остальные майнят на обеих цепях.

Вы все правильно поняли: все, что вам нужно, чтобы дважды потратить монеты NXT, - это владеть 1% токенов. Конечно, в мире очень много жадных людей, которые с радостью воспользуются этой возможность, чтобы заработать несколько долларов. Но где все эти люди ?

В этой статье я объясню, почему я считаю, что эта проблема высосана из пальца сторонниками протокола «доказательство работы», исследователями-академиками и командами, которые просто хотят продать вам свои кажущиеся мудрыми «решения».

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

Итак, давайте рассмотрим пример с Петей, нашим «гипотетическим злоумышленником», который владеет 1% токенов Nxt. Давайте разберем, каким образом он может попытаться осуществить двойную трату. Я не стану даже рассматривать такие вопросы, как: зачем Пете пытаться атаковать и дискредитировать сеть, в которой он владеет 1%? Давайте просто предположим, что Петя хочет уничтожить Nxt, чтобы доказать ее небезопасность.

Петя, будучи гордым владельцем 1% токенов NXT, которые находятся в обращении, будет генерировать в среднем 1% блоков. Естественные форки из 1 блока происходят в сети Nxt примерно один раз в час, поэтому Петя просто ждет, пока не случится очередной форк, или же он может использовать свою очередь на форжинг блока, чтобы инициировать такой форк, генерируя два разных блока и отправляя каждый из них в другой центральный узел.

Теперь он реализует свой злой умысел: он отправляет все свои средства на Bittrex по форку A и возвращает себе обратно все свои средства по форку B. Теперь он осуществляет форжинг на обоих форках. Увы, его шанс сгенерировать следующий блок составляет всего 1%. Его шанс сгенерировать любой из последующих 30 блоков составляет всего около 26% (1–(0.99)30).

Примерно через 60 секунд кто-то сгенерирует новый блок (99%, что это не Петя), и в конечном итоге Bittrex получит его. Существует 50%-вероятность того, что Bittrex теперь увидит форк A, по которому Петя перевел свои средства на Bittrex. Однако люди на Bittrex не наивные дураки: они будут ждать 30 подтверждений, прежде чем принять депозит.

Согласно мифу все генераторы блоков теперь должны начать форжинг как на форке А, так и на форке B, пока Петя не увидит, что его депозит принят Bittrex на форке А, а затем у него есть шанс в 1% осуществить двойную трату на форке B и сделать так, чтобы форк B стал принятым форком.

Теперь я попытаюсь убедить вас в том, что эта атака не работает против алгоритма «доказательство доли», реализованного в Nxt.

Что происходит на практике: все генераторы блоков используют официальное программное обеспечение Nxt, программное обеспечение NXT выбирает лучший форк на основе инвестированной в него доли и сразу переключается на него, отбрасывая другой форк. Таким образом, внутри 1 блока или двух форк A/B будет разрешен. Одна из «конфликтующих» транзакций Пети будет принята, а другая отклонена. Двойная трата невозможна.

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

Но даже если Петя наймет супер-команду блокчейн-разработчиков и разработает этот вариант программного обеспечения Nxt, который форжит на всех форках, то, если он использует его в одиночку, он не сможет нанести большой ущерб, так как он может генерировать только 1% блоков. Даже если ему повезет сгенерировать следующий блок, он никогда не сгенерирует 30 блоков подряд, чтобы обмануть Bittrex.

Согласно мифу Пете нужно будет убедить всех генераторов блоков вступить с ним в сговор и работать над его неофициальной версией программного обеспечения. Но мы уже договорились, что если более 50% владельцев акций вступят в сговор, они смогут инициировать двойную трату – так в чем же проблема?

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

А что, если стоимость Nxt или Ardor увеличится до $100 млрд.? Наверняка у Пети будет достаточно ресурсов для разработки модифицированного программного обеспечения Nxt? Но, конечно, никто не будет использовать это программное обеспечение и рисковать уничтожить такую ценную монету.

Очередной миф развенчан.

Послесловие

Существование способа атаки еще не означает, что этот способ осуществим на практике. Например, чтобы реверсировать хэш SHA256, все, что нужно сделать, - это попытаться провернуть в среднем 2²⁵⁵ хэш-операций. Теоретически выполнимо, но практически невозможно.

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

Категория: 
Безопасность
Технология: 
2
Ваша оценка: Нет Средняя: 2 (1 оценка)
25286 / 0
Аватар пользователя Daritas
Публикацию добавил: Daritas
Дата публикации: пт, 01/04/2019 - 10:13

Что еще почитать: