Ataque del 51%
Ataques a Bitcoin
Hay muchos métodos teorizados para atacar Bitcoin, sin embargo, todos deben ejecutarse a un costo significativo para el atacante. Al momento de escribir este artículo, aún no se ha definido un ataque en la red de Bitcoin que conlleva un beneficio económico para el atacante desde dentro de Bitcoin.
A continuación se detallan los métodos de ataque que se han discutido en el pasado.
Ataques basados en transacciones
Los ataques basados en transacciones involucran a atacantes que crean o envían transacciones que causan nodos que no están suficientemente protegidos para sufrir una degradación del rendimiento o incluso una falla. Existen varios tipos de ataques basados en transacciones.
Ataque de validación de script
Un ataque de validación de secuencia de comandos implica la creación y el envío de una transacción a la red que incluye una secuencia de comandos que provoca un uso severo de la memoria dentro del motor de evaluación de secuencias de comandos con el objetivo de hacer que el motor se averíe. Un ejemplo de tal script es:
OP_DUP OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DUP OP_CAT OP_DROP <pubkey> OP_CHECKSIG OP_RETURN
Este script tiene solo 99 bytes de longitud. Toma la firma proporcionada (aproximadamente 72 bytes), la duplica dos veces, luego concatena los dos elementos duplicados para crear un elemento de datos de 144 bytes. Luego duplica el elemento de datos de datos de 144 bytes y lo duplica y concatena el resultado. La duplicación y la concatenación se repiten 32 veces en un intento de crear un elemento de datos de hasta 309 GB de tamaño en la pila, que luego cae antes de validar la firma. Si se proporcionó la firma correcta y la mayoría de los nodos en la red central eran capaces de manejar un elemento de datos de 307 GB, esta transacción podría teóricamente ser aceptada y explotada.
Mitigación
Antes de la actualización de Genesis, el motor de evaluación de scripts estaba protegido por la prueba ‘isStandard’ que solo permite validar las transacciones que se ajustan a algunas plantillas muy específicas. Después de la génesis, los mineros han tenido que implementar rutinas de administración de memoria que rechazan las transacciones una vez que comienzan a consumir grandes cantidades de memoria. En el futuro, se espera que la mayoría de las transacciones aún se ajusten a un número relativamente pequeño de plantillas, y que las transacciones que son poco comunes o únicas puedan pasar a través de una capa adicional de simulación o prueba antes de ser validadas.
Transaction Volume Attack
Este ataque es similar a un ataque de denegación de servicio distribuido mediante el cual se usa un par o muchos pares en la red para crear volúmenes extremadamente grandes de transacciones para propagación a través de la red. Se pudo ver un ejemplo bien intencionado de este tipo de ataque durante las pruebas de estrés de Bitcoin realizadas a lo largo de 2018 usando la escopeta Satoshi: un bot de gran volumen de transacciones, que resultó en la degradación del servicio en la mayoría de las billeteras y servicios y dentro de la red misma. Las pruebas no tuvieron éxito al evitar que la función de minería de red funcione de manera normal, sin embargo, dificultaron a los usuarios realizar transacciones o utilizar servicios.
Mitigación
Este ataque se mitiga en gran medida a escala con tarifas de transacción. El costo de crear y enviar millones de transacciones, y la capacidad de la red central para recibir, sellar y archivar los millones de registros de transacciones resulta en que la red absorba el ataque.
Ataque de agotamiento de memoria
Este ataque se basa en que los mineros usan la configuración en el software cliente de su nodo, lo que hace que mantenga y retenga transacciones que no planea extraer en el caso de que otros nodos las extraigan y necesiten ser validadas rápidamente. El atacante debe tener un conocimiento íntimo de la configuración del minero que requeriría algún tipo de publicación de información o ingeniería social engañosa. El ataque implica enviar miles de transacciones directamente al nodo que está siendo atacado para causar problemas de desbordamiento de memoria. El ataque también puede evitar que las transacciones de cierto tipo que no son parte del ataque se propaguen por la red al hacer que los nodos comiencen a bloquear el envío masivo de esas transacciones.
Mitigación
El ataque puede ser mitigado en gran medida por los mineros que tienen una comprensión íntima de la configuración que están utilizando y cómo determinan qué hace el software del cliente del nodo con las transacciones que no planea extraer. Los clientes de nodo también tienen límites de agrupación de memoria que pueden evitar que se produzcan desbordamientos en muchos casos.
Ataques basados en bloque
Estos son ataques perpetrados por mineros maliciosos que buscan dominar o subvertir a los mineros honestos en la red.
Ataque del 51%
Un ataque del 51% es un ataque teórico en el que un minero acumula más del 51% de la potencia hash en la red. El ataque se discute primero en la sección detallada en la sección 6 del documento técnico de Bitcoin que discute los incentivos.
El incentivo puede ayudar a alentar a los nodos a ser honestos. Si un atacante codicioso es capaz de reunir más potencia de CPU que todos los nodos honestos, tendría que elegir entre usarlo para defraudar a las personas robando sus pagos o usarlo para generar nuevas monedas. Debería encontrar más rentable jugar según las reglas, reglas que lo favorecen con más monedas nuevas que todos los demás combinados, que socavar el sistema y la validez de su propia riqueza.
El ataque se analiza con más detalle en la sección 11, donde se analiza el rendimiento del nodo atacante para mostrar que, incluso con un hashrate abrumador, sigue siendo excepcionalmente costoso para un atacante mantener y extender una cadena de bloques no válida, lo que disipa en gran medida la validez del ataque.
No se han registrado casos de un ataque del 51% en la historia de Bitcoin, sin embargo, otras redes de criptomonedas de menor capacidad han sido atacadas y devaluadas mediante el uso de estas tácticas.
Ataque de bloque pequeño
El ataque de bloque pequeño representa uno de los ataques más exitosos y peligrosos contra Bitcoin y estuvo en fase de ejecución en The Bitcoin Network desde alrededor de 2013 hasta que los desarrolladores de BCH duplicaron el libro mayor con el apoyo de los mineros que abandonaron el protocolo original y el libro mayor a los mineros que usaban el Cliente de minería de BitcoinSV en noviembre de 2018. El resultado final deseado del Small Block Attack se puede ver actualmente en la red BTC, donde los usuarios se enfrentan a un rendimiento desconocido en un día determinado, tarifas altas y falta de funcionalidad debido a la necesidad de mantener las transacciones lo más pequeño y simple posible, con la posibilidad de que ocurra un evento de muerte en cadena en algún momento debido a la falta de accesibilidad para los usuarios.
El ataque de bloque pequeño comenzó después de que Satoshi Nakamoto limitó el tamaño de bloque de Bitcoin a 1 MB como medida antispam en 2010. Este cambio siempre fue temporal, sin embargo, los atacantes lo aprovecharon como un medio para imponer muchos más límites arbitrarios en Bitcoin, eventualmente retroceder desde cualquier plan para eliminar el límite. A lo largo de los años, muchas capas de reglas restrictivas se integraron en el cliente de Bitcoin y se aplicaron como reglas de consenso en la red. La actualización de Genesis en febrero de 2020 eliminó casi todos estos límites y los colocó con límites específicos de nodo configurables para mineros, lo que permite que los incentivos económicos de la red definan los límites de la utilidad del protocolo en cualquier momento dado.
Los ingenieros de ataque comenzaron una narrativa que vilipendiaría los llamados ‘Hard Forks’ que requieren que todos los nodos de minería en la red se actualicen simultáneamente, y propagaron la idea de que los nodos en la red de Bitcoin nunca deberían tener que actualizarse como se requeriría para el Tapa de tamaño de bloque que se eliminará.
La narrativa se utilizó con gran efecto para impulsar la oposición pública a propuestas de escalado aún más pequeñas y lentas que las que se están implementando actualmente en BitcoinSV , y se convirtió en un vector para la introducción de los llamados ‘Soft Forks’, que son cambios que explotan el protocolo para crear cambios en la forma en que se evalúan las transacciones y bloques de Bitcoin que aún son técnicamente válidos, pero que cambian la forma en que funciona Bitcoin. Los ejemplos de tales cambios incluyen Testigo segregado y Pagar a Script Hash .
Minería egoísta
La minería egoísta fue un ataque propuesto donde un minero con solo el 31% del hashrate de la red podría competir con el resto de la red y ganar más del 31% de los bloques.
El ataque se basó en que el minero egoísta actuó en secreto y extrajo bloques consecutivos para liberarlo en los momentos posteriores a que un minero honesto encuentra un bloque competidor en el primer bloque del minero egoísta. Esto supuestamente provocaría que el bloque del minero honesto quedara huérfano y mejorara la rentabilidad del nodo del atacante.
La teoría detrás del ataque usó una interpretación defectuosa de la propagación de bloques a través de la red y descartó el hecho de que los mineros son una Red del Mundo Pequeño que está extremadamente densamente conectada, lo que hace que sea excepcionalmente fácil para otros mineros en la red descubrir al minero egoísta y evitarlo. sus bloques deshonestos