Comprar Cripto
Mercado
Spot
Futuros
Financeiro
Promoção
Mais
reward-centerZona de iniciantes
Relatório de análiseDetalhes
Pesquisas sobre a Indústria

Ataque de Período de Substituição na Rede Lightning

CoinEx logo
Publicado em 2023-12-25

A Rede Lightning do Bitcoin é uma solução de escalabilidade de camada 2 para o Bitcoin, destinada a abordar os desafios de escalabilidade da blockchain do Bitcoin. Ela permite transações de Bitcoin instantâneas e de baixo custo, tornando-as mais eficientes e acessíveis para os usuários. Em comparação com as transações on-chain no Bitcoin, as transações na Rede Lightning são privadas, ocorrem off-chain, e apenas o resultado geral é registrado.

Uma das principais vantagens da Rede Lightning é sua velocidade e acessibilidade. Ela permite que os usuários enviem e recebam pequenos pagamentos pela rede Bitcoin de maneira simples e econômica. Ao criar uma rede de canais de pagamento entre usuários, a Rede Lightning possibilita transações sem transmitir cada transação para a blockchain. Isso reduz o congestionamento na blockchain do Bitcoin e melhora a escalabilidade das transações.

No entanto, deve-se notar que a Rede Lightning ainda está em desenvolvimento e enfrenta certos riscos de segurança e centralização. Em outubro deste ano, uma vulnerabilidade chamada "ataque de ciclo de substituição" foi recentemente descoberta na Rede Lightning, que envolve o Mecanismo de Substituição de Transação e pode levar à perda de fundos do canal na Rede Lightning. O surgimento deste método de ataque levantou preocupações sobre a segurança da Rede Lightning e estimulou mais pesquisas e melhorias em seus protocolos e implementações.

Mecanismo da Rede Lightning

A Rede Lightning do Bitcoin utiliza o mecanismo Multisig para garantir a segurança dos canais de pagamento. Os participantes precisam bloquear fundos e estabelecer canais de pagamento. Os participantes podem fazer pagamentos rápidos e de baixo custo dentro do canal, sem ter que submeter as transações à blockchain do Bitcoin a cada vez. O canal de pagamento é apenas uma relação entre os participantes fora da blockchain do Bitcoin, que é alcançada assinando uma série de transações dentro do canal que são propagadas apenas entre as duas extremidades do canal sem envolver o consenso de toda a rede Bitcoin.

Em termos do processo específico, ao abrir um canal de pagamento, os participantes precisam criar um script multi-assinatura que requer que cada parte no canal forneça sua chave pública, enquanto especifica o número necessário de assinaturas, por exemplo, definindo um script que contém múltiplas chaves públicas e lógica de verificação de assinatura. Ao gerar o endereço multi-assinatura, este script será convertido em um endereço Bitcoin, formando a infraestrutura do canal de pagamento.

Por exemplo, como mostrado na Figura 1, Bob e Alice criam primeiro um endereço Bitcoin multi-assinatura 2-de-2 na cadeia como um fundo conjunto. Dentro do canal, eles podem realizar ilimitadas transações de compromisso fora da cadeia para registrar o estado atual da alocação de fundos. As duas partes podem negociar e assinar novas transações de compromisso para atualizar o estado do canal, sem transmitir essas atualizações para toda a rede Bitcoin. Quando decidem fechar o canal, a transação final de liquidação na cadeia distribuirá os fundos de acordo com a última alocação negociada. Esta transação de liquidação requer as assinaturas conjuntas de Bob e Alice, garantindo que os fundos sejam alocados da maneira finalmente acordada. Desta forma, a Rede Lightning melhora a eficiência das transações Bitcoin, reduz custos, mantendo suas características descentralizadas.

Figura 1: Diagrama do Canal de Estado

State Channel Diagram

Fonte: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1204.png

Mecanismo HTLC

A Rede Lightning do Bitcoin também adota canais de pagamento baseados em Contratos de Bloqueio de Tempo com Hash (HTLCs) para implementar um sistema de canal de pagamento roteável e de múltiplos saltos. Na implementação, os HTLCs requerem um script de transação complexo definido em uma linguagem de script para atender à condição de hash e à condição de bloqueio de tempo. Este script será usado para inicialização ao abrir o canal de pagamento e acionado durante o pagamento. Desta forma, a Rede Lightning do Bitcoin alcança eficiência e segurança para pagamentos entre cadeias.

