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

Игра реорганизаций в Эфириуме на основе доказательства доли владения

Каспар Шварц-Шиллинг представляет исследование атак с реорганизацией блоков в Эфириуме на основе доказательства доли владения, охватывающее векторы атак, механизмы защиты и меры по смягчению последствий на уровне протокола.

Date published: 29 ноября 2022 г.

В этой презентации рассматриваются типы реорганизаций блоков, возможные в Эфириуме на основе доказательства доли владения (PoS), и меры, предназначенные для их предотвращения. Каспар Шварц-Шиллинг, исследователь из группы надежных стимулов (Robust Incentives Group) Фонда Ethereum, подробно описывает механику реорганизаций ex-post и ex-ante, сравнивая ландшафт безопасности между доказательством выполнения работы (PoW) и доказательством доли владения.

Эта стенограмма является доступной копией оригинальной стенограммы видео (opens in a new tab), опубликованной ЛисКон. Она была слегка отредактирована для удобства чтения.

Введение и предыстория (0:03)

Добро пожаловать. Сегодня я собираюсь поговорить о реорганизациях (реоргах), которые возможны в Эфириуме на основе доказательства доли владения.

Недавно я присоединился к Фонду Ethereum, в частности к группе надежных стимулов (Robust Incentives Group). По сути, мы — исследовательская команда, сосредоточенная на всем, что связано со стимулами. Я буду краток — этот доклад очень насыщенный, а большую часть нашей работы вы можете найти на GitHub.

Два типа реорганизаций (0:44)

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

С одной стороны, у нас есть реорганизации ex-post, а с другой — реорганизации ex-ante. Простите мне немного претенциозные латинские названия, но они отлично передают суть.

Реорганизации ex-post — это то, о чем мы обычно думаем, когда говорим о реоргах. Злоумышленник видит блок — если он ценный, он может попытаться реорганизовать его. Итак, на диаграмме здесь мы видим, что блок N+1 — это блок, который злоумышленник хочет исключить с помощью реорганизации, и, создавая блок на том же родительском блоке N, если это сработает, блок N+3 затем будет построен на блоке N+2. Это обычное дело.

Теперь реорганизации ex-ante немного отличаются. Идея заключается в том, что злоумышленнику нужно начать атаку еще до того, как он узнает, какой блок он собирается реорганизовать. Как это примерно работает? На очень высоком уровне блок N+1 строится поверх N, но не публикуется сразу. Честные узлы даже не знают о существовании N+1, поэтому они продолжат строить на N. Затем с помощью некоторого механизма N+1 публикуется, и N+3 может увидеть, что N+1 лидирует, и построиться поверх него, так что N+2 фактически исключается в результате реорганизации.

Вы можете задаться вопросом, зачем вообще делать такой реорг. Что ж, все еще есть MEV, который можно извлечь. Если вам повезет, в блоке N+2 будет много MEV — вы можете извлечь его, просто скопировав и вставив содержимое этого блока. В худшем случае у вас есть транзакции за два слота, которые можно прослушать.

Реорганизации ex-post в доказательстве выполнения работы (2:49)

Прежде чем погрузиться в реорганизации ex-ante, которые являются главной темой этого доклада, позвольте мне вкратце напомнить о реорганизациях ex-post и, в частности, начать с контекста доказательства выполнения работы.

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

Вкратце, в Эфириуме на основе доказательства выполнения работы реорганизации ex-post сложны, но не невыполнимы. Майнер с 10% хешрейта имеет относительно хорошие шансы добыть несколько блоков подряд, и если стимул достаточно высок — представьте, что есть один блок со 100 ETH в виде MEV для извлечения — тогда, возможно, однопроцентного показателя успеха может быть достаточно, чтобы попытаться провести реорганизацию.

Реорганизации ex-post в доказательстве доли владения (3:39)

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

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

Вы должны аттестовать блоки, если слышите действительный блок, или через 4 секунды после начала слота — в зависимости от того, что наступит раньше. Поэтому, если по какой-то причине предлагающий блока N+1 не в сети и через 4 секунды после начала слота блока нет, вы проводите аттестацию блока N. Если вы слышите его вовремя, вы аттестуете блок N+1. Все просто.

Все эти аттестации придают вес блокам, и этот вес используется при выборе форка для определения последнего заголовка.

Теперь давайте рассмотрим реорганизацию одного блока. В начале все идет как обычно — все аттестуют блок N, даже злоумышленник. Затем N+1 строится поверх N, и поскольку злоумышленник не хочет придавать вес блоку, который он пытается исключить с помощью реорга, он вместо этого аттестует блок N. Блок N набирает большой вес, потому что у злоумышленника есть две трети комитета — что означает, что ему нужно контролировать, грубо говоря, две трети всего стейка.

Одна треть честных участников аттестовала N+1, две трети — N. Теперь появляется блок N+2 — очевидно, злоумышленник строит его на N и аттестует свой собственный блок. С точки зрения честных валидаторов, N+1 по-прежнему лидирует по весу, потому что и N+1, и N+2 наследуют весь вес блока N, но у N+1 также есть эта одна треть аттестаций, которой не хватает N+2.

Если мы подсчитаем это — блок N+1 имеет аттестации на одну треть плюс одну треть, что дает две трети, и блок N+2 также имеет две трети. Для простоты давайте предположим, что разрешение ничьей происходит в пользу злоумышленника. Тогда N+3 увидит N+2 как лидирующий и будет построен поверх него.

