|
ivanR
|
 |
July 13, 2018, 05:59:10 PM |
|
Дополнительная информация по атаке
Исходя из истории транзакций и информации от бирж, атакующий сначала приобрел несколько тысяч червонцев, после чего, в течение 10го числа, несколько раз осуществил атаку на биржу Livecoin, увеличив эту сумму в несколько раз. «Зачисленные» червонцы он не продавал, а выводил с биржи и через время «заводил» обратно, но уже удвоенную сумму. Потом он все вывел и, утром 11го числа, попытался завести их на Bittrex, причем решил провести атаку и на них тоже. Bittrex оперативно обнаружили попытку атаки и остановили ввод-вывод и торги. Их средства не пострадали.
С Bittrex и Livecoin мы ведем переговоры о ситуации и продолжении дальнейшей работы.
На текущий момент возможность повторной атаки еще не исключена, поэтому нужно сохранять осторожность при приеме крупных и средних платежей.
Наш анализ показывает, что это касается не только червонца, но и многих других валют с алгоритмом Proof of Work. Быстрый рост рынка в 2017 году привел к небывалому росту подключаемых мощностей, а падение рынка в первой половине этого года породило соблазн воспользоваться этими мощностями не для майнинга, а для атак на средние и мелкие валюты.
Наши дальнейшие действия
Я не сразу дал этот апдейт, как обещал, так как моя изначальная идея, которая родилась сразу после атаки, о переходе валюты на Proof of Stake вызвала горячие дискуссии в сообществе (в слаке в первую очередь) и не получила однозначной поддержки. Также возникла идея сменить алгоритм хеширования с Proof of Work, как вариант быстрого, но временного решения, чтобы избавится от недоброжелателя с айсиками. Однако проведенный анализ ситуации показывает, что это не является решением для защиты от атаки 51%, так как даже при переходе на GPU майнинг, стоимость атаки все равно будет достаточно низкой, по сравнению с возможной выгодой.
Поэтому в качестве долгосрочного решения я сейчас вижу переход на гибридную модель Proof of Stake Proof of Work.
Я объясню почему этот вариант мне видится наиболее оптимальным. Proof of Stake подразумевает, что майнинг могут осуществлять только владельцы монет. Чтобы осуществить атаку 51% в такой модели, нужно сначала купить или добыть много монет, в то время как для Proof of Work можно взять оборудование в аренду на пару часов, что сейчас стоит недорого из-за низкой рентабельности майнинга в целом. Если же человек имеет много монет, то проводя атаку на 51% он бьет по своему же капиталу и это может стоить ему очень дорого.
Однако чистый PoS имеет также и ряд недостатков. Технически он более сложен, что несет в себе дополнительные риски для устойчивости системы. Экономически он ведет к тому, что «богатые становятся еще богаче», что негативно влияет на распределение монет в системе.
Гибридный же алгоритм PoS/PoW потребует как большого количества монет, так и существенной мощности для майнинга. Это довольно дорого экономически и сложнее реализовать технически. При этом у обычных пользователей остается возможность добыть немного червонцев для себя.
Это решение, однако, потребует времени на реализацию. Поэтому в качестве временного решения, мы выпустим обновление, которое обяжет ноды не принимать блоки, высота которых больше чем на 1-2 часа в прошлом. Точное значение пока обсуждается. Это позволит выиграть время и более детально обсудить с сообществом и основными игроками дальнейшие изменения.
Рекомендации
Пока обновление не выпущено, угроза сохраняется. Мы просим сервисы принимающие червонцы следовать следующим рекомендациям:
1. Не стоит принимать крупные суммы от новых или неизвестных пользователей/лиц.
Если новый/неизвестный пользователь решил завести на ваш сервис несколько тысяч червонцев или больше, нужно либо вернуть их ему обратно, либо подождать значительного количества подтверждений, 100-200 например. Причем это количество лучше заранее не объявлять, чтобы атакующий не знал сколько именно придется ждать, 1-2 часа или сутки. Также, если вы все таки решили принять платеж, то стоит проверить сколько транзакций и на какую сумму в блоке с входящей транзакцией и в соседних блоках. Сейчас платежей по сети не очень много, поэтому блок с входящей транзакцией, в котором есть еще платежи на тысячи или десятки тысяч червонцев, должен вас насторожить.
2. Проверяйте наличие форков в сети.
Это можно сделать при помощи команды getchaintips или соответствующего rpc метода. Форки в 1-2 блока периодически случаются, это нормально, а вот появление длинной цепочки должно вас сразу насторожить. Другой вариант, это подписаться вашим софтом на уведомления о новых блоках и бить тревогу если вдруг вы получаете новый блок который по высоте существенно ниже текущего. При обнаружении форка лучше временно приостановить операции, так как именно ваш сервис могут сделать жертвой атаки.
Эти рекомендации не дают 100% защиты, однако следование им уменьшает ваши риски стать жертвой атаки.
|