Атаки мира криптовалют — Уязвимости и безопасность

Атаки криптовалют
BitPapa - Надежный P2P Обменник криптовалют

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

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

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

Атаки мира криптовалют

В мире криптовалют существуют разные реальные и предполагаемые уязвимости сетей. Вы наверняка слышали об «атаке 51 %», «двойном расходовании» и других пугающих фразах, которые будоражат сообщества, связанные с криптовалютами. Несмотря на то, что поводы для беспокойства действительно имеются, паника вкупе с невежеством порождает множество слухов. Угрожает ли опасность биткоину и другим цифровым валютам? Давайте проясним ситуацию и рассмотрим наиболее распространенные атаки мира криптовалют, способные нарушить работу системы.

Атака 51%

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

Атака 51%

Широко известно, что «криптовалюта защищена майнингом». Но что это означает? Как и от чего она защищена? Майнинг — это процесс создания новых блоков. А зачем они нужны? С технической точки зрения они требуются для идентификации «хороших» и «плохих» транзакций. Если Элис пытается отправить одни и те же деньги Бобу и Кэрол, теоретически не имеет значения, какая из транзакций является «правильной». Важно, что транзакция должна быть только одна. Каждый майнер должен решить, какую транзакцию выбрать — ту, которая произошла раньше, ту, за которую он получит больше, или ту, у которой лучше хеш, и т. д. Если майнеров много, имеем распределенную задачу выработки консенсуса.

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

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

Таким образом:

  • Атакующий может: «запрещать» включение отдельных (либо всех) транзакций в цепочку блоков, отменять старые транзакции (возвращать деньги) и делать отмененные транзакции действительными.
  • Атакующий не может: контролировать оборот денег других людей (перенаправлять либо перехватывать транзакции) и препятствовать обмену данными между узлами сети.

Атака 51 %

Двойная трата

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

Атака типа «гонки» (Race Attack)

Атакующий осуществляет транзакцию A, оплачивая покупку. Одновременно он выполняет транзакцию B, переводящую эти же деньги на другой счет злоумышленника. Если магазин не дожидается денег и отгружает купленные товары, то идет на значительный риск: с 50% вероятностью транзакция B может попасть в цепочку блоков без каких-либо усилий со стороны взломщика. Что еще хуже, он может увеличить эту вероятность, выбирая узлы сети для передачи той или иной транзакции. Именно поэтому не стоит доверять неподтвержденным транзакциям, не так ли?

Атака Финни (Finney Attack)

А теперь давайте предоставим атакующему доступ к некоторой части мощностей майнинга сети. Он пытается найти обычный блок, который может содержать его транзакцию B. Суть в том, что ни транзакция A, ни транзакция B еще не отправлены. Как только блок обнаруживается (рано или поздно в зависимости от вычислительных мощностей), он отправляет… транзакцию A! Злоумышленник покупает товары в магазине. Продавец, наученный горьким опытом, ждет появления блока с транзакцией A в сети. Как только блок обнаруживается, магазин отгружает товары, и… тут-то и появляется блок с транзакцией B, найденный злоумышленником. Это приводит к так называемой развилке, когда майнеры должны выбрать один из двух блоков для продолжения цепочки.

Атаки мира криптовалют - Атака 51 %

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

Затем предоставим нашему взломщику доступ к БОЛЬШИМ, но все же не достигающим 51 %, мощностям майнинга сети. Что произойдет тогда? Он может подготовить не один блок, а сразу несколько, чтобы обогнать «честную» цепочку. Вероятность такого события не велика, но эта атака будет на 100 % успешной. Например, если у злоумышленника имеется 10 % хешрейта, на каждые 100 блоков (чаще, чем раз в сутки!) он может находить два «быстрых» блока подряд и начинать свою атаку. Теперь магазин, ожидающий двух подтверждений, снова в опасности! Так сколько же подтверждений требуется с учетом возможностей атакующего? По мнению Сатоши, достаточно шести подтверждений.

Эгоистичный майнинг

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

