Modelo de seguridad de Bitcoin: Un buceo profundo | Concellodemelon.org

Modelo de seguridad de Bitcoin: Un buceo profundo

Modelo de seguridad de Bitcoin: Un buceo profundo

Cuando se habla de consenso mechanismsfor diferentes cryptocurrencies, un tema que a menudo hace que los argumentos es una falta de comprensión (y definición) del modelo de seguridad que prestan a los datos históricos en el libro mayor. Si bien cada modelo de consenso tiene como objetivo prevenir los ataques de diversos teóricos, es importante entender los objetivos para el modelo.

Cada modelo de seguridad tiene dos partes principales: supuestos y garantías. Si los supuestos utilizados como entradas válidas, a continuación, por lo que deben las garantías que se emiten por el modelo.

Vamos a profundizar en el modelo de seguridad que aparece para ser ofrecido a los usuarios que ejecutan Bitcoin un nodo completo.

En busca de la verdad

"Uno de los puntos fuertes de Bitcoin - el más importante en mi opinión, incluso - es el bajo grado de confianza que necesita en otros." - Pieter Wuille

El objetivo de libros distribuidos es proporcionar una historia ordenada de eventos, ya que en los sistemas distribuidos no se puede simplemente confiar en una marca de tiempo.

Cuando un nuevo participante en una red basada en blockchain une, que descarga todos los bloques disponibles y considerar cada serie válida de bloques que ven, a partir de un bloque de génesis no modificable.

Uno de los mayores suposiciones hechas por el modelo de seguridad de Bitcoin es que la mayoría de los mineros son honestos - que están trabajando para asegurar el blockchain lugar de tratar de debilitarla. En la práctica, esto ha sido verdad en toda la historia de bitcoin minero debido a los incentivos, aunque algunos questionif que seguirá manteniendo cierto en el futuro.

Dado este supuesto, los operadores de nodos completos pueden estar completamente seguros de varios hechos:

  • Nadie ha inflado la oferta monetaria a excepción de los mineros, y sólo de acuerdo con un horario bien definido.
  • Nadie se gasta el dinero sin tener la clave privada correspondiente (s).
  • Nadie nunca pasó el mismo dinero dos veces.

Operadores de nodos completos pueden estar razonablemente seguros de varias otras cosas. Hay una fuerte garantía de que:

  • Cualquier bloque en la cadena se ha creado dentro de aproximadamente dos horas de marca de tiempo del bloque.
  • Ellos están sincronizando la "verdadera" historia blockchain.

Una vez que una transacción se confirma en un bloque que no se puede invertir sin que alguien gastar una cantidad mínima de energía para volver a escribir la cadena.

Mientras no atacante posee más del 50% de la potencia de cálculo de la red, y los nodos honesto puede comunicarse de forma rápida, la probabilidad de una transacción invirtiéndose disminuye exponencialmente con el número de confirmaciones que ha recibido. Hay otros ataques, como la minería egoísta, que pueden reducir la demanda de potencia, a pesar de que parecen ser difíciles de perpetrar.

Viendo el trabajo acumulado actual realizado por los mineros Bitcoin, se necesitarían casi 1026hashes para construir una alternativa blockchain del Génesis con el mayor prueba acumulativa de trabajo que los nodos completos consideran que es la "verdadera" cadena.

Crujir algunos números sobre el costo involucrado en este tipo de ataque:
1015joules = 2,777,777,778 horas kw * $ 0,10 kw / hora = $ 277777778 valor de la electricidad para volver a escribir toda la blockchain

Mientras que en el momento de escribir un solo bloque debe dar en un blanco 253618246641 dificultad de lo que requeriría aproximadamente:
1.09 horas * 1011joules = 30.278 kw * $ 0,10 kw / hora = $ 3,028 dólares en electricidad por bloque

Es por esto que podemos afirmar que Bitcoin es demostrablemente termodinámicamente seguro.

Hay algunas variables que se pueden manipular en el cálculo anterior para disminuir el costo, pero podemos estar seguros de que se requerirá de muchos millones de dólares en electricidad solamente con el fin de volver a escribir toda la blockchain. Sin embargo, un atacante con este poder de hash tanto sería en el peor ser capaz de revertir las transacciones de nuevo a 2014 - vamos a profundizar en la razón de esto en breve.

