Наверх
Ночной режим

Атака «циклическая замена» в сети Lightning

Время чтения: 8 минут
10225
Ночной режим

Сеть Bitcoin Lightning Network — это решение второго уровня масштабирования для Bitcoin, направленное на решение проблем масштабируемости блокчейна Bitcoin. Она обеспечивает мгновенные и недорогие транзакции биткоина, делая его более эффективным и доступным для пользователей. По сравнению с транзакциями на цепочке Bitcoin, транзакции в Lightning Network приватные, они происходят вне цепочки, и фиксируется только общий результат.

Одно из главных преимуществ сети Lightning — её скорость и доступность. Она позволяет пользователям отправлять и получать небольшие платежи через сеть Биткоин простым и экономичным способом. Создавая сеть платежных каналов между пользователями, Lightning Network позволяет осуществлять транзакции без трансляции каждой операции в блокчейн. Это снижает перегрузку блокчейна биткоина и повышает масштабируемость транзакций.

Однако следует отметить, что Lightning Network все еще находится в стадии разработки и сталкивается с определенными рисками безопасности и рисками централизации. В октябре этого года в Lightning Network была обнаружена уязвимость под названием «атака цикла замены», которая затрагивает механизм замены транзакций и может привести к потере средств канала в Lightning Network. Появление этого метода атаки вызвало обеспокоенность по поводу безопасности сети Lightning Network и побудило к дальнейшим исследованиям и усовершенствованиям ее протоколов и реализаций.

Механизм сети Lightning

Bitcoin Lightning Network использует механизм Multisig для обеспечения безопасности платежных каналов. Участникам необходимо заблокировать средства и создать платежные каналы. Участники могут совершать быстрые и недорогие платежи внутри канала, без необходимости каждый раз отправлять транзакции в блокчейн биткоина. Платежный канал — это просто отношения между участниками вне блокчейна биткоина, которые достигаются путем подписания серии транзакций внутри канала, которые распространяются только между двумя концами канала без участия консенсуса всей сети Биткоин.

Что касается конкретного процесса, то при открытии платежного канала участникам необходимо создать скрипт мультиподписи, который требует от каждого участника канала предоставить свой открытый ключ, при этом указывается необходимое количество подписей, например, определяется скрипт, содержащий несколько открытых ключей и логику проверки подписи. При генерации адреса с несколькими подписями этот скрипт будет преобразован в адрес Bitcoin, образуя инфраструктуру платежного канала.

Например, как показано на рис. 1, Боб и Алиса сначала создают в цепочке биткоин-адрес с несколькими подписями 2 из 2 в качестве совместного фонда. В рамках канала они могут проводить неограниченное количество транзакций с обязательствами вне цепи для записи текущего состояния распределения средств.

Две стороны могут договариваться и подписывать новые транзакции обязательств для обновления состояния канала, не передавая эти обновления всей сети Биткоин. Когда они решают закрыть канал, финальная транзакция расчета на цепочке распределяет средства в соответствии с последним согласованным распределением. Эта расчетная транзакция требует совместных подписей Боба и Алисы, гарантируя, что средства будут распределены в соответствии с последним согласованным способом. Таким образом, сеть Lightning Network повышает эффективность транзакций биткоина, снижает затраты, сохраняя при этом свои децентрализованные характеристики.

Рисунок 1: Диаграмма канала состояния. Источник:https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

Механизм HTLC

В сети Bitcoin Lightning Network также используются платежные каналы на основе хэшированных контрактов с временной блокировкой (HTLC) для реализации маршрутизируемой многоходовой системы платежных каналов. Для реализации HTLC требуется сложный скрипт транзакции, определенный на языке сценариев, чтобы выполнить условие хэширования и условие временной блокировки. Этот сценарий будет использоваться для инициализации при открытии платежного канала и запускаться во время оплаты. Таким образом, сеть Bitcoin Lightning Network обеспечивает эффективность и безопасность межцепочечных платежей.

