Атаки и защита в Ethereum с доказательством владения
Последнее обновление страницы: 26 февраля 2026 г.
Воры и саботажники постоянно ищут возможности для атаки на клиентское программное обеспечение Ethereum. На этой странице описаны известные векторы атак на уровне консенсуса Ethereum и как можно от них защититься. Информация на этой странице адаптирована из более длинной версии (opens in a new tab).
Предварительные условия
Требуются некоторые базовые знания о доказательстве доли владения. Кроме того, будет полезно иметь базовое представление об уровне стимулирования Ethereum и алгоритме выбора форка LMD-GHOST.
Чего хотят злоумышленники?
Распространенное заблуждение заключается в том, что успешный злоумышленник может генерировать новый эфир или выводить эфир из произвольных учетных записей. Ни то, ни другое невозможно, поскольку все транзакции выполняются всеми клиентами-исполнителями в сети. Они должны удовлетворять основным условиям валидности (например, транзакции подписаны приватным ключом отправителя, у отправителя достаточный баланс и т. д.), иначе они просто отменяются. Существует три класса результатов, на которые злоумышленник может нацелиться: реорганизации, двойная финализация или задержка финализации.
«Реорганизация» — это перестановка блоков в новом порядке, возможно, с добавлением или удалением блоков в канонической цепи. Злонамеренная реорганизация может привести к включению или исключению определенных блоков, что позволит проводить двойные траты или извлекать ценность с помощью фронт-раннинга и бек-раннинга транзакций (MEV). Реорганизации также могут быть использованы для предотвращения включения определенных транзакций в каноническую цепочку — форма цензуры. Наиболее экстремальной формой реорганизации является “откат финализации”, который удаляет или заменяет блоки, которые ранее были финализированы. Это возможно только в том случае, если злоумышленник уничтожит более ⅓ от общего количества застейканного эфира — эта гарантия известна как “экономическая финальность” — подробнее об этом позже.
Двойная финальность — это маловероятное, но серьезное состояние, при котором два форка могут финализироваться одновременно, создавая постоянный раскол в цепи. Теоретически это возможно сделать злоумышленнику, готовому рискнуть 34% от общего количества застейканного эфира. Сообщество будет вынуждено координировать свои действия вне цепи и прийти к соглашению о том, какой цепи следовать, что потребует единства на социальном уровне.
Атака с задержкой финальности не позволяет сети достичь необходимых условий для завершения участков цепи. Без финализации трудно доверять финансовым приложениям, построенным поверх Эфириума. Целью атаки с задержкой финализации, скорее всего, является просто разрушение Эфириума, а не получение прямой прибыли, если только у злоумышленника нет каких-либо стратегических коротких позиций.
Атака на социальный слой может быть направлена на подрыв общественного доверия к Эфириуму, снижение цены на эфир, сокращение использования сети или ослабление сообщества Эфириума, чтобы затруднить координацию.
Теперь, когда понятно, почему злоумышленники могут атаковать Ethereum, перейдём к тому, как они могут это сделать.
Методы атаки
Атаки на уровне 0
Прежде всего, люди, которые не принимают активного участия в Эфириум (не имеющие запущенного клиентского программного обеспечения), могут атаковать, нацелившись на социальный уровень (уровень 0). Нулевой слой — это фундамент, на котором построен Эфириум, и он представляет собой потенциальную поверхность для атак с последствиями, которые могут распространиться на остальную часть сети. Некоторые примеры:
-
Кампания по дезинформации, которая может подорвать доверие сообщества к дорожной карте Эфириум, командам разработчиков, приложениям и т. д. Тогда это могло бы уменьшить число людей, желающих участвовать в обеспечении безопасности сети, что привело бы к снижению как децентрализации, так и криптоэкономической безопасности.
-
Целенаправленные атаки и/или запугивание, направленные против сообщества разработчиков. Это может привести к добровольному уходу разработчиков и замедлить прогресс Эфириума.
-
Чрезмерное регулирование также может рассматриваться как атака на уровень 0, поскольку оно может быстро лишить стимулов к участию в развитии сети и внедрению Эфириума в жизнь.
-
Проникновение осведомленных, но злонамеренных субъектов в сообщество разработчиков, целью которых является замедление прогресса путем затягивания дискуссий, откладывания ключевых решений, создания спама и т. д.
-
Взятки, даваемые ключевым игрокам экосистемы Эфириум, чтобы повлиять на принятие решений.
Что делает эти атаки особенно опасными, так это то, что во многих случаях требуется очень мало капитала или технических знаний. Атака 0 слоя может быть мультипликатором криптоэкономической атаки. Например, если цензура или отмена финализации были достигнуты злонамеренным большинством валидаторов, подрыв социального слоя может затруднить координацию ответных мер сообщества.
Защита от атак 0 слоя, вероятно, не является простой, но некоторые базовые принципы могут быть установлены. Одним из них является поддержание общего высокого уровня качества общедоступной информации об Эфириуме, созданной и распространяемой честными членами сообщества через блоги, серверы discord, аннотированные спецификации, книги, подкасты и Youtube. Здесь, в ethereum.org мы прилагаем все усилия, чтобы сохранить точную информацию и перевести ее на как можно большее количество языков. Наполнение пространства высококачественной информацией и мемами — эффективная защита от дезинформации.
Еще одним важным средством защиты от атак на социальные слои является четкое заявление о миссии сообщества и протокол управления. Эфириум позиционирует себя как чемпиона по децентрализации и безопасности среди сетей с умными контрактами первого слоя, а также как протокол, высоко ценящий масштабируемость и устойчивость. Какие бы разногласия ни возникали в сообществе Эфириума, эти основные принципы подвергаются минимальному риску. Согласие с этими основными принципами, и их обсуждение через EIP (предложений по улучшению Эфириума) могут помочь сообществу отличить хороших участников от плохих и ограничить возможности злоумышленников влиять на будущее направление развития сети.
Наконец, крайне важно, чтобы сообщество Эфириума оставалось открытым и гостеприимным для всех участников. Сообщество с привратниками и эксклюзивностью особенно уязвимо для социальных атак, потому что в нем легко создать нарративы “мы и они”. Трайбализм и токсичный максимализм вредят сообществу и подрывают уровень безопасности нулевого слоя. Пользователи Эфириума, заинтересованные в безопасности сети, должны рассматривать свое поведение онлайн и в офлайн как непосредственный вклад в безопасность нулевого слоя Эфириума.
Атака на протокол
Любой желающий может запустить клиентское программное обеспечение Эфириума. Чтобы добавить валидатор к клиенту, пользователь должен внести 32 эфира в депозитный контракт. Валидатор позволяет пользователю активно участвовать в обеспечении сетевой безопасности Эфириума, предлагая и аттестируя новые блоки. У валидатора есть голос, который он может использовать, чтобы влиять на будущее содержимое блокчейна: он может делать это честно и увеличивать свой запас эфира за счет вознаграждений, или он может попытаться манипулировать процессом в своих интересах, рискуя суммой своего эфира в стейкинге. Один из способов организовать атаку — накопить большую долю от общего количества эфира в стейкинге, а затем использовать ее для того, чтобы перевесить голосами честных валидаторов. Чем большую долю общей суммы эфира в стейкинге контролирует злоумышленник, тем больше у него право голоса, особенно на определенных экономических этапах, которые мы рассмотрим позже. Однако большинство злоумышленников не смогут накопить достаточное количество эфира для атаки таким образом, поэтому вместо этого им приходится использовать тонкие методы, чтобы манипулировать честным большинством, заставляя его действовать определенным образом.
По сути, все атаки с небольшим количеством эфира в стейкинге представляют собой тонкие вариации двух типов неправильного поведения валидатора: недостаточная активность (неспособность аттестации/предложения блока или слишком поздное исполнение этих действий) или чрезмерная активность (аттестация/предложение слишком много раз в одну ячейку). В своих наиболее простых формах эти действия легко обрабатываются алгоритмом выбора форка и уровнем стимулирования, но существуют хитроумные способы использовать систему в интересах злоумышленника.
Атаки с использованием небольшого количества ETH
Реорганизации
В нескольких статьях объяснялись атаки на Эфириум, которые приводят к реорганизации или задержке финализации лишь с небольшой долей от общего объема застейканного эфира. Эти атаки обычно основаны на том, что злоумышленник утаивает некоторую информацию от других валидаторов, а затем раскрывает ее каким-либо тонким способом и/или в какой-то подходящий момент. Обычно они направлены на замену какого-либо честного блока (блоков) из канонической цепочки. В работе Neuder et al 2020 (opens in a new tab) показано, как атакующий валидатор может создать и аттестовать блок (B) для определенного слота n+1, но воздержаться от его распространения на другие узлы в сети. Вместо этого он удерживает этот аттестованный блок до следующего слота n+2. Честный валидатор предлагает блок (C) для слота n+2. Почти одновременно злоумышленник может опубликовать свой удержанный блок (B) и удержанные аттестации для него, а также аттестовать B как голову цепи своими голосами за слот n+2, фактически отрицая существование честного блока C. Когда публикуется честный блок D, алгоритм выбора форка видит, что D, построенный поверх B, имеет больший вес, чем D, построенный на C. Таким образом, злоумышленнику удалось удалить честный блок C в слоте n+2 из канонической цепи с помощью одноблочной ex-ante реорганизации. Злоумышленник с 34 % (opens in a new tab) доли имеет очень хороший шанс на успех в этой атаке, как объясняется в этой заметке (opens in a new tab). Теоретически, однако, эту атаку можно было бы предпринять с меньшим количеством эфира. В работе Neuder et al 2020 (opens in a new tab) эта атака описывается как работающая при 30-процентной доле, но позже была показана ее осуществимость при 2 % от общей доли (opens in a new tab), а затем и для одного валидатора (opens in a new tab) с использованием техник балансировки, которые мы рассмотрим в следующем разделе.
Концептуальная схема одноблочной атаки на реорганизацию, описанной выше (адаптирована из https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))
Более изощренная атака может разделить набор честных валидаторов на отдельные группы, которые имеют разные представления о голове цепочки. Это известно как атака балансировки. Атакующий ждет своего шанса предложить блок, и когда он появляется, атакующий предлагает два. Он отправляет один блок половине набора честных валидаторов, а другой блок — другой половине. Двойственность была бы обнаружена алгоритмом выбора форка, и предлагающий блок был бы урезан и удален из сети, но два блока все еще существовали бы и имели бы примерно половину набора валидаторов, подтверждающих каждый из форков. Тем временем остальные злонамеренные валидаторы воздерживаются от своих аттестаций. Затем, выборочно передавая подтверждения в пользу того или иного форка достаточному количеству валидаторов, в момент, как только выполняется алгоритм выбора форка, они склоняют накопленный вес аттестаций в пользу того или иного форка. Это может продолжаться бесконечно, при этом атакующие валидаторы поддерживают равномерное распределение валидаторов по двум форкам. Поскольку ни один из форков не может привлечь 2/3 всех голосов, сеть не будет финализированна.
Атаки отскока похожи. Атакующие валидаторы снова удерживают свои голоса. Вместо того чтобы выпускать голоса, сохраняя равномерное распределение между двумя форками, они используют свои голоса в подходящие моменты для обоснования контрольных точек, которые различаются между форками A и B. Это переключение обоснования между двумя форками предотвращает наличие пар обоснованных исходных и целевых контрольных точек, которые могут быть завершены в любой из цепочек, что останавливает финализацию.
Как отскакивающие, так и уравновешивающие атаки основаны на том, что злоумышленник очень точно контролирует время передачи сообщений по сети, что маловероятно. Тем не менее, в протокол встроены средства защиты в виде дополнительного взвешивания быстрых сообщений по сравнению с медленными. Это известно как proposer-weight boosting (opens in a new tab). Для защиты от атак отскока алгоритм выбора форка был обновлен так, что последняя обоснованная контрольная точка может переключиться на контрольную точку альтернативной цепи только в течение первой трети слотов в каждой эпохе (opens in a new tab). Это условие не позволяет злоумышленнику накапливать голоса для последующей их выдачи: алгоритм выбора форка просто остается верным контрольной точке, которую он выбрал в первую 1/3 эпохи, в течение которой проголосовали бы большинство честных валидаторов.
В совокупности эти меры создают сценарий, в котором честный предлагающий блок выдает свой блок очень быстро после начала ячейки, а затем наступает период ~1/3 ячейки (4 секунды), в течение которого этот новый блок может привести к переключению алгоритма выбора форка на другую цепочку. По истечении этого же срока подтверждения, поступающие от медленных валидаторов аттестации, имеют пониженный вес по сравнению с теми, которые поступили ранее. Это в значительной степени благоприятствует оперативным действиям валидаторов при определении головы цепочки и существенно снижает вероятность успешной уравновешивающей или отскакивающей атаки.
Стоит отметить, что сам по себе proposer boosting защищает только от «дешевых реорганизаций», то есть тех, которые пытается совершить злоумышленник с небольшой долей. На самом деле, proposer-boosting сам по себе может быть использован более крупными стейкерами. Авторы этой публикации (opens in a new tab) описывают, как злоумышленник с 7-процентной долей может стратегически использовать свои голоса, чтобы обманом заставить честных валидаторов строить блоки на его форке, исключая честный блок из цепи путем реорганизации. Эта атака была придумана с учетом идеальных условий задержки, которые очень маловероятны. Шансы атакующего по-прежнему очень велики, и чем больше количество эфира в стейкинге у злоумышленника, тем больше риск для капитала и тем больше экономический сдерживающий фактор.
Также была предложена атака балансировки, специально нацеленная на правило LMD (opens in a new tab), которая, как предполагалось, была осуществима, несмотря на proposer boosting. Злоумышленник создает две конкурирующие цепочки, предлагая разные блоки каждой половине сети и устанавливая приблизительный баланс между форками. Затем валидаторы в сговоре отправляют противоречивые голоса, рассчитывая время так, чтобы половина сети сначала получила их голоса за форк A, а другая половина — за форк B. Поскольку правило LMD отбрасывает вторую аттестацию и сохраняет только первую для каждого валидатора, половина сети видит голоса за A и ни одного за B, а другая половина видит голоса за B и ни одного за A. Авторы пишут, что правило LMD даёт противнику “поразительную силу” для проведения уравновешивающей атаки.
Этот вектор атаки на LMD был закрыт путем обновления алгоритма выбора форка (opens in a new tab) таким образом, что он полностью исключает валидаторов, отправляющих противоречивые голоса, из рассмотрения при выборе форка. Двуликие валидаторы также теряют свое будущее влияние с помощью алгоритма выбора форка. Это предотвращает описанную выше уравновешивающую атаку, одновременно сохраняя устойчивость к лавинным атакам.
Другой класс атак, названный лавинными атаками (opens in a new tab), был описан в статье от марта 2022 года (opens in a new tab). Чтобы организовать лавинную атаку, злоумышленнику необходимо контролировать несколько последовательных предлагающих блок валидаторов. В каждой из ячеек предложения блока злоумышленник не отправляет свой блок, собирая цепочку до тех пор, пока честная цепочка не достигнет веса поддерева, равного весу удерживаемых блоков. Затем удерживаемые блоки освобождаются таким образом, чтобы они были максимально двойственными с настоящей цепочкой. Авторы предполагают, что proposer boosting — основная защита от уравновешивающих и подскакивающих атак не защищает от некоторых вариантов лавинной атаки. Однако авторы также продемонстрировали атаку только на сильно идеализированнуой версии алгоритма выбора форка Эфириума (они использовали GHOST без LMD).
Лавинная атака ослабляется с помощью LMD-части алгоритма выбора форка LMD-GHOST. LMD означает “управляемый последними сообщениями” и относится к таблице, хранящейся каждым валидатором, содержащей последнее сообщение, полученное от других валидаторов. Это поле обновляется только в том случае, если новое сообщение получено из более поздней ячейки, чем та, которая уже есть в таблице для конкретного валидатора. На практике это означает, что в каждой ячейке первым полученным сообщением является то, которое было принято, а любые дополнительные сообщения являются двусмысленностями, которые следует игнорировать. Иными словами, консенсус-клиенты не учитывают двусмысленности — они используют первое поступившее сообщение от каждого проверяющего, и двусмысленности просто отбрасываются, предотвращая лавинные атаки.
Существует несколько других потенциальных будущих обновлений правила выбора форка, которые могли бы повысить безопасность, обеспечиваемую proposer-boost. Один из них — view-merge (opens in a new tab), при котором аттестующие замораживают свое видение выбора форка за n секунд до начала слота, а автор блока затем помогает синхронизировать видение цепи по всей сети. Другим потенциальным обновлением является финальность за один слот (opens in a new tab), которая защищает от атак, основанных на времени доставки сообщений, путем финализации цепи всего за один слот.
Задержка финальности
В той же статье (opens in a new tab), где впервые была описана недорогая атака с реорганизацией одного блока, также была описана атака с задержкой финальности (также известная как «сбой живучести»), которая основана на том, что злоумышленник является автором блока на границе эпох. Это важно, потому что эти блоки границ эпох становятся контрольными точками, которые Casper FFG использует для финализации частей цепочки. Злоумышленник просто удерживает свой блок до тех пор, пока достаточное количество честных валидаторов не использует свои голоса FFG в пользу предыдущего блока, граничащего с эпохой, в качестве текущей цели финализации. Затем он освобождает свой удержанный блок. Они голосуюь за свой блок, и остальные честные валидаторы делают то же самое, создавая форки с разными целевыми контрольными точками. Если злоумышленник правильно рассчитал время, он сможет предотвратить финализацию, потому что не будет перевеса в 2/3 голосов, подтверждающего ни ту, ни другую развилку. Чем меньше эфира в стейкинге, тем более точным должен быть выбор времени, поскольку злоумышленник напрямую контролирует меньшее количество аттестаций и тем ниже вероятность того, что злоумышленник, контролирующий валидатора, будет предлагающим блок, граничащий с эпохой.
Атаки на большом расстоянии
Существует также класс атак, специфичных для блокчейнов с доказательством владения, в которых валидатор, участвовавший в блоке genesis, поддерживает отдельный форк блокчейна рядом с честным, в конечном итоге убеждая честный набор валидаторов переключиться на него в подходящее время гораздо позже. Этот тип атаки невозможен в Эфириум из-за устройства финализации, которая гарантирует, что все валидаторы согласовывают состояние настоящей цепочки через регулярные промежутки времени (“контрольные точки”). Этот простой механизм нейтрализует злоумышленников, ориентирующихся на длинные дистанции, потому что клиенты Эфириум просто не будут переупорядочивать завершенные блоки. Новые узлы, присоединяющиеся к сети, делают это, находя доверенный хэш недавнего состояния (контрольную точку «слабой субъективности (opens in a new tab)») и используя его в качестве псевдо-генезис блока для дальнейшего построения цепи. Это создает "шлюз доверия" для нового узла, входящего в сеть, прежде чем он сможет начать самостоятельно проверять информацию.
Отказ в обслуживании
Механизм доказательства владения Эфириума выбирает одного валидатора из общего набора валидаторов, который будет предлагать блок в каждой ячейке. Это может быть вычислено с использованием общеизвестной функции, и злоумышленник может идентифицировать следующего предлагающего блок немного раньше, чем его предложение блока. Затем злоумышленник может отправить спам предлагающему блок, чтобы помешать ему обмениваться информацией со своими соседними узлами. Для остальной части сети могло бы показаться, что предлагающий блок находится в автономном режиме, и ячейка просто опустела бы. Это может быть формой цензуры в отношении конкретных валидаторов, препятствующей им добавлять информацию в блокчейн. Внедрение выборов единого секретного лидера (SSLE) или выборов не единого секретного лидера снизит риски DoS, поскольку только тот, кто предлагает блок, знает, что он был выбран для этой цели. Это еще не реализовано, но является активной областью исследований и разработок (opens in a new tab).
Все это указывает на то, что очень сложно успешно атаковать Эфириум с небольшим количеством эфиров в стейкинге. Атаки, которые были описаны здесь, требуют идеализированного алгоритма выбора форка, невероятных условий работы сети, или векторы атак уже были закрыты относительно незначительными исправлениями клиентского программного обеспечения. Это, конечно, не исключает возможности существования уязвимостей нулевых дней, но это демонстрирует чрезвычайно высокую планку технических способностей, знаний на уровне консенсуса и необходимости удачи, необходимых для того, чтобы атакующий с малым количеством эфира в стейкинге был эффективным. С точки зрения злоумышленника, его лучшим выбором может быть накопить как можно больше эфира и вернуться вооруженным большей долей от общей суммы в стейкинге.
Злоумышленники, использующие >= 33 % от общей доли
Все атаки, упомянутые ранее в этой статье, с большей вероятностью увенчаются успехом, когда у злоумышленника будет больше эфира для голосования и больше валидаторов, которые могут быть выбраны для предложения блоков в каждой из ячеек. Таким образом, злонамеренный валидатор может стремиться контролировать как можно больше эфира в стейкинге.
33% всего застейканного эфира является ориентиром для злоумышленника, потому что при наличии большего количества, чем эта сумма, у него есть возможность предотвратить финализации цепочки без необходимости точно контролировать действия других валидаторов. Они могут просто исчезнуть все вместе. Если 1/3 или более размещенного эфира неправильно аттестует или не аттестует вовсе, то превосходство честных валидаторов в 2/3 не может существовать, и цепочка не может завершиться. Защитой от этого является утечка неактивности. Утечка неактивности идентифицирует тех валидаторов, которые либо не могут аттестовать, либо аттестуют вопреки мнению большинства. Застейканный эфир, принадлежащий этим неподтверждающим валидаторам, постепенно истощается, пока, в конечном счете, в совокупности он не составит менее 1/3 от общего количества, так что цепочка сможет снова финализироваться.
Цель утечки неактивности состоит в том, чтобы снова начать финализировать цепочку. Однако злоумышленник также теряет часть своего застейканного эфира. Постоянное бездействие валидаторов, составляющих 33% от общего объема застейканного эфира, обходится очень дорого, даже несмотря на то, что валидаторы не урезаются.
Если предположить, что сеть Ethereum асинхронна (т. е. существуют задержки между отправкой и получением сообщений), злоумышленник, контролирующий 34 % от общей доли, может вызвать двойную финальность. Это связано с тем, что злоумышленник может уклониться от ответа, когда его выберут в качестве предлагающего блок, а затем дважды проголосовать со всеми своими валидаторами. Это создает ситуацию, когда существует форк блокчейна, за каждое ответвление из которого голосует 34% размещенного эфира. Каждый форк требует, чтобы только 50% оставшихся валидаторов проголосовали за него, чтобы оба форка были поддержаны подавляющим большинством, и в этом случае обе цепочки могут финализироваться (потому что 34% валидаторов атакующих + половина оставшихся 66% = 67% на каждом форке). Каждый конкурирующий блок должен был бы быть получен примерно 50% честных валидаторов, поэтому эта атака жизнеспособна только тогда, когда злоумышленник имеет некоторую степень контроля над временем распространения сообщений по сети, так что он может подтолкнуть половину честных валидаторов к каждой из цепочек. Злоумышленник обязательно уничтожил бы всю свою сумму в стейкинге (34% от ~10 миллионов эфиров с сегодняшним набором валидаторов), чтобы достичь этой двойной финализации, потому что 34% его валидаторов голосовали бы дважды одновременно — нарушение, урезаемое с максимальным штрафом. Защитой от этой атаки является очень большая стоимость уничтожения 34% от общего количества эфира в стейкинге. Восстановление после этой атаки потребовало бы от сообщества Эфириум координации и соглашения следовать одному из форков и игнорировать другой.
Злоумышленники, использующие ~50 % от общей доли
Имея 50% застейканного эфира, группа злонамеренных валидаторов теоретически могла бы разделить цепочку на два форка одинакового размера, а затем просто использовать всю свою 50%-ную долю для голосования вопреки набору честных валидаторов, тем самым сохранив две вилки и предотвратив финализованность. Утечка неактивности на обоих форках в конечном итоге привела бы к финализации обеих цепочек. К этому моменту единственным вариантом будет вернуться к социальному восстановлению.
Очень маловероятно, что враждебная группа валидаторов сможет постоянно контролировать ровно 50 % от общей доли, учитывая некоторую изменчивость числа честных валидаторов, сетевую задержку и т. д. Огромная стоимость организации такой атаки в сочетании с низкой вероятностью успеха представляется сильным сдерживающим фактором для рационального злоумышленника, особенно когда небольшие дополнительные инвестиции для получения более 50 % открывают гораздо больше возможностей.
При доле >50 % от общей злоумышленник сможет доминировать в алгоритме выбора форка. В этом случае злоумышленник смог бы подтвердить это большинством голосов, что дало бы ему достаточный контроль для проведения коротких реорганизаций без необходимости обманывать честных клиентов. Честные валидаторы последовали бы примеру, потому что их алгоритм выбора форка также рассматривал бы цепочку злоумышленника как самую тяжелую, чтобы цепочка могла финализироваться. Это позволяет злоумышленнику подвергать цензуре определенные транзакции, выполнять кратковременные реорганизации и извлекать максимальный MEV, переупорядочивая блоки в свою пользу. Защитой от этого является огромная стоимость более чем половины эфира в стейкинге (в настоящее время чуть менее 19 миллиардов долларов США), которая подвергается риску со стороны злоумышленника, поскольку социальный слой, скорее всего, вмешается и примет честный форк меньшинства, резко обесценивая активы злоумышленника.
Злоумышленники, использующие >= 66 % от общей доли
Злоумышленник, у которого 66% или более от общего количества застейканного эфира, может финализировать свою предпочтительную цепочку без необходимости принуждать каких-либо честных валидаторов. Злоумышленник может просто проголосовать за предпочитаемый им форк, а затем финализировать его просто потому, что он может голосовать большинством голосов. Будучи наиболее заинтересованной стороной, злоумышленник всегда будет контролировать содержимое финализированных блоков, имея право тратить, перематывать историю и тратить снова, подвергать цензуре определенные транзакции и перестраивать цепочку по своему усмотрению. Приобретая дополнительный эфир для контроля 66 %, а не 51 %, злоумышленник фактически покупает возможность проводить ex post реорганизации и отмены финальности (т. е. изменять прошлое, а также контролировать будущее). Единственными реальными средствами защиты здесь являются огромная стоимость 66% от общего объема застейканного эфира и возможность обратиться к социальному слою для координации принятия альтернативного форка. Мы можем рассмотреть это более подробно в следующем разделе.
Люди: последняя линия обороны
Если нечестным валидаторам удастся финализировать предпочитаемую ими версию цепочки, сообщество Эфириум окажется в сложной ситуации. Каноническая цепочка включает в себя нечестный раздел, вписанный в ее историю, в то время как честные валидаторы могут в конечном итоге быть наказаны за подтверждение альтернативной (честной) цепочки. Обратите внимание, что финализированная, но неправильная цепочка также может возникнуть из-за ошибки в клиенте большинства. В конце концов, единственный запасной вариант — положиться на социальный, нулевой слой, для разрешения ситуации.
Одна из сильных сторон консенсуса PoS в Ethereum заключается в том, что существует ряд оборонительных стратегий (opens in a new tab), которые сообщество может применить в случае атаки. Минимальным ответом могло бы стать принудительное отключение валидаторов-злоумышленников от сети без каких-либо дополнительных штрафных санкций. Чтобы повторно войти в сеть, злоумышленнику пришлось бы присоединиться к очереди активации, которая гарантирует постепенный рост набора валидаторов. Например, добавление достаточного количества валидаторов, чтобы удвоить количество застейканного, занимает около 200 дней, фактически покупая честным валидаторам 200 дней до того, как злоумышленник сможет предпринять еще одну атаку 51%. Однако сообщество также может принять решение наказать злоумышленника более сурово, отменив предыдущие вознаграждения или удалив часть (до 100%) их вложенного капитала.
Каким бы ни было наказание, наложенное на злоумышленника, сообщество также должно сообща решить, является ли нечестная цепочка, несмотря на то, что она является предпочтительной для алгоритма выбора форка, закодированного в клиентах Эфириум, на самом деле недействительной и что сообщество должно вместо этого опираться на честную цепочку. Честные валидаторы могли бы коллективно договориться о создании принятого сообществом форка блокчейна Эфириум, который мог бы, например, отделиться от канонической цепочки до начала атаки или принудительно удалить валидаторов злоумышленников. Честные валидаторы получили бы стимул развивать эту цепочку, потому что они избежали бы штрафов, применяемых к ним за то, что они не смогли (правильно) подтвердить цепочку злоумышленника. Биржи, онлайн-сервисы и приложения, построенные на Эфириуме, предположительно предпочли бы быть в честной цепочке и последовали бы за честными валидаторами в честный блокчейн.
Однако это стало бы серьезным испытанием в области управления. Некоторые пользователи и валидаторы, несомненно, проиграют в результате возврата к честной цепочке, транзакции в блоках, проверенные после атаки, потенциально могут быть откачены, нарушая работу слоя приложений, и это просто подрывает этику некоторых пользователей, которые склонны полагать, что “код — это закон”. Биржи и приложения, скорее всего, связали офчейн-действия с ончейн-транзакциями, которые теперь могут быть отменены, что запустит каскад отзывов и исправлений, которые будет трудно справедливо распутать, особенно если незаконно полученные доходы были смешаны, депонированы в DeFi или другие деривативы со вторичными эффектами для честных пользователей. Несомненно, некоторые пользователи, возможно, даже институциональные, уже извлекли бы выгоду из нечестной цепочки либо благодаря своей проницательности, либо по счастливой случайности, и могли бы выступить против форка, чтобы защитить свою прибыль. Звучали призывы отрепетировать реакцию сообщества на атаки >51 %, чтобы можно было быстро осуществить разумные скоординированные меры по смягчению последствий. Полезное обсуждение от Виталика есть на ethresear.ch здесь (opens in a new tab) и здесь (opens in a new tab), а также в Twitter здесь (opens in a new tab). Целью скоординированного социального реагирования должно быть очень целенаправленное и конкретное наказание злоумышленника и минимизация последствий для других пользователей.
Управление и без того является сложной темой. Управление экстренным реагированием на уровне 0 на нечестную финализирующую цепь, несомненно, будет сложной задачей для сообщества Ethereum, но это случалось в истории Ethereum — дважды).
Тем не менее, есть что-то довольно приятное в последнем запасном варианте, который находится в нашем мире. В конечном счете, даже с таким феноменальным набором технологий, если когда-нибудь случится худшее, реальным людям придётся координировать свои действия, чтобы выбраться из ситуации.
Сводка
На этой странице были рассмотрены некоторые способы, с помощью которых злоумышленники могут попытаться атаковать протокол консенсуса доказательство владения Эфириума. Были изучены атаки реорганизаций и задержки финализаций для злоумышленников с увеличением их доли общего количества застейканного эфира. В целом, более богатый злоумышленник имеет больше шансов на успех, потому что его эфир в стейкинге выражается в праве голоса, который он может использовать для влияния на содержимое будущих блоков. При определенном количестве застейканного эфира сила атакующего повышается:
33 %: задержка финальности
34 %: задержка финальности, двойная финальность
51 %: задержка финальности, двойная финальность, цензура, контроль над будущим блокчейна
66 %: задержка финальности, двойная финальность, цензура, контроль над будущим и прошлым блокчейна
Существует также ряд более изощренных атак, которые требуют небольшого количества застейканного эфира, но полагаются на очень изощренного злоумышленника, имеющего точный контроль над временем отправки сообщений, чтобы склонить честных валидаторов в свою пользу.
В целом, несмотря на потенциальные векторы атаки, риск успешной атаки низок, особенно по сравнению с эквивалентами proof-of-work. Это связано с огромной стоимостью заложенного эфира, подвергающегося риску атакующего, стремящегося перегрузить честных валидаторов своей избирательной силой. Встроенный слой стимулирования "кнут и пряник" защищает от большинства злоупотреблений, особенно для атакующих с низкими ставками. Более тонкие атаки с отскоком и балансировкой также маловероятны, потому что реальные сетевые условия делают очень сложным точное управление доставкой сообщений конкретным подмножествам валидаторов, а команды разработчиков быстро закрывают известные векторы атак с отскоком, балансировкой и лавинными атаками с помощью простых исправлений.
Атаки с долей в 34%, 51% или 66% вероятно потребуют внесетевой социальной координации для разрешения. Хотя это, вероятно, будет болезненным для сообщества, способность сообщества реагировать вне сети обеспечивает сильное отпугивающее воздействие на атакующего. Социальный слой Ethereum - это крайняя мера - технически успешная атака все еще может быть нейтрализована путем согласия сообщества принять честный форк. Начнется гонка между злоумышленником и сообществом Ethereum — миллиарды долларов, потраченные на 66-процентную атаку, вероятно, будут уничтожены успешной атакой социальной координации, если она будет проведена достаточно быстро, оставив злоумышленника с огромным количеством неликвидного застейканного эфира на заведомо нечестной цепи, игнорируемой сообществом Ethereum. Вероятность того, что это окажется прибыльным для злоумышленника, достаточно низка, чтобы служить эффективным сдерживающим фактором. Вот почему так важны инвестиции в поддержание сплоченного социального уровня с тесно согласованными ценностями.
Дополнительные материалы
- Более подробная версия этой страницы (opens in a new tab)
- Виталик об окончательности расчетов (opens in a new tab)
- Статья о LMD GHOST (opens in a new tab)
- Документ Casper-FFG (opens in a new tab)
- Документ Gasper (opens in a new tab)
- Спецификации консенсуса Proposer weight boosting (opens in a new tab)
- Атаки отскока на ethresear.ch (opens in a new tab)
- Исследование SSLE (opens in a new tab)
