La esencia del doble gasto es hacer transacciones repetidas del mismo activo digital. Esto es posible si hay un desajuste entre la cantidad de dinero digital disponible y su registro de gasto en la blockchain. Como las transacciones en blockchain tardan en completarse, los defraudadores tienen la posibilidad de gastar la misma cantidad en diferentes direcciones.
El doble gasto sigue siendo posible en blockchain, a pesar de la variedad de protecciones. Se pueden identificar varios tipos de ataques que darían lugar a la realización de un doble gasto.
Finney attack o ataque Finney
Este tipo de ataque sólo es posible si un comerciante acepta transacciones no verificadas o realiza la verificación con un retraso de al menos unos segundos. En teoría, el ataque es posible si el atacante se dedica al mining y controla el contenido de los bloques.
El proceso de aplicación de un ataque Finney es el siguiente:
- El hacker introduce una transacción en el bloque, pero no la ejecuta.
- Una vez encontrado el bloque minado, el hacker redirige las mismas monedas a otro pago.
- Esta transacción será cancelada por otro minero, pero no inmediatamente.
Al solicitar al menos seis confirmaciones, el recipiente podrá evitar un ataque Finney.
Race attack o ataque de carrera
El ataque de tipo “carrera” también es realizable sólo cuando se aceptan transacciones no confirmadas. Utilizando dos dispositivos diferentes, el hacker envía la misma moneda a dos destinatarios distintos. Si uno de los receptores la acepta sin esperar a que se confirme el bloque, será rechazada posteriormente en el proceso de minería. Para que un ataque de carrera no tenga posibilidades de llevarse a cabo, el recipiente debe esperar al menos una confirmación.
Hay que tener en cuenta que los atacantes suelen utilizar una conexión directa con el nodo de la víctima para llevar a cabo un ataque de carrera. Desactivar las conexiones entrantes a los nodos mantendrá a salvo al receptor y evitará que el hacker realice la transacción directamente.
Vector76 attack o ataque de confirmación
La esencia del ataque de Vector76 es que incluso una transacción que ha sido validada una vez puede ser anulada. Los pasos básicos para ejecutar este tipo de ataque son los siguientes:
- El minero atacante crea dos nodos. El primero puede estar conectado a una bolsa o intercambio, mientras que el segundo puede estar conectado a los nodos peer-to-peer de la red de blockchain.
- El hacker genera entonces dos transferencias con valores de precio diferentes.
- El bloque minado adicionalmente y la transacción de mayor valor son enviados directamente al intercambio o bolsa por el hacker.
- Tras confirmar la transacción anterior, el hacker envía la segunda transacción con un valor inferior a la red de blockchain, rechazando así el primer pago.
- La primera y más grande transacción se deposita de nuevo en la cuenta del hacker.
Se puede defenderse de este ataque desactivando las conexiones entrantes y conectándose sólo a los nodos “bien” conectados.
Brute force attack o ataque de fuerza bruta
Si la parte receptora sólo realiza transacciones después de unas cuantas confirmaciones, entonces con una gran potencia de hardware un atacante puede llevar a cabo un ataque de “fuerza bruta”. Este envía el pago sin dejar de verificar los bloques en los que se incluirá la transferencia.
Mientras la parte receptora verifica la transferencia, el hacker se desvía. Cuantas más confirmaciones encuentre el atacante, más probable será que pueda recuperar sus monedas. Por ejemplo, en el caso del comercio p2p, el atacante se apoderaría así de los fondos de la víctima, sólo fingiendo una transacción por su parte.
La cuestión es que si el hacker tiene una gran potencia de hardware y la capacidad de identificar todas las confirmaciones en la red, entonces tendrá la capacidad de anularlas. En la práctica, un ataque de “fuerza bruta” es bastante improbable, porque incluso con el 10% de la potencia de toda la red, sólo tendrá un 0,01% de éxito.
Majority attack o ataque de 51%
El ataque por mayoría o ataque del 51% es uno de los trucos más conocidos para ejecutar el doble gasto.
Con más del 51% de la capacidad de procesamiento de toda la red, un atacante o un grupo de hackers puede empezar a generar bloques por su cuenta, hacer cambios en los nuevos bloques, rechazar o aprobar transacciones. De este modo, esencialmente obtienen el control de la red de blockchain, de modo que pueden volver a gastar fondos fácilmente.
El ataque del 51% se ha llevado a cabo en blockchain más de una vez. Estos son algunos de los ejemplos exitosos:
- Los criptoproyectos basados en Ethereum Krypton (KR) y Shift (SHIFT) fueron atacados en 2016. Como resultado, los hackers consiguieron robar 2.200 monedas a través del intercambio Bittrex.
- En 2018, el criptoroyecto Verge (XVG) fue atacado por un hackers anónimo debido a un fallo en el código. La pérdida total ascendió a unos 800.000 $.
- La altcoin Bitcoin Gold (BTG) sufrió un ataque por la mayoría en 2018. Los hackers consiguieron retirar más de 18 millones de dólares en cripto a través de varias bolsas populares.
- A mediados de 2018, los atacantes consiguieron retirar más de 2,5 millones de dólares en tokens a través de intercambios gracias a un ataque del 51% a las criptomonedas MonaCoin (MONA), ZenCash (ZEN) y Litecoin Cash (LCC).
- El proyecto Aurum Coin (AU) perdió más de 500.000 $ en criptomonedas a finales de 2018 debido a un ataque del 51%.
- En 2019, dos grandes pools de minería llevaron a cabo un ataque del 51% a la red de la altcoin Bitcoin Cash (BCH).
Para proteger un proyecto de este tipo de ataque, hay que aumentar su popularidad entre los usuarios. Cuantos más usuarios haya en la red, menor será la probabilidad de majority attack. Otra solución para la protección es cambiar al algoritmo PoS. Un ataque del 51% a los grandes proyectos que funcionan con el algoritmo Proof-of-Stake es demasiado caro, aunque sigue siendo teóricamente posible.
Una solución al problema del doble gasto
Las redes de blockchain tienen algunas características que pueden reducir el riesgo de ataques de doble gasto:
- Gran número de confirmaciones. Cuantas más confirmaciones se requieran para una transacción, más bloques se añadirán. En consecuencia, la transacción será más segura.
- Apertura de la blockchain. Un registro de redes abiertas contiene datos con fecha de las transacciones. La adición de un nuevo bloque va acompañada de su entrada en una cadena común que es la misma para todos los nodos de la blockchain. De este modo, los mineros sólo considerarán válida la primera transacción en la blockchain abierta.
Por lo tanto, el método más común de doble gasto es crear el efecto de ausencia de transacciones en la cadena de bloques. Esta posibilidad suele surgir como resultado de una interrupción deliberada de la red de blockchain o de un error en el código del proyecto. Los desarrollos actuales de la tecnología blockchain y los sistemas contra el hacking minimizan el riesgo de doble gasto, pero no lo eliminan por completo, especialmente en los proyectos más pequeños.