Введение в блокчейн: сеть (часть 3)
6 минут
НовичокБлокчейн сети
Блокчейн предназначен для хранения надежного общего распределенного реестра. Этот реестр представляет собой историю сети блокчейна, поэтому уровень сети является важным при обсуждении экосистемы блокчейна.
В предыдущей статье мы обсудили узлы и то, как каждый из них поддерживает собственную копию распределенного реестра. Поскольку блокчейн спроектирован таким образом, что ни один другой узел не будет безоговорочно доверять копии любого другого узла. Им нужен способ договориться о состоянии леджера (консенсус), а для этого им нужен способ общения: сеть.
Одноранговая сеть блокчейна
Блокчейны используют другую сетевую архитектуру, чем большинство других веб-сервисов, к которым мы привыкли. Эти сервисы используют архитектуру "клиент-сервер", где сервер выступает в качестве единого источника достоверной информации, а клиенты подключаются непосредственно к нему для загрузки данных приложения. Например, когда вы используете клиент веб-почты, такой как Gmail, ваша электронная почта не идет напрямую с вашего компьютера на компьютер получателя. Вместо этого вы загружаете его на серверы Gmail, а получатель загружает его с сервера Gmail для чтения.
Эта система проста и эффективна, но при этом сервер Gmail выступает в качестве надежного посредника. В блокчейне не так много доверенных посредников, поэтому он использует одноранговую сеть, где каждый узел в сети напрямую взаимодействует с другими узлами. В большинстве сетей блокчейна используется широковещательная система, в которой, если узел имеет пять одноранговых узлов, каждое сообщение, полученное от одного, отправляется четырем остальным. Таким образом, сообщения распространяются по сети по многим путям, и никто не имеет полного контроля над коммуникациями.
Основное значение одноранговой модели для сетей блокчейна заключается в том, что базовая сеть должна поддерживать ее. Поскольку каждый одноранговый узел должен иметь возможность подключаться к любому другому одноранговому узлу, вы не можете эффективно распределить сеть блокчейна по сети с различными уровнями доверия без ущерба для безопасности блокчейна или сети. Кроме того, «широковещательный» стиль связи блокчейна означает, что для правильной работы требуется большая пропускная способность. Неспособность поддерживать это может иметь негативные последствия для безопасности и эффективности блокчейна.
Атака на блокчейн-сеть
Многие из самых известных атак на блокчейн-системы происходят на сетевом уровне. Многие люди знают, что управление закрытыми ключами представляет собой проблему и что существуют уязвимости смарт-контрактов, но им будет трудно даже назвать первую десятку наиболее распространенных уязвимостей смарт-контрактов. С другой стороны, атаки Sybil и атаки 51% часто упоминаются в сообщениях, связанных с безопасностью блокчейна.
В этом разделе мы обсудим три атаки на блокчейн на сетевом уровне: отказ в обслуживании (DoS), атаки Eclipse и Sybil. Атаку 51% также можно считать атакой на уровне сети, но мы поговорим о ней в следующем посте, так как она наиболее тесно связана с консенсусом.
Атака типа «отказ в обслуживании» (DoS)
Блокчейны - это распределенные децентрализованные сети, поэтому кажется, что атаки типа «Denial of Service - отказ в обслуживании» (DoS) должны быть невозможны. DoS-атаки нацелены на единственную точку отказа (например, веб-сервер) или узкое место в системе и пытаются перегрузить его, чтобы ухудшить работу системы. Поскольку блокчейн (теоретически) не имеет единых точек отказа, DoS-атаки не должны быть проблемой. На практике DoS-атаки на блокчейн существуют, но они атакуют временные точки отказа или узкие места в системе.
Одним из таких узких мест является транзакционная способность блокчейна. Большинство блокчейнов создают блоки с фиксированным максимальным размером по фиксированной скорости. Злоумышленник может создать большое количество спам-транзакций и передать их в сеть (аналогично DoS-атаке на веб-сервер). Если сеть не может надежно идентифицировать их как спам-транзакции и игнорировать их, они будут добавлены в цепочку блоков, занимая место, которое могло быть использовано законными транзакциями. Хуже того, блокчейны «вечны», поэтому эти спам-транзакции, попадающие в блокчейн, могут занимать место для хранения на узлах в течение всего срока службы блокчейна.
Примером временной единой точки отказа является создатель данного блока. В разных блокчейнах есть разные способы выбора этого человека, но в итоге один узел собирает блок, подписывает его и передает в сеть. В некоторых схемах (например, Proof of Stake), если создатель блока пропускает свой «слот» для создания блока, он теряет его. Если вы можете заставить кого-то отказаться от блока (т. е. с помощью традиционной DoS-атаки), этот блок никогда не будет создан, и сеть потеряет часть своей потенциальной пропускной способности.
Eclipse/Routing атаки
Атаки Eclipse и Routing - это два названия одной и той же атаки. При атаке Eclipse злоумышленник изолирует один узел от остальной сети, контролируя все одноранговые соединения. При Routing атаке сеть разбивается на две или более изолированные группы. Обе атаки могут использоваться для облегчения атаки «double-spending» - двойное расходование (путем отправки отдельной транзакции каждому изолированному лицу/группе) или атаки 51% (путем фильтрации представления жертвы о состоянии сети, чтобы они извлекали версию истории, которая находится в пользу нападающего).
Атаки Eclipse и маршрутизации могут выполняться различными способами. Вне экосистемы блокчейна злоумышленник может контролировать подключение узла к сети, используя вредоносное ПО или любые другие традиционные средства выполнения атаки типа MITM ("Человек посередине" от англ. Man-in-the-middle, MITM). Исследование показало, что Биткойн особенно уязвим для маршрутизирующих атак BGP, когда злоумышленник убеждает компьютеры в том, что лучший маршрут из А в Б проходит через них.
Внутри экосистемы блокчейна злоумышленник может выполнять эти атаки, контролируя все соединения узла со своими партнерами. Поскольку сети блокчейна не полностью связаны (узлы подключаются только к небольшому количеству других узлов), возможно, что узел может быть подключен только к узлам, контролируемым злоумышленником.
Неважно, как злоумышленник контролирует подключение узла к сети блокчейна, если контроль является абсолютным. Если это правда, злоумышленник может выборочно отбрасывать пакеты от других пользователей или отправлять взаимоисключающие версии транзакций со своих собственных адресов, чтобы разделить версии истории изолированных групп. Когда атака завершена, правило самого длинного блока означает, что самая короткая версия блокчейна будет отброшена (что идеально подходит для тип атак «double-spending» - двойное расходование).
Атака Сивиллы/Sybil
Атаки Сивиллы - это простая атака на сетевом уровне, используемая для облегчения других атак. При атаке Сивиллы злоумышленник создает и поддерживает большое количество учетных записей в сети блокчейн. Это может быть полезно при выполнении атаки Eclipse/Routing, поскольку, если злоумышленник контролирует большинство узлов, принимающих соединения, когда узел ищет их, существует высокая вероятность того, что узел выберет только соединения, контролируемые злоумышленником.
Далее: консенсус
До этого момента мы говорили об основах протокола блокчейна, о том, как он работает и подвергается атакам на уровне узла и сети. В следующем посте мы обсудим консенсус: способ, которым эти распределенные и децентрализованные сети узлов согласовывают свою общую историю.
Читать часть 4 - Консенсус