HTLC (Hashed Timelock Contract) é um Contrato de Bloqueio Temporal com Hash, que é um dos componentes importantes para implementar transações entre cadeias na blockchain. O HTLC tem duas aplicações comuns: trocas atômicas entre cadeias e canais de pagamento na Rede Lightning. O HTLC pode bloquear uma transferência e definir condições de desbloqueio, como fornecer informações específicas dentro de um período especificado. Isso garante que os fundos só possam ser retirados pelo destinatário quando as condições forem atendidas.

Tecnicamente, um HTLC é uma saída adicional em uma Transação de Compromisso com um script de saída único. Este é um script Script contendo operações como OP_HASH160, OP_EQUALVERIFY, etc., usado para bloquear fundos de modo que apenas fornecer o valor da pré-imagem R possa desbloqueá-los. Este script tem dois caminhos possíveis. O primeiro caminho (definido em OP IF) envia fundos para Bob se Bob puder fornecer R. O segundo caminho é aplicar um bloqueio temporal usando nLockTime na transação de pagamento, permitindo reembolsos de volta para Alice após o bloqueio expirar.

OP_IF

OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY

2 <Alice2> <Bob2> OP_CHECKMULTISIG

OP_ELSE

2 <Alice1> <Bob1> OP_CHECKMULTISIG

OP_ENDIF

Exemplo de Roteamento

Na Rede Lightning, Alice quer pagar 1 bitcoin para Eric, mas não há canal de pagamento direto entre Alice e Eric. Então Alice roteia o pagamento através de nós intermediários na rede de canais de pagamento (Bob, Carol, Diana) para construir um caminho de pagamento seguro, permitindo que ela pague indiretamente 1 bitcoin para Eric. O roteamento de pagamento usa HTLCs - apenas fornecendo o "segredo" correto dentro de uma janela de tempo específica, os fundos podem ser desbloqueados, garantindo a segurança do pagamento.

Neste exemplo, no Passo 1, Eric gera um Segredo R (solução) e calcula o valor hash H (quebra-cabeça), depois fornece o valor hash H para Alice.

Passos 2-5: Alice, Bob, Carol, Diana e Eric constroem HTLCs em pares, exigindo o fornecimento de R (solução) dentro de um determinado período de tempo para recuperar os fundos bloqueados da parte upstream.

Passos 6-9: Eric fornece R (solução) a Diana para recuperar 1 BTC. Diana então recupera o BTC de Carol com R, e R é passado para trás desta forma até que 1,003 BTC de Alice (0,003 BTC dos quais é a taxa de serviço para nós intermediários) sejam recuperados.

Neste exemplo, se no Passo 6 Eric não fornecesse R (solução) dentro do tempo fixado, após a expiração do tempo, os fundos bloqueados nos Passos 2-5 serão desbloqueados e devolvidos diretamente.

Figura 2: Exemplo de Roteamento

Routing Example

Fonte: https://cypherpunks-core.github.io/bitcoinbook/images/mbc2_1210.png

Ataque de substituição cíclica

O mecanismo de substituição de transações do Bitcoin refere-se à situação em que uma transação é marcada como substituível, permitindo que seja substituída por outra transação na rede com uma taxa mais alta antes de ser confirmada em um bloco. Se uma transação pagar uma taxa absoluta mais alta e uma taxa de taxa mais elevada, ela pode substituir transações pendentes não confirmadas que entram em conflito direto com ela. Após receber a transação de substituição, os nós removerão a transação original com a taxa mais baixa do mempool e manterão apenas a transação de substituição. O mecanismo de substituição de transações permite o ajuste de taxas de transação ou outros parâmetros antes que a transação seja confirmada. No entanto, este mecanismo também pode ser usado para implementar ataques de negação de serviço de transações, como substituir repetidamente uma transação crítica, causando falha na sua confirmação. Portanto, o mecanismo de substituição de transações proporciona conveniência para ajustar transações, mas também introduz riscos de abuso.

De acordo com o e-mail do desenvolvedor do Bitcoin Core, Antoine Riard, o ataque de ciclo de substituição envolve principalmente canais de pagamento na Rede Lightning do Bitcoin. O atacante transmite uma transação HTLC-preimage com uma taxa absoluta e uma taxa de comissão mais altas para substituir a transação HTLC-timeout do nó honesto. Durante a substituição, o atacante pode adicionar entradas ou saídas adicionais para garantir que a transação de substituição seja aceita com sucesso pela rede. Este método de ataque pode resultar em gasto duplo de fundos em canais de pagamento, ou seja, após o nó honesto transmitir a transação HTLC-timeout, o atacante recupera os fundos com sucesso através da substituição. Podemos dar um exemplo simples para ilustrar, semelhante ao exemplo anterior, assumindo que o caminho é simplificado para incluir apenas Alice, Bob e Eric, e Alice e Eric conspiram para roubar o BTC de Bob.

Passo 1: Alice pretende pagar 1 BTC a Eric através de Bob. Alice\Bob e Bob\Eric constroem cada um um HTLC. Eric precisa fornecer R (solução) a Bob antes do bloco 1020 (assumindo que a altura atual é 1000), caso contrário, Bob pode recuperar o 1 BTC bloqueado; da mesma forma, Bob precisa responder a Alice antes do bloco 1080, caso contrário, Alice pode recuperar seu 1 BTC.

Passo 2: Eric não forneceu R (solução) a Bob antes do bloco 1020. Bob transmitirá uma transação contendo HTLC-timeout. Os fundos nesta transação serão devolvidos a Bob.

Passo 3: Eric monitora a transação HTLC-timeout de Bob e a substitui por uma transação HTLC-preimage com uma taxa de comissão mais alta. Em seguida, Eric inicia outra transação para expulsar o HTLC-preimage anterior do mempool.

Passo 4: O nó de Bob retransmitirá a transação HTLC-timeout até o bloco 1080. Eric pode iniciar a substituição toda vez. Até o bloco 1080, a transação da outra parte do canal, Alice, é confirmada, e Alice recupera o BTC bloqueado.

Passo 5: Eric consegue que seu HTLC-preimage seja confirmado, então o 1 BTC bloqueado por Bob é transferido para Eric.

Assim, o 1 BTC de Bob foi transferido para Eric, enquanto ele não recebeu o BTC devido por Alice.

Resumo

Em novembro de 2023, a Lightning Network tinha mais de 16.000 nós Lightning e 5.000 BTC. Embora casos reais de ataques de ciclo de substituição não tenham sido confirmados, isso destaca a necessidade de pesquisa e melhorias contínuas de segurança para a Lightning Network. Antoine Riard também sugeriu várias medidas para evitar ou mitigar ataques de ciclo de substituição, como monitorar o mempool local e as transações retransmitidas, construir redes de sobreposição entre mineradores e nós Lightning, e reproduzir ativamente transações de timeout HTLC para aumentar os custos do atacante. Mas ao mesmo tempo, ele anunciou que deixaria de participar na Lightning Network e no seu trabalho de implementação, incluindo a coordenação de soluções para vulnerabilidades de segurança a nível de protocolo.

À medida que a Lightning Network se expande, a potencial ameaça de ataques de ciclo de substituição pode tornar-se um obstáculo no seu caminho de desenvolvimento, forçando a comunidade a focar-se mais na pesquisa e melhorias de segurança. No entanto, é precisamente ao abordar seriamente e melhorar as questões de segurança que poderemos testemunhar a Lightning Network a resolver gradualmente os riscos potenciais no futuro, alcançando um ecossistema mais saudável e confiável.

Sobre a CoinEx

Fundada em 2017, a CoinEx é uma bolsa global de criptomoedas comprometida em facilitar as negociações. A plataforma oferece uma gama de serviços, incluindo negociação à vista e com margem, futuros, swaps, criação de mercado automatizada (AMM) e serviços de gestão financeira para mais de 5 milhões de utilizadores em mais de 200 países e regiões. Desde a sua criação, a CoinEx tem aderido firmemente a um princípio de serviço "utilizador em primeiro lugar". Com a sincera intenção de promover um ambiente de negociação de criptomoedas equitativo, respeitoso e seguro, a CoinEx permite que os utilizadores acessem facilmente o mundo das criptomoedas, oferecendo produtos e serviços fáceis de usar.

Referências

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