• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Снижение возможности атаки 51% с помощью ChainLock на основе LLMQ

alex-ru

Well-known member
ДОБАВЛЕНО: Как заметили читатели, ссылка на фактический DIP расположена слишком глубоко в статье. Вот ссылка для тех, кто хочет открыть вкладку сейчас, чтобы прочитать её позже: DIP8

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


Что такое “майнинг-атака 51%”?

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

Такой майнер может сделать это публично, что сразу станет заметно по необычайно высокой скорости роста брошенных блоков. Либо он может выполнить это в приватном режиме и вместо публикации блоков один за другим опубликовать свою собственную секретную цепочку всю сразу по прошествии некоторого времени (например, через несколько часов или дней). Если это будет сделано, сеть сначала предположит, что всё работает как обычно, а затем внезапно совершит глубокую реорганизацию.

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

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


Насколько возможна такая атака?

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

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

Кроме того, криптовалюты (такие, например, как Bitcoin Cash), у которых нет доминирования среди всех доступных хеш-ресурсов для некоторого конкретного алгоритма хеширования, всегда подвергаются риску нападения со стороны лиц, имеющих умеренный хешрейт преобладающей монеты (Bitcoin Cash использует алгоритм SHA256D, который также используется в Биткойне, но хеширующая мощность Bitcoin Cash составляет менее 10% такой мощности у Биткойна).

Это приводит к некоторому уровню неопределённости и недоверия к алгоритму Proof-of-Work, о чём очень ясно свидетельствуют недавние “хеш-войны”, наблюдаемые в сообществе Bitcoin Cash. Несколько сообществ объединились для создания форка в сети Bitcoin Cash и пригрозили совершить атаку 51% на исходную сеть.

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


Как эту проблему может решить Dash?

На данный момент Dash так же уязвим к этой атаке, как и любая другая криптовалюта, работающая на алгоритме Proof-of-Work, и многие участники сообщества задают вопрос о том, как решить эту проблему. Ранее было внесено предложение под названием “Майнинг с залоговым обеспечением”, которое в определённой степени разрешило бы проблему майнинг-атаки 51%, но потребовало бы значительных изменений в экономике майнинга (что создало бы проблему само по себе).

Внедрение долгосрочных кворумов мастернод (Long Life Masternode Quorums - LLMQs) позволяет нам внедрить новый механизм защиты против майнинг-атак 51%. Этот механизм защиты, называемый ChainLock, предлагается в DIP8. Этот DIP разрабатывается уже несколько месяцев, и сейчас мы решили опубликовать его в качестве ответа на вопросы сообщества о том, как Dash собирается справиться с угрозой атаки 51%. Также это решение делает рассматривавшийся ранее “майнинг с залоговым обеспечением” неактуальным.


ChainLock’и на основе LLMQs

Идея ChainLock’ов состоит в том, чтобы выполнить контролируемую оценку / голосование во всей сети по принципу “увидел первым”. Для каждого блока выбирается LLMQ из нескольких сотен мастернод и каждый участник подписывает первый увиденный блок, который, по его мнению, расширяет активную цепочку на текущей высоте блока. Если достаточное количество участников (например, >= 60%) видят один и тот же блок, как первый - они могут создать P2P-сообщение (CLSIG) и распространить его по всем узлам сети. Есть ещё несколько деталей этого процесса, особенно в ситуации, когда несколько майнеров находят блок примерно в одно и то же время. Эта информация приведена в DIP8.

Сообщение CLSIG может быть создано только в том случае, если с ним согласно достаточное количество участников кворума. Это связано с тем, что LLMQs используют пороговые подписи BLS M-из-N, а для сообщения CLSIG требуется наличие допустимой пороговой подписи. Эта пороговая подпись внутренне подобна обычной BLS-подписи и может быть проверена всеми нодами без информации о том, кто её подписал. Для этой проверки требуется только открытый ключ кворума LLMQ, который можно получить из данных в блокчейне. Согласно тому, как работает “LLMQ Запрос на подпись / Сессии”, может быть либо только одно действительное сообщение CLSIG, либо ни одного, поэтому неопределённости из-за конфликтов не существует.

Наличие действительного сообщения CLSIG указывает, что большинство участников (например, 60%) LLMQ видели указанный блок как первый. Поскольку LLMQ составлены из произвольных мастернод Dash (в настоящее время их около 4900), то распределение узлов, которые увидели этот блок первым по всей сети, статистически такое же, как и внутри LLMQ. Это означает, что если бы 60% участников LLMQ увидели блок первым, то около 60% всей сети также должны были увидеть его в первую очередь.

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


Значение и последствия для сети

