Comprar Cripto
Mercados
Spot
Futuros
Earn
Promoción
Más
reward-centerZona para nuevos usuarios
Análisis de informesDetalles
Investigaciones de la industria

Ataque de Periodo de Reemplazo en la Red Lightning

CoinEx logo
Publicado el 2023-12-25

La Red Lightning de Bitcoin es una solución de escalabilidad de capa 2 para Bitcoin, destinada a abordar los desafíos de escalabilidad de la cadena de bloques de Bitcoin. Permite transacciones de Bitcoin instantáneas y de bajo costo, haciéndolo más eficiente y accesible para los usuarios. En comparación con las transacciones en cadena de Bitcoin, las transacciones en la Red Lightning son privadas, ocurren fuera de la cadena y solo se registra el resultado general.

Una de las principales ventajas de la Red Lightning es su velocidad y asequibilidad. Permite a los usuarios enviar y recibir pequeños pagos a través de la red Bitcoin de manera simple y rentable. Al crear una red de canales de pago entre usuarios, la Red Lightning permite transacciones sin transmitir cada transacción a la cadena de bloques. Esto reduce la congestión en la cadena de bloques de Bitcoin y mejora la escalabilidad de las transacciones.

Sin embargo, cabe señalar que la Red Lightning aún está en desarrollo y enfrenta ciertos riesgos de seguridad y centralización. En octubre de este año, se descubrió una nueva vulnerabilidad llamada "ataque de ciclo de reemplazo" en la Red Lightning, que involucra el Mecanismo de Reemplazo de Transacciones y puede llevar a la pérdida de fondos del canal en la Red Lightning. La aparición de este método de ataque ha suscitado preocupaciones sobre la seguridad de la Red Lightning y ha impulsado una mayor investigación y mejoras en sus protocolos e implementaciones.

Mecanismo de la Red Lightning

La Red Lightning de Bitcoin aprovecha el mecanismo Multisig para garantizar la seguridad de los canales de pago. Los participantes necesitan bloquear fondos y establecer canales de pago. Los participantes pueden realizar pagos rápidos y de bajo costo dentro del canal, sin tener que enviar las transacciones a la cadena de bloques de Bitcoin cada vez. El canal de pago es simplemente una relación entre los participantes fuera de la cadena de bloques de Bitcoin, que se logra mediante la firma de una serie de transacciones dentro del canal que solo se propagan entre los dos extremos del canal sin involucrar el consenso de toda la red Bitcoin.

En cuanto al proceso específico, al abrir un canal de pago, los participantes necesitan crear un script multifirma que requiere que cada parte en el canal proporcione su clave pública, al tiempo que especifica el número requerido de firmas, por ejemplo, definiendo un script que contiene múltiples claves públicas y lógica de verificación de firma. Al generar la dirección multifirma, este script se convertirá en una dirección de Bitcoin, formando la infraestructura del canal de pago.

Por ejemplo, como se muestra en la Figura 1, Bob y Alice primero crean una dirección Bitcoin multifirma 2-de-2 en la cadena como un fondo conjunto. Dentro del canal, pueden realizar transacciones de compromiso fuera de la cadena ilimitadas para registrar el estado actual de la asignación de fondos. Las dos partes pueden negociar y firmar nuevas transacciones de compromiso para actualizar el estado del canal, sin transmitir estas actualizaciones a toda la red Bitcoin. Cuando deciden cerrar el canal, la transacción final de liquidación en la cadena distribuirá los fondos de acuerdo con la última asignación negociada. Esta transacción de liquidación requiere las firmas conjuntas de Bob y Alice, asegurando que los fondos se asignen de la manera finalmente acordada. De esta manera, la Red Lightning mejora la eficiencia de las transacciones de Bitcoin, reduce los costos, mientras mantiene sus características descentralizadas.

Figura 1: Diagrama del Canal de Estado

State Channel Diagram

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

Mecanismo HTLC

La Red Lightning de Bitcoin también adopta canales de pago basados en Contratos de Bloqueo Temporal Hash (HTLCs, por sus siglas en inglés) para implementar un sistema de canales de pago enrutables y de múltiples saltos. En la implementación, los HTLCs requieren un script de transacción complejo definido en un lenguaje de scripting para cumplir con la condición de hash y la condición de bloqueo temporal. Este script se utilizará para la inicialización al abrir el canal de pago y se activará durante el pago. De esta manera, la Red Lightning de Bitcoin logra eficiencia y seguridad para los pagos entre cadenas.

