Недавно один из разработчиков Биткойн предложил новый план по мягкому форку, целью которого является исправление нескольких уязвимостей и недостатков, существующих в протоколе Биткойн на протяжении долгого времени. Одна из более серьезных уязвимостей называется "атака на искажение времени", и в этой статье будет проведено ее детальное обсуждение.
Механизм защиты временных меток блоков Биткойн
Перед обсуждением атаки на временные искажения давайте сначала рассмотрим текущие правила защиты от манипуляций с временем:
Правило среднего времени в прошлом (MPT): временная метка блока должна быть позже средней временной метки последних одиннадцати блоков.
Правила времени блока в будущем: временная метка блока не может опережать медианное время пиров узлов более чем на 2 часа. Допустимое максимальное расхождение между временем узла и локальными системными часами составляет 90 минут.
Правила MPT предотвращают слишком ретроспективные временные метки блоков, в то время как правила будущих блоков предотвращают слишком опережающие временные метки. Стоит отметить, что невозможно реализовать механизмы, аналогичные правилам будущих блоков, чтобы предотвратить наличие у блоков временных меток из прошлого, поскольку это может повлиять на первоначальную синхронизацию блокчейна. Атака на временные искажения использует поддельные временные метки, чтобы вернуться далеко в прошлое.
Проблема расчета периода настройки сложности
Цикл настройки сложности Биткойна включает 2016 блоков, что составляет около двух недель при целевом времени блока в 10 минут. При расчете изменения сложности майнинга протокол вычисляет разницу между временными метками первого и последнего блоков в соответствующем окне из 2016 блоков. Это окно из 2016 блоков фактически содержит 2015 интервалов блоков, поэтому теоретически целевое время должно составлять 60 секунд * 10 минут * 2015 интервалов, что равно 1,209,000 секунд.
Однако, протокол Биткойн использует число 2016 для вычисления цели. 60 секунд * 10 минут * 2016 = 1,209,600 секунд. Это ошибка "на один меньше", возможно, вызванная путаницей между интервалами блоков.
Эта ошибка привела к тому, что целевое время стало на 0,05% дольше, чем должно быть. Таким образом, фактический целевой интервал времени для Биткойн составляет 10 минут и 0,3 секунды, а не ровно 10 минут. Хотя эта ошибка кажется незначительной, она связана с другой, более серьезной проблемой.
Принцип атаки с временным искажением
Атака с искажением времени использует эту ошибку в расчете сложности. В идеальном случае, при предположении, что майнинг полностью централизован, майнеры могут устанавливать любые временные метки, разрешенные протоколом. Атакующий будет использовать следующую стратегию:
Для большинства блоков временная метка устанавливается на одну секунду вперёд по сравнению с предыдущим блоком.
Чтобы максимально замедлить продвижение времени, майнеры могут поддерживать одинаковую метку времени в течение шести последовательных блоков, а затем увеличить время на одну секунду в следующем блоке.
В последнем блоке каждого периода корректировки сложности установить временную метку на реальное мировое время.
Временная метка первого блока следующего периода снова возвращается в прошлое, на секунду раньше, чем предпоследний блок предыдущего периода.
Эта операция соответствует правилам MTP, поскольку одиночный сбой не влияет на медиану 11 блоков. Таким образом, блокчейн будет постепенно отставать от реального времени, и сложность будет постоянно увеличиваться. Однако, начиная со второго периода корректировки, сложность начнет снижаться, позволяя майнерам создавать блоки с очень высокой скоростью, потенциально создавая большое количество Биткойн.
Жизнеспособность и вызовы атаки
Хотя теоретически такая атака может быть разрушительной, на практике она сталкивается с некоторыми вызовами:
Возможно, потребуется контролировать большую часть вычислительной мощности.
Наличие честных майнеров увеличивает сложность атак.
Правила MTP и честная метка времени могут ограничить степень ретроактивного злонамеренного временного штампа.
Если честный майнер создаст первый блок в любом окне корректировки сложности, атака в этом цикле станет неэффективной.
Процесс атаки является открытым и видимым, что может дать сообществу время для выпуска срочного исправления.
Потенциальные решения
Существует несколько возможных способов исправления этой уязвимости:
Изменить алгоритм настройки сложности, рассчитывая временной интервал между блоками в разных окнах 2016.
Отменить правило MTP, требуя, чтобы время в каждом блоке всегда двигалось вперед.
Установить новые ограничения: время первого блока нового периода сложности не должно быть раньше определенного количества минут перед последним блоком предыдущего периода.
В настоящее время в предложении по очистке большого консенсуса предлагается использовать третий метод, установив временное ограничение в 2 часа. Этот период составляет примерно 0,6% целевого времени цикла изменения сложности, что может эффективно ограничить возможность манипуляций со снижением сложности.
Существуют разные мнения о том, какой именно срок льготы следует использовать. Ограничение в 10 минут и ограничение в 2 часа имеют свои плюсы и минусы, которые необходимо взвесить. Независимо от того, какой вариант будет выбран в конечном итоге, устранение этого уязвимости значительно повысит безопасность и стабильность сети Биткойн.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
11 Лайков
Награда
11
6
Репост
Поделиться
комментарий
0/400
liquidation_surfer
· 08-09 19:16
Снова нужно платить за исправление уязвимостей, тьфу-тьфу.
Посмотреть ОригиналОтветить0
MeaninglessApe
· 08-09 17:34
Снова снова снова ошибка. Не знаю, что и сказать, семья.
Посмотреть ОригиналОтветить0
GhostAddressHunter
· 08-09 17:34
Нашел уязвимость, есть кто-нибудь? Скажи, что черный, так и будет.
Посмотреть ОригиналОтветить0
GasWaster
· 08-09 17:31
Атака есть атака, в любом случае я просто не понимаю и все.
Посмотреть ОригиналОтветить0
MEVHunter
· 08-09 17:11
хех, нашел еще одну вкусную уязвимость... время - это просто еще одна переменная для манипуляции, если честно. наблюдаю за этой уязвимостью с дней тестнета
Биткойн сталкивается с атакой времевого искажения, уязвимость протокола вызывает проблемы безопасности
Биткойн уязвимость безопасности: атака временного искажения
Недавно один из разработчиков Биткойн предложил новый план по мягкому форку, целью которого является исправление нескольких уязвимостей и недостатков, существующих в протоколе Биткойн на протяжении долгого времени. Одна из более серьезных уязвимостей называется "атака на искажение времени", и в этой статье будет проведено ее детальное обсуждение.
Механизм защиты временных меток блоков Биткойн
Перед обсуждением атаки на временные искажения давайте сначала рассмотрим текущие правила защиты от манипуляций с временем:
Правило среднего времени в прошлом (MPT): временная метка блока должна быть позже средней временной метки последних одиннадцати блоков.
Правила времени блока в будущем: временная метка блока не может опережать медианное время пиров узлов более чем на 2 часа. Допустимое максимальное расхождение между временем узла и локальными системными часами составляет 90 минут.
Правила MPT предотвращают слишком ретроспективные временные метки блоков, в то время как правила будущих блоков предотвращают слишком опережающие временные метки. Стоит отметить, что невозможно реализовать механизмы, аналогичные правилам будущих блоков, чтобы предотвратить наличие у блоков временных меток из прошлого, поскольку это может повлиять на первоначальную синхронизацию блокчейна. Атака на временные искажения использует поддельные временные метки, чтобы вернуться далеко в прошлое.
Проблема расчета периода настройки сложности
Цикл настройки сложности Биткойна включает 2016 блоков, что составляет около двух недель при целевом времени блока в 10 минут. При расчете изменения сложности майнинга протокол вычисляет разницу между временными метками первого и последнего блоков в соответствующем окне из 2016 блоков. Это окно из 2016 блоков фактически содержит 2015 интервалов блоков, поэтому теоретически целевое время должно составлять 60 секунд * 10 минут * 2015 интервалов, что равно 1,209,000 секунд.
Однако, протокол Биткойн использует число 2016 для вычисления цели. 60 секунд * 10 минут * 2016 = 1,209,600 секунд. Это ошибка "на один меньше", возможно, вызванная путаницей между интервалами блоков.
Эта ошибка привела к тому, что целевое время стало на 0,05% дольше, чем должно быть. Таким образом, фактический целевой интервал времени для Биткойн составляет 10 минут и 0,3 секунды, а не ровно 10 минут. Хотя эта ошибка кажется незначительной, она связана с другой, более серьезной проблемой.
Принцип атаки с временным искажением
Атака с искажением времени использует эту ошибку в расчете сложности. В идеальном случае, при предположении, что майнинг полностью централизован, майнеры могут устанавливать любые временные метки, разрешенные протоколом. Атакующий будет использовать следующую стратегию:
Эта операция соответствует правилам MTP, поскольку одиночный сбой не влияет на медиану 11 блоков. Таким образом, блокчейн будет постепенно отставать от реального времени, и сложность будет постоянно увеличиваться. Однако, начиная со второго периода корректировки, сложность начнет снижаться, позволяя майнерам создавать блоки с очень высокой скоростью, потенциально создавая большое количество Биткойн.
Жизнеспособность и вызовы атаки
Хотя теоретически такая атака может быть разрушительной, на практике она сталкивается с некоторыми вызовами:
Потенциальные решения
Существует несколько возможных способов исправления этой уязвимости:
В настоящее время в предложении по очистке большого консенсуса предлагается использовать третий метод, установив временное ограничение в 2 часа. Этот период составляет примерно 0,6% целевого времени цикла изменения сложности, что может эффективно ограничить возможность манипуляций со снижением сложности.
Существуют разные мнения о том, какой именно срок льготы следует использовать. Ограничение в 10 минут и ограничение в 2 часа имеют свои плюсы и минусы, которые необходимо взвесить. Независимо от того, какой вариант будет выбран в конечном итоге, устранение этого уязвимости значительно повысит безопасность и стабильность сети Биткойн.