Атака замены периода в сети Lightning
Биткойн-сеть Lightning - это решение второго уровня для масштабирования Биткойна, направленное на решение проблем масштабируемости блокчейна Биткойн. Она обеспечивает мгновенные и недорогие транзакции Биткойна, делая его более эффективным и доступным для пользователей. По сравнению с транзакциями в сети Биткойн, транзакции в сети Lightning являются приватными, происходят вне цепочки, и только общий результат записывается.
Одним из главных преимуществ сети Lightning является ее скорость и доступность. Она позволяет пользователям отправлять и получать небольшие платежи через сеть Биткойн простым и экономичным способом. Создавая сеть платежных каналов между пользователями, сеть Lightning позволяет совершать транзакции без трансляции каждой транзакции в блокчейн. Это снижает нагрузку на блокчейн Биткойна и улучшает масштабируемость транзакций.
Однако следует отметить, что сеть Lightning все еще находится в разработке и сталкивается с определенными рисками безопасности и централизации. В октябре этого года в сети Lightning была обнаружена новая уязвимость, называемая "атакой цикла замены", которая связана с механизмом замены транзакций и может привести к потере средств канала в сети Lightning. Появление этого метода атаки вызвало озабоченность по поводу безопасности сети Lightning и побудило к дальнейшим исследованиям и улучшениям ее протоколов и реализаций.
Механизм сети Lightning
Биткойн-сеть Lightning использует механизм мультиподписи для обеспечения безопасности платежных каналов. Участникам необходимо заблокировать средства и установить платежные каналы. Участники могут совершать быстрые, недорогие платежи внутри канала без необходимости каждый раз отправлять транзакции в блокчейн Биткойна. Платежный канал - это просто отношения между участниками вне блокчейна Биткойна, которые достигаются путем подписания серии транзакций внутри канала, распространяемых только между двумя концами канала без участия консенсуса всей сети Биткойн.
Что касается конкретного процесса, при открытии платежного канала участникам необходимо создать мультиподписной скрипт, который требует от каждой стороны на канале предоставления своего открытого ключа, при этом указывая необходимое количество подписей, например, определяя скрипт, содержащий несколько открытых ключей и логику проверки подписи. При генерации мультиподписного адреса этот скрипт будет преобразован в адрес Биткойна, формируя инфраструктуру платежного канала.
Например, как показано на рисунке 1, Боб и Алиса сначала создают 2-из-2 мультиподписной биткоин-адрес в сети как совместный фонд. Внутри канала они могут проводить неограниченное количество транзакций обязательств вне сети для записи текущего состояния распределения средств. Обе стороны могут договариваться и подписывать новые транзакции обязательств для обновления состояния канала, не транслируя эти обновления во всю сеть Биткоин. Когда они решают закрыть канал, окончательная транзакция расчета в сети распределит средства в соответствии с последним согласованным распределением. Эта расчетная транзакция требует совместных подписей как Боба, так и Алисы, обеспечивая распределение средств в окончательно согласованном порядке. Таким образом, сеть Lightning повышает эффективность транзакций Биткоин, снижает затраты, сохраняя при этом свои децентрализованные характеристики.
Рисунок 1: Схема канала состояний
:quality(80)/2024-01-08/99F50221A5FA1949F646D3CD00281FF3.png)
Источник: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png
Механизм HTLC
Сеть Lightning для Биткоин также использует платежные каналы на основе хешированных временных замков (HTLCs) для реализации маршрутизируемой системы платежных каналов с множеством переходов. В реализации HTLC требуется сложный скрипт транзакции, определенный на языке скриптов, чтобы соответствовать условию хеширования и условию временной блокировки. Этот скрипт будет использоваться для инициализации при открытии платежного канала и активироваться во время платежа. Таким образом, сеть Lightning для Биткоин обеспечивает эффективность и безопасность для платежей между цепочками.
HTLC (Хешированный контракт с временной блокировкой) - это хешированный контракт с временной блокировкой, который является одним из важных компонентов для реализации кросс-чейн транзакций в блокчейне. HTLC имеет два распространенных применения: кросс-чейн атомарные свопы и платежные каналы в сети Lightning. HTLC может блокировать перевод и устанавливать условия разблокировки, такие как предоставление определенной информации в течение указанного времени. Это гарантирует, что средства могут быть выведены получателем только при выполнении условий.
Технически HTLC представляет собой дополнительный вывод в Контрактной транзакции с уникальным скриптом вывода. Это скрипт Script, содержащий операции, такие как 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 Алиса хочет заплатить 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: Пример маршрутизации
:quality(80)/2024-01-08/FD442E7EB50CCD0EFBAA12AF5EE52174.png)
Источник: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png
Атака с заменой циклов
Механизм замены транзакций в Bitcoin означает, что когда транзакция помечена как заменяемая, она может быть заменена другой транзакцией в сети с более высокой комиссией до того, как она будет подтверждена в блоке. Если транзакция оплачивается более высокой абсолютной комиссией и более высокой ставкой комиссии, она может заменить ожидающие неподтвержденные транзакции, которые напрямую конфликтуют с ней. После получения замещающей транзакции узлы удалят исходную транзакцию с более низкой ставкой комиссии из мемпула и сохранят только замещающую транзакцию. Механизм замены транзакций позволяет корректировать комиссии за транзакции или другие параметры до подтверждения транзакции. Однако этот механизм также может быть использован для реализации атак типа "отказ в обслуживании" на транзакции, например, путем многократной замены критической транзакции, что приводит к ее неподтверждению. Таким образом, механизм замены транзакций обеспечивает удобство для корректировки транзакций, но также вносит риски злоупотребления.
Согласно электронному письму разработчика Bitcoin Core Антуана Риарда, атака с циклом замены в основном затрагивает платежные каналы в сети Lightning Network Bitcoin. Атакующий транслирует транзакцию 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-preimage из мемпула.
Шаг 4: Узел Боба будет повторно транслировать транзакцию HTLC-timeout до блока 1080. Эрик может инициировать замену каждый раз. До блока 1080 транзакция другой стороны канала Алисы подтверждается, и Алиса возвращает заблокированный BTC.
Шаг 5: HTLC-preimage Эрика подтверждается, поэтому 1 BTC, заблокированный Бобом, переводится Эрику.
Таким образом, 1 BTC Боба был переведен Эрику, в то время как он не получил причитающийся ему BTC от Алисы.
Резюме
По состоянию на ноябрь 2023 года, сеть Lightning насчитывает более 16 000 узлов Lightning и 5 000 BTC. Хотя фактические случаи атак с циклом замены не подтверждены, это подчеркивает необходимость постоянных исследований и улучшений безопасности сети Lightning. Антуан Риард также предложил несколько мер по предотвращению или смягчению последствий атак с циклом замены, таких как мониторинг локального мемпула и ретранслируемых транзакций, создание оверлейных сетей между майнерами и узлами Lightning, а также активное повторение транзакций с истекшим сроком действия HTLC для увеличения затрат атакующего. Однако в то же время он объявил о прекращении участия в сети Lightning и работы по ее реализации, включая координацию решений для уязвимостей безопасности на уровне протокола.
По мере масштабирования сети Lightning потенциальная угроза атак с циклом замены может стать препятствием на пути ее развития, заставляя сообщество уделять больше внимания исследованиям и улучшениям безопасности. Однако именно серьезный подход к решению проблем безопасности и их улучшение может привести к тому, что в будущем мы станем свидетелями постепенного устранения потенциальных рисков в сети Lightning, достигая более здоровой и надежной экосистемы.
О нас
Основанная в 2017 году, CoinEx - это глобальная криптовалютная биржа, стремящаяся упростить торговлю. Платформа предоставляет ряд услуг, включая спотовую и маржинальную торговлю, фьючерсы, свопы, автоматическое маркет-мейкерство (AMM счет) и услуги финансового управления для более чем 5 миллионов пользователей из более чем 200 стран и регионов. С момента своего создания CoinEx неуклонно придерживается принципа обслуживания "пользователь прежде всего". С искренним намерением создать справедливую, уважительную и безопасную среду для торговли криптовалютой, CoinEx позволяет пользователям легко получить доступ к миру криптовалют, предлагая простые в использовании продукты и услуги.
Ссылки
https://cypherpunks-core.github.io/bitcoinbook/
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022032.html
https://lightning.network/lightning-network-paper.pdf
https://github.com/ariard/mempool-research/blob/2023-10-replacement-paper/replacement-cycling.pdf