Aspectos Técnicos de Bitcoin

Maleabilidad De La Transacción ¿Qué Es? ¿Es Un Bug?

Maleabilidad De La Transacción

La maleabilidad de la transacción se trata de un ataque donde se cambia el ID de una transacción de Bitcoin antes de que sea confirmada por la red.

El objetivo de esto es simular que la transacción no ha ocurrido, siempre y cuando las condiciones necesarias se cumplan.

¿Cómo funciona la maleabilidad de la transacción?

Antes de que podamos comprender exactamente como funciona esto de la maleabilidad de la transacción es necesario entender como una transacción de Bitcoin funciona.

A diferencia de una cuenta de banco, donde se extraen los fondos para luego ser depositados en otra cuenta mediante una transferencia, en Bitcoin las cosas son algo diferentes. Es necesario que la transacción sea agregada a un bloque y luego a la blockchain.

La cadena de bloques, o blockchain, es básicamente una gran base de datos contables, un libro contable distribuido que funciona en una gran red.

En ella se guardan un registro de que dirección envió BTC a que dirección, y también la fecha en que lo hizo.

Gracias a esto una persona, o mejor dicho un monedero, puede calcular cuantos bitcoins tiene en su poder al analizar las direcciones que son de su propiedad y la cantidad de bitcoins que ha recibido en ellas.

Antes de que se complete una transacción, lo que se conoce como confirmación, es necesario que sea validada y verificada por los nodos de Bitcoin.

Cuando validan buscan que incluya la siguiente información:

  • La entrada: la dirección de donde provienen los fondos.
  • La salida: hacia donde van.
  • La cantidad: que se desea transferir.
  • La firma: firma digital que se genera con la clave privada.

Claro que una transacción tiene más información, pero para hacerlo simple y que se entienda este tipo de ataque es más que suficiente.

Cada transacción tiene un identificador único, algo que permite luego que pueda ser referenciada dentro de la cadena de bloques.

Es lo que se conoce como ID de transacción o TxID, que se consigue tomando la información de la transacción y pasándola por una función de hash.

Una función de hash es básicamente una función matemática que permite ingresar una cantidad de información de longitud variable y devuelve siempre una información con una longitud fija, lo que se conoce como hash.

Una característica importante de un hash es que es prácticamente imposible determinar la información original, ya que la misma no es inversa. Si alguien quisiera determinar cual era esa información necesitara ingresar información hasta que halle cual es la que produce el mismo hash.

Tampoco es posible predecir cual será el hash a partir de la información de entrada. Cualquier mínimo detalle que se cambie de esa información producirá un resultado completamente diferente.

La clave privada es una información muy importante de la transacción, ya que permite demostrar que la misma proviene de la persona que tiene la autoridad para gastar esos fondos.

Todo esto hace que un ID de transacción sea casi imposible de falsificar. Cada transacción solo debería tener un hash posible.

Para comprobar que una transacción es válida, simplemente tomamos toda la información de la misma y lo pasamos por la función de hash, si obtenemos el mismo hash entonces ya sabemos la respuesta a nuestra pregunta.

La firma digital del usuario usada como parte del hash para firmar la transacción está pensada para tener cierto formato. Este formato no siempre es revisado, lo cual implica que un formato diferente puede ser introducido y aun así ser aceptado.

Alterar la firma de esta forma puede hacer posible crear diferentes hashes para la misma transacción. Como podrás imaginar, ocasionando grabes problemas.

¿Qué la hace posible?

La maleabilidad de la transacción es posible debido a que el algoritmo de desbloqueo, o scriptSig, que contiene la firma digital puede ser modificado por un atacante.

Si el script es modificado, la información a hashear será diferente, por tanto, el ID de transacción también lo será. Sin embargo, es un ataque que alguien podría realizar solo antes de que sea confirmada por un bloque.

Luego de que la transacción haya sido confirmada, la firma digital y el TxID son inmutables.

Problemas que puede ocasionar

El problema afecta principalmente a los exchange, donde los usuarios de Bitcoin suelen comprar y vender sus BTC.

Pueden enviar dinero fiduciario o bitcoins al exchange, donde luego son convertidos. El problema ocurre cuando desean hacer una extracción de los bitcoins de la cuenta del exchange a sus monederos personales.

Existen varios escenarios donde alguien podría aprovecharse de este ataque.

1. Ataques individuales

Supongamos que tenemos bitcoins en un exchange. Cuando decimos hacer una extracción en esta criptomoneda, solicitamos que la hagan a cierta dirección.

Cuando el exchange nos envía los fondos crea una transacción automática que es informada a los nodos mineros para que la puedan confirmar al ser integrada a un bloque.

El ataque consiste en pretender que el exchange nunca nos la ha enviado. Para eso se utiliza la maleabilidad de la transacción, que reproduce la transacción original, modificando la firma y produciendo un nuevo hash. Luego simplemente hace falta retransmitir la nueva transacción con el ID diferente.

