Por qué los usuarios de Bitcoin deben entender la “seguridad del sistema SPV”

(Click here for the English version of “Why Every Bitcoin User Should Understand SPV Security”)

Al igual que no hace falta conocer el funcionamiento de un motor para conducir un coche, tampoco es necesario saber cómo funciona Bitcoin internamente para poder utilizarlo.

Aunque sí deberías saber algunas cosas si participas en debates o expresas tu opinión sobre Bitcoin en el futuro.

El gran debate sobre cómo escalar

Por si no te habías dado cuenta, hay una especie de guerra civil entre los desarrolladores de Bitcoin, empresas, mineros e inversores. La cuestión gira en torno a cómo “escalar” en la red.

En pocas palabras: una parte quiere seguir la idea original de Bitcoin de intercambio directo de dinero en efectivo P2P y un plan para lograr bloques más grandes, mientras que la otra parte quiere que los bloques sigan siendo pequeños y transformar Bitcoin en una red de pagos.

Tu opinión importa más de lo que crees

Bitcoin es un ecosistema de miles de millones de dólares. Sería de ingenuos pensar que las grandes empresas no quisieran intentar manipularlo a toda costa a favor de sus intereses.

Entonces, ¿en qué podrías ser útil?

Esta cita seria del cómico George Carlin es muy apropiada en este contexto. ¿Qué es lo que buscan los grandes intereses especiales?

Quieren más para ellos y menos para los demás. Pero voy a decirte qué es lo que no quieren: una población de ciudadanos capaces de pensar de forma crítica. No quieren gente bien informada y preparada…No les interesa, no les ayuda. Va en contra de sus intereses. . — George Carlin

El castillo de naipes de los bloques pequeños

De Wikipedia: Un “castillo de naipes” es una expresión que existe desde 1645 y que se refiere a una estructura o argumento construido sobre una base inestable que se derrumba si se quita alguno de los elementos necesarios.

El argumento de que Bitcoin es una red de pagos depende de una cadena lógica que funciona más o menos así:

“La mayoría de usuarios en la red debería utilizar un nodo completo, por lo que éste debería ser asequible; para ello hay que limitar los costes de almacenamiento y del ancho de banda, y para eso no queda otra opción que mantener los bloques pequeños”

La mayoría de usuarios NO necesita utilizar un nodo completo

Si desmintiéramos la hipótesis básica, el castillo de naipes se derrumbaría.

Los argumentos a favor de que “la mayoría de usuarios debería usar un nodo completo” podría clasificarse, en líneas generales, en dos grupos: a) es bueno para la red, y b) es necesario para la seguridad del usuario.

Ya abordaremos esos argumentos en otro artículo; por ahora analicemos tan solo la hipótesis desde el punto de vista del usuario.

El sistema SPV (“verificación simplificada de pago”) ha existido desde el principio

Para empezar, el SPV no es nada nuevo. Ya fue descrito en la sección 8 del libro blanco de Satoshi Nakamoto: Bitcoin: un sistema de dinero electrónico entre iguales (P2P). Los monederos de Bitcoin, como Electrum, han utilizado el sistema SPV satisfactoriamente durante años sin ningún problema y le ahorran al usuario el embrollo de tener que mantener un nodo de red completo.

¿Cómo funciona el sistema SPV?

En resumen: con el sistema SPV puedes validar TUS transferencias sin tener que preocuparte de las transferencias de los demás.

El Sistema SPV ofrece los dos ingredientes esenciales: a) garantiza que las transferencias estén en un bloque, y b) emite confirmaciones (prueba de trabajo) cuando se agregan bloques adicionales a la cadena.

Eso es todo lo que necesitas saber sobre si una transferencia es válida o no.¹

¿Cuáles con las limitaciones de seguridad del Sistema SPV? ¿Tiene alguna ventaja para los usuarios que utilizan un nodo completo?

Ya que un monedero SPV no comprueba las otras transferencias del bloque, éste, en teoría, podría no ser válido en un 99,99 %. Pero esto no supone un problema, ya que podemos conectarnos a múltiples nodos diferentes y asegurarnos de que todos los usuarios aceptan la misma cadena de bloques.

A veces podría darse una situación poco habitual; por ejemplo, que se adoptara una nueva norma de consenso y que un grupo relativamente grande de nodos no la aplicara porque no fueron actualizados.

No se tardaría mucho en desviar de la red a los nodos que incumplieran la norma, pero mientras tanto, se podría estar engañando temporalmente al cliente SPV para que piense que los nodos no actualizados tienen la cadena correcta más larga (la cadena válida más larga volvería a verse clara tras varios bloques)

Por eso se dice que usar un nodo completo ofrece una seguridad “más rápida”, ya que si puedes validar todas las transferencias por ti mismo, no es necesario esperar confirmaciones adicionales para resolver este tipo de situaciones inusuales.

Además, usar nodos completos en teoría ofrece una mayor privacidad, ya que el cliente SPV debe comunicarse con nodos completos y solicitar información sobre direcciones y transferencias específicas.

¿Se puede atacar a propósito a un usuario con monedero SPV?

Es prácticamente imposible (no existen casos registrados).

En teoría, el atacante tendría que configurar un gran número de nodos maliciosos y evitar que encontraras nodos verdaderos en la red “real” de Bitcoin.

Con que el monedero SPV encontrara un solo nodo verdadero, el ataque se vería frustado, ya que verificará que el nodo verdadero contiene la cadena de pruebas de trabajo más extensa.

Es más, para poder mantener el ataque, el atacante tendría que seguir minando bloques al nivel de dificultad actual para poder continuar extendiendo la cadena, lo que requeriría tener un gran dominio sobre hashes, que al ser tan caro, hace que no sea factible económicamente.

Dos pequeñas buenas noticias más

  1. Es importante saber que un monedero SPV no depende simplemente de los otros nodos de red para determiner la cadena de bloques más larga. Se fija en la mejor cadena de encabezado: la cadena de encabezados válidos que contiene más pruebas de trabajo acumulativas. Con una buena aplicación del sistema SPV también se garantiza que esta prueba de trabajo tenga el nivel adecuado de dificultad de hashes. Los interesados pueden analizar el código Electrum para comprobarlo en plena acción.
  2. Y, por supuesto, el tipo de monedero que uses no influye en absoluto en la seguridad de tus claves privadas.

¿Qué son esas “pruebas de fraude de SPV” de las que se hablan?

El propósito de las pruebas de fraude es intentar aumentar la seguridad en los casos en los que “una cadena que no cumple con las normas contiene más pruebas de trabajo que la cadena que sí la cumple”, como se describió anteriormente.

Pero como se trata de casos contados, la mejora en seguridad sería mínima.

Es completamente falso que las pruebas de fraude de SPV sean necesarias para mantener la seguridad de los usuarios.

Tomas van der Wansem, autor de una propuesta de prueba de fraude reciente usando un diágrama en árbol de gastos, afirma:

Al contrario de la creencia popular, las pruebas de fraude de SPV y los nodos completos no son significativamente más seguros que los nodos SPV…Me temo que el estancamiento y abandono actual del modelo creciente original de Bitcoin no se debe a la ausencia de pruebas de fraude, si no a una malinterpretación de la seguridad y del modelo creciente de Bitcoin.

Conclusión

Los monederos SPV ofrecen un alto nivel de seguridad y la mayoría de usuarios no necesita usar nodos completos. Con toda esta información ya puedes disfrutar tranquilamente de tu monedero…y también ayudar a desmontar los argumentos maliciosos de hipótesis falsas.

Nota a pie de página:
¹ Un monedero SPV también debe “estar a la escucha” de las transferencias entrantes en tus direcciones. Puedo hacerlo mediante filtros de Bloom o con ayuda de un servidor que tenga un sistema UTXO.