Биткойн: атака временного искажения – потенциальная угроза безопасности
26 марта 2025 года разработчики Биткойн предложили предложение о мягком форке под названием "Большое согласие очистки". Это предложение направлено на исправление нескольких уязвимостей и слабых мест в протоколе Биткойн, которые существуют на протяжении длительного времени, включая проблему повторных транзакций, о которой мы говорили ранее. Еще одной более серьезной уязвимостью является "атака на искажение времени", которая является темой данного исследования.
Защитный механизм временных меток блоков Биткойн
Перед тем как обсудить атаку с искажением времени, нам нужно понять текущие правила защиты от манипуляций с временем:
Правило среднего прошедшего времени (MPT): временная метка блока должна быть позже среднего времени последних одиннадцати блоков.
Правила будущего времени блока: на основе константы MAX_FUTURE_BLOCK_TIME временная метка блока не может опережать медианное время в сети более чем на 2 часа. Допустимое максимальное отклонение между временем узла и локальными системными часами составляет 90 минут, что является еще одной гарантией.
Правила MPT обеспечивают, чтобы блоки не были слишком "возвращены в прошлое", в то время как правила будущих блоков предотвращают их "пересечение будущего". Стоит отметить, что невозможно внедрить правила будущих блоков, чтобы предотвратить наличие у блоков временных меток из прошлого, так как это может повлиять на начальный процесс синхронизации блокчейна. Атака временного искажения достигается путем подделки временных меток, которые уходят далеко в прошлое.
Ошибка Сатоши "не хватает одного"
Цикл настройки сложности Биткойна включает в себя 2016 блоков, что составляет примерно две недели, если рассчитывать по целевому времени блока в 10 минут. Для расчета корректировки сложности майнинга протокол вычисляет разницу временных меток между первым и последним блоком в соответствующем окне из 2016 блоков. Это окно из 2016 блоков фактически включает 2015 интервалов блоков (то есть 2016 минус 1). Следовательно, используемое целевое время должно быть 60 секунд × 10 минут × 2015 интервалов, что составляет 1,209,000 секунд. Тем не менее, протокол Биткойна использует число 2016 для расчета цели. 60 секунд × 10 минут × 2016 = 1,209,600 секунд. Это "ошибка на один" и, вероятно, произошла из-за путаницы между количеством блоков и количеством интервалов блоков.
Эта ошибка приводит к тому, что целевое время превышает положенные 0,05%. На самом деле, целевой интервал между блоками Биткойна не 10 минут, а 10 минут и 0,3 секунды. Эта небольшая разница почти не имеет значения в повседневной работе, особенно учитывая, что с 2009 года из-за постоянного роста вычислительной мощности фактический средний интервал между блоками всегда был ниже 10 минут.
Принцип атаки временного искажения
Атака на искажение времени была впервые обнаружена примерно в 2011 году и использовала эту ошибку в расчете сложности, сделанную Сатоши Накамото. Основная идея атаки заключается в следующем:
Для большинства блоков временная метка устанавливается на одну секунду вперёд по сравнению с предыдущим блоком.
Каждые шесть блоков временная метка сдвигается на одну секунду, чтобы соблюдать правила MPT.
В последнем блоке каждого периода регулировки сложности установите временную метку на реальное время.
Временная метка первого блока следующего периода снова установлена в прошлое.
Эта операция приводит к тому, что время блокчейна становится все более отстающим от реального времени, что приводит к постоянному увеличению сложности. Однако, поскольку последний блок каждого периода использует реальную метку времени, расчет сложности будет считать, что время проходит медленнее, чем на самом деле, что приводит к значительному снижению сложности после второго корректирующего периода.
Потенциальное воздействие атаки
Если атака удастся, это может привести к:
Сложность резко снизилась
Скорость генерации блоков значительно увеличилась
Создание большого количества Биткойн за короткое время
Может вызвать рыночный хаос
Однако реализация такой атаки сталкивается с множеством проблем:
Необходимо контролировать большую часть сетевой вычислительной мощности
Наличие честных майнеров увеличит сложность
Процесс атаки может быть своевременно обнаружен и приняты меры
Решение
Чтобы исправить эту уязвимость, есть несколько возможных методов:
Изменить алгоритм настройки сложности, полностью исправить ошибку "почти один".
Отменить правило MPT, требуя, чтобы время всегда двигалось вперед в каждом блоке.
Установить новые ограничения: время первого блока нового периода сложности не должно быть раньше определенного времени (например, 2 часа) до последнего блока предыдущего периода.
Текущая инициатива "Большие консенсусные очистки" использует третий подход и предлагает установить ограничение в 2 часа. Этот план эффективно предотвращает атаки временного искажения и минимизирует риск случайного создания недействительных блоков.
Сообщество Биткойн активно обсуждает и дорабатывает эти предложения, чтобы обеспечить долгосрочную безопасность и стабильность сети. С учетом постоянного развития технологий, у нас есть основания полагать, что сеть Биткойн станет более мощной и надежной.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
4
Поделиться
комментарий
0/400
LiquidityHunter
· 21ч назад
В глубокую ночь снова обнаружена уязвимость безопасности, цена Грузило, стоит ли ждать возможности для Арбитража.
Посмотреть ОригиналОтветить0
GasWastingMaximalist
· 21ч назад
Что за дела? Снова будут менять правила?
Посмотреть ОригиналОтветить0
ZenMiner
· 22ч назад
Копая, я уснул. В любом случае, мы не торопимся.
Посмотреть ОригиналОтветить0
faded_wojak.eth
· 22ч назад
Этот баг звучит пугающе, я всё время смотрю на него.
Биткойн временные искажения атаки: скрытые уязвимости и решения по их исправлению
Биткойн: атака временного искажения – потенциальная угроза безопасности
26 марта 2025 года разработчики Биткойн предложили предложение о мягком форке под названием "Большое согласие очистки". Это предложение направлено на исправление нескольких уязвимостей и слабых мест в протоколе Биткойн, которые существуют на протяжении длительного времени, включая проблему повторных транзакций, о которой мы говорили ранее. Еще одной более серьезной уязвимостью является "атака на искажение времени", которая является темой данного исследования.
Защитный механизм временных меток блоков Биткойн
Перед тем как обсудить атаку с искажением времени, нам нужно понять текущие правила защиты от манипуляций с временем:
Правило среднего прошедшего времени (MPT): временная метка блока должна быть позже среднего времени последних одиннадцати блоков.
Правила будущего времени блока: на основе константы MAX_FUTURE_BLOCK_TIME временная метка блока не может опережать медианное время в сети более чем на 2 часа. Допустимое максимальное отклонение между временем узла и локальными системными часами составляет 90 минут, что является еще одной гарантией.
Правила MPT обеспечивают, чтобы блоки не были слишком "возвращены в прошлое", в то время как правила будущих блоков предотвращают их "пересечение будущего". Стоит отметить, что невозможно внедрить правила будущих блоков, чтобы предотвратить наличие у блоков временных меток из прошлого, так как это может повлиять на начальный процесс синхронизации блокчейна. Атака временного искажения достигается путем подделки временных меток, которые уходят далеко в прошлое.
Ошибка Сатоши "не хватает одного"
Цикл настройки сложности Биткойна включает в себя 2016 блоков, что составляет примерно две недели, если рассчитывать по целевому времени блока в 10 минут. Для расчета корректировки сложности майнинга протокол вычисляет разницу временных меток между первым и последним блоком в соответствующем окне из 2016 блоков. Это окно из 2016 блоков фактически включает 2015 интервалов блоков (то есть 2016 минус 1). Следовательно, используемое целевое время должно быть 60 секунд × 10 минут × 2015 интервалов, что составляет 1,209,000 секунд. Тем не менее, протокол Биткойна использует число 2016 для расчета цели. 60 секунд × 10 минут × 2016 = 1,209,600 секунд. Это "ошибка на один" и, вероятно, произошла из-за путаницы между количеством блоков и количеством интервалов блоков.
Эта ошибка приводит к тому, что целевое время превышает положенные 0,05%. На самом деле, целевой интервал между блоками Биткойна не 10 минут, а 10 минут и 0,3 секунды. Эта небольшая разница почти не имеет значения в повседневной работе, особенно учитывая, что с 2009 года из-за постоянного роста вычислительной мощности фактический средний интервал между блоками всегда был ниже 10 минут.
Принцип атаки временного искажения
Атака на искажение времени была впервые обнаружена примерно в 2011 году и использовала эту ошибку в расчете сложности, сделанную Сатоши Накамото. Основная идея атаки заключается в следующем:
Эта операция приводит к тому, что время блокчейна становится все более отстающим от реального времени, что приводит к постоянному увеличению сложности. Однако, поскольку последний блок каждого периода использует реальную метку времени, расчет сложности будет считать, что время проходит медленнее, чем на самом деле, что приводит к значительному снижению сложности после второго корректирующего периода.
Потенциальное воздействие атаки
Если атака удастся, это может привести к:
Однако реализация такой атаки сталкивается с множеством проблем:
Решение
Чтобы исправить эту уязвимость, есть несколько возможных методов:
Текущая инициатива "Большие консенсусные очистки" использует третий подход и предлагает установить ограничение в 2 часа. Этот план эффективно предотвращает атаки временного искажения и минимизирует риск случайного создания недействительных блоков.
Сообщество Биткойн активно обсуждает и дорабатывает эти предложения, чтобы обеспечить долгосрочную безопасность и стабильность сети. С учетом постоянного развития технологий, у нас есть основания полагать, что сеть Биткойн станет более мощной и надежной.