HTLC (Hashed Timelock Contract) es un Contrato de Bloqueo Temporal Hasheado, que es uno de los componentes importantes para implementar transacciones entre cadenas en la blockchain. El HTLC tiene dos aplicaciones comunes: intercambios atómicos entre cadenas y canales de pago en la Red Lightning. El HTLC puede bloquear una transferencia y establecer condiciones de desbloqueo, como proporcionar información específica dentro de un tiempo determinado. Esto asegura que los fondos solo puedan ser retirados por el destinatario cuando se cumplen las condiciones.

Técnicamente, un HTLC es una salida adicional en una Transacción de Compromiso con un script de salida único. Este es un script Script que contiene operaciones como OP_HASH160, OP_EQUALVERIFY, etc., utilizado para bloquear fondos de modo que solo proporcionar el valor de preimagen R pueda desbloquearlos. Este script tiene dos posibles caminos. El primer camino (definido en OP IF) envía fondos a Bob si Bob puede proporcionar R. El segundo camino es hacer cumplir un bloqueo temporal usando nLockTime en la transacción de pago, permitiendo reembolsos a Alice después de que expire el bloqueo.

OP_IF

OP_HASH160 <Hash160 (R)> OP_EQUALVERIFY

2 <Alice2> <Bob2> OP_CHECKMULTISIG

OP_ELSE

2 <Alice1> <Bob1> OP_CHECKMULTISIG

OP_ENDIF

Ejemplo de Enrutamiento

En la Red Lightning, Alice quiere pagar 1 bitcoin a Eric, pero no hay un canal de pago directo entre Alice y Eric. Así que Alice enruta el pago a través de nodos intermedios en la red de canales de pago (Bob, Carol, Diana) para construir una ruta de pago segura, permitiéndole pagar indirectamente 1 bitcoin a Eric. El enrutamiento de pagos utiliza HTLCs - solo proporcionando el "secreto" correcto dentro de una ventana de tiempo específica se pueden desbloquear los fondos, asegurando la seguridad del pago.

En este ejemplo, en el Paso 1, Eric genera un Secreto R (solución) y calcula el valor hash H (rompecabezas), luego le da el valor hash H a Alice.

Pasos 2-5: Alice, Bob, Carol, Diana y Eric construyen HTLC por parejas, requiriendo la provisión de R (solución) dentro de un cierto período de tiempo para recuperar los fondos bloqueados de la parte superior.

Pasos 6-9: Eric proporciona R (solución) a Diana para recuperar 1 BTC. Diana entonces recupera el BTC de Carol con R, y R se pasa hacia atrás de esta manera hasta que se recupera el 1,003 BTC de Alice (de los cuales 0,003 BTC es la tarifa de servicio para los nodos intermediarios).

En este ejemplo, si en el Paso 6 Eric no proporcionara R (solución) dentro del tiempo fijado, después de la expiración del tiempo, los fondos bloqueados en los Pasos 2-5 se desbloquearán y devolverán directamente.

Figura 2: Ejemplo de Enrutamiento

Ejemplo de Enrutamiento

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

Ataque de reemplazo cíclico

El mecanismo de reemplazo de transacciones de Bitcoin se refiere a cuando una transacción está marcada como reemplazable, entonces puede ser sustituida por otra transacción en la red con una tarifa más alta antes de que se confirme en un bloque. Si una transacción paga una tarifa absoluta más alta y una tasa de tarifa más alta, puede reemplazar transacciones pendientes no confirmadas que entran en conflicto directo con ella. Después de recibir la transacción de reemplazo, los nodos eliminarán la transacción original con la tasa de tarifa más baja del mempool y solo mantendrán la transacción de reemplazo. El mecanismo de reemplazo de transacciones permite ajustar las tarifas de transacción u otros parámetros antes de que la transacción sea confirmada. Pero este mecanismo también puede ser utilizado para implementar ataques de denegación de servicio de transacciones, como reemplazar repetidamente una transacción crítica, causando que falle su confirmación. Por lo tanto, el mecanismo de reemplazo de transacciones proporciona conveniencia para ajustar las transacciones, pero también introduce riesgos de abuso.

