Deep Dive: Bitcoin Security Model

En el proceso de discutir el mecanismo de consenso para diferentes criptomonedas, surge un problema que genera varias preguntas. Esto es una falta de comprensión (y definiciones) con respecto al modelo de seguridad que garantiza la preservación de los datos históricos en el registro. Si bien cada modelo de consenso está orientado teóricamente a prevenir varios ataques, es muy importante comprender los objetivos perseguidos por un solo modelo.

Cada modelo de seguridad tiene dos partes principales: suposiciones y garantías. Si los datos de entrada deseados son correctos, las garantías también deben proporcionarse a la salida del modelo.

Vamos a profundizar en el modelo de seguridad ofrecido por los usuarios de Bitcoin que admiten nodos completos.

En busca de la verdad

«Uno de los puntos fuertes de Bitcoin, incluso uno de los más importantes, en mi opinión, es su capacidad para tener un bajo grado de confianza en los demás». – Peter Will

El propósito de los registros distribuidos es proporcionar un historial ordenado de eventos, porque en los sistemas distribuidos no se puede confiar simplemente en las marcas de tiempo.

Cuando los nuevos miembros se unen a la red basada en blockchain, cargan cualquier bloque disponible y tienen en cuenta cada secuencia de bloque válida que está a la vista, comenzando con la génesis de bloque codificada.

Una de las suposiciones más importantes sugeridas por el modelo de seguridad de Bitcoin es que la mayoría de los mineros trabajan honestamente para respaldar la seguridad de la cadena de bloques, y no al revés. En la práctica, esto se confirma a lo largo de toda la historia de Bitcoin, porque los mineros tienen un incentivo, aunque la pregunta sigue siendo si esta verdad continuará en el futuro.

Dado este supuesto, los operadores de nodos completos pueden estar absolutamente seguros de algunos hechos:

  • Nadie aumentó la oferta monetaria, excepto los mineros y de acuerdo con un calendario estrictamente establecido;
  • Nadie ha gastado dinero sin poseer la clave privada correspondiente;
  • Nadie ha gastado el mismo dinero dos veces.

Los operadores de nodo completo pueden estar seguros de algunas otras afirmaciones. Hay garantías razonables de que:

  • Cualquier bloque en el circuito fue creado dentro de un período de dos horas en relación con la marca de tiempo del propio bloque;
  • Ellos sincronizan la verdadera versión de la historia de blockchain.

A nivel técnico, esto requerirá muchos controles.

Todos los bloques siguen las reglas del consenso:

  • Cada bloque está asociado con un bloque padre;
  • Cada unidad corresponde a su grado de complejidad y se ha realizado un trabajo sustancial en su solución;
  • Las marcas de tiempo de los bloques están dentro de la ventana de tiempo para los nuevos bloques encontrados;
  • La raíz Merkle (hash del hash de cada transacción en el bloque) corresponde a todas las transacciones en el bloque;
  • Ninguno de los bloques excede el tamaño máximo permitido;
  • La primera transacción (y solo la primera) de cada bloque es una transacción de base de monedas (un tipo especial de transacción que no requiere salidas previamente existentes, es decir, la recompensa que reciben los mineros por extraer nuevos bloques);
  • Las salidas de Coinbase no pagan más que la recompensa establecida actualmente para el bloque encontrado;
  • Los bloques sólo contienen firmas válidas.

Todas las transacciones siguen las reglas del consenso:

  • Los valores de entrada y salida son válidos;
  • Las transacciones solo gastan salidas no gastadas;
  • Todas las entradas gastadas tienen firmas válidas;
  • Ninguna de las transacciones Las salidas de Coinbase se gastaron antes de los 100 bloques encontrados desde su creación (maduración de las monedas recibidas por los mineros);
  • Ninguna de las transacciones gastó insumos en el estado no confirmado, es decir, antes de su inclusión en el bloque.

También hay muchas otras reglas que tomarán mucho tiempo discutir aquí.

Seguridad termodinámica

Una vez que se confirma la transacción en el bloque, no se puede cancelar sin un gasto mínimo de energía para volver a escribir la cadena

Deep Dive: Bitcoin Security ModelИсточник: «El modelo de seguridad de Bitcoin revisado» por Yonatan Sompolinsky1 y Aviv Zohar

Siempre que ninguno de los atacantes tenga un poder computacional que exceda la capacidad de la red en un 50% y que los nodos honestos puedan comunicarse rápidamente entre sí, la probabilidad de que una transacción se cancele se reduce exponencialmente junto con un aumento en el número de confirmaciones de esta transacción. Existen otros tipos de ataques, como la minería egoísta, que pueden reducir la cantidad de energía requerida, sin embargo, son bastante difíciles de implementar.

Teniendo en cuenta la cantidad actual de trabajo producido por los mineros de Bitcoin, se puede argumentar que se necesitarán aproximadamente 1026 hashes para crear una cadena de bloques alternativa directamente desde el bloque de la génesis con una mayor evidencia del trabajo realizado para que los nodos completos lo acepten como una cadena de bloques verdadera.

Deep Dive: Bitcoin Security Model

Analicemos algunos indicadores de precios de tal ataque:

Antminer S9 requiere 0.1 julios por Gh / s (109 hashes)                                                                1026 hashes * 0.1 J / 109 hashes = 1015 julios                                                                              1015 julios = 2,777,777,778 cuadrado / h * $ 0,10 cuadrado / h = $ 277,777,778 será el costo de la electricidad para reescribir todo el blockchain.

Al momento de escribir este artículo, la complejidad de un solo bloque tiende a 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 / h * $ 0.10 kW / h = $ 3,028 costo de electricidad para reescribir un bloque.

Es por eso que podemos afirmar de manera concluyente que Bitcoin es termodinámicamente seguro.

Para reducir los costos, puede cambiar algunas de las variables en los cálculos anteriores, pero podemos estar seguros de que necesitaremos muchos millones de dólares en electricidad para reescribir todo el boxchain. Sin embargo, un atacante con tal capacidad de hash puede, en el peor de los casos, reescribir las transacciones hasta 2014, y pronto consideraremos la razón de esta posibilidad.

También tenga en cuenta que este cálculo no tiene en cuenta el costo de poseer y usar la cantidad necesaria de equipo de minería para realizar este tipo de ataque.

Sybil resistencia a los ataques.

Dado que el protocolo de Bitcoin considera que la verdadera cadena es la que tiene la prueba de funcionamiento más acumulativa (y no la cadena más larga, como a menudo se indica incorrectamente), como resultado de un nuevo par que se une a la red, solo necesita conectarse a un compañero honesto para encontrar la verdadera cadena. .

Esto también se conoce como «resistencia de Sybil», lo que significa que es imposible atacar un nodo, creando muchos pares deshonestos que dan información falsa.

La figura muestra el peor escenario en el que su nodo está sujeto a un ataque masivo de Sybil, pero todavía tiene una conexión a un nodo honesto que está conectado a una verdadera red Bitcoin. Hasta que un banquete honesto envíe datos de la verdadera cadena de bloques a su nodo completo, quedará perfectamente claro que algunos intrusos de Sybil están tratando de engañarlo y su nodo los ignorará.

Consenso en tiempo real

El protocolo de bitcoin crea una serie de otros atributos interesantes con respecto a mantener un consenso en toda la red cuando su nodo está en la cadena de bloques avanzada.

Los autores de «Perspectivas de investigación y desafíos para Bitcoin y Criptomonedas» señalan las siguientes propiedades que son importantes para la estabilidad de la criptomoneda:

Consenso final En cualquier momento, todos los nodos compatibles coinciden con el prefijo de lo que se convierte en una posible cadena de bloques «verdadera».

Convergencia exponencial. La probabilidad de la rama para la profundidad n es O (2 – n). Esto les da a los usuarios una gran confianza de que la regla simple de «k confirmaciones» asegurará la inmutabilidad de las transacciones completadas.

Vitalidad Los bloques nuevos y las transacciones confiables con comisiones adecuadas continuarán agregándose a la cadena de bloques durante un período de tiempo razonable.

Corrección Todos los bloques en la cadena con la mayor prueba de la cantidad de trabajo incluirán solo transacciones válidas.

Justicia Un minero que posee el X% de la potencia de cómputo de la red total extraerá aproximadamente el X% de los bloques.

Los autores del artículo señalan que Bitcoin parece tener estas propiedades, al menos suponiendo que la mayoría de los mineros siguen siendo honestos, y serán estimulados por la recompensa por el bloque encontrado que se obtiene al proporcionar prueba de la cantidad de trabajo realizado (Prueba de trabajo).

Hay muchos otros algoritmos que se pueden usar para mantener el consenso en los sistemas distribuidos, por ejemplo:

  • Prueba de titularidad;
  • Prueba de la edad de la moneda;
  • Prueba de depósito;
  • Prueba de destrucción;
  • Prueba de actividad;
  • Prueba de los costos del tiempo pasado;
  • Consenso federativo;
  • Práctica tolerancia a fallos bizantinos.

Estos algoritmos crean diferentes modelos de seguridad; la diferencia más obvia de la prueba de trabajo es que el consenso de cada uno de los sistemas alternativos se logra a través de recursos internos (monedas o reputación) en lugar de recursos externos (electricidad). Esto crea un conjunto completamente diferente de incentivos para los validadores (y la confianza) en la red, lo que cambia drásticamente el modelo de seguridad.

Malentendido del modelo de seguridad.

Existe la suposición errónea de que Bitcoin tiene un modelo de seguridad bien definido.

De hecho, el protocolo de Bitcoin se creó y construyó sin una especificación o modelo de seguridad formalmente definido. Lo mejor que podemos hacer es estudiar los incentivos y el comportamiento de los participantes en el sistema para comprenderlo mejor y tratar de describirlo.

Sin embargo, hay varias propiedades del protocolo de Bitcoin que a menudo se analizan incorrectamente.

Algunos blockchains se vieron gravemente afectados por los ataques cuando los desarrolladores agregaron puntos de control firmados y traducidos de manera centralizada al software host, afirmando esencialmente que «el bloque X fue probado por los desarrolladores como parte de la cadena histórica correcta». Este es un modelo de centralización absoluta.

Vale la pena señalar que bitcoin tiene 13 puntos de control codificados, pero no cambian el modelo de seguridad en la forma en que lo hacen los puntos de control de difusión central. El último punto de control se agregó a Bitcoin Core 0.9.3 y se ubica en el bloque 295000, que se creó el 9 de abril de 2014. Este bloque tenía una complejidad de 6,119,726,089, lo 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 para la generación de bloques.

Por lo tanto, si el atacante Sybil rodeaba completamente el nuevo nodo, que se sincronizó desde cero, podría crear varias cadenas de bloques cortas con un pequeño número de bloques casi gratis, pero solo hasta algunos bloques de control.

Si un atacante corta un nodo de la red mientras está sincronizado con el bloque 295000, entonces el atacante podrá darle bloques falsos, gastando $ 73 en un bloque, hasta que finalmente alcance el punto de recalculo de la complejidad. Sin embargo, en el proceso de sincronización adicional del nodo atacado, los costos de soporte de la cadena con un mayor volumen total de trabajo realizado aumentarán constantemente para el atacante.

Greg Maxwell y Peter Will juntos declararon que esperan algún día eliminar por completo los puntos de control. El especialista principal de Bitcoin Core, Vladimir van der Laan, señaló que los puntos de control son una fuente constante de confusión para las personas que desean comprender el modelo de seguridad de Bitcoin.

Se puede argumentar que el nodo completo «confía» en los desarrolladores de Bitcoin Core con respecto a la realidad del historial de blockchain 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 confiabilidad del historial de transacciones Proporcionado comprobante del trabajo realizado. Estos antiguos puntos de control permiten un mayor rendimiento (omitiendo la verificación de la firma) durante la sincronización inicial de la cadena de bloques, aunque la introducción de libsecp256k1 hizo que la diferencia de rendimiento fuera menos significativa.

Los puntos de control permanecen involucrados por tres propósitos:

  1. Evitar el llenado de nodos con memoria aceptable, pero no correspondiente a los encabezados de complejidad (bajo) de los bloques encontrados.
  2. Omitir firmas en bloques anteriores (mayor rendimiento).
  3. Evaluación del progreso de la sincronización.

Mientras se escribía este artículo, Greg Maxwell propuso reemplazar los puntos de control con pruebas acumulativas. Una vez que se configura un nodo en una cadena que contiene más de 5.4 * 1024 hashes, las cadenas con menos trabajo acumulativo se considerarán inválidas. Esto coincide aproximadamente con el volumen de trabajo realizado hasta el bloque de 320,000 en septiembre de 2014, y en ese momento la complejidad de los bloques individuales era de aproximadamente 27,000,000,000.

Los bloques mineros de 27,000,000,000 requerirán 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 = 3.222 kW / h * $ 0.10 kW / h = $ 322 por unidad

Por lo tanto, dado el cambio propuesto, si el atacante Sybil rodeara completamente el nuevo nodo, que se sincronizó desde cero, podría emitir bloques falsos, comenzando con cualquier bloque después de la génesis del bloque, casi sin gastar dinero. Si el atacante Sybil rodeaba completamente el nodo, que se sincronizó aproximadamente desde el bloque de 320 000, puede comenzar a darle una cadena falsa desde este punto a un precio de 322 dólares por bloque.

En otras palabras, un ataque en el momento de la sincronización inicial de un nodo es relativamente económico, si un atacante puede obtener un control completo sobre la conexión a Internet del nodo atacado, de lo contrario, el nodo rechazará fácilmente los bloques falsos del atacante.

Agregue a lo anterior que cada sistema Blockchain tiene su propio bloque de génesis, codificado en el software del nodo. Puede argumentar que existe un contrato social con un «historial común», que es un registro distribuido, es decir, Tan pronto como el bloque es lo suficientemente viejo, surge un entendimiento entre todos los participantes en la red de que nunca se puede cambiar. Así, cuando los desarrolladores toman un bloque muy antiguo y crean un punto de control a partir de él, esto se hace sobre la base de un acuerdo de validación, y no bajo los dictados de la historia.

Además de los puntos de control, también está la cuestión de cómo se carga el nodo. El proceso actual para los nodos de Bitcoin es verificar si tiene una base de datos local de pares que él conocía antes. De lo contrario, solicitará un conjunto de «semillas DNS» que están codificadas en el software. Estas semillas contienen una lista de nodos de Bitcoin bien conectados que se cargan en su sitio.

Como podemos ver en el código Bitcoin Core 0.13, las semillas DNS activas actualmente son compatibles con Peter Will, Matt Corallo, Luke Dushr, Christian Decker, Jeff Garzik y Jonas Snelli. Cualquiera puede mantener las semillas en la red DNS utilizando el software de la sembradora de bitcoins de Peter Wiel o el software Matt Coral, aunque para ser aceptado por

los nuevos hosts, debe convencer a los desarrolladores de una de las implementaciones de host completas para agregar su host DNS a su software.

Esto puede parecer nuevamente un punto de centralización absoluta, cuando el proceso de arranque para un nuevo nodo depende de solo seis semillas de DNS. Recuerde que el modelo de seguridad de Bitcoin requiere conectarse a una sola fiesta justa para contrarrestar los ataques de Sybil.

Por lo tanto, el nuevo sitio solo debe poder conectarse a una semilla de DNS que no esté comprometida y que devuelva las direcciones IP de los nodos honestos. Sin embargo, hay una opción de copia de seguridad, si por alguna razón todas las semillas de DNS no están disponibles, esta es una lista codificada de direcciones IP confiables de los nodos, que se actualiza para cada versión.

El modelo de seguridad para varios parámetros de inicialización no es que el operador de nodo completo confíe en las semillas de DNS de los desarrolladores del kernel X o Y para proporcionarles datos honestos, sino que al menos 1 / x semillas de DNS no están comprometidas o 1 / y Los desarrolladores principales son honestos acerca de revisar los cambios aprobados en una lista de compañeros programados.

Nada es absolutamente seguro.

A un nivel más profundo, cuando ejecuta un sitio completo, confía hasta cierto punto en el hardware y el software con el que está trabajando.

Existen métodos para verificar el software al comparar las firmas digitales de su archivo binario con las firmas de van der Laan, pero es poco probable que muchas personas asistan a tal verificación. En cuanto a equipos confiables, este es un problema difícil. Lo más probable es que utilice una solución de hardware segura como ORWL, que se garantiza que se «autodestruya» cuando intente interferir.

Sin embargo, dado que las arquitecturas de hardware para procesadores, RAM y otro hardware importante suelen ser propietarios, nunca puede estar 100% seguro de que no estén comprometidos.

El equilibrio de poder en Bitcoin

El agua se vuelve aún más turbia cuando comienza a explorar las relaciones entre los distintos participantes en el sistema.

El objetivo de administrar un sitio completo es proteger su soberanía financiera. Por lo general, esto significa que cuando instala y ejecuta una versión específica del software, usted firma un acuerdo que cumplirá con las reglas de este software y que todas las personas que usan la red también deben cumplirlas.

Por lo tanto, si la gente desea cambiar las reglas para que no sean compatibles con versiones anteriores, debe aceptar explícitamente cambiar estas reglas lanzando una nueva versión del software. Por otro lado, los cambios de reglas compatibles con versiones anteriores se pueden implementar y aplicar sin su consentimiento.

Una descripción simplificada de la dinámica de las fuerzas de influencia en Bitcoin:

Es importante tener en cuenta que el software de sitio completo no se actualiza automáticamente, y esto es intencional. Las actualizaciones automáticas cambian significativamente el equilibrio de poder hacia los desarrolladores, lo que les permite cambiar a la fuerza las reglas de los nodos y los mineros sin permiso.

Desafortunadamente, aunque el cambio de reglas puede ser técnicamente compatible con versiones anteriores, a lo largo de los años hemos aprendido que las bifurcaciones de software lo suficientemente innovadoras pueden implementar cambios que están claramente fuera del alcance de la versión anterior de las reglas. Vitaly Buterin demostró esto con una descripción del método de horquilla suave para el momento de la aparición de nuevos bloques de Bitcoin en lugar de 10 a 2 minutos, lo que, por supuesto, acelerará el programa de emisión de nuevos bitcoins.

Hay una carta de triunfo que tienen los nudos completos para defenderse de las bifurcaciones blandas no deseadas: para entrar en la bifurcación dura de los mineros que han implementado la bifurcación blanda. Esto es difícil y plantea muchas preguntas sobre el grado de consenso y la búsqueda de nodos económicamente importantes.

Técnicamente, esto se puede hacer cambiando el algoritmo del minero de doble SHA256 a otra función hash, haciendo que todos los asics SHA256 sean inútiles para minar Bitcoins. Es por esta razón que los operadores de nodos deben permanecer atentos a los cambios en el ecosistema y recordar a los mineros que pueden ser reemplazados si superan su autoridad.

La teoría de juegos está presente en gran medida cuando se analizan las operaciones mineras y sus amenazas de seguridad para Bitcoin, y reflejé en un artículo anterior sobre cómo puede cambiar el ecosistema minero. Si bien la minería de Bitcoin está más centralizada de lo que a la mayoría de nosotros nos gustaría, todavía funciona bien porque los mineros de bitcoin invierten una gran cantidad de capital: no pueden arriesgar y destruir sus inversiones, actuando maliciosamente en el sistema que se está monitoreando.

Seguridad SPV

Satoshi escribió que el cliente SPV «no puede verificar la transacción de forma independiente, pero al asociarla con un determinado lugar en la cadena, puede ver que el nodo de la red lo ha aceptado y los bloques que se agregaron después, solo confirman que la transacción ha sido aceptada por la red». SPV asume que un bloqueo adicional de la transacción X será costoso.

El SPV parece ofrecer garantías de seguridad similares a las proporcionadas por nodos completos, pero con la suposición adicional de que cualquier bloque con un título válido y una prueba de operación siempre contiene transacciones válidas. Dado que los clientes de SPV no verifican todas las reglas de consenso descritas en la primera sección de este artículo, suponen que los nodos desde los que solicitan las transacciones verifican las reglas de consenso.

Las diferencias adicionales e insignificantes afectan a los compañeros que ocultan información sobre usted. Cuando su sitio completo se está ejecutando, sus pares pueden ocultar transacciones y bloqueos no confirmados de usted. Sin embargo, tan pronto como reciba un

bloqueo de cualquier otro compañero, nadie podrá ocultar de usted las transacciones que se encuentran en este bloque. Por otro lado, PIR puede proporcionar al cliente SPV un encabezado de bloque y luego ocultar la información de la transacción en este bloque.

Los clientes SPV pueden realizar una solicitud para obtener información sobre transacciones que involucran ciertas direcciones. Aunque sería bastante caro para los colegas mentir acerca de la existencia de transacciones falsas confirmadas (es necesario explotar el bloque con suficientes puntos de trabajo), pueden mentir, alegando que no hay resultados para el filtro de floración utilizado para consultar la información de la transacción. También vale la pena señalar que SPV es muy vulnerable desde el punto de vista de la privacidad debido a defectos en los filtros de floración.

BitcoinJ tiene una excelente descripción del modelo de seguridad SPV. Con respecto a las transacciones no confirmadas señaladas:

“En el modo SPV, la única razón por la que puede confiar en la autenticidad de una transacción es el hecho de que la transacción ha sido traducida por los nodos a los que está conectado. Si un atacante pudiera convencerlo de que está conectado a sus nodos, eso significaría que podría obligarlo a aceptar una transacción completamente inválida (dinero gastado inexistente), y aún sería aceptado como si fuera real.

La seguridad de un SPV es probablemente «lo suficientemente buena» para el usuario promedio, aunque puede mejorarse con la evidencia de un fraude SPV. Se sostuvo una discusión sobre este concepto, pero las propuestas para su inclusión en el protocolo no se implementaron.

No hay lugar como Localhost

Si no opera un nodo completo (y, de hecho, no lo usa para verificar transacciones), subcontrata al menos un cierto nivel de confianza a terceros, lo que conduce a un modelo de seguridad diferente para su uso de Bitcoin. Tenga en cuenta que esto no necesariamente requiere que todos los usuarios y empresas creen su software directamente sobre la API de RPC de Bitcoin Core.

Algunas configuraciones de infraestructura alternativa pueden usar las siguientes opciones, pero no se limitan a ellas:

1) Use una billetera móvil, como Bitcoin Wallet para Android, GreenAddress o Stash, que le permite configurar la billetera para ejecutar solicitudes solo desde su propio sitio completo.

2) Cree aplicaciones basadas en bibliotecas de nodos SPV, como BitcoinJ, y configúrelas para conectarse solo a sus propios nodos completos. En BitcoinJ, esto puede hacerse definiendo sus propios SeedPeers, que usted transmite a su grupo de compañeros durante la inicialización. Con libbitcoin, puede configurar una conexión de red a un host específico usando este ejemplo.

3) Crear un servidor proxy que sea compatible con la API JSON-RPC de Bitcoin Core, que envía algunas llamadas a servicios de terceros, pero también verifica automáticamente los datos que devuelven, y realiza solicitudes al sitio completo local. Para ver un ejemplo, vea el software BitGoD de BitGo. Este modelo híbrido es capaz de proporcionar lo mejor de ambos mundos: puede usar funciones avanzadas proporcionadas por terceros, mientras mantiene su soberanía financiera.

Nudos completos para la libertad

Está claro que operar en su propio nodo completo proporciona una excelente seguridad con la menor cantidad de suposiciones necesarias. Teniendo en cuenta que puede construir una computadora que pueda funcionar de manera confiable con un nodo completo por solo unos pocos cientos de dólares, realice un cálculo y determine si debe proteger su soberanía financiera.

El ex presidente de la CFTC pide una mayor regulación de la criptomoneda

El ex presidente de la CFTC pide una mayor regulación de la criptomoneda

Blockstream agregó soporte Sidechain líquido a la billetera GreenAddress

Blockstream agregó soporte Sidechain líquido a la billetera GreenAddress