También tenga en cuenta que esto no tiene en cuenta los costes necesarios para obtener y operar equipos de minería suficiente para llevar a cabo este tipo de ataque.

Resistencia Sybil

Debido a que el protocolo de Bitcoin considera la cadena de verdad ser el que tiene la prueba más acumulativo de trabajo (no la cadena más larga con la frecuencia que se indica de forma incorrecta,) el resultado es que un nuevo pares de unirse a la red sólo necesita conectarse a un interlocutor único honesto con el fin de encontrar la verdadera cadena.

Esto también se conoce como "Sybil resistencia", lo que significa que no es posible que alguien para lanzar un ataque contra un nodo mediante la creación de muchos compañeros deshonestos que lo alimentan información falsa.

Se representa aquí un escenario cerca del peor caso en el que el nodo está siendo atacada masivamente Sybil pero todavía tiene una sola conexión con un nodo honesta que está conectado a la verdadera red Bitcoin. Mientras un interlocutor único honesto está pasando a los verdaderos datos blockchain a su nodo completo, será evidente que cualquier atacante Sybil están tratando de engañar a usted y su nodo de las ignorarán.

Consenso en tiempo real

El protocolo de Bitcoin crea una serie de otros atributos interesantes en relación con el mantenimiento del consenso de toda la red una vez que su nodo está en la punta de la blockchain.

Los autores de "Perspectivas de la investigación y desafíos para Bitcoin y Cryptocurrencies" Tenga en cuenta las siguientes propiedades que son importantes para la estabilidad de un criptomoneda:

Eventual consenso

En cualquier momento, todos los nodos que cumplen de acuerdo sobre un prefijo de lo que será la eventual "verdadero" blockchain.

Convergencia exponencial

