Es el primer ataque o hackeo conocido al Bitcoin y descubierto por quien fue la primera persona en recibir una transacción bitcoin, Hal Finney. El hackeo o ataque Finney como fue nombrado en su honor, es un tipo muy especial de ataque de doble gasto que afecta a Bitcoin y cualquier criptomoneda derivada del mismo.

El primer receptor de una transacción Bitcoin fue Hal Finney y fue quien habló por primera vez del lanzamiento de Bitcoin. También fue el primero en sugerir la posibilidad de un ataque de doble gasto en Bitcoin. Por esta razón, este ataque fue nombrado como Hackeo Finney o Ataque Finney en su honor.

El hackeo o ataque Finney es un tipo de hackeo o ataque de doble gasto que puede ocurrir cuando una persona acepta una transacción no confirmada en la red. Finney explicó que un minero puede generar un bloque donde incluirá una transacción desde una dirección A hacia otra dirección B, donde ambas direcciones le pertenecen. Luego, realizará otro pago con las mismas monedas, enviando desde la dirección A hacia una dirección C (la cual le pertenezca a otro usuario). Si dicho usuario acepta la transacción sin  confirmaciones de la red, el atacante puede liberar el bloque donde está incluida su transacción inicial. Esto invalida la transacción realizada al comerciante permitiéndole al atacante realizar el doble gasto.

Hal Finney el autor del ataque Finney junto a su esposa

¿Cómo se ejecuta un hackeo o ataque Finney?

Realizar este tipo de ataque de doble gasto no es una tarea fácil. Más bien al contrario, es muy difícil de ejecutar porque implica que el atacante es un minero capaz de extraer el bloque donde se validará su transacción. Además, necesita que un comerciante acepte una transacción con cero confirmaciones por parte la red. Unir estas dos condiciones es bastante difícil.  No obstante, en teoría es posible llevarlo a cabo aún cuando se tenga menos del 51% del poder de hash de la red. Veamos cómo se ejecuta este ataque en 3 pasos:

Cuando el atacante tiene éxito, significa que ejecutó un hackeo o ataque Finney. Sin embargo, dependiendo del poder de hash del minero, este ataque es bastante improbable de ejecutarse. Así, mientras más bajo es el poder de hashrate del minero, más bajas serán las probabilidades de que lo ejecute con éxito. Por otra parte, el ataque fallará en caso de que se encuentre otro bloque en la red en el tiempo en que el atacante se demora en encontrar un bloque hasta generar la transacción al comerciante y que éste la acepte.

Por lo que realizar este tipo de ataque de doble gasto requiere de una sincronización cuidadosa y de mucha paciencia por parte del atacante. Ya que éste debe esperar a encontrar un bloque, lo que puede tomar mucho tiempo, más teniendo en cuenta la cantidad de mineros y la dificultad de la red. Además, el atacante debe poder comprar algún bien o pagar algún servicio a un comerciante en pocos minutos. Ya que como mencionamos, si otro minero encuentra y transmite otro bloque, la transacción al comerciante si será incluida y su ataque fallará.

¿Quiénes son susceptibles a sufrir un ataque Finney?

Si una persona o comerciante acepta pagos de transacciones sin confirmar, puede ser objeto de este ataque. Por ejemplo, alguna tienda con servicios en línea como la descarga de videojuegos que acepten criptomonedas y que permitan la descarga de forma inmediata puede ser susceptible a este tipo de ataques. También es probable que ocurra en supermercados, aunque en ellos el tiempo de compra no es exacto. Esto debido a que pueden haber muchas personas en la cola de pago lo que evita que un atacante pueda usar el tiempo a su favor.

¿Cuánto sabes, criptonauta?

¿El ataque Finney no se ha solucionado debido a que los desarrolladores no pueden hacerlo?

¡FALSO!

El ataque Finney es fácil de solucionar a nivel de código, pero pese a esto los desarrolladores no lo han hecho debido a una poderosa razón: requiere un cambio que drásticamente cambia la forma en como se maneja el consenso en la red y podría tener efectos indeseables. Por esa razón y teniendo en cuenta que la descentralización y el aumento de poder minero hacen extremadamente difícil explotar esta debilidad, los desarrolladores de Bitcoin han pasado por alto el error en favor de dejar las cosas como está. Después de todo “Si funciona, no lo toques”.

¿Cómo protegerse de un ataque Finney?

La primera recomendación es esperar al menos 6 confirmaciones en la red Bitcoin para dar por segura e irreversible una transacción. No obstante la descentralización de la red ha crecido tanto que en la gran mayoría de casos con 1 o 2 puede incluso ser suficiente, pudiendo incluso a valorar la cantidad de confirmaciones en función de la cantidad transaccionada.

Por ejemplo si vas a aceptar menos de 100€, con una confirmación puede ser suficiente debido a que el coste del ataque sería enormemente superior la Teoría de Juegos y el Equilibrio de Nash nunca va a favorecer a ejecutar el ataque.

Como hemos mencionado en artículos anteriores sobre las transacciones irreversibles, las transacciones en Bitcoin serán irreversibles a medida que se generen nuevos bloques sobre el que incluye la transacción. Reflejándose cada nuevo bloque como una confirmación a la transacción incluida. No obstante, para cantidades considerables, se recomienda esperar 6 confirmaciones para asegurarse de que la transacción es prácticamente imposible de ser revertida. Por lo que queda a riesgo de un usuario o comerciante, aceptar transacciones sin confirmar por parte de otra persona.

Si un atacante pretende usar el ataque Finney para obtener algún bien ilíquido, es difícil hacer coincidir la necesidad de este bien con la búsqueda de un bloque. Sin embargo, si lo emplea como forma de obtener algo líquido, como intercambiar bitcoins por otra moneda, siempre existe una oportunidad de realizarse. Pero es probable que el comerciante le solicité una cantidad de confirmaciones para llevar a cabo la acción. Por lo que en la práctica es bastante difícil e improbable lograr algo así.

¿Te resultó útil este artículo?
Puntuación media: 5
➜ ¡Comparte el conocimiento y promueve la revolución descentralizada!