Контакты
Подписка
МЕНЮ
Контакты
Подписка

Консенсусы и их уязвимости

Ekaterina Danilina, 07.09.18

dadasheva_m

 

 

Автор: Татьяна Дадашева, партнер, Almaz Capital

 

 

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

Спектр задач весьма велик: от закрытых платформ для межбанковских расчетов до платформ, рассчитанных на миллионы m2m-транзакций в секунду в Интернете вещей. Довольно много надежд возлагалось на появление единой универсальной платформы, на которой будут строиться остальные решения, однако потребности индустрии растут намного быстрее, чем удается развиваться любой из существующих платформ. Как следствие, возникло множество разных подходов, основанных на все том же концепте, но адаптированных для разных задач.

Одной из общих привлекательных сторон блокчейна является неизменность реестра -- истории событий, что позволяет использовать технологию в средах без доверия между различными участниками. Неизменность и защищенность гарантируются за счет распределенности, что означает, что полная или частичная копия реестра хранится на поддерживающих эту систему нодах -- сети компьютеров, создающих новые блоки. Чтобы в сети не было ошибок, все ноды должны иметь одинаковую версию системы, способ достигать "согласия" о ее текущем состоянии и универсальный механизм записи новых транзакций в систему, т.е. чтобы результат был одинаковым вне зависимости от того, какой узел создал эту запись. Для это существует консенсус -- протокол взаимодействия узлов сети. Закономерно, что различия между платформами начинаются именно с этого протокола, задающего логику работу всей сети, и начиная с уровня консенсуса нужно рассматривать различные потенциальные угрозы, как порожденные случайными ошибками на более высоких уровнях, так и целенаправленные атаки.

Классы консенсусов

Можно выделить несколько наиболее распространенных классов консенсусов:

* для создания блоков используется некий ресурс, а также существует вознаграждение при создании блоков, чтобы мотивировать участников этот ресурс тратить или рисковать им. В качестве этого ресурса могут выступать: электроэнергия, которую тратят майнеры в Proof of Work; токены, отправляемые на некий адрес без возврата в Proof of Burn; Stake в системе, используемый для голосования в Proof of Stake и т.д. Практически из каждого из таких протоколов появились версии с делегированием, наиболее распространен Delegated PoS;

* основанные на равноправном голосовании; большая часть протоколов из этого класса пытается решить задачу византийских генералов -- задачу выбора стратегии в условиях получения сообщений ("голосов") от разных участников, часть из которых могут быть злоумышленниками. Соответственно, сюда относятся различные варианты Byzantine Fault Tolerance: Practical Byzantine Fault Tolerance (PBFT), Federated Byzantine Agreement (FBA), Cross Fault Tolerance (XFT);

* "ретранслирующие" протоколы, в которых создание новых транзакций требует от узла подтверждения предыдущих; такие блокчейны не являются, строго говоря, "цепью", а представляют из себя Directed Acrylic Graph, т.е. то, что можно условно представить в виде множества сонаправленных цепей, общающихся друг с другом. Наиболее популярные представители этого консенсуса, пожалуй, Tangle и Hashgraph;

* протоколы, основанные на доверии сторон: Proof-of-Authority, Мultisig, Corda и т.д. -- эту группу детально рассматривать не будем, т.к. подобные консенсусы, как правило, используются в private сетях, а значит обычный спектр угроз не актуален.

Популярные угрозы

Рассмотрим некоторые популярные угрозы и подверженность им разных протоколов.

Самым первым был создан PoW-консенсус в основе Bitcoin и множества его форков, а также Ethereum (сейчас ведется работа по переводу платформы на PoS) и др. Так как участников сети очень много, кто угодно может стать майнером, казалось бы, система устойчива к атакам, направленным на конкретные узлы. Действительно, сам протокол имеет в своей логике определенные ограничения (размер блока, число проверок подписей на блок и т.д.) и более того, большинство клиентов имеет встроенную защиту от DoS-атак. Но есть и другие векторы атак. Например, атака Сивиллы (Sybil attack): злоумышленник запускает множество нодов, в результате чего вероятность подключения именно к ним высока, таким образом, транзакции могут быть не приняты, задержаны, записаны в отдельную цепь и, соответственно, это позволяет возникнуть Double-Spending. Однако наиболее критичной для всей сети является атака большинства (Majority Attack), т.е. если более 50% нодов будут в сговоре, т.к. тогда их версия системы становится основной. Более того, достаточно 25% системы, т.к. далее становится выгодно нодам поддерживать атаку (Selfish Mining).

PoS делает вышеназванные атаки сложнее, т.к. каждый узел должен иметь Stake, соответственно, гораздо дороже "захватить" большую часть сети. С другой стороны, вероятность форка (раздвоения сети) увеличивается (можно делать ставку на обе ветки), т.е. возникают различные идеи атак, когда выгодно поддерживать неосновную цепь, например, P + Еpsilon Аttacks и др.

Если же рассматривать BFT, то ситуация с DoS-атаками другая, т.к. есть "лидер", отправляющий всем транзакции для подтверждения. В ситуации атаки на лидера выбирается новый. Злоумышленник может, "следуя за лидером", довольно надолго загрузить сеть. С другой стороны, благодаря устойчивости к византийским угрозам сеть будет работать, если в ней вплоть до 33% злонамеренных узлов.

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

То есть по сути большинство платформ старается добиться того, чтобы атакующему было сложнее и дороже организовать серьезную атаку на сеть. Некоторые платформы гибки к изменениям протокола и могут подстраиваться (например, Tezos создавался именно с этой идеей). Но большинство более старых платформ требуют Hard Fork, а в некоторых случаях, как например Bitcoin, подобные решения принимаются сообществом, разным участникам которого могут быть выгодны разные варианты (например, предложение SegWit2x в 2017г.).

Несомненно, есть и другие угрозы: например, самая крупная атака на Ethereum произошла в результате логической "дыры" в смарт-контракте, и подобные векторы атак в результате аудита оказались применимы ко многим смарт-контрактам. В результате подобных атак могут пострадать любые держатели валюты. Поэтому учитывать возможные угрозы нужно не только компаниям, рассматривающим блокчейн как технологию, на которую опираются критические элементы инфраструктуры, но и желающие проинвестировать в криптовалюты, и в особенности в ICO.

Темы:БлокчейнБлокчейн и криптовалютакриптовалютаТатьяна Дадашеваinformation securityAlmaz Capital

Еще темы...