Особенно это актуально для владельцев больших мощностей, сравнимых с мощностью самого пула.
Это не уязвимость протокола bitcoin, ведь ее можно свершать для любой современной криптовалюты, это не уязвимость в коде пулов майнинга — это идеологическая уязвимость метода определения способа начисления наград при распределенных вычислениях.
Пулы майнинга платят своим пользователям не за найденные блоки, а за мощности, которые заводят пользователи на пул. Абсолютно все существующие способы расчета PPS/PPLNS/Prop/… основаны на том, что оплата производится за полученные пулом шары — частные решения, одно из которых может быть целевым решением пула по сбору блока в сети bitcoin. А проблема в том, что майнер, находя решение, знает, какое из них является целевым для пула, а какое обычным. Это определяется сложностью, под которую подходит это частное решение, если она больше сложности сети — то значит это решение целевое.
Например популярная утилита cgminer показывает в своем окне информацию по каждой найденной шаре.
Вот например эта строчка: [2013-03-10 20:17:16] Accepted 03316740 Diff 80/52 AVA 0 pol 0
80 — это сложность, для которой подойдет данная шара как решение, а 52 — это сложность, которая была затребована пулом при выдачи задачи майнеру. Пул платит из расчета этой сложности в 52.
Майнеру-злоумышленнику достаточно не отсылать пулу решения, целевые для нахождения блока (т.е. со сложностью >= текущей мощности), это несколько измененных строчек в коде майнера (на приведенном скриншоте эта сложность указана сверху — 4.37M). Пул все равно заплатит за остальные шары, но блок от майнера так и не получит! Получается стоимость атаки — одна единственная шара на каждый недополученный блок пулом.
Значит если злоумышленник будет продолжать это делать достаточно долго, то он загонит пул в долговую яму. Для пула же это будет выглядеть как продолжительная повышенная неудача.
Обнаружить подобную атаку можно статистически, просто вычислив мощность майнера и количество найденных им блоков. Но максимум что пул может сделать — забанить нарушителя уже после успешной атаки, а атакующему завести новый аккаунт не составит никакого труда.
Целью данной атаки может являться конкурентная борьба между пулами майнинга, где, если пул-атакующий скрывает задачу, которую решает майнер (это происходит при использовании старых протоколов майнинга, в отличии от новых типа stratum), то он может перенаправить часть или все свои мощности на атакуемый пул в качестве обычных его клиентов.
Но даже при использовании новейших протоколов, много ли майнеров действительно контролируют, что за задачу им выдает пул? Ни один из известных мне клиентов для майнинга не проводит эту проверку и не предоставляет механизмов для указания условий, по которым он может определить — та ли это задача, что обещает пул? Максимум будет выдано сообщение на тот случай, если при использовании нового протокола stratum пул будет продолжать скрывать содержимое собираемого блока.
ссылка на оригинал статьи http://habrahabr.ru/post/178549/
Добавить комментарий