Compartir este artículo

Qué significa el 'error de Bitcoin ': una guía para la maleabilidad de las transacciones

¿Qué significa la maleabilidad de las transacciones? ¿ Bitcoin está roto o no? Descúbrelo aquí.

Esta semana, surgió un término que muchos bitcoineros no habrán oído antes: maleabilidad de las transacciones. Mt. Gox lo citócomo una razón clave para suspender los retiros, y también se mencionó como la base de un exploit utilizado en unataque masivo contra la red BitcoinEsta semana. ¿Qué es, cómo funciona y deberíamos preocuparnos? Esto es lo que sabemos.

¿Qué es la maleabilidad de las transacciones?

Es un ataque que permite cambiar el ID único de una transacción de Bitcoin antes de que se confirme en la Bitcoin . Este cambio permite simular que una transacción no se realizó si se cumplen las condiciones adecuadas.

CONTINÚA MÁS ABAJO
No te pierdas otra historia.Suscríbete al boletín de Crypto Daybook Americas hoy. Ver Todos Los Boletines

¿Es lo mismo que gastar dos veces?

No. El doble gasto implica gastar monedas una vez y luego crear una transacción diferente con esas mismas monedas antes de que se confirme la primera. El truco consiste en confirmar primero la transacción fraudulenta en la red Bitcoin , para que la primera no se realice. Esto significa que puedes gastarlas dos veces.

¿Cómo funciona la maleabilidad de las transacciones?

Para entender esto, es necesario saber cómo funciona una transacción de Bitcoin .

Cuando envías bitcoins a alguien, no los retiras de una cuenta ni los envías rápidamente por las redes. Los bitcoins nunca se envían de esta manera. En cambio, se crea una transacción en la cadena de bloques de Bitcoin .

La cadena de bloques funciona como un gigantesco libro mayor para toda la red Bitcoin . Mantiene registros de qué direcciones Bitcoin enviaron fondos a otras direcciones Bitcoin y cuándo. Esto proporciona un registro completo de cuántos bitcoins pueden atribuirse a qué direcciones en la red en un momento dado.

Cuando se realiza una transacción de Bitcoin , se incluye información como las direcciones de donde provienen los bitcoins (las entradas), a dónde van (las salidas), las cantidades transferidas y qué direcciones enviaron esos fondos a la dirección del remitente.

[cita posterior]

Cada transacción debe tener una identificación única para que pueda referenciarse en la cadena de bloques. Este ID de transacción (TX ID) se genera tomando la información de la transacción y ejecutándola mediante una función hash.

El hash es un procedimiento matemático que combina diferentes datos para producir un fragmento de información más corto, conocido como hash. Un hash de transacción incluye la firma digital del usuario, que prueba que la transacción proviene de él. Es una forma de firmar digitalmente la transacción.

Una de las cualidades clave de una función hash es que es imposible determinar la información original con solo observar el hash. Tampoco es posible predecir cuál será el hash basándose en los datos iniciales. Cualquier pequeño cambio en alguno de esos datos modificará el hash de forma completamente impredecible.

Esto hace que los ID de las transacciones sean prácticamente imposibles de falsificar. Cada transacción solo debe tener un hash posible. Para comprobar la validez de una transacción, simplemente ejecute toda la información que la compone mediante la función hash para comprobar que se obtiene el mismo hash.

Al menos, esa es la idea. Pero aquí es donde entra en juego la maleabilidad. Las firmas digitales del usuario, utilizadas como parte del hash para firmar la transacción, deben tener un formato determinado. Este formato no siempre se verificaba correctamente. Esto significaba que podía introducirse una ONE mal formateada y, aun así, ser aceptada. Alterar la firma de esta manera permite crear diferentes hashes para la misma transacción.

Eso no es bueno. Pero, al parecer, tampoco es terriblemente malo. Aquí te explicamos por qué.

¿Cómo puede causar problemas?

Un problema aquí se centra en las plataformas de intercambio, que los usuarios de Bitcoin solían usar para comprar y vender bitcoins. Envían su moneda fiduciaria o bitcoins a una plataforma, donde se almacenan en una cuenta para su conversión. En algún momento, podrían querer retirar bitcoins de la cuenta.

Existen varios escenarios posibles. A continuación, se presentan algunos:

Ataques individuales maliciosos

Supongamos que ALICE gestiona una plataforma de intercambio y Eva tiene bitcoins en ella. Eva decide retirar sus monedas y le pide a ALICE que los envíe a su dirección. Al ALICE , se crea automáticamente una transacción, que se transmite para su minería e inclusión en la cadena de bloques de Bitcoin .

Pero Eva finge que ALICE nunca los envió. Usa la falla de maleabilidad de las transacciones para reproducir la transacción original de Alice, modificando ligeramente la firma para generar un hash diferente. Luego retransmite esa transacción con el ID diferente.

Existe la posibilidad de que la transacción de Eva se confirme primero en la cadena de bloques. Si eso ocurre, la red asumirá que la transacción es válida y no registrará la de Alicia. Eva puede entonces quejarse con ALICE de no haber recibido las monedas. Cuando ALICE busque su ID de transacción en la cadena de bloques, no lo encontrará y podría intentar enviar más bitcoins, lo que significa que perderá dinero.

Accidentes bien intencionados

Si utiliza software personalizado para gestionar sus bitcoins, podría generar hashes malformados por error. Estos hashes podrían ser corregidos por otra billetera con mejor rendimiento, que los formatea correctamente. Sin embargo, esto podría cambiar el ID de transacción. Si su billetera no está diseñada para detectar transacciones con las mismas características pero con un ID diferente, podría terminar con transacciones bloqueadas. Peor aún, podría creer que aún tiene esas monedas para gastar.

