Eclipse Attack целенаправленно изолирует узел от честных пиров, сохраняя связь с атакующим. Full Node — программа, которая самостоятельно проверяет правила Bitcoin. Она продолжает эту проверку, но может получать лишь неполную или устаревшую картину сети. Атака не делает недопустимые данные допустимыми — она использует то, чего узел не видит.
Анна принимает платёж в биткоине и наблюдает за своим узлом — компьютером с программой для участия в сети Bitcoin. Он показывает активные соединения, но все важные пути наружу контролирует противник. Сообщения приходят, однако лишь разрешённые им. Такова суть Eclipse Attack. Одного вредоносного соединения обычно недостаточно: рабочий путь к честному узлу может доставить скрываемые блоки и нарушить контроль атакующего. Блок объединяет транзакции в пакет, добавляемый в общую историю. [1] [6]
Ethan Heilman, Alison Kendler, Aviv Zohar и Sharon Goldberg описали в 2015 году атаки на тогдашнюю сеть Bitcoin. Они изучали, как заполнить адресные таблицы узла адресами атакующего, чтобы при повторном подключении он соединялся только с компьютерами атакующего. Они использовали механизм выбора соединений, не взламывая математические методы, которые защищают, например, цифровые подписи. Исследование также предложило защиту; его исторические результаты не измеряют успех против сегодняшней версии Bitcoin Core. [1] [7]
Добившись изоляции, противник может выбирать, какие блоки и транзакции передавать Анне, а какие удерживать. Он также может мешать распространению её собственных транзакций или наблюдать их происхождение. Сам контроль соединений не требует большинства мощности майнинга. Но это не делает все последующие атаки бесплатными: создание новых блоков, например, требует настоящей работы. [1] [6]
Full Node Анны продолжает проверять подписи, условия расходования и разрешённую награду майнера. Подписать здесь означает с помощью закрытого ключа, секретного числового значения, создать проверяемое доказательство разрешения на платёж. Другие могут проверить подпись, не зная этого секрета. Узел Анны не примет ошибочную транзакцию только потому, что её прислал единственный доступный источник. Однако проверка не обнаружит допустимый блок, который вообще не поступил. Так же можно убедиться в подлинности доставленного письма, не зная, что кто-то задержал все более новые. Допустимость и полнота имеющейся информации — разные вопросы. [5] [9]
Узел может оставаться на последнем известном блоке, пока другие продолжают работу. Изолированный майнер может даже добывать блоки на покинутой ветви и потерять ожидаемую награду. Но долгое ожидание само не доказывает атаку: майнинг случаен, а проблемы вызывает и обычный сбой. Важна совокупность признаков, а не только медленно обновляющийся экран. [1] [5] [8]
Атакующий может показывать Анне допустимую частную ветвь с её платежом, одновременно расходуя те же средства иначе в остальной сети. После восстановления связи узел может выбрать допустимую ветвь с большей накопленной работой. Это Reorg — замена части принятой истории. Платёж из покинутой ветви может потерять подтверждение. Но для своих блоков противник обязан обеспечить Proof of Work. Это проверяемый результат поиска, требующего значительных вычислений; такие блоки тоже должны его содержать. Нужную работу могут выполнить и майнеры, которых атакующий изолировал. Выдуманное число подтверждений не обманет Full Node; успех зависит также от длительности изоляции и ресурсов атакующего. [1] [5] [6]
Защита старается не допустить, чтобы все соединения оказались у одного противника. Bitcoin Core группирует известные адреса и поддерживает сетевое разнообразие при выборе исходящих соединений. IP-адрес указывает место в сети, к которому подключается программа. Однако разные IP могут принадлежать одному оператору или проходить через общую инфраструктуру. Меры снижают концентрацию и усложняют атаку, но не доказывают независимости каждого пира. [3] [4]
Bitcoin Core использует короткие соединения feeler для проверки доступности другого адреса. Дополнительные соединения передачи блоков решают иную задачу: могут принести новые заголовки — краткие технические записи блоков — и другой взгляд на продолжение цепи. Поэтому неверно утверждать, что каждый feeler сразу загружает актуальную историю. Приведённый код Bitcoin Core 29.0 показывает эти разные меры защиты; ни одна сама не гарантирует окончания изоляции. [4] [8]
Известный пир, добавленный вручную, может открыть ещё один путь, если доступен и действительно связан с остальной сетью. Однако несколько соединений через одного провайдера не обязательно независимы. Разумнее пользоваться поддерживаемым ПО и понимать настройки, чем слепо копировать чужие списки адресов. Собственная проверка сохраняется: доверие к доступности источника не даёт ему права присылать недопустимые блоки. [2] [4] [6]
При Sybil Attack один противник действует под множеством идентичностей, что может облегчить Eclipse Attack. Eclipse обозначает успешное отсечение конкретного узла или выбранной группы от честных источников. Более широкое разделение сети отделяет целые её части и не обязательно возникает таким способом. Пользователю важно помнить: Full Node обеспечивает самостоятельную проверку, но нуждается также в информации вне контроля атакующего. [1] [6]
Для полной картины прочитайте эту статью вместе с Sybil Attack, Block Propagation, Compact Blocks, Nakamoto Consensus, Bitcoin, Full Node. На эту статью также ссылаются Двойная трата, Byzantine Generals Problem, Nakamoto Consensus, Sybil Attack.