Existe una posibilidad de que la transacción que creamos sea confirmada primero. Si eso ocurre, la red dará como válida la nueva transacción y dejara como invalidad la del exchange.

Solo hace falta decirle al exchange que no hemos recibido nuestras monedas. Cuando el exchange revise la cadena de bloques no podrá encontrar la transacción con el ID original, intentando crear otra con más bitcoins.

2. Accidentes

Si utilizamos software personalizado por nosotros mismos que gestione los bitcoins, puede que genere hashes por error. Luego, estos hashes pueden ser “arreglados” por otros monederos, que les dan el formato correcto.

Pero como consecuencia de ese acto, el TxID podría cambiar. Si nuestro monedero no está diseñado para encontrar transacciones con las mismas características, pero con diferente ID, entonces podría no detectar las transacciones. Incluso podría pensar que no ha gastado esas monedas todavía.

3. Ataques de denegación de servicios masivos

Incluso se podría generar un problema mayor para la red de Bitcoin si se lanzara un ataque como este a diferentes exchanges al mismo tiempo. Solo hace falta un software diseñado para crear transacciones modificadas.

Puede que algunos exchanges sean capaces de hacer frente a un número moderado de transacciones alteradas, pero si esto se mantiene constante en el tiempo, o son demasiadas, podría generar un problema de logística.

Esto también implica problemas en el corto plazo para el mercado. Y sabemos que cualquier tipo de inestabilidad en el mercado tiene efecto en el precio, especialmente con un activo como el Bitcoin que es conocido por su volatilidad.

¿Es un bug de Bitcoin?

Han existido varios problemas con la tecnología que la red de Bitcoin utiliza, lo cual ha arrojado como resultado este problema de la maleabilidad.

Uno de ellos se originó en el software de referencia de Bitcoin en 2014, Bitcoin Core, que es producido por el equipo de desarrolladores. Esta es la implementación que la gente suele utilizar como punto de partida cuando genera sus propios servicios.

El problema en particular era que no revisaba correctamente la información de la firma antes de enviársela a otro nodo de la red.

¿Ha sido arreglado? ¿Cómo?

El problema en particular que sufrió esta implementación tan popular de Bitcoin era que el cliente no gestiona correctamente las firmas con el formato incorrecto.

Si bien este no era un problema particular introducidor por los desarrolladores de Bitcoin Core, si es verdad que no habían integrado en el cliente un proceso de verificación extra para saber si las firmas estaba creadas de manera correcta.

Hubo que esperar hasta la versión 0.8 del cliente para finalmente ver algo así implementado.

Por su parte, no todos los exchanges utilizaban esta implementación. Aquellos que no lo hacían decidieron trabajar en una solución personalizada.

Otro método que fue utilizado para hacer frente a este problema por parte de los exchange fue verificar manualmente las extracciones de Bitcoin, algo que ha disminuido este problema enormemente.

La maleabilidad de la transacción en Mt. Gox

Durante los últimos días de vida del fallecido exchanges Mt. Gox, la maleabilidad de la transacción fue utilizada como excusas para limitar la extracción de fondos de los clientes.

Puede que en parte esta haya sido la razón de que perdiera una gran parte de los fondos de los usuarios y terminara cerrando sus puertas, pero también una buena excusa para hacer eliminar su culpabilidad y la falta de control a la hora de gestionar de forma segura los fondos de sus clientes.

Diferencia con Doble Gasto

El doble gasto y la maleabilidad de la transacción no son lo mismo. Mientras que en la maleabilidad se cambia el TxID de la transacción antes de que sea confirmada por un minero, el doble gasto consiste en crear una transacción con las mismas monedas antes de que la primera sea confirmada.

La gracia de este asunto es conseguir que se confirme la transacción fraudulenta antes en la red de Bitcoin, haciendo que la primera de ellas pase a ser invalidada.

Esto permite que podamos gastar dos veces los mismos fondos.

¿Cómo afecta esto a Bitcoin?

La realidad es que estamos ante un ataque que era posible de realizar en el pasado, pero que ya hoy no lo es tanto. Prácticamente, todo el software que gestiona Bitcoin ha tomado medidas para hacerte frente.

De esta forma, el efecto que puede tener en Bitcoin actualmente es muy bajo o nulo, provocando que no debamos preocuparnos por él.

La idea de este artículo es conocer que es la maleabilidad de las transacciones y el efecto que puede provocar sobre Bitcoin.

Existen errores en todas las piezas de software, pero no todos son creados de la misma forma. Algunos son críticos, al punto de poner en jaque el proyecto, y otros no.

Este en particular no lo fue, ya que Bitcoin no dejo de funcionar. La red continuo operando a pesar de que algunos exchanges podrían haber sido víctima del abuso por parte del algunos de sus usuarios, que aprovecharon este bug para obtener un beneficio.

Mejor que haya sido descubierto temprano y no cuando su precio era mucho mayor.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario