Как таймджекинг делает возможным двойную трату?

http://culubas.blogspot.com/2011/05/timejacking-bitcoin_802.html

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

Ответы (1)

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

Основная предпосылка:

  1. Вы можете идентифицировать узел, принадлежащий лицу/организации, против которого вы хотите выполнить двойную трату.
  2. Вы обманываете этот узел, заставляя его думать, что сетевое время сильно отстает от того, чем оно является на самом деле (разница до 70 минут по сравнению с собственным системным временем узла).
  3. При желании вы убеждаете других майнеров, что сеть опережает реальное время на 70 минут.

Это дает нам базовую следующую настройку:

Фактическое время T(фактическое значение не имеет значения)

Сетевое время большинства майнеров, T+70.

Сетевое время жертвы, T-70.

В Биткойне, когда узел получает новый блок, он проходит некоторые проверки. Если какая-либо из этих проверок не проходит, блок считается недействительным. Одной из таких проверок является проверка метки времени в заголовке блока.

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

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

Таким образом, когда правильный блок будет найден, когда узел жертвы получит его, он будет отклонен как недействительный, поскольку с точки зрения жертвы он примерно на 140 минут опережает сетевое время ( T+70 - T-70).

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

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

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

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

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

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

Нужно ли целевому узлу совершать платежи, чтобы удвоить расходы? @Raghav Sood
Обычно при выполнении двойной траты вы получаете какую-то другую ценность (например, возможность обменять свои двойные потраченные монеты на бирже). Таким образом, жертве нужно только поверить, что они получили деньги, и им не нужно их тратить.