La probabilidad de un tenedor de profundidad n es O (2'n). Esto ofrece a los usuarios una alta confianza de que una simple regla "k confirmaciones" se asegurará de sus operaciones se liquidan de forma permanente.

Liveness

Los nuevos bloques continuarán siendo añadido y serán incluidas las transacciones válidas con tarifas correspondientes en el blockchain dentro de un período razonable de tiempo.

Exactitud

Todos los bloques de la cadena con la prueba más acumulativo de trabajo sólo incluirán las transacciones válidas.

Justicia

Un minero con X% de la potencia de cálculo total de la red va a extraer aproximadamente X% de bloques.

Los autores de la nota de papel que Bitcoin parece tener estas propiedades, por lo menos bajo el supuesto de que la mayoría de los mineros están quedando honesto, que es lo que las recompensas en bloque junto con la prueba de intento de trabajo para incentivar.

Hay muchos otros algoritmos que pueden ser utilizados para mantener el consenso en sistemas distribuidos, tales como:

  • Prueba de participación
  • La prueba de la moneda Edad
  • Prueba de Depósito
  • Prueba de Burn
  • Prueba de Actividad
  • Prueba de Tiempo Transcurrido
  • Consenso Federados
  • Práctica la tolerancia a fallos bizantino

Estos crean diferentes modelos de seguridad - la diferencia más obvia de las pruebas del trabajo es que cada uno de consenso los sistemas alternativos es impulsado a expensas de los recursos internos (monedas o reputación) en lugar de los recursos externos (. Electricidad) Esto crea un conjunto muy diferente de incentivos para (y la confianza en) validadores en la red que cambia drásticamente el modelo de seguridad.

Malentendidos modelo de seguridad

Una suposición errónea común es que hay un modelo de seguridad bien definido para bitcoin.

En realidad, el protocolo Bitcoin fue y está siendo construida sin un modelo de especificación o la seguridad definida formalmente. Lo mejor que podemos hacer es estudiar los incentivos y el comportamiento de los actores del sistema con el fin de comprender mejor y tratar de describirlo.

Dicho esto, hay algunas propiedades del protocolo bitcoin que a menudo se analizó incorrectamente.

Algunos blockchains han sufrido lo suficiente de los ataques que los desarrolladores centralmente agregan transmitido firmaron checkpointsinto el software del nodo, esencialmente diciendo que "bloque X ha sido validado por los desarrolladores como en la cadena histórica correcta." Este es un punto de centralización extrema.

Vale la pena señalar que Bitcoin tiene 13 puntos de control no modificables, pero no cambian el modelo de seguridad en la forma en que los puestos de control emitidos hacen. El último punto de control se añadió a Bitcoin Core 0.9.3and es en el bloque 295 000, el cual fue creado el 9 de abril de 2014. Este bloque tenía una dificultad de 6119726089 cual requeriría aproximadamente:

6119726089 * 248/65535 = 2,62 * 1019hashes
2.62 horas * 109joules = 728 kW * $ 0,10 kw / hora = $ 73 el valor de la electricidad para generar

Por lo tanto, si un atacante Sybil rodeado por completo un nuevo nodo que se sincroniza a partir de cero, podría crear algunos blockchains cortos a bajas alturas casi sin costo, pero sólo hasta los diversos bloques checkpoints.

Si se divide un nodo de la red que se habían sincronizado cuadra después de 295.000 sería capaz de comenzar a alimentar falsas bloques en el costo de $ 73 por bloque, al menos hasta que llegó a un reajuste dificultad. Sin embargo, conforme avanza el nodo víctima había sincronizado, mayor será el costo sería que el atacante crear una cadena con más trabajo acumulado.

Tanto Greg Maxwelland Pieter Wuillehave declaró que esperan algún día para eliminar por completo los puntos de control. Bitcoin Core mantenedor plomo Wladimir van der Laan señaló que los puntos de control son una fuente constante de personas confusionto que buscan entender el modelo de seguridad de Bitcoin.

Un argumento podría ser que esto significa que un nodo completo es "confiar en" los desarrolladores centrales con respecto a la validez de la historia blockchain arriba hasta el 9 de abril de 2014, pero el nodo todavía comprueba el Merkle hash en la cabecera de cada bloque, lo que significa que la solidez de el historial de transacciones todavía está garantizado por la prueba de trabajo. Estos viejos puntos de control permiten un aumento de rendimiento (se pierden verificación de firma) al sincronizar inicialmente el blockchain histórico, a pesar de la introducción de libsecp256k1 ha hecho que la diferencia de rendimiento menos significativo.

Los puestos de control remainin lugar para tres propósitos:

  1. Para evitar que los nodos de tener su memoria llena upwith cabeceras de los bloques de prueba de trabajo válidos, pero bajos
  2. Saltarse las firmas en los bloques anteriores (mejora el rendimiento)
  3. Para estimar el progreso de sincronización

Si bien este artículo se estaba escribiendo Greg Maxwell propuso sustituir checkpointswith un checkinstead trabajo acumulado. Una vez que un nodo tiene una cadena que contiene más de 5,4 * 1024hashes realizadas, cadenas con menos trabajo acumulado sería rechazado. Esto coincide con la cantidad de trabajo realizado hasta aproximadamente 320.000 bloquear en septiembre de 2014, momento en que los bloques individuales eran de dificultad ~ 27 mil millones.

Bloques de minería en una dificultad de 27 mil millones requerirían aproximadamente
1,16 horas * 1010joules = 3.222 kW * $ 0,10 kw / hora = $ 322 el valor de la electricidad por bloque

Por lo tanto, con esta propuesta de cambio, si un atacante Sybil rodeado por completo un nuevo nodo que se sincroniza desde cero, sería capaz de comenzar a alimentar falsas bloques a partir de cualquier bloque después de genesis como básicamente sin costo alguno. Si un atacante Sybil rodeado por completo un nodo que sincroniza cuadra después de ~ 320.000 que podría comenzar a alimentar una cadena falsa de ese punto en el costo de $ 322 por bloque.

En resumen, ya sea comprobar para asegurar sincronización inicial de un nodo es relativamente barato para atacar si una entidad puede obtener el control completo de la conexión a Internet del nodo; si no pueden, entonces el nodo descartarán fácilmente bloques del atacante.

En una nota relacionada, cada sistema tiene su bloque blockchain génesis dura codedinto el software del nodo. Se podría argumentar que existe un contrato social para la "historia común", que es el libro - una vez que un bloque es lo suficientemente grande, hay un entendimiento entre todos en la red que nunca va a ser revertida. Como tal, cuando los desarrolladores tienen un bloque muy viejo y crean un puesto de control fuera de él, se hace tanto más cuanto que una acordada comprobación de validez y no como un dictado de la historia.

Además de los puestos de control, también está la cuestión de cómo un nodo Bootstraps sí. El proceso actual de nodos Bitcoin es comprobar para ver si tiene una base de datos local de los compañeros que ha aprendido previamente acerca. Si no, entonces se consulta un conjunto de "Semillas de DNS" que están codificadas en el software. Estas semillas mantienen una lista de nodos conectados bitcoin así que vuelvan a su nodo.

Como podemos ver en el código, Bitcoin Core 0,13 actualmente utiliza semillas DNS gestionados por Pieter Wuille, Matt Corallo, Lucas Dashjr, Christian Decker, Jeff Garzik, y Jonas Schnelli. Cualquier persona puede ejecutar una semilla DNS mediante bitcoin-sembradora de Pieter Wuille softwareor software de Matt Corallo, aunque con el fin de que sea utilizado por los nuevos nodos que tendría que convencer a los desarrolladores de una de las implementaciones de nodos completos para agregar su DNS anfitrión de semillas a su software.

Puede parecer una vez más como un punto de centralización extrema de que el proceso de arranque de un nuevo nodo es confiado sobre apenas seis semillas de DNS. Recordemos que el modelo de seguridad del bitcoin sólo requiere que se conecta a un interlocutor único honesto con el fin de ser capaz de resistir ataques Sybil.

Como tal, un nuevo nodo sólo tiene que ser capaz de conectarse a una sola semilla de DNS que no está comprometida y devuelve las direcciones IP de los nodos honestos. Sin embargo, hay un repliegue si por alguna razón todas las semillas de DNS son inalcanzables - a no modificables listof direcciones IP de nodos fiable que obtiene updatedfor cada versión.

El modelo de seguridad para estos diversos parámetros de inicialización no es que el operador nodo completo es confiar semillas X DNS o desarrolladores Y Core para alimentarlos datos honesto, sino más bien que al menos 1 / X semillas DNS no se vea comprometida o 1 / desarrolladores Y núcleo está honesto acerca de la revisión de la validez de los cambios de pares no modificables.

Nada es perfectamente seguro

En un nivel más profundo, al ejecutar un nodo completo, es probable que confiar en el hardware y el software que se ejecuta en cierta medida.

Hay métodos para verificar el software mediante la comprobación de las firmas de su binaryagainst los de van der Laan, pero es poco probable que muchas personas se molestan en pasar por este proceso. En cuanto a hardware de confianza, eso es un problema difícil. El más cercano es probable que llegue a una solución de hardware seguro es algo así como ORWL, que garantiza para "autodestrucción" si alguien intenta manipular con ella.

Sin embargo, dado que las arquitecturas de hardware para la CPU, RAM y otros equipos importantes tienden a ser propietario, nunca se puede estar 100% seguro de que no se vean comprometidos.

Equilibrio de poder de Bitcoin

Las aguas se vuelven aún más turbio cuando se empieza a investigar la relación entre los diferentes participantes en el sistema.

El propósito de ejecutar un nodo completo es para proteger su soberanía financiera. Esto generalmente significa que instalando y ejecutando una versión específica del software, usted está entrando en un acuerdo que va a cumplir con las normas de ese software y que todo el mundo el uso de la red también deben cumplir con ellas.

Por lo tanto, si la gente quiere cambiar las reglas de tal manera que no son compatibles hacia atrás, debe aceptar explícitamente al cambio de reglas mediante la ejecución de una nueva versión del software. Por otro lado, los cambios de reglas hacia atrás compatibles pueden ser implementadas y aplicadas sin su consentimiento.

Una descripción muy simplificada de las dinámicas de poder en Bitcoin:

3 ramas de BTC "gobernabilidad:"
* Devs (puede ayudar a los demás pasan por alto algunos vetos)

- Jameson Lopp (@lopp) de 12 de de octubre de, el año 2016

Es importante tener en cuenta que el software de nodo completa no se actualiza automáticamente a sí mismo, y esto es por diseño. Las actualizaciones automáticas cambiarían en gran medida el equilibrio de poder a los desarrolladores, lo que les permite forzar cambios en las reglas sobre los nodos y los mineros sin su permiso.

Por desgracia, mientras que un cambio de reglas puede ser técnicamente compatible hacia atrás, nos han enseñado a conocer en los últimos años que las horquillas suaves suficientemente creativos en realidad pueden implementar cambios que están claramente fuera la intención de la versión anterior de reglas. Vitalik Buterin demostró thiswith una descripción de una forma de tiempo de bloque blando de bitcoin tenedor de 10 minutos a 2 minutos, lo que por supuesto también acelerar el horario de emisión de nuevos bitcoins.

Hay una carta de triunfo que los nodos completos tienen el fin de luchar contra las horquillas suaves no deseados es difícil de tenedor lejos de los mineros que implementaron el tenedor suave. Esto es difícil de realizar (por diseño) y plantea muchas preguntas sobre la medición de consenso y la búsqueda de los nodos de importancia económica.

Técnicamente, se puede hacer cambiando el algoritmo minero de doble SHA256 a una función hash diferente, haciendo de este modo todos los ASICs SHA256 inútiles para bitcoins mineras. Es por esta razón que los operadores de nodos deben permanecer alerta a los cambios en el ecosistema y recordar a los mineros que puedan ser reemplazados si exceden su autoridad.

Una gran cantidad de la teoría de juegos está involucrado en la discusión de las operaciones minero y su amenaza a la seguridad de Bitcoin, y especula acerca de cómo el ecosistema de la minería puede cambiar en un artículo anterior. Mientras que la minería Bitcoin es más centralizada que la mayoría de nosotros nos gustaría, todavía parece funcionar bien porque los mineros bitcoin tienen una gran cantidad de capital invertido - no pueden arriesgarse a destruir su inversión actuando maliciosamente en un sistema donde todo el mundo está mirando.

La seguridad SPV

Una gran cantidad de usuarios de Bitcoin emplean un cliente ligero para tener acceso a la red en lugar de un nodo completo, ya que requiere muchos menos recursos sin dejar de ofrecer una gran seguridad.

Un cliente que emplea verificación del pago simplificado (SPV) descarga una copia completa de las cabeceras de todos los bloques en toda la cadena. Esto significa que los requisitos de descarga y almacenamiento aumentan linealmente con la cantidad de tiempo desde que se inventó Bitcoin. Esto se describe en la sección 8 del documento técnico bitcoin.

Satoshi escribió que un cliente SPV "no puede comprobar la transacción por sí mismo, pero vinculándolo a un lugar en la cadena, se puede ver que un nodo de red ha aceptado, y los bloques añadido después de que se confirme aún más la red ha aceptado ". SPV supone que una transacción de bloques X profunda será costosa de falsificar.

SPV parece ofrecer garantías similares a las de seguridad del nodo completo, pero con un supuesto adicional de que cualquier bloque con una cabecera válida y prueba de trabajo siempre contiene las transacciones válidas. Dado que los clientes SPV no comprueban todas las normas de consenso señalado en la primera sección de este artículo, están haciendo la suposición de que las reglas del consenso están siendo revisados ​​por el nodo (s) de las que solicitan las transacciones.

Una, diferencia menor de seguridad adicional implica compañeros ocultar información a usted. Cuando se está ejecutando un nodo completo, los compañeros pueden retener las transacciones sin confirmar y bloques de usted. Sin embargo, una vez que reciba un bloque de cualquier pares, no es posible que cualquiera pueda retener las transacciones en ese bloque de usted. Por otro lado, es posible que un compañero para dar una cabecera de bloque a un cliente de SPV y luego retener información acerca de las transacciones en ese bloque.

Clientes SPV pueden hacer una consulta para conocer la información sobre las transacciones que afectan a una dirección específica y, si bien sería costoso para los compañeros mentirles acerca de la existencia de transacciones confirmadas falsos (requerirían la minería un bloque con la suficiente POW) que podrían estar en la reivindicación omisión que no se han encontrado resultados para el filtro de la floración se utiliza para consultar para las transacciones. Es también digno de mención que el SPV está terriblemente rota de un standpointdue privacidad de defectos con filtros floración.

BitcoinJ tiene una excelente escritura upof el modelo de seguridad SPV. En cuanto a las transacciones no confirmadas, señalan:

"En el modo de SPV, la única razón por la que tiene que creer que la transacción es válida es el hecho de que los nodos conectado a retransmiten la transacción. Si un atacante podría asegurar que estaba conectado a sus nodos, esto significaría que se podría alimentar una transacción que era completamente válido (gastado dinero no existente), y todavía sería aceptado como si fuera válida ".

SPV seguridad es probablemente "lo suficientemente bueno" para el usuario medio, aunque podría ser mejorado con SPV Fraude pruebas. Ha habido un cierto discussionof este conceptbut sin implementado proposalsfor la construcción de ellos en el protocolo.

No hay lugar como 127.0.0.1

Si no está ejecutando un nodo completo (y de utilizarlo para validar las transacciones), entonces usted está externalización de al menos algún nivel de confianza a terceros, lo que resulta en un modelo de seguridad diferente para su uso de Bitcoin. Tenga en cuenta que esta necesidad no requiere que todos los usuarios y las empresas construyen su software directamente en la parte superior de la API RPC de Bitcoin Core.

Algunas configuraciones de infraestructura alternativa pueden incluir, pero no están limitados a:

1) El uso de una billetera móvil, como Bitcoin Monedero para Android, GreenAddress o Stashthat le permite configurar la cartera de consulta sólo su propio nodo completo.