ChainLock’и способны оказать несколько очень важных эффектов на всю сеть и её экономику. Самый важный эффект для обычных пользователей и продавцов заключается в том, что транзакции можно считать полностью и окончательно подтверждёнными уже после первого подтверждения в блокчейне внутри блока, защищённого ChainLock’ами. Транзакции больше не смогут исчезнуть из блокчейна, поскольку становится невозможной реорганизация ранее подписанных / зафиксированных блоков на уровне сети. Это означает, что больше нет необходимости ждать 6 или более подтверждений, чтобы полученная транзакция считалась безопасной.

Также это оказывает влияние на экономику индустрии майнинга и устраняет все стимулы для майнеров, из-за которых могла бы произойти реорганизация блокчейна. Многие атаки, основанные на тайной или эгоистичной добыче, становятся невозможными, поскольку все они зависят от того, каким образом майнеры удерживают более длинные и секретные цепи. В соответствии с нынешними правилами консенсуса такие цепи будут аннулировать публичную цепь и вызывать реорганизацию цепи при публикации. Однако при наличии ChainLock’ов майнерам будет предложено публиковать каждый блок сразу, даже если, теоретически, они имеют достаточную хеш-мощность, чтобы отменить добычу других майнеров. Невыполнение публикации создаёт значительные риски для злоумышленника, поскольку любая его секретная цепочка блоков (даже если после неё уже существуют тысячи блоков) будет немедленно аннулирована, если другой честный майнер опубликует действительный блок, который получит CLSIG до того, как будет обнаружена секретная цепочка.


Но как насчёт правила самой длинной цепи?

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

С ChainLock’ами это правило тоже действует, но его можно переопределить с помощью допустимого сообщения CLSIG. Фактически, только участники ответственного LLMQ полностью следуют правилу длинной цепи, поскольку они являются теми, кто создаёт согласованное сообщение CLSIG. Поскольку сообщение CLSIG может быть создано только в том случае, если достаточное количество участников LLMQ выразило согласие на это, то присутствие такого сообщения служит доказательством того, что ссылочный блок был (или остаётся) блоком, содержащимся в самой длинной цепи.

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

Разница при наличии ChainLock’ов заключается в том, что майнеры и мастерноды, сумевшие собрать в своих руках >51% мощности в каждом из уровней сети, должны будут договориться друг с другом для выполнения успешной атаки. И даже если бы такая атака удалась, атакующие всё равно не смогли бы вызвать глубокую реорганизацию в сети, поскольку предыдущие сообщения CLSIG не могут быть аннулированы злоумышленниками. Самый худший вариант из возможных, который может быть реализован - это НЕ подписывать блоки, замеченные всеми нодами. Кроме того, если бы какой-либо LLMQ, состоящий преимущественно из честных мастернод подписал бы блоки в промежутке между атакой, то все ранее неподписанные блоки также полностью подтвердились бы, сделав реорганизацию в таком случае невозможной.


А что по поводу других правил консенсуса?

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

Работающий CLSIG НЕ может принудительно принять недопустимый блок.


Почему ChainLock не может быть реализован в других криптовалютах?

Одним из основных предварительных условий, необходимых для обеспечения безопасности с помощью ChainLock’ов, является защищённая от атаки Сивиллы нод сети. Валюта, которая не располагает таким классом нод, не сможет безопасным образом реализовать что-то вроде ChainLock’ов. Например, в Биткойне все, кто будет полагаться на “голоса” отдельных нод, могут быть обманутыми простым запуском тысяч вредоносных нод. Единственное возможное решение потребует установления явного доверия к некоторым выбранным группам нод, но такое решение окажется уже в значительной спепени централизованным.

В Dash сеть мастернод защищена от атак Сивиллы необходимостью демонстрации залога в размере 1000 DASH за одну мастерноду. Это делает экономически нецелесообразным совершение такой атаки, просто потому, что покупка достаточного количества мастернод потребует значительных финансовых ресурсов, которые будут подвергнуты высокому риску при совершении любых атак. С теми текущими параметрами, с которыми мы ориентированы на применение LLMQ, злоумышленник должен будет купить не менее 60% от всех работающих мастернод, чтобы получить реалистичные шансы на успех.

Я считаю, что это свойство сети мастернод в Dash является одним из самых недооценённых. Действенная защита от атаки Сивиллы является основной предпосылкой для ChainLock’ов и любых других функций, которые используют любую форму принятия решений кворумами.

В будущем эта уникальная и мощная сетевая инфраструктура Dash позволит нам безопасно внедрять более инновационные функции поверх LLMQ, делая Dash ещё более безопасной, быстрой и удобной для пользователя валютой.

ПЕРЕВОД
Оригинал https://blog.dash.org/mitigating-51-attacks-with-llmq-based-chainlocks-7266aa648ec9
 
Back
Top