Lección 16

Reflexiones sobre “No confíes, Verifica”

“Ahora la evidencia”, dijo el Rey, “y luego la sentencia”.

Bitcoin apunta a reemplazar, o al menos proporcionar una alternativa a la moneda tradicional. La moneda tradicional está vinculada a una autoridad centralizada, sin importar si estamos hablando de monedas de curso legal como el dólar estadounidense o dinero de monopoly moderno como los V-Bucks de Fortnite. En ambos ejemplos, indudablemente tienes que confiar en la autoridad central para emitir, administrar y hacer circular tu dinero. Bitcoin desencadena este límite, y el principal problema que Bitcoin soluciona es el problema de la confianza.

“La raíz del problema con la moneda tradicional es toda la confianza que se requiere para hacerla funcionar. […] Lo que se necesita es un sistema de pago electrónico basado en prueba criptográfica en vez de confianza ”

Satoshi

Bitcoin resuelve el problema de la confianza al estar completamente descentralizado, sin un servidor central ni partes de confianza. Ni siquiera terceros de confianza. Cuando no hay una autoridad central, simplemente no hay nadie en quien debas confiar. La descentralización completa es la innovación. Es la raíz de la resistencia de Bitcoin, la razón por la que todavía está vivo. La descentralización también es la razón por la que tenemos minería, nodos, billeteras de hardware y sí, la blockchain. Lo único en lo que tienes que “confiar” es que nuestra comprensión de las matemáticas y la física no está equivocada y que la mayoría de los mineros actúan con honestidad (lo que se les incentiva a hacer).

Mientras que el mundo normal opera bajo la suposición de “confía, no verifiques”, Bitcoin opera bajo la suposición de “no confíes, verifica”. Satoshi dejó muy clara la importancia de eliminar la confianza tanto en la introducción como en la conclusión del whitepaper de Bitcoin.

“Conclusión: Hemos propuesto un sistema para transacciones electrónicas sin depender de un tercero de confianza”.

Satoshi Nakamoto

Ten en cuenta que aquí se utiliza “sin depender de confianza” en un contexto muy específico. Estamos hablando de terceros de confianza, es decir, otras entidades en las que tienes que confiar para producir, conservar y procesar tu dinero. Es claro, por ejemplo, que puedes confiar en tu computadora.

Como demostró Ken Thompson en su conferencia del Premio Turing, la confianza es algo extremadamente complicado en el mundo computacional. Al ejecutar un programa, debes de confiar en todo tipo de software (y hardware) que, en teoría, podrían alterar el programa que estas intentando ejecutar de alguna forma maliciosa. Como resumió Thompson en sus Reflexiones sobre confiando en la confianza: “La moraleja es obvia. No puedes confiar en un código que no lo hayas creado por completo tú mismo”.

Thompson demostró que incluso si se tiene acceso al código fuente, su compilador, o cualquier otro programa o hardware para el manejo de programas, todo eso podría verse comprometido y detectar esa puerta trasera sería muy difícil. Por lo tanto, en la práctica, no existe un sistema verdaderamente que no dependa de confianza. Para eso tendrías que crear todo tu software y hardware (ensambladores, compiladores, enlazadores, etc.) desde cero, sin la ayuda de ningún software externo o maquinaria asistida por software.

“Si deseas hornear un pie de manzana desde cero, primero tienes que inventar el universo”.

Carl Sagan

El Ken Thompson Hack es una puerta trasera muy ingeniosa y difícil de detectar, así que echemos un vistazo rápido a una puerta trasera difícil de detectar que funciona sin modificar ningún software. Los investigadores encontraron una forma de comprometer directamente el hardware importante para la seguridad alterando la polaridad de las impurezas de silicio. Con solo cambiar las propiedades físicas de las cosas con las que están hechos los chips de computadora, pudieron comprometer un generador de números aleatorios criptográficamente seguro. Dado que este cambio no se puede ver, la puerta trasera no se puede detectar puramente mediante la inspección óptica, que es uno de los mecanismos de anti-manipulación más importantes para estos chips.

aprender-de-bitcoin
Troyanos sigilosos de hardware por Becker, Regazzoni, Paar, Burleson

¿Suena aterrador, Verdad?, incluso si pudieras construir todo desde cero, aún tendrías que confiar en las matemáticas. Tienes que confiar en que secp256k1 es una curva elíptica sin puertas traseras. Sí, se pueden insertar puertas traseras maliciosas en los fundamentos matemáticos de las funciones criptográficas y podría decirse que esto ya ha sucedido al menos una vez. Hay buenas razones para estar paranoico, y el hecho de que todo, desde el hardware, software, y hasta las curvas elípticas usadas, pueden tener puertas traseras son algunas de esas razones.

“No Confíes. Verifica.”

Los ejemplos anteriores deberían ilustrar que la informática que no depende de confianza es una utopia. Bitcoin es probablemente el sistema que más se acerca a esta utopía, Bitcoin es un sistema que busca minimizar la confianza, en donde sea posible. Puede decirse que la cadena de confianza es interminable, ya que también tendrías que confiar en que la computación requiere energía, que P no es igual a NP y que en si estas en la realidad y no en una simulación hecha por malas personas.

Los desarrolladores están trabajando en herramientas y procedimientos para minimizar aún más la confianza restante. Por ejemplo, los desarrolladores de Bitcoin crearon Gitian, que es un método de distribución de software para crear compilaciones determinadas. La idea es que si varios desarrolladores pueden reproducir binarios idénticos, se reduce la posibilidad de manipulación maliciosa. Las elegantes puertas traseras no son el único vector de ataque. El simple chantaje o la extorsión también son amenazas reales. Como en el protocolo principal, la descentralización se usa para minimizar la confianza.

Se están haciendo varios esfuerzos para mejorar el problema del huevo y la gallina en el bootstrapping, que el hack de Ken Thompson señaló de manera brillante. Uno de esos esfuerzos es Guix (que se pronuncia geeks), que utiliza la gestión de paquetes funcionalmente declarada que conduce a compilaciones reproducibles bit por bit. El resultado es que ya no tienes que confiar en ningún servidor que proporciona software, ya que puedes verificar que el binario mostrado no fue manipulado reconstruyéndolo desde cero. Recientemente, se propuso integrar Guix en el proceso de construcción de Bitcoin.

¿Que fue primero, el huevo o la gallina?

Afortunadamente, Bitcoin no depende en un solo algoritmo o hardware. Un efecto de la descentralización radical de Bitcoin es un modelo de seguridad distribuido. Aunque las puertas traseras descritas anteriormente no deben tomarse a la ligera, es poco probable que todas las billeteras de software y hardware, todas las bibliotecas criptográficas, todas las implementaciones de nodos y todos los compiladores de todos los lenguajes se vean comprometidos. Posible, pero muy improbable.

Es posible generar una clave privada sin depender de ningún hardware o software computacional. Puedes lanzar una moneda un par de veces, aunque dependiendo de la moneda y el estilo con que la lanzas, esta fuente de aleatoriedad puede no ser lo suficientemente aleatoria. Hay una razón por la que los protocolos de almacenamiento como Glacier recomiendan usar dados de casino como una de las dos fuentes de entropía.

Bitcoin me obligó a reflexionar sobre lo que realmente implica confiar en alguien. Me hizo tomar conciencia del problema del bootstrapping y de la cadena de confianza implícita en el desarrollo y la ejecución de software. También me hizo tomar conciencia de las muchas formas en que el software y el hardware pueden verse comprometidos.

Bitcoin me enseño a no confiar, sino a verificar.

Para ir mas profundo en la madriguera

Scroll to Top