Según el correo electrónico del desarrollador de Bitcoin Core Antoine Riard, el ataque de ciclo de reemplazo implica principalmente canales de pago en la Red Lightning de Bitcoin. El atacante transmite una transacción HTLC-preimage con una tarifa absoluta y una tasa de tarifa más altas para reemplazar la transacción HTLC-timeout del nodo honesto. Durante el reemplazo, el atacante puede agregar entradas o salidas adicionales para garantizar que la transacción de reemplazo sea aceptada con éxito por la red. Este método de ataque puede resultar en un doble gasto de fondos en los canales de pago, es decir, después de que el nodo honesto transmite la transacción HTLC-timeout, el atacante recupera con éxito los fondos mediante el reemplazo. Podemos dar un ejemplo simple para ilustrar, similar al ejemplo anterior, suponiendo que la ruta se simplifica a solo Alice, Bob y Eric, y Alice y Eric conspiran para robar los BTC de Bob.

Paso 1: Alice tiene la intención de pagar 1 BTC a Eric a través de Bob. Alice\Bob y Bob\Eric construyen cada uno un HTLC. Eric necesita proporcionar R (solución) a Bob antes del bloque 1020 (asumiendo que la altura actual es 1000), de lo contrario, Bob puede recuperar el 1 BTC bloqueado; de manera similar, Bob necesita responder a Alice antes del bloque 1080, de lo contrario, Alice puede recuperar su 1 BTC.

Paso 2: Eric no proporcionó R (solución) a Bob antes del bloque 1020. Bob transmitirá una transacción que contiene HTLC-timeout. Los fondos en esta transacción serán reembolsados a Bob.

Paso 3: Eric monitorea la transacción HTLC-timeout de Bob y la reemplaza con una transacción HTLC-preimage con una tasa de tarifa más alta. Luego, Eric inicia otra transacción para expulsar el HTLC-preimage anterior del mempool.

Paso 4: El nodo de Bob volverá a transmitir la transacción HTLC-timeout hasta el bloque 1080. Eric puede iniciar el reemplazo cada vez. Hasta el bloque 1080, la transacción de la otra parte del canal, Alice, se confirma, y Alice recupera el BTC bloqueado.

Paso 5: Eric consigue que su HTLC-preimage se confirme, por lo que el 1 BTC bloqueado por Bob se transfiere a Eric.

Por lo tanto, el 1 BTC de Bob fue transferido a Eric, mientras que él tampoco recibió el BTC adeudado por Alice.

Resumen

A partir de noviembre de 2023, la Red Lightning cuenta con más de 16.000 nodos Lightning y 5.000 BTC. Aunque no se han confirmado casos reales de ataques de ciclo de reemplazo, esto resalta la necesidad de una investigación y mejoras continuas en seguridad para la Red Lightning. Antoine Riard también sugirió varias medidas para evitar o mitigar los ataques de ciclo de reemplazo, como monitorear el mempool local y las transacciones retransmitidas, construir redes superpuestas entre mineros y nodos Lightning, y reproducir activamente las transacciones de tiempo de espera HTLC para aumentar los costos del atacante. Sin embargo, al mismo tiempo, anunció que dejará de participar en la Red Lightning y su trabajo de implementación, incluida la coordinación de soluciones para vulnerabilidades de seguridad a nivel de protocolo.

A medida que la Red Lightning se amplía, la amenaza potencial de los ataques de ciclo de reemplazo puede convertirse en un obstáculo en su camino de desarrollo, obligando a la comunidad a centrarse más en la investigación y mejoras de seguridad. Sin embargo, es precisamente abordando y mejorando seriamente los problemas de seguridad que podemos presenciar cómo la Red Lightning resuelve gradualmente los riesgos potenciales en el futuro, logrando un ecosistema más saludable y confiable.

Acerca de CoinEx

Fundada en 2017, CoinEx es una bolsa global de criptomonedas comprometida con facilitar el comercio. La plataforma ofrece una gama de servicios, incluyendo comercio al contado y con margen, futuros, swaps, creación de mercado automatizada (AMM) y servicios de gestión financiera para más de 5 millones de usuarios en más de 200 países y regiones. Desde su establecimiento, CoinEx se ha adherido firmemente a un principio de servicio "centrado en el usuario". Con la sincera intención de fomentar un entorno de comercio de criptomonedas equitativo, respetuoso y seguro, CoinEx permite a los usuarios acceder sin esfuerzo al mundo de las criptomonedas ofreciendo productos y servicios fáciles de usar.

Referencias

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