Глубокое погружение: модель безопасности Биткойна

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

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

Давайте углубимся в модель безопасности, предлагаемую пользователям Биткойна, поддерживающим полные узлы.

В поисках истины

«Одна из сильных сторон Биткойна — даже одна из самых главных, по моему мнению — это ваша возможность низкой степени доверия к другим». — Питер Уилл

Цель распределённых реестров — обеспечивать упорядоченную историю событий, потому что в распределённых системах вы не можете просто доверять временным меткам.

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

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

Учитывая такое предположение, операторы полных узлов могут быть абсолютно уверены в некоторых фактах:

  • Никто не увеличивал денежную массу кроме майнеров и в соответствии со строго установленным графиком;
  • Никто не потратил деньги без владения соответствущим приватным ключом;
  • Никто не потратил те же самые деньги дважды.

Операторы полных узлов вполне могут быть уверены в некоторых других утверждениях. Есть обоснованные гарантии того, что:

  • Любой блок в цепи был создан в течение двухчасового промежутка относительно временной метки самого блока;
  • Они синхронизируют подлинную версию истории блокчейна.

На техническом уровне это потребует множества проверок.

Все блоки следуют правилам консенсуса:

  • Каждый блок связан с родительским блоком;
  • Каждый блок соответствует своей степени сложности и на его решение затрачена существенная работа;
  • Временные метки блока находятся в пределах окна времени для недавно найденных блоков;
  • Корень Меркла (хэш суммы хэша каждой транзакции в блоке) соответствует всем транзакциям в блоке;
  • Ни один из блоков не превышает максимально допустимый размер;
  • Первая (и только первая) транзакция каждого блока является coinbase транзакцией (особый тип транзакции, который не требует существовавших ранее выходов, т.е. это награда, которую майнеры получают за добычу новых блоков);
  • Coinbase выходы выплачивают не больше чем установленное на данный момент вознаграждение за найденный блок;
  • Блоки содержат только допустимые операции подписывания.

Все транзакции следуют правилам консенсуса:

  • Входные и выходные значения являются допустимыми;
  • Транзакции тратят только неистраченные выходы;
  • Все потраченные входы имеют действительные подписи;
  • Ни один из выходов Coinbase транзакций не был истрачен ранее 100 блоков, найденных с момента их создания (созревание полученных майнерами монет);
  • Ни одна из транзакций не истратила входы в неподтверждённом состоянии, т.е до включения её в блок.

Есть также множество других правил, обсуждение которых здесь займёт слишком много времени.

Термодинамика безопасности

Как  только транзакция в блоке подтверждена, её нельзя отменить без минимальных затрат энергии для перезаписи цепочки.

Глубокое погружение: модель безопасности Биткойна cryptowiki.ruИсточник: “Bitcoin’s Security Model Revisited” by Yonatan Sompolinsky1 and Aviv Zohar

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

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

Глубокое погружение: модель безопасности Биткойна cryptowiki.ruИсточник: http://bitcoin.sipa.be

Разберём некоторые ценовые показатели такой атаки:

Antminer S9 требует 0.1 джоулей на Гх/с(109 хэшей)
1026 хэшей * 0.1 Дж / 109 хэшей = 1015 джоулей
1015 джоулей = 2,777,777,778 кв/ч * $0.10 кв/ч = $277,777,778 будет стоимость электроэнергии для перезаписи всего блокчейна.

На момент написания статьи, сложность отдельно взятого блока стремится к 253,618,246,641, что потребует примерно:
253,618,246,641 * 248 / 65535 = 1.09 * 1021 хэшей.
1.09 * 1021 хэшей * 0.1 J / 109 хэшей = 1.09 * 1011 джоулей
1.09 * 1011 джоулей = 30,278 кВт/час * $0.10 кВт/час = $3,028 стоимость электроэнергии для перезаписи одного блока.

Вот почему мы можем доказательно утверждать, что Биткойн термодинамически безопасен.

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

Также обратите внимание, что в этом расчёте отсутствует учёт стоимости владения и использования необходимого количества майнингового оборудования для проведения такого типа атаки.

Сопротивление Sybil атакам

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

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

Глубокое погружение: модель безопасности Биткойна cryptowiki.ru

На рисунке представлен наихудший сценарий, в котором ваш узел подвергается массированной Sybil атаке, но всё ещё имеет одно соединение с честным узлом, который подключен к истинной Биткойн-сети. До тех пор, пока один честный пир передает истинные блокчейн-данные на ваш полный узел, будет совершенно ясно, что какие-то Sybil злоумышленники пытаются обмануть вас, и ваш узел будет игнорировать их.

Консенсус в реальном времени

Биткойн-протокол создает ряд других интересных атрибутов в отношении поддержания общесетевого консенсуса, когда ваш узел находится на передовой блокчейна.

Авторы “Research Perspectives and Challenges for Bitcoin and Cryptocurrencies” отмечают следующие свойства, которые важны для стабильности криптовалюты:

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

Экспоненциальное сближение. Вероятность ответвления для глубины n равна O(2−n). Это дает пользователям высокую уверенность, что простое правило “k подтверждений” обеспечит неизменяемость состоявшихся транзакций.

Живучесть. Новые блоки и достоверные транзакции с адекватными комиссиями продолжат добавляться в блокчейн в течение приемлемого периода времени.

Правильность. Все блоки в цепи с наибольшим доказательством объёма работы будут включать только действительные транзакции.

Справедливость. Майнер, владеющий X% от общей вычислительной мощности сети будет добывать приблизительно X% блоков.

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

Существует много других алгоритмов, которые могут быть использованы для поддержания консенсуса в распределенных системах, например:

  • Доказательство владения;
  • Доказательство возраста монеты;
  • Доказательство депозита;
  • Доказательство уничтожения;
  • Доказательство деятельности;
  • Доказательство затрат прошедшего времени;
  • Федеративный Консенсус;
  • Практическая Византийская Отказоустойчивость.

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

Недопонимание модели безопасности

Есть распространенное ошибочное предположение, что у Биткойна существует чётко определённая модель безопасности.

На самом деле, Биткойн-протокол строился и строится без формально определенной спецификации или модели безопасности. Лучшее, что мы можем сделать, — это изучить стимулы и поведение участников системы, чтобы глубже понять и попытаться описать ее.

Тем не менее, есть несколько свойств Биткойн-протокола, которые часто анализируются неправильно.

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

Стоит отметить, что биткойн имеет 13 жестко закодированных контрольных точек, но они не меняют модель безопасности так, как это делают централизованно транслируемые контрольные точки. Последняя контрольная точка была добавлена в Bitcoin Core 0.9.3 и находится на блоке 295000, который был создан 9 апреля 2014 года. Этот блок имел сложность 6,119,726,089, которая потребует приблизительно:

6,119,726,089 * 248 / 65535 = 2.62 * 1019 хэшей
2.62 * 1019 хэшей * 0.1 J / 109 хэшей = 2.62 * 109 джоулей
2.62 * 109 джоулей = 728 кВт/час * $0.10 кВт/час = $73 сумму для генерации блока.

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

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

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

Оцените автора
( Пока оценок нет )
КриптоВики
Добавить комментарий