Уязвимость атаки временного искажения в протоколе Биткойн
26 марта 2025 года один из разработчиков Биткойн предложил новый план улучшения, направленный на устранение нескольких уязвимостей и слабых мест, которые долгое время существовали в протоколе Биткойн, с помощью мягкого форка. Одной из уязвимостей, на которую стоит обратить внимание, является "атака с искажением времени", которая будет подробно рассмотрена в этой статье.
Защитный механизм временных меток Биткойн
Перед тем как обсудить атаки на искажение времени, нам нужно понять текущие правила защиты Биткойна от манипуляций с временем:
Правило медианного времени (MPT): временная метка блока должна быть позже медианного времени 11 предыдущих блоков.
Правила времени блоков в будущем: временная метка блока не может опережать медианное время узлов-партнеров более чем на 2 часа. Кроме того, допустимое максимальное расхождение между временем узла и локальными системными часами составляет 90 минут.
Эти правила предназначены для предотвращения чрезмерной манипуляции временными метками блоков. Однако из-за необходимости первоначальной синхронизации блокчейна невозможно внедрить аналогичные правила для будущих блоков, чтобы полностью предотвратить использование временных меток из прошлого. Атака с искажением времени именно этим и пользуется, подделывая временные метки, уходящие далеко в прошлое, для осуществления атаки.
Ошибка вычисления в протоколе
Цикл изменения сложности Биткойна включает в себя 2016 блоков, что теоретически составляет около двух недель. При расчете изменения сложности майнинга протокол вычисляет разницу временных меток между первым и последним блоком в соответствующем окне из 2016 блоков. Однако в этом процессе расчета присутствует небольшая, но важная ошибка.
Правильный расчет должен быть: 60 секунд * 10 минут * 2015 интервалов = 1,209,000 секунд. Но на самом деле используется: 60 секунд * 10 минут * 2016 = 1,209,600 секунд. Эта ошибка в 0.05% приводит к тому, что целевое время оказывается на 0.05% длиннее, чем должно быть, что делает фактическое целевое время Биткойна равным 10 минутам и 0.3 секунде.
Хотя эта ошибка в 0,3 секунды кажется незначительной, она связана с другой более серьезной проблемой. Расчет сложности основан на первом и последнем блоке в каждом окне из 2016 блоков, а не на разнице между последним блоком предыдущего окна и последним блоком текущего окна. Этот способ расчета создает возможность для атак с времевыми искажениями.
Принцип атаки с искажением времени
Атака с искажением времени была впервые обнаружена примерно в 2011 году. В этой атаке предполагается, что майнинг полностью централизован, и злоумышленник может манипулировать временными метками блоков следующим образом:
Для большинства блоков устанавливайте временную метку на одну секунду больше, чем предыдущий блок.
Каждые шесть блоков сохраняют одинаковую метку времени, затем в следующем блоке добавляется одна секунда.
В последнем блоке каждого периода корректировки сложности установить метку времени на реальное время.
Временная метка первого блока нового периода настройки сложности была установлена на время в прошлом, на одну секунду раньше, чем у предпоследнего блока предыдущего периода.
Такая операция делает так, что время блокчейна все больше отстает от реального времени, что приводит к постоянному снижению сложности, позволяя злоумышленникам создавать блоки с огромной скоростью и потенциально генерировать большое количество Биткойн.
Влияние и осуществимость атаки
Теоретически, такая атака может привести к катастрофическим последствиям. В крайних случаях сложность может быть постоянно снижена до тех пор, пока не будет создано более 6 блоков в секунду. Однако реализация такой атаки сталкивается со многими вызовами:
Необходимо контролировать большую часть вычислительной мощности сети.
Наличие честных майнеров увеличивает сложность атак.
Процесс атаки полностью виден, может вызвать экстренное исправление.
Правила MTP и временные метки честных майнеров ограничат эффект атаки.
Потенциальные решения
Исправить этот уязвимость относительно просто, но может потребоваться изменение протокола мягкого форка. В настоящее время предложено одно решение:
Требуется, чтобы время первого блока нового периода сложности не было раньше определенного времени перед последним блоком предыдущего периода (рекомендуется 2 часа). Это простое правило может эффективно предотвратить атаки временного искажения, одновременно минимизируя риск случайных недействительных блоков.
Этот 2-часовой лимит составляет около 0,6% целевого времени цикла корректировки сложности, что значительно ограничивает способность манипулировать сложностью вниз. Хотя это все еще позволяет злоумышленникам манипулировать сложностью вниз примерно на 0,6% за каждый цикл, это всего лишь одноразовое изменение, которое не может накапливаться.
В целом, хотя атаки с искажением времени представляют собой серьезную угрозу в теории, на практике их реализация довольно сложна. При помощи соответствующих обновлений протокола этот потенциальный уязвимый момент может быть эффективно смягчен, что дополнительно укрепит безопасность и стабильность сети Биткойн.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
4
Поделиться
комментарий
0/400
P2ENotWorking
· 12ч назад
Что за ерунда? Кто сможет это разобрать, свяжитесь со мной.
Посмотреть ОригиналОтветить0
FlashLoanLord
· 12ч назад
Эту проблему следовало решить давно.
Посмотреть ОригиналОтветить0
HodlBeliever
· 12ч назад
Блокчейн банкиры/эксперты по оценке рисков/непрерывный технический анализ цены закрытия на протяжении 4 лет
С точки зрения базового управления рисками это необходимо исправить
Посмотреть ОригиналОтветить0
PerennialLeek
· 12ч назад
Так много уязвимостей, не буду играть! Разошлись, разошлись.
Раскрытие уязвимости атаки временного искажения протокола Биткойн и план по её исправлению
Уязвимость атаки временного искажения в протоколе Биткойн
26 марта 2025 года один из разработчиков Биткойн предложил новый план улучшения, направленный на устранение нескольких уязвимостей и слабых мест, которые долгое время существовали в протоколе Биткойн, с помощью мягкого форка. Одной из уязвимостей, на которую стоит обратить внимание, является "атака с искажением времени", которая будет подробно рассмотрена в этой статье.
Защитный механизм временных меток Биткойн
Перед тем как обсудить атаки на искажение времени, нам нужно понять текущие правила защиты Биткойна от манипуляций с временем:
Правило медианного времени (MPT): временная метка блока должна быть позже медианного времени 11 предыдущих блоков.
Правила времени блоков в будущем: временная метка блока не может опережать медианное время узлов-партнеров более чем на 2 часа. Кроме того, допустимое максимальное расхождение между временем узла и локальными системными часами составляет 90 минут.
Эти правила предназначены для предотвращения чрезмерной манипуляции временными метками блоков. Однако из-за необходимости первоначальной синхронизации блокчейна невозможно внедрить аналогичные правила для будущих блоков, чтобы полностью предотвратить использование временных меток из прошлого. Атака с искажением времени именно этим и пользуется, подделывая временные метки, уходящие далеко в прошлое, для осуществления атаки.
Ошибка вычисления в протоколе
Цикл изменения сложности Биткойна включает в себя 2016 блоков, что теоретически составляет около двух недель. При расчете изменения сложности майнинга протокол вычисляет разницу временных меток между первым и последним блоком в соответствующем окне из 2016 блоков. Однако в этом процессе расчета присутствует небольшая, но важная ошибка.
Правильный расчет должен быть: 60 секунд * 10 минут * 2015 интервалов = 1,209,000 секунд. Но на самом деле используется: 60 секунд * 10 минут * 2016 = 1,209,600 секунд. Эта ошибка в 0.05% приводит к тому, что целевое время оказывается на 0.05% длиннее, чем должно быть, что делает фактическое целевое время Биткойна равным 10 минутам и 0.3 секунде.
Хотя эта ошибка в 0,3 секунды кажется незначительной, она связана с другой более серьезной проблемой. Расчет сложности основан на первом и последнем блоке в каждом окне из 2016 блоков, а не на разнице между последним блоком предыдущего окна и последним блоком текущего окна. Этот способ расчета создает возможность для атак с времевыми искажениями.
Принцип атаки с искажением времени
Атака с искажением времени была впервые обнаружена примерно в 2011 году. В этой атаке предполагается, что майнинг полностью централизован, и злоумышленник может манипулировать временными метками блоков следующим образом:
Такая операция делает так, что время блокчейна все больше отстает от реального времени, что приводит к постоянному снижению сложности, позволяя злоумышленникам создавать блоки с огромной скоростью и потенциально генерировать большое количество Биткойн.
Влияние и осуществимость атаки
Теоретически, такая атака может привести к катастрофическим последствиям. В крайних случаях сложность может быть постоянно снижена до тех пор, пока не будет создано более 6 блоков в секунду. Однако реализация такой атаки сталкивается со многими вызовами:
Потенциальные решения
Исправить этот уязвимость относительно просто, но может потребоваться изменение протокола мягкого форка. В настоящее время предложено одно решение:
Требуется, чтобы время первого блока нового периода сложности не было раньше определенного времени перед последним блоком предыдущего периода (рекомендуется 2 часа). Это простое правило может эффективно предотвратить атаки временного искажения, одновременно минимизируя риск случайных недействительных блоков.
Этот 2-часовой лимит составляет около 0,6% целевого времени цикла корректировки сложности, что значительно ограничивает способность манипулировать сложностью вниз. Хотя это все еще позволяет злоумышленникам манипулировать сложностью вниз примерно на 0,6% за каждый цикл, это всего лишь одноразовое изменение, которое не может накапливаться.
В целом, хотя атаки с искажением времени представляют собой серьезную угрозу в теории, на практике их реализация довольно сложна. При помощи соответствующих обновлений протокола этот потенциальный уязвимый момент может быть эффективно смягчен, что дополнительно укрепит безопасность и стабильность сети Биткойн.
С точки зрения базового управления рисками это необходимо исправить