Чтобы дать вам представление о том, насколько нелепы эти предположения — даже если бы у вас был стейкер с 65%, вероятность того, что он будет контролировать две трети комитета в любом заданном слоте, составляет 0.05%. Это показывает, что сила параллельных аттестаций реальна — реорганизации ex-post невероятно сложны, если не сказать практически невозможны, в Эфириуме на основе доказательства доли владения.

Механика атаки с реорганизацией ex-ante (7:34)

Теперь я собираюсь поговорить о реорганизациях ex-ante. Эта атака основана на статье Нойдера (Neuder) и других. Недавно мы значительно улучшили эту атаку. Мы также написали об этом статью и успели загрузить ее на arXiv как раз вовремя.

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

Как работает атака с реорганизацией ex-ante? Изначально блок N — все как обычно, все его аттестуют. Теперь вы — предлагающий блока N+1. Вы предлагаете его и приватно аттестуете с помощью одного валидатора. Важно отметить, что вы держите это в секрете — вы не публикуете его и не распространяете на P2P-уровне.

Происходит следующее: честные участники не видят блок N+1, поэтому они будут аттестовать блок N. В этом и заключается хитрость — вы наследуете этот вес, и вам не нужно с ним бороться.

Давайте на мгновение предположим нулевую задержку. В слоте N+2 то, что мы делаем как злоумышленник, — это публикуем блок N+1 и приватную аттестацию одновременно. Честным валидаторам в слоте N+2 нужно аттестовать блок. Со своей точки зрения они видят блок N+2 и блок N+1 с этой одной приватной аттестацией. Если они запустят выбор форка, они обнаружат, что блок N+1 имеет больший вес, чем блок N+2, потому что у N+1 есть приватная аттестация, которой нет у N+2. Даже все честные валидаторы фактически аттестуют блок N+1. В N+3, что тривиально, N+1 будет рассматриваться как заголовок цепи.

Задержка сети и атака (10:25)

Я предположил нулевую задержку, что, очевидно, не соответствует действительности. Задержка существует — требуется время для распространения блоков и сообщений на P2P-уровне.

Способ, с помощью которого злоумышленник все еще может осуществить такую атаку, заключается в наличии множества узлов в разных местах P2P-топологии. Когда честный предлагающий в слоте N+2 предлагает этот блок, вы узнаете об этом на очень ранней стадии процесса распространения. В результате вы можете опубликовать свой приватный блок из всех этих разных мест таким образом, что большинство узнает о блоке N+1 до того, как они узнают о блоке N+2 — это означает, что они увидят, что блок N+1 лидирует по весу, и фактически аттестуют его.

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

Стратегии балансировки для более длинных реорганизаций (11:42)

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

Вы публикуете свой приватный блок таким образом, чтобы примерно половина честных узлов узнала о вашем приватном блоке и аттестации до того, как они узнают о блоке N+2 — поэтому они аттестуют ваш блок. Вы хотите, чтобы другая половина не услышала ваш блок до того, как они аттестуют N+2.

Теперь у вас есть половина честного комитета, аттестующая N+1, и другая половина, аттестующая N+2. Как это помогает? Честный комитет теперь нейтрализует друг друга, и вам как злоумышленнику даже не нужно с ними бороться — что, по сути, является сбывшейся мечтой злоумышленника.

Пройдемся по диаграмме: блок N — все как обычно, блок N+1 — та же история, вы его не публикуете. Честные валидаторы аттестуют блок N. Появляется блок N+2, вы узнаете о нем рано и публикуете блок N+1 с одной аттестацией — «решающим голосом» — таким образом, что половина честного комитета видит его до, а половина — после. Половина голосует за N+1, другая половина — за N+2. На самом деле вы хотите разделения с разницей в один голос, чтобы у N+2 было на одну аттестацию больше, поэтому N+3 строится на N+2 и продолжает реорганизацию.

Чтобы завершить реорганизацию двух блоков: предлагается блок N+3, вы слышите его рано, вы публикуете блок N+1 и ваши 2 оставшиеся аттестации, наводняя P2P-уровень, чтобы большинство честных участников проголосовало за блок N+1 — так, чтобы он имел больший вес, чем блок N+3, и N+4 был построен поверх N+1.

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

Смягчение с помощью бонуса предлагающего (15:17)

Давайте поговорим о смягчении последствий. В чем основная идея? Мы собираемся дать предлагающему немного больше власти. Если действительный блок прибывает вовремя, давайте увеличим вес этого блока на время действия слота. После завершения этого слота мы возобновляем обычный подсчет LMD-GHOST, и все идет как обычно.

Итак, если блок N+2 предложен вовремя и он действителен, этот блок получит бонус предлагающего — скажем, 80% от размера комитета. Теперь эта милая маленькая аттестация N+1 от злоумышленника не сработает. Ни в коем случае.

Балансировка также больше не работает, потому что у вас есть разделение 50/50, но бонус всегда перевешивает в одном направлении. Вы никак не сможете сохранить это разделение 50/50.

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

Ключевые выводы (16:48)

Некоторые ключевые выводы. Я рассказал о различиях между реорганизациями ex-post и ex-ante. Я вкратце обрисовал различные ландшафты для реоргов в доказательстве выполнения работы по сравнению с доказательством доли владения. Я показал вам, как осуществить реорганизацию ex-ante, но также, что немаловажно, как это исправить.

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

Надеюсь, вам было интересно. Большое спасибо.

Была ли эта страница полезной?