2) la creación de aplicaciones en la parte superior de las bibliotecas de ganglios SPV como BitcoinJ y configuración de ellos sólo para conectarse a los nodos completos que usted opera. En BitcoinJ esto se puede lograr mediante la definición de su propio SeedPeersthat que pase a su inicialización PeerGroupduring. Con libbitcoin se puede definir una conexión de red a un nodo específico utilizando este ejemplo.

3) La construcción de un servidor proxy que sea compatible con la API JSON-RPC de Bitcoin Core que envía algunas llamadas a los servicios de terceros, sino también verifica automáticamente los datos que regresan al hacer llamadas a un nodo completo local. Para ver un ejemplo, consulte el software de BitGoD BitGo. Este modelo híbrido puede darle lo mejor de ambos mundos: puede aprovechar las funciones avanzadas ofrecidos por terceros, al tiempo que conserva su soberanía financiera.

Nodos completos para la libertad

Está claro que el funcionamiento de su propio nodo completo ofrece una seguridad superior a los supuestos que se requieren menor cantidad. Considerando que se puede construir un ordenador capaz de ejecutar un nodo completo fiable para sólo unos pocos cientos de dólares, hacen las cuentas y determinar si la seguridad de su soberanía financiera vale la pena el precio.

Gracias a Kristov Atlas, Eric Martindale, Andrew Miller, y Kiara Robles para revisar y proporcionar retroalimentación para este artículo.

SecurityNodes

Noticias relacionadas


Post Característica

Banks y Blockchain Blues

Post Característica

Por qué la aplicación CFTC Bitfinex realmente beneficia a los intercambios de Bitcoin

Post Característica

Charlie Shrem y los altibajos de BitInstant

Post Característica

Investigación de consumidores: Blockchain Tech ayudará a los consumidores

Post Característica

Core Devs, Bankers y el FBI: qué no perder en el consenso 2018

Post Característica

Los Centros para el Control de Enfermedades Lanzan la Primera Prueba de Blockchain para el Alivio de Desastres

Post Característica

IBM se lanza en vivo con las primeras Blockchains comerciales

Post Característica

Northern Trust va en vivo con Private Equities Blockchain de IBM

Post Característica

Contratos inteligentes para Bitcoin? Lightnings Tadge Dryja está trabajando en ello

Post Característica

¿Listos para despegar? Lufthansa se enfrenta al inicio de Blockchain ICO

Post Característica

El CEO de Forbes Cover, Ola Doudin Talks, construye el soporte de Bitcoin en Dubai

Post Característica

Odd Bedfellows? Los desarrolladores de Blockchain pueden aprender a amar al Banco Mundial