Author

Topic: Timejacking и Биткойн (Read 174 times)

legendary
Activity: 1974
Merit: 4715
September 28, 2019, 04:34:39 PM
#4
На уроках по рукопашному бою учитель задал один простой вопрос: почему не существует идеальной боевой стойки?
Она может существовать, но только в определенный момент времени и в определенном положении противника, т.к. бой это движение.

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

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

full member
Activity: 279
Merit: 105
September 28, 2019, 03:33:24 PM
#3
Верно ли я понял, что для осуществления такой кибер атаки нужно быть одним из майнеров и иметь далеко не один источник мощностей? Да и в целом это уже практически не реально?
member
Activity: 364
Merit: 10
September 28, 2019, 01:22:52 PM
#2
А эта уязвимость относится только к PoS блокчейнам или может также быть применима к DPoS, Pow и другим разновидностям? Также интересно если что, как в других блокчейнах можно будет её избежать и к чему это может повлечь?
legendary
Activity: 1974
Merit: 4715
September 28, 2019, 08:42:11 AM
#1
Timejacking - это потенциальная уязвимость в системе, которая активно обсуждалась в первые годы существования Биткойна.

В 2011 году первым об атаке «Timejacking» написал Алекс Боверман. Суть атаки заключается в уязвимости механизма проверки временных меток блоков и счётчика времени в биткоин. Биткойн ноды имеют внутренние часы, которые отвечают за эти временные метки и синхронизируют сетевое время, чтобы убедиться, что оно совпадает с другими узлами.Каждый узел поддерживает внутренний счетчик, который представляет сетевое время. Это основано на среднем времени одноранговых узлов, которое отправляется в сообщении при их соединении. Счетчик времени сети возвращается к системному времени если медианное время отличается более чем на 70 минут от системного времени.
Злоумышленник может потенциально замедлить или ускорить счетчик времени сети узла, подключившись к нескольким одноранговым узлам и сообщив о неточных метках времени.
Он манипулирует одним из счётчиков времени узла-жертвы и создает «отравленный» блок. Жертва этот блок отбросит, а остальная сеть успешно примет, и пожалуйста - у нас спровоцирован форк! Вся сеть использует цепочку блоков, строящуюся за «отравленным», а жертва считает валидной альтернативную цепочку с повторной тратой токенов (double-spending), в которой «отравленный» блок не фигурирует.
Создание «отравленного блока»

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



У временного окна есть две границы:

нижняя — tmin , она равна медиане временных меток 11 блоков, предшествующих верифицируемому блоку
•   верхняя — равна значению времени сети t0 + 2 часа

Как считается время сети:



•   При установке нового соединения узлы обмениваются своим системным временем
•   Каждый узел вычисляет отклонение собственного системного времени от системного времени каждого своего соседа
•   Для вычисленных отклонений выбирается медианное значение
•   Собственное системное время + медианное отклонение = время сети


Атака

1.Злоумышленник может манипулировать значением времени сети жертвы, подключив к ней достаточное количество соседей, анонсирующих отстающее системное время. Максимальное значение, на которое можно уменьшить время сети жертвы, равно 70 минутам.
2. Создаётся «отравленный» блок. Его задача попасть во временные рамки сети, кроме времени жертвы. Основная сеть принимает блок, а жертва его отбросит.  В итоге, атакуемый изолируется от основной сети и переходит на цепочку блоков, которые генерируются мошенником.
3.В генерируемой мошенником сети жертве переводятся монеты, а в основной сети эти монеты находятся на счету атакующего. Атакуемый совершает обмен или отправляет товар и несет убытки. Как только сеть стабилизируется, основная цепочка будет иметь приоритет, и подтверждения того, что злоумышленник отправил, будут отменены.
Удобство атаки заключается в том, что не требуется замена всех честных нод вредоносными узлами.

Проблемы:

1.Для отправки «отравленного» блока требуется хорошая мощность сети
2.«Отравленный» блок попадёт во временное окно жертвы не более чем через 70 минут — это максимальное время, за которое необходимо завершить третий этап.
Для того, чтобы жертва приняла транзакцию с double-spending, блок с ней должен быть подтверждён ещё 6 блоками (для стандартного клиента). Генерировать подтверждающие блоки нарушителю придётся самостоятельно, и при этом надо уложиться в вышеупомянутые 70 минут. Боверман рассматривает ситуацию, когда злоумышленник владеет 10% мощности всей сети. В такой ситуации, для генерации 6 блоков понадобятся ~5,5 часа с вероятностью успеха 10%. Для 3,3 часа вероятность успеха падает до 1%, для 140 минут — 0,147%. Согласно этим оценкам, успешно сгенерировать 6 блоков за 70 минут — это из области фантастики.
3. Когда узел вычисляет время сети, он учитывает системное время только первых 200 соседей — потом медианное отклонение пересчитываться уже не будет. Значит, атаку необходимо реализовывать, пока количество уже подключенных к жертве соседей не превышает это количество, иначе время, анонсированное злоумышленником, не будет медианным. Такое количество соседей набежит примерно за 24 часа, а после жертву уже надо будет перезагружать — например, с помощью DoS атаки.

Алекс Боверман предлагал следующие меры, для предотвращения атаки:

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

Итог

Атака «Timejacking» может успешно сработать, но в текущих реалиях сети Bitcoin становится неприменимой. Максимум это может создать задержки в сети или вызвать проблемы на некоторых узлах.
Огромный интерес эта тема может вызвать у менее популярных блокчейнов.

Материал не простой, поэтому некоторые вещи оставил без изменения, как в источнике.
Для написания статьи были использованы эти материалы:
http://culubas.blogspot.com/
https://habr.com/ru/company/neobit/blog/413721/
https://ru.wikipedia.org/wiki/Атака_по_времени
https://bitcointalksearch.org/topic/timejacking-5180442
https://bitcoin.stackexchange.com/questions/3516/was-a-timejacking-attack-ever-performed
Jump to: