El modelo de seguridad de Bitcoin: un análisis profundo
CoinDesk analiza en profundidad para comprender qué características de seguridad ofrece y no ofrece Bitcoin.
Cuando Discutiendo mecanismos de consenso Para las diferentes criptomonedas, un problema que suele generar controversia es la falta de comprensión (y definición) del modelo de seguridad que ofrecen para los datos históricos del libro mayor. Si bien cada modelo de consenso busca prevenir diversos ataques teóricos, es importante comprender sus objetivos.
Todo modelo de seguridad consta de dos partes principales: supuestos y garantías. Si los supuestos utilizados como entrada son válidos, también lo serán las garantías que genera el modelo.
Profundicemos en el modelo de seguridad que parece ofrecerse a los usuarios de Bitcoin que ejecutan un nodo completo.
En busca de la verdad
“Una de las fortalezas de Bitcoin, incluso la más importante en mi Opinión , es el bajo grado de confianza que se necesita en los demás”.Pieter Wuille
El objetivo de los registros distribuidos es proporcionar un historial ordenado de Eventos, porque en los sistemas distribuidos no se puede confiar simplemente en una marca de tiempo.
Cuando un nuevo participante se une a una red basada en blockchain, descarga todos los bloques disponibles y considera todas las series de bloques válidas que ve, comenzando por un bloque de génesis codificado.
Una de las principales premisas del modelo de seguridad de Bitcoin es que la mayoría de los mineros son honestos: trabajan para proteger la cadena de bloques en lugar de intentar socavarla. En la práctica, esto se ha mantenido a lo largo de la historia de Bitcoin gracias a los incentivos para los mineros. alguna preguntasi seguirá siendo cierto en el futuro.
Dada esta suposición, los operadores de nodo completo pueden estar completamente seguros de varios hechos:
- Nadie ha inflado la oferta monetaria excepto los mineros, y sólo de acuerdo con un calendario bien definido.
- Nadie jamás gastó dinero sin tener las claves privadas adecuadas.
- Nadie jamás gasta el mismo dinero dos veces.
Los operadores de nodo completo pueden estar razonablemente seguros de varias otras cosas. Existe una sólida garantía de que:
- Cualquier bloque de la cadena se creó dentro de aproximadamente dos horas a partir de la marca de tiempo del bloque.
- Están sincronizando el historial “real” de blockchain.
A un nivel más técnico, esto requiere una multitud de comprobaciones:
- Todos los bloques Síguenos las reglas de consenso:
- Cada bloque esencadenado a un bloque padre
- Cada bloque cumplió con su objetivo de dificultad y tieneprueba suficiente de trabajo
- Las marcas de tiempo del bloque caen en unaventana relativa a bloques recientes
- La raíz de Merklecoincide con las transacciones del bloque
- No había bloquesmayor que el tamaño máximo permitido
- La primera (y única primera) transacción de cada bloquees una transacción de coinbase
- Las salidas de Coinbase no pagan más que la recompensa de bloque apropiada
- Ningún bloque contenía más de lo queoperaciones de firma permitidas
- Todas las transacciones Síguenos las reglas de consenso:
- Valores de entrada y salidaestán cuerdos
- Transaccionessolo gastar los resultados no gastados
- Se están gastando todas las entradastener firmas válidas
- No se gastaron salidas de transacciones de Coinbasedentro de los 100 bloques de su creación.
- Sin transaccionesgastar entradas con un tiempo de bloqueoantes del bloque en el que se confirman.
- Muchas otras reglasSería demasiado largo cubrir esto aquí.
Seguridad termodinámica
Una vez que se confirma una transacción en un bloque, no se puede revertir sin que alguien gaste una cantidad mínima de energía para reescribir la cadena.
Mientras ningún atacante posea más del 50% de la potencia computacional de la red y los nodos honestos puedan comunicarse rápidamente, la probabilidad de que una transacción se revierta disminuye exponencialmente con el número de confirmaciones recibidas. Existen otros ataques,como la minería egoísta, que pueden reducir este requerimiento de energía, aunque parecen ser difíciles de perpetrar.

Si observamos el trabajo acumulado actual realizado por los mineros de Bitcoin , se necesitarían casi 1026 hashes para construir una cadena de bloques alternativa desde la génesis con una prueba de trabajo acumulada mayor que la que los nodos completos considerarían como la cadena “verdadera”.

Para hacer algunas cifras sobre el coste que implica un ataque de este tipo:
Un Antminer S9 funciona a 0,1 julios por GH (109 hashes)
1026 hashes * 0,1 J / 109 hashes = 1015 julios
1015 julios = 2.777.777.778 kw hora * $0,10 kw/hora = $277.777.778 en electricidad para reescribir toda la cadena de bloques
Considerando que al momento de escribir este artículo un solo bloque debe alcanzar un objetivo de dificultad de 253.618.246.641, lo que requeriría aproximadamente:
253.618.246.641 * 248 / 65535 = 1,09 * 1021 hashes
1,09 * 1021 hashes * 0,1 J / 109 hashes = 1,09 * 1011 julios
1,09 * 1011 julios = 30.278 kw hora * $0,10 kw/hora = $3.028 en electricidad por bloque
Es por esto que podemos afirmar que Bitcoin es demostrablemente termodinámicamente seguro.
Hay algunas variables que se pueden ajustar en el cálculo anterior para reducir el costo, pero podemos estar seguros de que se requerirán millones de dólares en electricidad solo para reescribir toda la cadena de bloques. Sin embargo, un atacante con esta potencia de hash, en el peor de los casos, podría revertir las transacciones a 2014; profundizaremos en el motivo en breve.
También hay que tener en cuenta que esto no tiene en cuenta los costos necesarios para obtener y operar suficiente equipo de minería para llevar a cabo tal ataque.
Resistencia de la sibila
Debido a que el protocolo Bitcoin considera que la cadena verdadera es la que tiene la mayor prueba de trabajo acumulativa (no la cadena más larga, como a menudo se afirma incorrectamente), el resultado es que un nuevo par que se une a la red solo necesita conectarse a un único par honesto para encontrar la cadena verdadera.
Esto también se conoce como “resistencia Sybil”, lo que significa que no es posible que alguien lance un ataque contra un nodo creando muchos pares deshonestos que le proporcionen información falsa.

Aquí se muestra un escenario NEAR desfavorable: su nodo sufre un ataque masivo de Sybil, pero aún mantiene una única conexión con un nodo honesto conectado a la red Bitcoin real. Mientras un único par honesto transmita los datos reales de la cadena de bloques a su nodo completo, será evidente que cualquier atacante de Sybil intenta engañarlo y su nodo lo ignorará.
Consenso en tiempo real
El protocolo Bitcoin crea una serie de otros atributos interesantes con respecto a mantener el consenso de toda la red una vez que su nodo está en la punta de la cadena de bloques.
Los autores de “Perspectivas y desafíos de la investigación sobre Bitcoin y las criptomonedas" tenga en cuenta las siguientes propiedades que son importantes para la estabilidad de una Criptomonedas:
Consenso eventualEn cualquier momento, todos los nodos compatibles acuerdan un prefijo de lo que eventualmente se convertirá en la blockchain "verdadera".
convergencia exponencialLa probabilidad de una bifurcación de profundidad n es O(2−n). Esto brinda a los usuarios una alta confianza en que una simple regla de "k confirmaciones" garantizará la liquidación permanente de sus transacciones.
VivacidadSe seguirán agregando nuevos bloques y se incluirán transacciones válidas con tarifas apropiadas en la cadena de bloques dentro de un período de tiempo razonable.
ExactitudTodos los bloques de la cadena con la mayor prueba de trabajo acumulativa solo incluirán transacciones válidas.
JusticiaUn minero con X% del poder computacional total de la red minará aproximadamente X% de bloques.
Los autores del artículo señalan que Bitcoin parece tener estas propiedades, al menos bajo el supuesto de que la mayoría de los mineros siguen siendo honestos, que es lo que las recompensas por bloque junto con la prueba de trabajo intentan incentivar.
Existen muchos otros algoritmos que pueden utilizarse para mantener el consenso en sistemas distribuidos, como por ejemplo:
- Prueba de participación
- Prueba de la edad de la moneda
- Comprobante de depósito
- Prueba de quemadura
- Prueba de actividad
- Prueba del tiempo transcurrido
- Consenso federado
- Tolerancia práctica a fallas bizantinas
Estos crean diferentes modelos de seguridad: la diferencia más obvia con la prueba de trabajo es que el consenso de cada uno de los sistemas alternativos se impulsa a expensas de recursos internos (monedas o reputación) en lugar de recursos externos (electricidad). Esto crea un conjunto muy diferente de incentivos para (y confianza en) los validadores en la red, lo que cambia drásticamente el modelo de seguridad.
Malentendidos sobre el modelo de seguridad
Un supuesto erróneo muy común es que existe un modelo de seguridad bien definido para Bitcoin.
En realidad, el protocolo Bitcoin se construyó y se sigue construyendo sin una especificación ni un modelo de seguridad formalmente definidos. Lo mejor que podemos hacer es estudiar los incentivos y el comportamiento de los actores dentro del sistema para comprenderlo mejor e intentar describirlo.
Dicho esto, hay algunas propiedades del protocolo Bitcoin que a menudo se analizan incorrectamente.
Algunas cadenas de bloques han sufrido tantos ataques que los desarrolladores las han añadido.puntos de control señalizados transmitidos centralmenteen el software del nodo, indicando básicamente que «los desarrolladores han validado que el bloque X pertenece a la cadena histórica correcta». Este es un punto de extrema centralización.
Vale la pena señalar que Bitcoin tiene 13 puntos de control codificados, pero no cambian el modelo de seguridad como lo hacen los puntos de control transmitidos. El último punto de control se agregó aBitcoin CORE 0.9.3y está en el bloque 295000, que fue creado el 9 de abril de 2014. Este bloque tenía una dificultad de 6.119.726.089 que requeriría aproximadamente:
6.119.726.089 * 248 / 65535 = 2,62 * 1019 hashes
2,62 * 1019 hashes * 0,1 J / 109 hashes = 2,62 * 109 julios
2,62 * 109 julios = 728 kw hora * $0,10 kw/hora = $73 en electricidad a generar
Por lo tanto, si un atacante Sybil rodeara por completo un nuevo nodo que se estuviera sincronizando desde cero, podría crear algunas cadenas de bloques cortas a bajas alturas casi sin coste, pero solo hasta los distintos bloques con puntos de control.
Si se particionara un nodo de la red que se hubiera sincronizado después del bloque 295 000, podría empezar a alimentar bloques falsos a un coste de 73 $ por bloque, al menos hasta que se alcanzara un reajuste de dificultad. Sin embargo, cuanto más avanzada estuviera la sincronización del nodo víctima, mayor sería el coste para el atacante de crear una cadena con mayor trabajo acumulado.
Ambos Greg Maxwell y Pieter Wuille han declarado que esperan algún día eliminar por completo los puntos de control. El principal mantenedor de Bitcoin CORE, Wladimir van der Laan, señaló que los puntos de control son un fuente constante de confusiónpara las personas que buscan comprender el modelo de seguridad de Bitcoin.
Se podría argumentar que esto significa que un nodo completo confía en los desarrolladores del CORE respecto a la validez del historial de la cadena de bloques hasta el 9 de abril de 2014, pero el nodo aún verifica los hashes de Merkle en el encabezado de cada bloque, lo que significa que la solidez del historial de transacciones aún está garantizada por la prueba de trabajo. Estos antiguos puntos de control... permitir un aumento del rendimiento(omitiendo la verificación de firma) al sincronizar inicialmente la cadena de bloques histórica, aunque la introducción de libsecp256k1 ha hecho quediferencia de rendimiento menos significativa.
Los puestos de control permanecen
en vigor para tres propósitos:
- Para evitar que los nodostener su memoria llenacon encabezados de bloque válidos pero de baja prueba de trabajo
- Omitir firmas en bloques anteriores (mejora del rendimiento)
- Para estimar el progreso de la sincronización
Mientras se escribía este artículo Greg Maxwellpropuesta de reemplazar los puestos de controlcon unverificación de trabajo acumuladaEn cambio, una vez que un nodo tiene una cadena con más de 5,4 * 1024 hashes realizados, las cadenas con menos trabajo acumulado serán rechazadas. Esto coincide con la cantidad de trabajo realizado hasta aproximadamente el bloque 320 000 en septiembre de 2014, momento en el que los bloques individuales tenían una dificultad de aproximadamente 27 000 000 000.

La minería de bloques con una dificultad de 27.000.000.000 requeriría aproximadamente
27.000.000.000 * 248 / 65535 = 1,16 * 1020 hashes
1,16 * 1020 hashes * 0,1 J / 109 hashes = 1,16 * 1010 julios
1,16 * 1010 julios = 3222 kw hora * $0,10 kw/hora = $322 en electricidad por bloque
Por lo tanto, con este cambio propuesto, si un atacante Sybil rodeara completamente un nuevo nodo que se sincronizara desde cero, podría empezar a alimentar bloques falsos desde cualquier bloque posterior a la génesis prácticamente sin coste. Si un atacante Sybil rodeara completamente un nodo que se sincronizara después del bloque ~320.000, podría empezar a alimentar una cadena falsa desde ese punto a un coste de 322 $ por bloque.
En resumen, verificar la seguridad de la sincronización inicial de un nodo es relativamente económico de atacar si una entidad puede obtener control total de la conexión a Internet de su nodo; si no puede, entonces el nodo descartará fácilmente los bloqueos del atacante.
En una nota relacionada, cada sistema blockchain tiene subloque de génesis codificado de forma rígidaEn el software del nodo. Se podría argumentar que existe un contrato social para la "historia compartida" que constituye el libro mayor: una vez que un bloque alcanza la antigüedad suficiente, todos en la red acuerdan que nunca se revertirá. Por lo tanto, cuando los desarrolladores toman un bloque muy antiguo y crean un punto de control a partir de él, lo hacen más como una comprobación de cordura acordada que como un dictado del historial.
Además de los puntos de control, también está la cuestión de cómo se autoarranca un nodo. El proceso actual para los nodos de Bitcoin consiste en comprobar si cuentan con una base de datos local de pares que hayan conocido previamente. De no ser así, consultarán un conjunto de "Semillas DNS" que son codificado en el softwareEstas semillas mantienen una lista de nodos de Bitcoin bien conectados que devuelven a su nodo.
Como podemos ver en el código, Bitcoin CORE 0.13 actualmente utiliza semillas DNS administradas por Pieter Wuille, Matt Corallo, Luke Dashjr, Christian Decker, Jeff Garzik y Jonas Schnelli. Cualquiera puede ejecutar una semilla DNS usando las semillas de Pieter Wuille. software de siembra de bitcoins o El software de Matt Corallo, aunque para que pueda ser utilizado por nuevos nodos tendría que convencer a los desarrolladores de una de las implementaciones de nodo completo para que agreguen su host de semilla DNS a su software.
Puede parecer, una vez más, un punto de extrema centralización que el proceso de arranque de un nuevo nodo dependa de tan solo seis semillas DNS. Recordemos que el modelo de seguridad de Bitcoin solo requiere que te conectes a un único par honesto para poder resistir los ataques de Sybil.
Por lo tanto, un nuevo nodo solo necesita poder conectarse a una única semilla DNS que no esté comprometida y que devuelva direcciones IP de nodos honestos. Sin embargo, existe una alternativa si, por alguna razón, todas las semillas DNS son inaccesibles: lista codificadade direcciones IP de nodos confiables quese actualizapara cada lanzamiento.
El modelo de seguridad para estos diversos parámetros de inicialización no es que el operador del nodo completo confíe en las semillas DNS X o en los desarrolladores de Y CORE para que le proporcionen datos honestos, sino que al menos 1/X semillas DNS no esté comprometida o 1/Y desarrolladores de CORE sean honestos al respecto. Revisar la validez de los cambios entre pares codificados de forma rígida.
Nada es perfectamente seguro
En un nivel aún más profundo, cuando ejecutas un nodo completo, probablemente confías en el hardware y el software que estás ejecutando hasta cierto punto.
Existen métodos para verificar el software mediantecomprobando las firmas de su binariocontra las de van der Laan, pero es poco probable que mucha gente se moleste en pasar por este proceso. En cuanto al hardware confiable, es un problema complejo. Lo más cercano que probablemente encontrará a una solución de hardware segura es algo como...ORWL, que garantizaba “autodestruirse” si alguien intentaba manipularlo.

Sin embargo, dado que las arquitecturas de hardware para CPU, RAM y otro hardware importante tienden a ser propietarias, nunca se puede estar 100% seguro de que no estén comprometidas.
El equilibrio de poder de Bitcoin
Las aguas se vuelven aún más turbias cuando se empieza a investigar la relación entre los diferentes participantes del sistema.
El propósito de ejecutar un nodo completo es proteger su soberanía financiera. Esto generalmente significa que, al instalar y ejecutar una versión específica de software, usted acepta cumplir las reglas de dicho software y que todos los demás usuarios de la red también deben hacerlo.
Por lo tanto, si se desea cambiar las reglas de forma que no sean compatibles con versiones anteriores, se debe aceptar explícitamente el cambio ejecutando una nueva versión del software. Por otro lado, los cambios en las reglas compatibles con versiones anteriores pueden implementarse y aplicarse sin su consentimiento.
Una descripción muy simplificada de la dinámica de poder en Bitcoin:
[insertar]https://twitter.com/lopp/status/786241843436544002[/embed]
Es importante tener en cuenta que el software de nodo completo no se actualiza automáticamente, y esto es así por diseño. Las actualizaciones automáticas desequilibrarían considerablemente el poder a favor de los desarrolladores, permitiéndoles imponer cambios en las reglas de los nodos y mineros sin su permiso.
Desafortunadamente, si bien un cambio de reglas puede ser técnicamente compatible con versiones anteriores, con el paso de los años hemos Aprende que bifurcaciones suaves lo suficientemente creativas pueden implementar cambios que claramente se alejan de la intención de la versión anterior de las reglas. Vitalik Buterin demostró estocon una descripción de una forma de bifurcar suavemente el tiempo de bloque de Bitcoin de 10 minutos a 2 minutos, lo que por supuesto también aceleraría el cronograma de emisión de nuevos bitcoins.
Una de las principales ventajas de los nodos completos para contrarrestar las bifurcaciones suaves no deseadas es la bifurcación dura, que se realiza alejándose de los mineros que la implementaron. Esto es difícil de implementar (por diseño) y plantea muchas preguntas sobre la medición del consenso y la identificación de los nodos económicamente importantes.
Técnicamente, esto podría lograrse cambiando el algoritmo de minería de doble SHA256 a una función hash diferente, inutilizando así todos los ASIC SHA256 para minar bitcoins. Por esta razón, los operadores de nodos deben estar atentos a los cambios en el ecosistema y recordar a los mineros que pueden ser reemplazados si exceden su autoridad.
Hay mucha teoría de juegos involucrada en el debate sobre las operaciones mineras y su amenaza a la seguridad de Bitcoin, y especulé sobre cómo podría cambiar el ecosistema minero.en un artículo anteriorSi bien la minería de Bitcoin está más centralizada de lo que a la mayoría de nosotros nos gustaría, aún parece funcionar bien porque los mineros de Bitcoin tienen mucho capital invertido: no pueden correr el riesgo de destruir su inversión actuando maliciosamente en un sistema donde todos están observando.
Seguridad SPV
Muchos usuarios de Bitcoin emplean un cliente liviano para acceder a la red en lugar de un nodo completo, ya que requiere muchos menos recursos y al mismo tiempo proporciona una seguridad sólida.
Un cliente que utiliza la Verificación Simplificada de Pagos (SPV) descarga una copia completa de los encabezados de todos los bloques de la cadena. Esto significa que los requisitos de descarga y almacenamiento aumentan linealmente con el tiempo transcurrido desde la invención de Bitcoin . Esto se describe en la sección 8 del... libro blanco de Bitcoin.

Satoshi escribió que un cliente SPV "no puede verificar la transacción por sí mismo, pero al vincularla a un punto de la cadena, puede ver que un nodo de la red la ha aceptado, y los bloques añadidos posteriormente confirman que la red la ha aceptado". SPV asume que una transacción de X bloques de profundidad será costosa de falsificar.
SPV parece ofrecer garantías similares a la seguridad completa del nodo, pero con la suposición adicional de que cualquier bloque con un encabezado válido y una prueba de trabajo siempre contiene transacciones válidas. Dado que los clientes SPV no verifican todas las reglas de consenso mencionadas en la primera sección de este artículo, asumen que las reglas de consenso son verificadas por el nodo o los nodos desde los que Request transacciones.
Una pequeña diferencia de seguridad adicional implica que los pares te ocultan información. Al ejecutar un nodo completo, los pares pueden ocultarte transacciones y bloques sin confirmar. Sin embargo, una vez que recibes un bloque de cualquier par, nadie puede ocultarte las transacciones de ese bloque. Por otro lado, es posible que un par proporcione un encabezado de bloque a un cliente SPV y luego oculte información sobre las transacciones de ese bloque.
Los clientes SPV pueden realizar una consulta para Aprende información sobre las transacciones que afectan a una dirección determinada. Si bien sería costoso para sus pares mentirles sobre la existencia de transacciones confirmadas falsas (requeriría minar un bloque con suficiente PoW), podrían mentir por omisión y afirmar que no hubo resultados para el filtro Bloom que usaron para consultar las transacciones. También cabe destacar que SPV es terriblemente... roto desde el punto de vista de la Privacidaddebido a fallas con los filtros bloom.
BitcoinJ tiene unaExcelente artículodel modelo de seguridad SPV. Respecto a las transacciones no confirmadas, señalan:
En el modo SPV, la única razón para creer que una transacción es válida es que los nodos a los que te conectaste la retransmitieron. Si un atacante pudiera asegurarte de que estabas conectado a sus nodos, podría enviarte una transacción completamente inválida (gastando dinero inexistente), y aun así se aceptaría como si fuera válida.
La seguridad de SPV es probablemente "suficientemente buena" para el usuario promedio, aunque podría mejorarse con SPV Fraud Proofs. Ha habidoalguna discusión de este conceptopero no se implementópropuestaspara incorporarlos al protocolo.
No hay lugar como 127.0.0.1
Si no ejecuta un nodo completo (ni lo utiliza para validar transacciones), está externalizando al menos cierto nivel de confianza a terceros, lo que resulta en un modelo de seguridad diferente para su uso de Bitcoin. Tenga en cuenta que esto no implica necesariamente que todos los usuarios y empresas desarrollen su software directamente sobre la API RPC de Bitcoin Core.
Algunas configuraciones de infraestructura alternativas pueden incluir, entre otras:
1) Utilizando una billetera móvil comoMonedero Bitcoin para Android,Dirección verde, o Alijoque le permite configurar la billetera para que solo consulte su propio nodo completo.

2) Desarrollar aplicaciones sobre bibliotecas de nodos SPV como BitcoinJ y configurarlas para que se conecten únicamente a los nodos completos que usted opera. En BitcoinJ, esto se puede lograr definiendo sus propias...SeedPeersque le pases a tuGrupo de paresDurante la inicialización. Con libbitcoin, puedes definir una conexión de red a un nodo específico.usando este ejemplo.
3) Crear un servidor proxy compatible con la API JSON-RPC de Bitcoin Core que envíe algunas llamadas a servicios de terceros, pero que también verifique automáticamente los datos que devuelven mediante llamadas a un nodo completo local. Para un ejemplo, consulte El software BitGoD de BitGoEste modelo híbrido le ofrece lo mejor de ambos mundos: puede aprovechar las funciones avanzadas de terceros y, al mismo tiempo, conservar su soberanía financiera.
Nodos completos para la libertad
Está claro que ejecutar tu propio nodo completo ofrece una seguridad superior con la mínima cantidad de suposiciones. Dado que puedes construir una computadora capaz de ejecutar un nodo completo confiable por solo unos cientos de dólares, haz los cálculos y determina si asegurar tu soberanía financiera vale la pena.
Gracias a Kristov ATLAS, Eric Martindale, Andrew Miller y Kiara Robles por revisar y brindar comentarios para este artículo.
Imagen destacada víaDan Nott Para CoinDesk. Otras imágenes según descripción.
Jameson Lopp
Jameson Lopp es el director de tecnología y cofundador de Casa, un servicio de autocustodia. Un ciberpunk cuyo objetivo es desarrollar Tecnología que empodere a las personas, ha estado desarrollando monederos de Bitcoin multifirma desde 2015. Antes de fundar Casa, fue el ingeniero principal de infraestructura en BitGo. Es el fundador del Grupo de Interés Especial Bitcoin de Mensa, la reunión Triangle Blockchain and Business y varios proyectos de Bitcoin de código abierto. A lo largo de este tiempo, ha trabajado para enseñar a otros lo que ha aprendido con la dificultad al desarrollar software robusto que puede resistir tanto a adversarios como a usuarios finales sin experiencia.
