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

PoS: атака через приватные ключи и подлинная ценность забытого героя — Часть 2

11

В предыдущей статье обсуждалась слабая устойчивость PoS относительно PoW при развитии событий по наихудшим сценариям. В этой статье я хочу разобрать наихудший сценарий №3: атака через приватные ключи.

Существует два типа атак с использованием приватных ключей: атака через старые ключи и атака через действующие ключи.

Атака через старые приватные ключи

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

Для решения этой проблемы в новых версиях PoS используются динамические списки валидаторов и/или контрольные точки. Идея состоит в том, чтобы отменить право недействительных заинтересованных сторон участвовать в будущей проверке.

Однако, даже такие меры для PoS протоколов не могут полностью устранить проблему. Два типа узлов по-прежнему особенно уязвимы:

  • Новые узлы только что присоединившиеся к сети;
  • Долго бездействовавшие узлы.

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

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

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

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

Но оператор PoS-узла, даже с проверенным загруженным ПО, будет регулярно обращаться к доверенным третьим лицам за гарантией того, что он остаётся в канонической цепи. Страх потерять контакт с основной сетью и попасть в неправильную цепь будет всегда, возможно очень долго даже после того, как доверенные третьи лица перестанут существовать! Это свидетельствует о существенном ухудшении положения в области безопасности.

Все протоколы PoS страдают от этой фундаментальной проблемы.

Атака через действующие приватные ключи

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

Как это работает: злоумышленник, получивший доступ к закрытым ключам, контролирующим по крайней мере 1/3 всего объёма монет[1], легко сможет создать два действительных блока с одинаковым параметром порядкового номера, причем ни один из блоков не будет казаться более “правильным” для остальной части сети (эффективно создавая разделение цепи). Это уже является разрушительным фактором для большинства протоколов PoS, так как они вынуждены остановить работу, если порог честного большинства 2/3+ не соблюдается. Ни один блок теперь не может быть «запечатан» для любого данного раунда. PoS цепь намертво зависнет в таком круговороте.

(Способность гарантировать непрерывное функционирование системы известно как свойство «живучести»).

Более пристальный взгляд на некоторые реализации PoS

Tendermint

Tendermint признает вышеуказанный недостаток и допускает, что в случае остановки работы протокола пользователи должны выходить за пределы правил для достижения консенсуса:

«Подмножество валидаторов должно согласовываться с помощью внешних средств для подписания предложения по реорганизации, которое выбирает форк.”

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

Casper

Casper тоже может зависнуть, если атакующий контролирует более чем 1/3 монет.

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

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

DFINITY

В DFINITY блок должен быть «нотариально заверен», фактически подтвержден дважды, прежде чем он может быть запечатан. Атакующий с количеством монет больше чем 1/3 от общего объёма также может остановить процесс нотариального подписывания блоков и заморозить протокол.

Есть несколько вещей, которые стоит отметить в DFINITY.

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

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

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

С другой стороны, вес блока DFINITY субъективен и, следовательно, им можно манипулировать. Этот воображаемый вес становится бессмысленным, если:

  • узлы когда-либо не согласились со случайными значениями;
  • отказал случайных значений (например: неспособность нотариально заверить блоки заставила бы случайный маяк зависнуть).

В целом, безопасность DFINITY может быть хуже, чем Tendermint и Casper. «Пороговая группа» это хорошая идея, но представляет собой только подмножество всех активных валидаторов (k < N). Поскольку подмножества выбираются случайным образом, злонамеренных узлов может оказаться слишком много в некоторых подмножествах (и наоборот, слишком мало в других). Атакующий, который контролирует 1/3 списка валидаторов, может владеть более 1/3 доли участия в подмножестве. Он может ещё больше увеличить шансы, «измельчая» свои личности, пока не получит желаемый коэффициент участия. (Ему нужно контролировать только некоторые пороговые группы и необязательно все.)

Участие в стейкинге

До сих пор в этом анализе мы предполагали, что в худшем случае атакующий получает контроль над 1/3+ от общего объёма монет, что трудно, но вполне возможно. Но на самом деле требования к атакующему намного ниже, так как ему нужно больше 1/3 монет только активно участвующих в стейкинге.

Крайне маловероятно, что все держатели монет будут участвовать в процессе стейкинга и проверки. Допустим, что доля участия составляет 50%, тогда злоумышленнику требуется не 1/3, а только 1/6 от общего объёма монет, чтобы создать конфликтующие блоки/контрольные точки. Если доля участия составляет 25%, злоумышленнику требуется только 1/12. Это весьма тревожно, поскольку, как уже говорилось, распределение богатства следует законам власти. Горстка самых богатых владельцев могла бы легко контролировать 1/12 запаса монет.

Низкий уровень участия в стейкинге, вероятно, является самой большой угрозой, стоящей перед протоколами PoS.

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

Подлинная ценность: забытый герой

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

  1. Случайность.
  2. «Подлинная ценность”.
  3. Средства поощрения.

№1 и №2 являются аспектами майнинга PoW, хотя №3 встроен в консенсусный код.

№1 относится к области компьютерных наук и криптографии, в то время как №3 попадает в область экономики и теории игр.

С другой стороны, №2 не вписывается ни в одну дисциплину. Ментальные модели, необходимые для понимания №2 и его значимости, исходят из сочетания различных дисциплин, таких как археология, эволюционная психология, экономика и даже физика[2].

Возможно, из-за этого недостаточно изученного характера №2 многие отвергли его и значительно недооценили его значение. Разработчики PoS-протокола часто совешают эту ошибку и учитывают в своих проектах только №1 и №3.

Это очевидно на примере одержимости DFINITY случайностью. Разработчики DFINITY считают, что случайность — это ключ к решению всего.

Ethereum Casper, с другой стороны, одержим стимулами до такой степени, что придумывает бессмысленный термин: “криптоэкономика”. Исследователи Ethereum считают, что продуманные проекты стимулов — это ключ к решению всего.

Старая поговорка «для молотка всё является гвоздём» как нельзя лучше раскрывает суть разработки PoS-протокола.

Реальность такова, что подлинная ценность, возможно, является самым важным компонентом существования Биткойна. Без неё в Биткойне нет ничего нового и прорывного.

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

[1]: Отношение 1/3 происходит из хорошо исследованной области традиционных систем BFT (подмножеством которых и являются PoS-протоколы). Традиционные системы BFT не работают, когда 1/3 или более узлов становятся злонамеренными. Термин BFT происходит от проблемы византийских генералов, которая была определена Лэмпортом, Пизом и Шостаком в 1982 году.

[2]: Прочитайте эссе Ника Сабо о происхождении денег, чтобы понять важность подлинной ценности.

[3] Спасибо @datavetaren за проработку вопроса.

Источник: bitnovosti.com