HTLC — это Hashed Timelock Contract, один из важных компонентов для реализации кросс-цепочечных транзакций на блокчейне. HTLC имеет два распространенных применения: межцепочечные атомарные свопы и платежные каналы в Lightning Network. HTLC может заблокировать перевод и установить условия разблокировки, например, предоставление определенной информации в течение определенного времени. Это гарантирует, что средства могут быть сняты получателем только при выполнении условий.

Технически, HTLC — это дополнительный выход в транзакции Commitment Transaction с уникальным сценарием выхода. Это сценарий, содержащий такие операции, как OP_HASH160, OP_EQUALVERIFY и т. д., используемые для блокировки средств, чтобы только предоставление предварительного значения R могло их разблокировать. У этого скрипта есть два возможных пути. Первый путь (определенный в OP IF) отправляет средства Бобу, если Боб может предоставить R. Второй путь заключается в обеспечении временной блокировки с помощью nLockTime в платежной транзакции, позволяя возвращать средства Алисе после истечения срока блокировки.

OP_IF

   OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY

   2 <Alice2> <Bob2> OP_CHECKMULTISIG

OP_ELSE

   2 <Alice1> <Bob1> OP_CHECKMULTISIG

OP_ENDIF

Пример маршрутизации

В сети Lightning Network Алиса хочет заплатить 1 биткоин Эрику, но прямого платежного канала между Алисой и Эриком не существует. Поэтому Алиса направляет платеж через промежуточные узлы в сети платежных каналов (Боб, Кэрол, Диана), чтобы построить безопасный платежный путь, позволяющий ей косвенно заплатить 1 биткоин Эрику. Маршрутизация платежей использует HTLC — только при предоставлении правильного «секрета» в течение определенного времени средства могут быть разблокированы, что обеспечивает безопасность платежа.

В нашем примере на шаге 1 Эрик генерирует секрет R (решение) и вычисляет хэш-значение H (головоломка), а затем передает хэш-значение H Алисе.

Шаги 2-5: Алиса, Боб, Кэрол, Диана и Эрик попарно строят HTLC, требующие предоставления R (решения) в течение определенного периода времени для получения заблокированных средств от вышестоящей стороны.

Шаги 6-9: Эрик предоставляет R (решение) Диане, чтобы получить 1 BTC. Затем Диана получает BTC от Кэрол с помощью R, и R передается в обратном направлении, пока не будут получены 1,003 BTC Алисы (0,003 BTC из которых — плата за обслуживание узлов-посредников).

В этом примере, если на шаге 6 Эрик не предоставил R (решение) в течение установленного времени, по истечении времени средства, заблокированные на шагах 2-5, будут непосредственно разблокированы и возвращены.

Рисунок 2: Пример маршрутизации. Источник: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

Циклическая замена

Механизм замены транзакций в биткоине означает, что если транзакция помечена как заменяемая, то перед подтверждением в блоке она может быть заменена другой транзакцией в сети с более высокой комиссией. Если транзакция получает более высокую абсолютную комиссию и более высокую ставку комиссии, она может заменить неподтвержденные транзакции, которые прямо противоречат ей. После получения заменяющей транзакции узлы удаляют из пула памяти исходную транзакцию с более низкой ставкой комиссии и сохраняют только заменяющую транзакцию. Механизм замены транзакций позволяет корректировать плату за транзакцию или другие параметры до того, как транзакция будет подтверждена. Однако этот механизм также может быть использован для реализации атак типа «отказ в обслуживании», например, для многократной замены критически важной транзакции, в результате чего она не подтверждается. Таким образом, механизм замены транзакций обеспечивает удобство корректировки транзакций, но при этом создает риск злоупотреблений.

