Обзор 26 марта 2025 года
Разработчик Bitcoin Антуан Пуансо представил новое предложение по улучшению Bitcoin, названное «Очистка Великого Консенсуса». Это мягкий форк нацеливается на устранение нескольких уязвимостей и слабых мест, существовавших в протоколе Bitcoin на протяжении многих лет. Одной из таких уязвимостей является проблема дублирующих транзакций, о которой мы недавно говорили. Между тем, более серьезная уязвимость, устраняемая мягким форком, называется «атака временного искажения», и она является основной темой этой статьи.
Правила защиты временных меток в Bitcoin
Прежде чем обсуждать атаки временного искажения, давайте рассмотрим текущие правила защиты от манипуляции с временем:
- Правило медианного времени прошлого (MPT): временная метка должна быть позже медианного времени последних одиннадцати блоков.
- Правила времени будущего блока: на основе константы MAX_FUTURE_BLOCK_TIME временная метка не может быть более чем на 2 часа впереди медианного времени сверстников узла.
- Максимально допустимое отклонение между временем, предоставленным узлом, и локальными системными часами составляет 90 минут, что также служит гарантией безопасности.
Правило MPT предназначено для гарантии того, что блоки не уходят слишком далеко в прошлое, в то время как правило будущего блока предотвращает их перемещение в будущее. Примечайте, что отсутствие аналогичного правила для предотвращения временных меток в прошлом может негативно сказаться на первоначальной синхронизации блокчейна.
Атака временного искажения включает в себя подделку временных меток, которые уходят слишком далеко в прошлое.
Ошибка Сатоши Накамото: «на один не так»
В Bitcoin период регулировки сложности составляет 2016 блоков, что примерно соответствует двум неделям с целевым временем блока в 10 минут. Для расчета регулировки сложности протокол определяет разницу во времени между первой и последней временной меткой в соответствующем окне из 2016 блоков. Это окно содержит интервалы между 2015 блоками (то есть, 2016 минус один). Следовательно, целевое время, которое должно быть использовано, составляет 60 секунд * 10 минут * 2015 интервалов = 1,209,000 секунд. Однако протокол Bitcoin использует число 2016 для расчета цели: 60 секунд * 10 минут * 2016 = 1,209,600 секунд. Это и есть ошибка «на один не так». Эта ошибка, распространенная среди программистов, может указывать на то, что Сатоши перепутал блоки с интервалами между блоками.
Эта ошибка привела к тому, что целевое время оказалось на 0,05% длиннее необходимого. Вместо целевого интервала в 10 минут, он составил 10 минут и 0,3 секунды. Хотя данная ошибка несущественна — с момента запуска Bitcoin средний интервал составил 9 минут и 36 секунд, что значительно меньше целевых 10 минут — она все же указывает на необходимость исправления, особенно учитывая, что последний пересчет сложности произошел в апреле 2024 года, а не в январе 2025 года.
Атака временного искажения
Атака временного искажения на Bitcoin была впервые обнаружена около 2011 года и использует ошибку, допущенную Сатоши Накамото в расчете сложности. Для успешного выполнения атаки предполагается, что майнинг централизован на 100%, и майнеры могут установить любую временную метку в пределах, разрешённых протоколом.
В этой атаке практически для всех блоков майнеры устанавливают временную метку на одну секунду позже предыдущего блока, так что блокчейн продвигается во времени и соблюдает правило MTP. Чтобы продвигать время как можно медленнее, майнеры могут сохранять одну и ту же временную метку на шести последовательных блоках, увеличивая ее на одну секунду в следующем блоке. Это подразумевает, что временная метка блока продвигается вперед на одну секунду каждые шесть блоков. Вследствие данной атаки блокчейн отстает от реального времени, и сложность возрастает, что делает майнинг все более затруднительным. Однако в последнем блоке каждого периода регулировки сложности майнеры устанавливают временную метку на реальное мировое время, а следующий блок, как первый блок нового окна регулировки сложности, устанавливается назад во времени на одну секунду относительно блока, предшествовавшего последнему блоку предыдущего окна. Это по-прежнему соответствует правилу MTP, поскольку одна аномалия не влияет на медиану из 11 блоков.
Когда атака осуществляется, сложность не затрагивается в первом цикле, но после второго цикла регулировки сложности после начала атаки она снижается. Этот процесс позволяет майнерам создавать блоки с крайне высокой скоростью, синяя тем самым возможность заработать большое количество Bitcoin для последующей продажи с прибылью.
Упрощенное описание атак
Цикл сложности составляет 2016 блоков, поэтому иллюстрация этой атаки может быть сложной. Мы предлагаем следующий сценарий, чтобы объяснить её суть.
Реализация атаки
Хотя теоретически эта атака представляет собой серьезную угрозу, есть определенные трудности с её реализацией. Чтобы её осуществить, потребуется большая часть хешрейта. Если существуют честные майнеры, предоставляющие корректные временные метки, осуществить такую атаку станет значительно сложнее. Кроме того, если честный майнер создаст первый блок в новом окне регулировки сложности, атака не удастся в течение этого периода. Еще одним фактором, усложняющим реализацию атаки, является её видимость: временные метки могут быть видны всем, и необходимость манипулировать ими в течение четырех недель может дать время для быстрого выхода на решение через мягкий форк.
Решение проблемы
Исправить эту уязвимость относительно просто, но это может потребовать изменения алгоритма регулировки сложности. Прямое исправление с изменением алгоритма — довольно сложная задача, которая может потребовать хард форка. Другим вариантом было бы отказ от правила MPT и внедрение требования, согласно которому время всегда должно передвигаться вперед для каждого блока, что может привести к застреванию времени слишком далеко вперед.
К счастью, более простое решение заключается в том, чтобы установить правило, согласно которому первый блок нового периода сложности не может создан быть ранее определённого количества минут до последнего блока предыдущего периода. Обсуждаемые значения варьировались от 10 минут до 2 часов: оба оптимальны для снижения угрозы атак временного искажения. В предложении «Очистка Великого Консенсуса» Пуансо пришел к выводу, что оптимальным сроком будет 2 часа. Это составляет лишь около 0,6% целевого времени для цикла регулировки сложности, что существенно ограничивает возможность манипуляции с ней.
Мы суммируем обсуждение гратационного периода в следующей таблице: