Введение

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

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

Эта концепция подробно обсуждается в статье 2015 Aclipse Attacks on Bitcoin Peer Network, в которой исследователи из Бостонского университета и Еврейского университета сообщают о результатах своих экспериментов по организации атак затмения, а также о возможных контрмерах для борьбы с ними.


Как работает атака затмения

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

Ограничивающим фактором для многих узлов является пропускная способность. Хотя существует огромное количество устройств, на которых работает это программное обеспечение, среднее устройство не может напрямую подключиться ко многим из них из-за ограничений, установленных в программном обеспечении Биткойн (которое допускает не более 125 подключений).

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

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


Последствия атаки затмения

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


0-подтверждение двойной траты

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

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

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


Двойные траты с N-подтверждением

Двойная трата с N-подтверждением аналогична трате с 0-подтверждением, но требует большей подготовки. Многие компании предпочитают дождаться определенного количества подтверждений, прежде чем отмечать платеж как действительный. Чтобы обойти это, злоумышленник должен затмить и майнеров, и торговца. Как только злоумышленник установил заказ с продавцом, он передает транзакцию (затменным) майнерам. Транзакция подтверждается и включается в блокчейн — но этот блокчейн не является той цепочкой, которую наблюдает большая часть сети, поскольку майнер отключен.

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


Ослабление конкурирующих майнеров

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

Теоретически крупномасштабная атака Eclipse на крупных майнеров может быть использована для облегчения атаки 51%. В нынешнем виде стоимость захвата большей части хеш-мощности Биткойна просто слишком высока даже для самых изобретательных злоумышленников — при ~80 TH/s организации потребуется более 40 TH/s, чтобы попытаться совершить такой маневр.

В гипотетическом сценарии, когда эта хэш-мощность распределяется между 10 сторонами (каждая из которых владеет 8TH/s), злоумышленник может значительно снизить требования для атаки 51%, отключив эти стороны от сети. Если пять затмеваются, 40 TH/s исключается из гонки за поиском следующего блока, и теперь злоумышленнику достаточно получить лишь немного больше 20 TH/s, чтобы получить контроль.

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


смягчение последствий

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

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


Заключительные мысли

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

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