De cualquier manera, es una pesadilla contable si tu software no da abasto. El desarrollador CORE de Bitcoin , Gregory Maxwell, reflexiona sobre esa posibilidad. aquí.

Ataques masivos de denegación de servicio

Alguien también podría causar problemas más graves a la red Bitcoin al lanzar deliberadamente ataques de maleabilidad de transacciones en varias plataformas de intercambio a la vez, quizás utilizando software diseñado específicamente para crear transacciones mutantes. Este ataque coordinado es lo que parece haber ocurrido esta semana, afectando a varias plataformas de intercambio.

Los sistemas de contabilidad back-end de estos intercambios pueden ser capaces de manejar cantidades moderadas de transacciones mutantes, pero si son bombardeados repetidamente con ellas, podrían causarles problemas logísticos por un tiempo.

También podría causar problemas a corto plazo para el mercado. Cualquier incertidumbre o duda sobre la estabilidad del mercado naturalmente repercutirá en los precios, especialmente con una clase de activo tan ilíquida y volátil.

¿Significa esto que hay un error en Bitcoin?

Ha habido varios problemas con las tecnologías que utiliza la red Bitcoin que generan problemas de maleabilidad. ONE de ellos se encontraba originalmente en el cliente de referencia, el software desarrollado por un equipo CORE de desarrolladores que la mayoría de las personas utilizan para crear sus propios servicios. Dicho problema residía en la falta de verificación de los datos de la firma antes de transferirlos a otro software del que dependía el cliente de referencia de Bitcoin .

Según un anuncio de la Fundación Bitcoin esta semana, este último ataque de maleabilidad está retransmitiendo versiones mutadas de transacciones, lo que "expone errores tanto en la implementación de referencia como en el software de algunos intercambios", lo que significa que hay fallas de software en diferentes lugares en el ecosistema de Bitcoin que deberían abordarse.

Los desarrolladores CORE también informaron a CoinDesk sobre dos casos extremos en el cliente de referencia (fallas que rara vez se invocarían). Ambos se centran en la parte de la billetera del software.

Resulta que hay bastantes otros problemas de maleabilidad, incluidos algunos enumerados este mismo mes <a href="https://gist.github.com/sipa/8907691">https://gist.github.com/sipa/8907691</a> por ONE de los CORE desarrolladores de Bitcoin en una Propuesta de Mejora de Bitcoin (BIP), un documento que solicita algunos cambios en Bitcoin.

Los desarrolladores CORE se mantienen en silencio sobre cuáles son exactamente los problemas más problemáticos, porque no quieren dar más información a los atacantes potenciales.

¿Cómo se está solucionando?

La comunidad conocía el problema más discutido, que permitía enviar firmas mal formadas, ya en 2011 (veresta discusiónEl problema residía en que un componente clave del software utilizado por el cliente de Bitcoin no gestionaba correctamente las firmas mal formadas. Esto no fue culpa de los desarrolladores de Bitcoin CORE , sino que no lograron que el cliente de Bitcoin verificara que la firma estuviera correctamente formada antes de entregarla. Esto se solucionó en la versión 0.8 del cliente de referencia.

Sin embargo, no todos los exchanges utilizan el cliente de referencia para gestionar sus transacciones de Bitcoin . Pueden usar versiones personalizadas, que funcionan de forma ligeramente diferente. Por ello, los desarrolladores de Bitcoin , billeteras y exchanges están optimizando su código para garantizar un funcionamiento fluido. Para los exchanges, esto implica asegurarse de que gestionen las transacciones mutantes con fluidez, actuando correctamente cuando detectan una.

Las otras soluciones se centran más en los procesos. Los factores que agravan la maleabilidad son la dependencia de transacciones sin confirmar, en las que los bienes y servicios se transfieren o proporcionan antes de que se confirme una transacción en la cadena de bloques. Por lo tanto, exigir la confirmación de la transacción siempre es recomendable.

De manera similar, tener alguna verificación manual de los retiros de Bitcoin de los exchanges puede ayudar a KEEP las cosas en orden en el back-end.

¿Se está acabando el mundo del Bitcoin ? ¿Nos enfrentamos a un criptocalipsis?

Es una molestia, pero poco más. La mayoría de los productos de software tienen errores, pero no todos son iguales. Algunos son críticos y graves, y otros no. Estos no lo son, y Bitcoin no está roto. Los CORE de Bitcoin —la forma descentralizada en que muchas computadoras trabajan juntas para tomar decisiones sobre transacciones— siguen funcionando.

En nuestro ejemplo de intercambio anterior, se esperaría que ALICE tuviera registros contables lo suficientemente detallados como para poder conciliar los bitcoins que envió. Si le envió a Eve, por ejemplo, 1 Bitcoin a las 12:10 p. m. GMT del 5 de febrero, se trata de una transacción bastante singular. Podría simplemente decir: «Nuestros registros muestran que esta transacción se realizó a esta hora con estos parámetros. El ID de la transacción debe haber cambiado, así que no reenvío esos bitcoins».

Un exchange también podría implementar herramientas para rastrear automáticamente las entradas en las transacciones, lo que ayudaría a detectar mutaciones.

En todo caso, la maleabilidad de las transacciones ayudará a demostrar la resiliencia de la red descentralizada ante Eventos discretos. Después de todo, la descentralización es ONE de los factores que la convierten en el " BADGER de miel del dinero".

Moneda maleableimagen vía Shutterstock

Danny Bradbury

Danny Bradbury ha sido escritor profesional desde 1989 y ha trabajado como freelance desde 1994. Cubre temas de Tecnología para publicaciones como The Guardian.

Picture of CoinDesk author Danny Bradbury