Все начинается с того, что пул, которым владеет злоумышленник, заявляет, что «здесь майнинг выгоднее, чем в других пулах». Давайте предположим, что это правда. Как в таком случае поведут себя обычные майнеры? Вероятнее всего, они войдут в пул и начнут майнинг. В результате пул может получить 51 % мощностей. Конечно, каждый майнер отдает себе отчет в том, что, присоединяясь к крупному пулу, он приближает этот момент, а потому подвергает опасности систему, из которой извлекает прибыль. К сожалению, такова человеческая натура. Поэтому, когда каждый «играет сам за себя», результат чаще всего оказывается плачевным.

Атаки мира криптовалют - Эгоистичный майнинг

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

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

Когда пул находит новый блок, который увеличивает его приватную цепочку, то:

  1. В случае, если цепочка блоков на данный момент раздвоилась, пул публикует свой собственный блок и выигрывает гонку. Блок, найденный честными майнерами, становится изолированным, и их работа оказывается напрасной. Ситуация развилки: блок N уже опубликован в сети.
  2. Если развилки нет, пул оставляет этот блок в тайне и продолжает наращивать свою цепочку (тем самым увеличивая отрыв). В данной ситуации атакующий выигрывает, но сеть по-прежнему майнит цепочку блока N.

Когда остальная часть сети находит блок для публичной цепочки, то:

  1. В случае, если публичная цепочка опережает приватную, пул «отбрасывает» свои неопубликованные блоки (при наличии) и начинает новую приватную цепочку от нового блока. Это самый неудачный для пула сценарий, поскольку он теряет часть проделанной работы. Атакующий проигрывает и начинает новую приватную цепочку от нового блока.
  2. Если публичная и приватная цепочки сравнялись, пул публикует все свои блоки сразу. Таким образом, он вызывает развилку цепочки блоков и с некоторой вероятностью выигрывает. Здесь все зависит от времени реакции пула, поскольку обычные майнеры продолжают генерацию цепочки, которую они начали. Если, к примеру, пул имеет доступ ко всем узлам в сети, он опубликует свою цепочку до распространения свежего блока. Атакующий публикует все блоки, находящиеся в приватной цепочке, и возникает развилка. Цепочка, которая находит следующий бок, выигрывает.
  3. Если публичная цепочка отстает от приватной на N блоков, пул отправляет N+1 блоков, моментально изолируя свежий блок сети (так что сеть снова потратила свои ресурсы впустую). Атакующий публикует все блоки, находящиеся перед блоком N+3*, и оставляет остальные блоки в тайне.

Главной целью данной атаки мира криптовалют является пустое расходование ресурсов сети. Такое случается всякий раз, когда присутствует хотя бы один приватный блок: обычная сеть не знает, что она отстает, и майнит блоки, которые с большой вероятностью будут изолированы. Естественно, пул время от времени будет терять деньги, когда он не опубликует собственный блок, который изолируется после проигрыша гонки. Тем не менее согласно расчетам, такая тактика в среднем выгоднее обычного майнинга. Основной причиной этого является то, что «честная» сеть теряет блоки после их изоляции.

Поэтому каждый здравомыслящий майнер считает более выгодным присоединиться к такому пулу, чем терять ресурсы в других пулах. Это и является целью злоумышленника. Так как же противостоять такой атаке? Во-первых, есть надежда, что в подобном случае здравомыслящие майнеры просчитают ситуацию на два шага вперед и поймут, что выигрывая центы от присоединения к пулу, они потеряют доллары после взлома сети при получении пулом 51 % ресурсов. Во-вторых, описанная нами модель «кормит» только одного атакующего. А что если все пулы используют этот алгоритм? С точки зрения логики, если все участники ведут себя подобным образом (в том числе нечестные), такой алгоритм не дает никаких преимуществ.

Атака Сибиллы

В целом такой тип атаки мира криптовалют наиболее распространен в P2P-сетях. В сущности, атакующий пытается «окружить» узел жертвы, то есть завладеть всеми соседними узлами сети. Получив доступ к узлам, он, по сути, контролирует все входящие и исходящие данные: он может передавать жертве ложную информацию или не давать ей передавать что-либо по сети. Кроме того, атакующий может идентифицировать транзакции, отправленные узлом жертвы.

Атака Сибиллы

Как правило, сделать это очень сложно: коды биткоина и других криптовалют написаны таким образом, что узел выбирает соединение с другими узлами практически случайно. Даже в случае, если взломщик контролирует 80 % всех узлов в сети, и нам требуется установить 8 случайных исходящих соединений, вероятность оказаться полностью окруженным составляет всего 0,8^8 = 17 %.

И все же это возможно, если знать, как работает алгоритм установления соединений, и использовать его слабые места. Но здесь мы не станем углубляться в детали, опишем лишь общий принцип. Уязвимость главным образом заключается в том, что при подключении к сети узел не знает IP-адресов доверенных узлов и не имеет иного выбора, кроме как запросить их… у доверенных узлов. По сути, имеем дилемму курицы и яйца.

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

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

Атаки мира криптовалют

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

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

DDoS-атаки и замедление времени

Атака проводится не для экономической выгоды, а с целью навредить стартапу или вообще отключить сеть. Отправка частых множественных «мусорных» данных на узел, который обрабатывает транзакции, усложняет его работу и замедляет передачу данных, обновление сети и формирование новых блоков. Каждый проект имеет на этот счет свою защиту. Например, у ВТС есть встроенная защита от подобного типа атак, некоторые криптовалюты вводят символические комиссии, которые отсеивают пустые транзакции, сгенерированные роботами. Большой поток «мусорных» транзакций приводит к росту комиссий. В ноябре 2017 года крупной DDoS-атаке подверглась IOTA.

Хакерские атаки мира криптовалют

Среди других проблем криптовалют стоит отметить их отдельно взятые уязвимости. Проблемы — в коде криптовалюты, ошибки в ключах и методах шифрования и т.д. Они носят индивидуальный характер и хакеры ищут подобные лазейки. И часто у них это получается. Например, у инвесторов IOTA в январе 2018 года было похищено 4 млн дол. США. Причина: для генерации seed-фразы (часть процесса шифрования) пользователи воспользовались сторонним ресурсом, оказавшимся мошенническим. Последующая DDoS атака перегрузила сеть и не позволила жертвам восстановить свои деньги, которые были быстро конвертированы.

Есть и другие возможные атаки, которые пока что носят гипотетический характер: каннибализм пулов (эгоистическое уничтожение пула для нарушения сети), атака Р+Eplsilon (по версии Виталика Бутерина, одна из самых неприятных проблем в алгоритме PoW, которая предусматривает своего рода дачу злоумышленником взятки другим участникам сети за поддержку изменений в сети), таймджекинг (попытка манипуляции меткой времени транзакции). Но они пока атакующим не интересны.

Заключение

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

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

Вывод. Атаки на криптовалюты совершаются постоянно и с переменным успехом. Хакеры находят уязвимости в коде, используют недостатки самой технологии блокчейн и даже атакуют криптовалютные биржи. И выводы из всего этого неутешительные:

  • Безопасность — одна из сильных сторон криптовалют. По крайней мере, так преподносятся криптовалюты обществу, но практика показывает, что это скорее маркетинговый ход. Если говорить о платежных системах, то ВТС и биржи страдают от атак чаще, чем Visa (Mastercard) и банки. Причем чем сложнее алгоритмы защиты криптовалют, тем более изощренные появляются атаки. И вторая сильная сторона, анонимность, как раз играет против криптовалют — личности злоумышленников остаются нераскрытыми, тем самым подталкивая новых хакеров совершать новые попытки. Значит ли это, что блокчейн сам себе выкопал яму и его преимущества оказываются недостатками? Вполне возможно.
  • Взломы способны сильно обвалить рынок. И не из-за недоверия инвесторов, а из-за того, что краденые деньги попадают на рынок (еще одна проблема анонимности) и соответственно обваливают курс. Достаточно одной серьезной атаки, чтобы криптовалюты подешевели.

Многие потенциальные атаки мира криптовалют являются только лишь гипотетическими, так как не интересны взломщикам. Но их потенциальная возможность и те атаки, которые уже осуществляются, говорят о несовершенстве криптовалют. Чаша весов может склониться как в одну, так и в другую сторону. Однако шаткость курса можно использовать в Форексе, где можно открывать короткие позиции, быстро разворачивать сделки и хеджировать риски. В этом смысле волатильность криптовалют позволяет неплохо заработать, если подходить с умом к этому делу.