В марте 2025 года сообщество разработчиков Биткойна предложило смягченный форк под названием "Большое очищение консенсуса". Эта инициатива направлена на исправление нескольких долго существующих уязвимостей и слабостей в протоколе Биткойна, включая проблему повторных транзакций, которую мы недавно обсуждали. Еще одна более серьезная уязвимость называется "атакой временного искажения", что и будет основным предметом обсуждения в данной статье.
Защита временной метки блока Биткойн
Перед обсуждением атаки с использованием временного искажения, нам необходимо понять текущие правила защиты от манипуляций со временем в сети Биткойн:
Медианное прошедшее время (MPT) правило: временная метка нового блока должна быть позже медианы временных меток 11 предыдущих блоков.
Правила времени блоков в будущем: метка времени нового блока не может опережать медианное время сети более чем на 2 часа. В то же время максимальная разница во времени между узлами составляет 90 минут, что является еще одной мерой безопасности.
Правила MPT предотвращают чрезмерное ретроспективное время меток блоков, в то время как правила будущих блоков ограничивают чрезмерное предвосхищение меток времени. Стоит отметить, что невозможно применять ограничения, аналогичные правилам будущих блоков, к прошлым меткам времени, так как это может повлиять на начальный процесс синхронизации блокчейна. Атака на искажение времени осуществляется путем подделки меток времени, которые сильно ретроспективны.
Ошибка "почти одна" Сатоши Накамото
Цикл коррекции сложности Биткойна включает 2016 блоков, что при времени генерации блока в 10 минут составляет примерно две недели. При вычислении коррекции сложности майнинга Протокол рассчитывает разницу между временными метками первого и последнего блоков в окне из 2016 блоков. Это окно фактически включает 2015 интервалов блоков (2016-1). Таким образом, теоретически целевое время должно составлять 60 секунд × 10 минут × 2015 интервалов = 1,209,000 секунд. Однако Протокол Биткойна использует число 2016 для вычисления целевого времени: 60 секунд × 10 минут × 2016 = 1,209,600 секунд. Это典型ная ошибка "差一", вероятно, Сатоши Накамото перепутал количество блоков с количеством интервалов блоков при расчетах.
Эта ошибка привела к тому, что целевое время стало на 0,05% больше, чем должно быть на самом деле. Другими словами, реальный целевой интервал создания блоков Биткойна составляет не 10 минут, а 10 минут и 0,3 секунды. Эта незначительная разница на практике не является существенной, поскольку с момента появления Биткойна средний интервал создания блоков постоянно поддерживается на уровне около 9 минут 36 секунд, что явно меньше 10 минут. Это также объясняет, почему недавнее событие халвинга перенесено на апрель 2024 года, а не на январь 2025 года. Хотя эта ошибка в 0,3 секунды кажется незначительной, она привела к более серьезной уязвимости.
Принципы атаки с искажением времени
Атака на искажение времени была впервые обнаружена в 2011 году, она использует ошибку Сатоши Накамото в расчете сложности. Предположим, что майнинг полностью централизован, майнеры могут устанавливать временные метки произвольно в пределах, разрешенных протоколом. Нападающий будет устанавливать временные метки большинства блоков на одну секунду раньше, чем у предыдущего блока, замедляя тем самым продвижение блокчейна во времени, соблюдая при этом правила MTP. Чтобы максимально замедлить продвижение времени, нападающий может сохранять одинаковую временную метку на шести последовательных блоках, а затем увеличить ее на одну секунду на седьмом блоке, и так далее.
Такая операция приведет к тому, что время блокчейна будет постепенно отставать от реального времени, в то время как сложность будет постоянно увеличиваться, что сделает майнинг все более трудным. Однако, чтобы усилить эффект атаки, злоумышленники будут устанавливать временные метки на реальное мировое время в последнем блоке каждого периода корректировки сложности. А первый блок следующего периода будет установлен на время в прошлом, всего на секунду раньше, чем предпоследний блок предыдущего периода. Эта практика по-прежнему соответствует правилам MTP, потому что отдельное отклонение не повлияет на медиану из 11 блоков.
После реализации этой атаки сложность первого периода не изменится. Но начиная со второго цикла настройки, сложность начнет значительно снижаться. Затем злоумышленники смогут создавать блоки с очень быстрой скоростью и потенциально чеканить большое количество Биткойн, извлекая из этого прибыль.
Анализ осуществимости атаки
Хотя такая атака теоретически может быть разрушительной, ее реальная реализация сталкивается со многими проблемами:
Возможно, потребуется контролировать большую часть вычислительной мощности сети.
Наличие честных майнеров увеличит сложность атаки.
Правила MTP и честные временные метки ограничат степень ретроспективы злонамеренных временных меток.
Если честный майнер сгенерирует первый блок в окне корректировки сложности, атака в этом цикле будет неэффективной.
Процесс атаки виден всем, что может вызвать экстренное мягкое форк-ремонт.
Потенциальные решения
Существует несколько возможных способов исправить эту уязвимость:
Измените алгоритм настройки сложности, рассчитайте временной интервал между различными окнами блоков 2016, одновременно исправив ошибку "差一". Но это может потребовать жесткого форка.
Отмена правил MTP, требуя, чтобы время каждого блока строго увеличивалось. Однако это может привести к чрезмерному опережению меток времени или проблемам из-за разницы во времени между майнерами.
Более простое решение заключается в том, чтобы требовать, чтобы время первого блока нового периода сложности не было раньше определенного количества минут после последнего блока предыдущего периода. В настоящее время обсуждаемое время варьируется от 10 минут до 2 часов.
В последнем предложении по очистке большого консенсуса разработчики склоняются к установлению ограничения в 2 часа. Этот период составляет около 0,6% от целевого времени цикла корректировки сложности и может эффективно ограничить пространство для манипуляций со сложностью в сторону понижения.
Независимо от того, какой вариант будет выбран в конечном итоге, исправление этой долгосрочной уязвимости further улучшит безопасность и стабильность Биткойн-сети.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
20 Лайков
Награда
20
6
Поделиться
комментарий
0/400
TeaTimeTrader
· 07-07 18:30
Этот баг действительно создал проблемы для мира криптовалют.
Посмотреть ОригиналОтветить0
GasFeeCrier
· 07-07 15:25
Целый день кричат, что газ дорогой, это не шутка.
Посмотреть ОригиналОтветить0
ShibaOnTheRun
· 07-04 22:21
Я убил, чтобы посмотреть, эта проблема довольно серьезная.
Посмотреть ОригиналОтветить0
NeverPresent
· 07-04 22:15
Рано или поздно что-то произойдет. Не думал, что так быстро.
Посмотреть ОригиналОтветить0
ChainComedian
· 07-04 22:07
Не волнуйтесь, майнеры не дураки.
Посмотреть ОригиналОтветить0
GasWastingMaximalist
· 07-04 21:59
Снова нужно менять соглашение, btc действительно много создает проблем.
Уязвимость протокола Биткойн раскрыта: атака с искажением времени может привести к массовой манипуляции сложностью
Биткойн Протокол уязвимость: атака временного искажения
В марте 2025 года сообщество разработчиков Биткойна предложило смягченный форк под названием "Большое очищение консенсуса". Эта инициатива направлена на исправление нескольких долго существующих уязвимостей и слабостей в протоколе Биткойна, включая проблему повторных транзакций, которую мы недавно обсуждали. Еще одна более серьезная уязвимость называется "атакой временного искажения", что и будет основным предметом обсуждения в данной статье.
Защита временной метки блока Биткойн
Перед обсуждением атаки с использованием временного искажения, нам необходимо понять текущие правила защиты от манипуляций со временем в сети Биткойн:
Медианное прошедшее время (MPT) правило: временная метка нового блока должна быть позже медианы временных меток 11 предыдущих блоков.
Правила времени блоков в будущем: метка времени нового блока не может опережать медианное время сети более чем на 2 часа. В то же время максимальная разница во времени между узлами составляет 90 минут, что является еще одной мерой безопасности.
Правила MPT предотвращают чрезмерное ретроспективное время меток блоков, в то время как правила будущих блоков ограничивают чрезмерное предвосхищение меток времени. Стоит отметить, что невозможно применять ограничения, аналогичные правилам будущих блоков, к прошлым меткам времени, так как это может повлиять на начальный процесс синхронизации блокчейна. Атака на искажение времени осуществляется путем подделки меток времени, которые сильно ретроспективны.
Ошибка "почти одна" Сатоши Накамото
Цикл коррекции сложности Биткойна включает 2016 блоков, что при времени генерации блока в 10 минут составляет примерно две недели. При вычислении коррекции сложности майнинга Протокол рассчитывает разницу между временными метками первого и последнего блоков в окне из 2016 блоков. Это окно фактически включает 2015 интервалов блоков (2016-1). Таким образом, теоретически целевое время должно составлять 60 секунд × 10 минут × 2015 интервалов = 1,209,000 секунд. Однако Протокол Биткойна использует число 2016 для вычисления целевого времени: 60 секунд × 10 минут × 2016 = 1,209,600 секунд. Это典型ная ошибка "差一", вероятно, Сатоши Накамото перепутал количество блоков с количеством интервалов блоков при расчетах.
Эта ошибка привела к тому, что целевое время стало на 0,05% больше, чем должно быть на самом деле. Другими словами, реальный целевой интервал создания блоков Биткойна составляет не 10 минут, а 10 минут и 0,3 секунды. Эта незначительная разница на практике не является существенной, поскольку с момента появления Биткойна средний интервал создания блоков постоянно поддерживается на уровне около 9 минут 36 секунд, что явно меньше 10 минут. Это также объясняет, почему недавнее событие халвинга перенесено на апрель 2024 года, а не на январь 2025 года. Хотя эта ошибка в 0,3 секунды кажется незначительной, она привела к более серьезной уязвимости.
Принципы атаки с искажением времени
Атака на искажение времени была впервые обнаружена в 2011 году, она использует ошибку Сатоши Накамото в расчете сложности. Предположим, что майнинг полностью централизован, майнеры могут устанавливать временные метки произвольно в пределах, разрешенных протоколом. Нападающий будет устанавливать временные метки большинства блоков на одну секунду раньше, чем у предыдущего блока, замедляя тем самым продвижение блокчейна во времени, соблюдая при этом правила MTP. Чтобы максимально замедлить продвижение времени, нападающий может сохранять одинаковую временную метку на шести последовательных блоках, а затем увеличить ее на одну секунду на седьмом блоке, и так далее.
Такая операция приведет к тому, что время блокчейна будет постепенно отставать от реального времени, в то время как сложность будет постоянно увеличиваться, что сделает майнинг все более трудным. Однако, чтобы усилить эффект атаки, злоумышленники будут устанавливать временные метки на реальное мировое время в последнем блоке каждого периода корректировки сложности. А первый блок следующего периода будет установлен на время в прошлом, всего на секунду раньше, чем предпоследний блок предыдущего периода. Эта практика по-прежнему соответствует правилам MTP, потому что отдельное отклонение не повлияет на медиану из 11 блоков.
После реализации этой атаки сложность первого периода не изменится. Но начиная со второго цикла настройки, сложность начнет значительно снижаться. Затем злоумышленники смогут создавать блоки с очень быстрой скоростью и потенциально чеканить большое количество Биткойн, извлекая из этого прибыль.
Анализ осуществимости атаки
Хотя такая атака теоретически может быть разрушительной, ее реальная реализация сталкивается со многими проблемами:
Потенциальные решения
Существует несколько возможных способов исправить эту уязвимость:
Измените алгоритм настройки сложности, рассчитайте временной интервал между различными окнами блоков 2016, одновременно исправив ошибку "差一". Но это может потребовать жесткого форка.
Отмена правил MTP, требуя, чтобы время каждого блока строго увеличивалось. Однако это может привести к чрезмерному опережению меток времени или проблемам из-за разницы во времени между майнерами.
Более простое решение заключается в том, чтобы требовать, чтобы время первого блока нового периода сложности не было раньше определенного количества минут после последнего блока предыдущего периода. В настоящее время обсуждаемое время варьируется от 10 минут до 2 часов.
В последнем предложении по очистке большого консенсуса разработчики склоняются к установлению ограничения в 2 часа. Этот период составляет около 0,6% от целевого времени цикла корректировки сложности и может эффективно ограничить пространство для манипуляций со сложностью в сторону понижения.
Независимо от того, какой вариант будет выбран в конечном итоге, исправление этой долгосрочной уязвимости further улучшит безопасность и стабильность Биткойн-сети.