Перейти к основному контенту
Change page

Атака и защита доказательства доли владения Эфириума

Воры и саботажники постоянно ищут возможности для атаки на клиентское программное обеспечение Эфириума. На этой странице описаны известные векторы атак на уровень консенсуса Эфириума и способы защиты от них. Информация на этой странице адаптирована из более подробной версии (opens in a new tab).

Предварительные требования

Требуются базовые знания о доказательстве доли владения (PoS). Также будет полезно иметь базовое представление об уровне стимулов Эфириума и алгоритме выбора форка LMD-GHOST.

Чего хотят злоумышленники?

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

«Реорганизация» — это перетасовка блоков в новом порядке, возможно, с добавлением или удалением некоторых блоков в канонической цепи. Злонамеренная реорганизация может гарантировать включение или исключение определенных блоков, что позволяет осуществить двойную трату или извлечение ценности с помощью фронтраннинга и бэкраннинга транзакций (MEV). Реорганизация также может использоваться для предотвращения включения определенных транзакций в каноническую цепь — форма цензуры. Самая крайняя форма реорганизации — это «отмена финальности», которая удаляет или заменяет блоки, которые ранее были финализированы. Это возможно только в том случае, если злоумышленник уничтожит более ⅓ всего застейканного эфира — эта гарантия известна как «экономическая финальность» — подробнее об этом позже.

Двойная финальность — это маловероятное, но серьезное состояние, при котором два форка могут быть финализированы одновременно, создавая постоянный раскол в цепи. Теоретически это возможно для злоумышленника, готового рискнуть 34% от всего застейканного эфира. Сообщество будет вынуждено координироваться офчейн и прийти к соглашению о том, какой цепи следовать, что потребует силы на социальном уровне.

Атака задержки финальности не позволяет сети достичь необходимых условий для финализации участков цепи. Без финальности трудно доверять финансовым приложениям, созданным на базе Эфириума. Цель атаки с задержкой финальности, скорее всего, состоит просто в том, чтобы нарушить работу Эфириума, а не в получении прямой выгоды, если только у злоумышленника нет стратегических коротких позиций.

Атака на социальный уровень может быть направлена на подрыв общественного доверия к Эфириуму, обесценивание эфира, снижение уровня принятия или ослабление сообщества Эфириума, чтобы усложнить внеканальную координацию.

Установив, почему злоумышленник может атаковать Эфириум, в следующих разделах мы рассмотрим, как он может это сделать.

Методы атаки

Атаки уровня 0

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

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

  • Целенаправленные атаки и/или запугивание, направленные на сообщество разработчиков. Это может привести к добровольному уходу разработчиков и замедлить развитие Эфириума.

  • Чрезмерно усердное регулирование также можно рассматривать как атаку на уровень 0, поскольку оно может быстро лишить стимулов к участию и принятию.

  • Внедрение знающих, но злонамеренных субъектов в сообщество разработчиков, чья цель — замедлить прогресс путем затягивания дискуссий по мелочам (bike-shedding), откладывания ключевых решений, создания спама и т. д.

  • Взятки ключевым игрокам в экосистеме Эфириума с целью повлиять на принятие решений.

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

Защита от атак уровня 0, вероятно, не является простой задачей, но можно установить некоторые базовые принципы. Одним из них является поддержание в целом высокого соотношения сигнал/шум для публичной информации об Эфириуме, создаваемой и распространяемой честными членами сообщества через блоги, серверы в Дискорде, аннотированные спецификации, книги, подкасты и Ютуб. Здесь, на ethereum.org, мы изо всех сил стараемся поддерживать точность информации и переводить ее на как можно большее количество языков. Наполнение пространства высококачественной информацией и мемами — эффективная защита от дезинформации.

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

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

Атака на протокол

Любой может запустить клиентское программное обеспечение Эфириума. Чтобы добавить валидатор в клиент, пользователю необходимо застейкать 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 на 1 блок. Злоумышленник с 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) с использованием методов балансировки, которые мы рассмотрим в следующем разделе.

ex-ante re-org

Концептуальная схема атаки с реорганизацией одного блока, описанной выше (адаптировано из https://notes.ethereum.org/plgVdz-ORe-fGjK06BZ_3A#Fork-choice-by-block-slot-pair (opens in a new tab))

Более сложная атака может разделить набор честных валидаторов на отдельные группы, которые имеют разные представления о голове цепи. Это известно как балансирующая атака. Злоумышленник ждет своего шанса предложить блок, и когда он наступает, он совершает эквивокацию и предлагает два. Они отправляют один блок половине набора честных валидаторов, а другой блок — другой половине. Эквивокация будет обнаружена алгоритмом выбора форка, и предлагающий блок подвергнется слэшингу и будет исключен из сети, но два блока все равно будут существовать, и около половины набора валидаторов будут аттестовать каждый форк. Тем временем оставшиеся злонамеренные валидаторы удерживают свои аттестации. Затем, выборочно выпуская аттестации в пользу того или иного форка достаточному количеству валидаторов как раз во время выполнения алгоритма выбора форка, они склоняют накопленный вес аттестаций в пользу того или иного форка. Это может продолжаться бесконечно, при этом атакующие валидаторы поддерживают равномерное распределение валидаторов между двумя форками. Поскольку ни один из форков не может привлечь абсолютное большинство в 2/3, сеть не будет финализирована.

Прыгающие атаки (bouncing attacks) аналогичны. Голоса снова удерживаются атакующими валидаторами. Вместо того чтобы выпускать голоса для поддержания равномерного разделения между двумя форками, они используют свои голоса в подходящие моменты для обоснования контрольных точек, которые чередуются между форком A и форком B. Это метание обоснования между двумя форками предотвращает появление пар обоснованных исходных и целевых контрольных точек, которые могут быть финализированы в любой из цепей, останавливая финальность.

The game of reorgs in proof of stake Ethereum

Caspar Schwarz-Schilling presents research on block reorganization attacks in proof of stake Ethereum, covering attack vectors, defense mechanisms, and the protocol-level mitigations in place.

Смотреть с расшифровкой 

Как прыгающие, так и балансирующие атаки основаны на том, что злоумышленник имеет очень точный контроль над временем передачи сообщений по сети, что маловероятно. Тем не менее, в протокол встроена защита в виде дополнительного веса, придаваемого быстрым сообщениям по сравнению с медленными. Это известно как повышение веса предлагающего (proposer-weight boosting) (opens in a new tab). Для защиты от прыгающих атак алгоритм выбора форка был обновлен таким образом, что последняя обоснованная контрольная точка может переключиться на контрольную точку альтернативной цепи только в течение первой 1/3 слотов в каждой эпохе (opens in a new tab). Это условие не позволяет злоумышленнику копить голоса для их последующего использования — алгоритм выбора форка просто остается верным контрольной точке, которую он выбрал в первой 1/3 эпохи, в течение которой проголосовало бы большинство честных валидаторов.

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

Стоит отметить, что одно только повышение веса предлагающего защищает только от «дешевых реорганизаций», т. е. тех, которые предпринимаются злоумышленником с небольшим стейком. Фактически, само повышение веса предлагающего может быть использовано более крупными владельцами стейков. Авторы этого поста (opens in a new tab) описывают, как злоумышленник с 7% стейка может стратегически использовать свои голоса, чтобы обманом заставить честных валидаторов строить на своем форке, реорганизуя честный блок. Эта атака была разработана в предположении идеальных условий задержки, что очень маловероятно. Шансы злоумышленника все еще очень малы, а больший стейк также означает больший капитал под угрозой и более сильный экономический сдерживающий фактор.

Также была предложена балансирующая атака, специально нацеленная на правило LMD (opens in a new tab), которая, как предполагалось, будет жизнеспособной, несмотря на повышение веса предлагающего. Злоумышленник создает две конкурирующие цепи, совершая эквивокацию своего предложения блока и распространяя каждый блок примерно на половину сети каждый, устанавливая приблизительный баланс между форками. Затем вступившие в сговор валидаторы совершают эквивокацию своих голосов, рассчитывая время так, чтобы половина сети сначала получила их голоса за форк A, а другая половина сначала получила их голоса за форк B. Поскольку правило LMD отбрасывает вторую аттестацию и сохраняет только первую для каждого валидатора, половина сети видит голоса за A и ни одного за B, другая половина видит голоса за B и ни одного за A. Авторы описывают правило LMD как дающее противнику «замечательную силу» для проведения балансирующей атаки.

Этот вектор атаки LMD был закрыт путем обновления алгоритма выбора форка (opens in a new tab) таким образом, что он вообще исключает валидаторов, совершающих эквивокацию, из рассмотрения при выборе форка. Будущее влияние валидаторов, совершающих эквивокацию, также дисконтируется алгоритмом выбора форка. Это предотвращает балансирующую атаку, описанную выше, а также сохраняет устойчивость к лавинным атакам.

Другой класс атак, называемый лавинными атаками (avalanche attacks) (opens in a new tab), был описан в статье за март 2022 года (opens in a new tab). Для проведения лавинной атаки злоумышленнику необходимо контролировать несколько последовательных предлагающих блок. В каждом из слотов предложения блока злоумышленник удерживает свой блок, собирая их до тех пор, пока честная цепь не достигнет равного веса поддерева с удержанными блоками. Затем удержанные блоки выпускаются так, чтобы они максимально совершали эквивокацию. Авторы предполагают, что повышение веса предлагающего — основная защита от балансирующих и прыгающих атак — не защищает от некоторых вариантов лавинной атаки. Однако авторы также продемонстрировали атаку только на сильно идеализированной версии алгоритма выбора форка Эфириума (они использовали GHOST без LMD).

Лавинная атака смягчается частью LMD алгоритма выбора форка LMD-GHOST. LMD означает «управляемый последним сообщением» (latest-message-driven) и относится к таблице, которую ведет каждый валидатор и которая содержит последнее сообщение, полученное от других валидаторов. Это поле обновляется только в том случае, если новое сообщение относится к более позднему слоту, чем то, которое уже есть в таблице для конкретного валидатора. На практике это означает, что в каждом слоте первое полученное сообщение является тем, которое принимается, а любые дополнительные сообщения являются эквивокациями, которые следует игнорировать. Иными словами, клиенты консенсуса не учитывают эквивокации — они используют первое поступившее сообщение от каждого валидатора, а эквивокации просто отбрасываются, предотвращая лавинные атаки.

Существует несколько других потенциальных будущих обновлений правила выбора форка, которые могут повысить безопасность, обеспечиваемую повышением веса предлагающего. Одним из них является слияние представлений (view-merge) (opens in a new tab), при котором аттестующие замораживают свое представление о выборе форка за n секунд до начала слота, а предлагающий затем помогает синхронизировать представление о цепи по всей сети. Еще одно потенциальное обновление — финальность одного слота (single-slot finality) (opens in a new tab), которая защищает от атак, основанных на времени передачи сообщений, путем финализации цепи всего через один слот.

Задержка финальности

В той же статье (opens in a new tab), в которой впервые была описана недорогая атака с реорганизацией одного блока, также была описана атака с задержкой финальности (также известная как «сбой живучести»), которая основана на том, что злоумышленник является предлагающим блок для блока на границе эпохи. Это критически важно, поскольку эти блоки на границе эпохи становятся контрольными точками, которые Каспер FFG использует для финализации участков цепи. Злоумышленник просто удерживает свой блок до тех пор, пока достаточное количество честных валидаторов не использует свои голоса FFG в пользу предыдущего блока на границе эпохи в качестве текущей цели финализации. Затем они выпускают свой удержанный блок. Они аттестуют свой блок, и оставшиеся честные валидаторы делают то же самое, создавая форки с разными целевыми контрольными точками. Если они правильно рассчитают время, они предотвратят финальность, потому что не будет абсолютного большинства в 2/3, аттестующего любой из форков. Чем меньше стейк, тем точнее должно быть время, потому что злоумышленник напрямую контролирует меньше аттестаций, и тем ниже шансы злоумышленника контролировать валидатор, предлагающий данный блок на границе эпохи.

Атаки на большом расстоянии (Long range attacks)

Существует также класс атак, специфичных для блокчейнов с доказательством доли владения, который включает в себя валидатора, участвовавшего в генезис-блоке, поддерживающего отдельный форк блокчейна наряду с честным, в конечном итоге убеждая набор честных валидаторов переключиться на него в какой-то подходящий момент гораздо позже. Этот тип атаки невозможен в Эфириуме из-за механизма финальности, который гарантирует, что все валидаторы соглашаются с состоянием честной цепи через регулярные промежутки времени («контрольные точки»). Этот простой механизм нейтрализует злоумышленников, действующих на большом расстоянии, потому что клиенты Эфириума просто не будут реорганизовывать финализированные блоки. Новые узлы, присоединяющиеся к сети, делают это путем поиска доверенного недавнего хеша состояния (контрольная точка «слабой субъективности (opens in a new tab)») и использования его в качестве псевдо-генезис-блока для построения поверх него. Это создает «шлюз доверия» для нового узла, входящего в сеть, прежде чем он сможет начать самостоятельно проверять информацию.

Отказ в обслуживании (DoS)

Механизм PoS Эфириума выбирает одного валидатора из общего набора валидаторов в качестве предлагающего блок в каждом слоте. Это можно вычислить с помощью общеизвестной функции, и противник может определить следующего предлагающего блок немного заранее до его предложения блока. Затем злоумышленник может заспамить предлагающего блок, чтобы помешать ему обмениваться информацией со своими пирами. Остальной сети покажется, что предлагающий блок был не в сети, и слот просто останется пустым. Это может быть формой цензуры против определенных валидаторов, не позволяющей им добавлять информацию в блокчейн. Внедрение тайных выборов одного лидера (SSLE) или тайных выборов нескольких лидеров снизит риски DoS, поскольку только предлагающий блок знает, что он был выбран, и выбор невозможно узнать заранее. Это еще не реализовано, но является активной областью исследований и разработок (opens in a new tab).

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

Злоумышленники, использующие >= 33% от общего стейка

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

33% застейканного эфира — это ориентир для злоумышленника, потому что с любой суммой, превышающей эту, он имеет возможность предотвратить финализацию цепи без необходимости тонко контролировать действия других валидаторов. Они могут просто все вместе исчезнуть. Если 1/3 или более застейканного эфира злонамеренно аттестует или не аттестует, то абсолютное большинство в 2/3 не может существовать, и цепь не может быть финализирована. Защитой от этого является утечка при бездействии. Утечка при бездействии выявляет тех валидаторов, которые не аттестуют или аттестуют вопреки большинству. Застейканный эфир, принадлежащий этим неаттестующим валидаторам, постепенно утекает до тех пор, пока в конечном итоге они в совокупности не будут представлять менее 1/3 от общего количества, чтобы цепь могла снова финализироваться.

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

Предполагая, что сеть Эфириума асинхронна (т. е. существуют задержки между отправкой и получением сообщений), злоумышленник, контролирующий 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% от всего застейканного эфира и возможность прибегнуть к социальному уровню для координации принятия альтернативного форка. Мы можем изучить это более подробно в следующем разделе.

Люди: последняя линия обороны

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

Одной из сильных сторон консенсуса PoS Эфириума является то, что существует ряд защитных стратегий (opens in a new tab), которые сообщество может использовать перед лицом атаки. Минимальным ответом может быть принудительный выход валидаторов злоумышленников из сети без каких-либо дополнительных штрафов. Чтобы снова войти в сеть, злоумышленнику придется присоединиться к очереди на активацию, которая гарантирует постепенный рост набора валидаторов. Например, добавление достаточного количества валидаторов для удвоения количества застейканного эфира занимает около 200 дней, что фактически дает честным валидаторам 200 дней, прежде чем злоумышленник сможет попытаться провести еще одну атаку 51%. Однако сообщество также может решить наказать злоумышленника более сурово, отозвав прошлые вознаграждения или сжигая некоторую часть (до 100%) его застейканного капитала.

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

Однако это будет серьезной проблемой управления. Некоторые пользователи и валидаторы, несомненно, проиграют в результате возврата к честной цепи, транзакции в блоках, проверенных после атаки, потенциально могут быть откатаны, что нарушит работу уровня приложений, и это просто подрывает этику некоторых пользователей, которые склонны верить, что «код — это закон». Биржи и приложения, скорее всего, связали действия офчейн с транзакциями ончейн, которые теперь могут быть откатаны, что запустит каскад отмен и пересмотров, которые будет трудно справедливо распутать, особенно если доходы, полученные нечестным путем, были смешаны, депонированы в децентрализованные финансы (DeFi) или другие деривативы со вторичными последствиями для честных пользователей. Несомненно, некоторые пользователи, возможно, даже институциональные, уже извлекли бы выгоду из нечестной цепи либо благодаря проницательности, либо по счастливой случайности, и могли бы выступить против форка, чтобы защитить свою прибыль. Звучали призывы отрепетировать реакцию сообщества на атаки >51%, чтобы можно было быстро выполнить разумное скоординированное смягчение последствий. Есть несколько полезных обсуждений Виталика на ethresear.ch здесь (opens in a new tab) и здесь (opens in a new tab), а также в Твиттере здесь (opens in a new tab). Цель скоординированного социального ответа должна заключаться в том, чтобы быть очень целенаправленным и конкретным в отношении наказания злоумышленника и минимизации последствий для других пользователей.

Управление — это уже сложная тема. Управление экстренным реагированием уровня 0 на нечестную финализирующую цепь, несомненно, будет сложной задачей для сообщества Эфириума, но это уже случалосьдважды — в истории Эфириума).

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

Краткое содержание

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

33%: задержка финальности

34%: задержка финальности, двойная финальность

51%: задержка финальности, двойная финальность, цензура, контроль над будущим блокчейна

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

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

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

Атаки 34%, 51% или 66%, вероятно, потребуют внеканальной социальной координации для их разрешения. Хотя это, вероятно, будет болезненно для сообщества, способность сообщества реагировать вне сети является сильным сдерживающим фактором для злоумышленника. Социальный уровень Эфириума — это последняя линия защиты: технически успешная атака все равно может быть нейтрализована сообществом, согласившимся принять честный форк. Между злоумышленником и сообществом Эфириума начнется гонка — миллиарды долларов, потраченные на атаку 66%, вероятно, будут уничтожены успешной атакой социальной координации, если она будет проведена достаточно быстро, оставив злоумышленника с тяжелыми сумками неликвидного застейканного эфира в известной нечестной цепи, игнорируемой сообществом Эфириума. Вероятность того, что это в конечном итоге окажется прибыльным для злоумышленника, достаточно низка, чтобы служить эффективным сдерживающим фактором. Вот почему инвестиции в поддержание сплоченного социального уровня с тесно согласованными ценностями так важны.

Дополнительная литература