Согласно электронному письму разработчика Bitcoin Core Антуана Риара, атака цикла замены в основном затрагивает платежные каналы в сети Bitcoin Lightning Network. Злоумышленник транслирует транзакцию HTLC-preimage с более высокой абсолютной комиссией и ставкой комиссии, чтобы заменить транзакцию HTLC-timeout честного узла. Во время замены злоумышленник может добавить дополнительные входы или выходы, чтобы гарантировать, что заменяющая транзакция будет успешно принята сетью. Этот метод атаки может привести к двойной трате средств в платежных каналах, то есть после того, как честный узел транслирует транзакцию HTLC-timeout, злоумышленник успешно извлекает средства путем замены. Мы можем привести простой пример, аналогичный предыдущему, предполагая, что путь упрощен до Алисы, Боба и Эрика, а Алиса и Эрик вступают в сговор, чтобы украсть BTC Боба.

  • Шаг 1: Алиса намеревается заплатить 1 BTC Эрику через Боба. Алиса\Боб и Боб\Эрик строят HTLC. Эрик должен предоставить R (решение) Бобу до блока 1020 (предполагается, что текущая высота равна 1000), иначе Боб сможет получить заблокированный 1 BTC; аналогично, Боб должен ответить Алисе до блока 1080, иначе Алиса сможет получить свой 1 BTC.
  • Шаг 2: Эрик не предоставил R (решение) Бобу до блока 1020. Боб транслирует транзакцию, содержащую HTLC-timeout. Средства в этой транзакции будут возвращены Бобу.
  • Шаг 3: Эрик отслеживает транзакцию Боба HTLC-timeout и заменяет ее на транзакцию HTLC-preimage с более высокой ставкой комиссии. Затем Эрик инициирует еще одну транзакцию, чтобы вытеснить предыдущую HTLC-представление из пула памяти.
  • Шаг 4: Узел Боба будет ретранслировать транзакцию HTLC-timeout до блока 1080. Эрик может инициировать замену каждый раз. До блока 1080 транзакция другого участника канала — Алисы — подтверждается, и Алиса получает заблокированные BTC.
  • Шаг 5: Эрик получает подтверждение своего HTLC-представления, поэтому 1 BTC, заблокированный Бобом, передается Эрику.

Таким образом, 1 BTC Боба был передан Эрику, при этом он не получил причитающиеся ему BTC от Алисы.

Резюме

По состоянию на ноябрь 2023 года в сети Lightning Network насчитывается более 16 000 узлов Lightning и 5 000 BTC. Хотя реальные случаи атак по циклу замещения не подтверждены, это подчеркивает необходимость постоянного исследования и улучшения безопасности сети Lightning Network. Антуан Риар также предложил несколько мер по предотвращению или смягчению атак цикла замены, таких как мониторинг локального мемпула и ретранслированных транзакций, создание оверлейных сетей между майнерами и узлами Lightning, а также активное воспроизведение транзакций с таймаутом HTLC для увеличения затрат злоумышленников. Но в то же время он объявил о прекращении участия в Lightning Network и работе по ее внедрению, включая координацию решений для уязвимостей безопасности на уровне протокола.

По мере расширения сети Lightning Network потенциальная угроза атак на циклы замены может стать препятствием на пути её развития, что заставит сообщество сосредоточиться на исследованиях и усовершенствованиях в области безопасности. Однако именно серьезное решение и совершенствование вопросов безопасности может привести к тому, что в будущем Lightning Network постепенно устранит потенциальные риски и станет более здоровой и надежной экосистемой.

О компании CoinEx

CoinEx — это глобальная криптовалютная биржа, основанная в 2017 году. CoinEx стремится сделать торговлю проще. Платформа предоставляет ряд услуг, включая спотовую и маржинальную торговлю, фьючерсы, свопы, автоматическое управление рынком (AMM) и услуги финансового управления для более чем 5 миллионов пользователей в 200 с лишним странах и регионах. С момента своего основания CoinEx неуклонно придерживается принципа обслуживания «пользователь прежде всего». С искренним намерением создать справедливую, уважительную и безопасную среду для торговли криптовалютами CoinEx позволяет пользователям получить доступ к миру криптовалют без особых усилий и предлагает простые в использовании продукты и услуги.

Ссылки

Добавить комментарий

Ваше имя
*
code

26.12.2023
Поделиться:
Курсы криптовалют
Брокеры
Топ обменников криптовалют
Популярные статьи

Курсы валют

Доллар USD (ЦБ): 93.27 +0.27
Евро EUR (ЦБ): 99.96 +0.35
Доллар USD (MOEX): 93.05 +0.10
Евро EUR (MOEX): 99.69 +0.26