Elaborado por Materia para OpenMind Recomendado por Materia
6
Inicio Claves tecnológicas para entender el Bitcoin
03 agosto 2015

Claves tecnológicas para entender el Bitcoin

Tiempo estimado de lectura Tiempo 6 de lectura

En el artículo Bitcoin: una cuestión de confianza, hacemos referencia a los mecanismos de creación de nueva moneda. En cierta medida, y en relación a algunas de las conclusiones que exponíamos, pretendíamos un acto de fe sobre sus fundamentos: Bitcoin se sustenta en una cadena de firmas digitales implementada en una red peer-to-peer, cuyo mantenimiento exige la remuneración, mediante la creación de nuevos bitcoins, a determinados nodos de la red, remuneración que es proporcional al trabajo o gasto de esos nodos en el soporte de la moneda virtual, principalmente por su seguridad.

En este anexo intentamos establecer una introducción necesariamente limitada a las tecnologías y mecanismos subyacentes en la block chain o, lo que es equivalente, subyacente a la propia moneda Bitcoin.

Criptografía de clave pública

El desarrollo de Internet y el intercambio de información sobre cualquier red informática debe ser acompañado de mecanismos de seguridad que permitan que la información transferida sólo pueda ser leída por su destinatario aunque el mensaje físico (vía cable, fibra o radio) sea capturado por terceros, así como asegurar que el remitente de un determinado documento es realmente quien dice ser.

Estos objetivos se cumplen habitualmente con el cifrado de la información mediante los procedimientos de criptografía de clave pública, según los cuales cada participante en una comunicación dispone de un par de claves matemáticamente vinculadas: una clave privada, sólo conocida por él, y una pública que se pone a disposición de todos. Se utiliza una clave aplicándola mediante procesos matemáticos sobre la información a cifrar, de tal manera que se obtiene un resultado cifrado que es computacionalmente irreversible si no se dispone de la clave de descifrado.

El ejemplo que se suele utilizar para hacerse una idea de este tipo de procedimientos es el de la factorización en números primos: la multiplicación de dos números primos, aunque sean muy grandes, es un procedimiento computacional muy sencillo y rápido, mientras que la descomposición del resultado obtenido en los números iniciales, sin conocer ninguno de esos factores, resulta hoy computacionalmente intratable si el número considerado es enorme (del orden de 10200). Obviamente, si conocemos uno de los factores la obtención del otro es trivial. Esta es la base conceptual de la utilización de claves para cifrado.

El fundamento de la firma digital

Cualquiera que conozca la clave pública puede cifrar una información con esa clave, aunque  el resultado sólo podrá ser descifrado con la clave privada pareja de la pública. Es decir, la clave pública sirve para cifrar, pero no para descifrar información cifrada con esa misma clave (por ello también se denomina criptografía asimétrica), para lo que se necesita la clave privada que sólo conoce la persona que posee dicha clave. De forma inversa, una información cifrada con la clave privada podrá ser descifrada con la clave pública. ¿Y para qué sirve algo cifrado que todo el mundo puede leer puesto que se dispone fácilmente de la clave pública correspondiente? Pues para asegurarnos que la información ha sido cifrada por quien dice. Cualquier documento descifrable con una clave pública nos garantiza que ha sido cifrado con la clave privada correspondiente, y el propietario de esa clave privada no puede rechazar o repudiar que ha sido él quien la ha cifrado. Este es el fundamento de la firma digital.

La función hash

La última herramienta por revisar está también basada en tratamientos matemáticos de la información. Se trata de lo que se denomina función hash, y cuyo resultado tras aplicarla sobre un documento u otra información digital es un resumen compacto  de la misma (mucho más pequeño, de unas pocas decenas de caracteres). Es irreversible, es decir, que a partir del resumen (que no es más que un conjunto de letras y números sin interpretación semántica) es imposible recuperar el texto original. Aunque matemáticamente es posible obtener el mismo resumen, o hash, de dos textos diferentes, estadísticamente es muy remoto llegar a este resultado. En cualquier caso, no existe ningún procedimiento computacional efectivo que permita cifrar de tal manera que se obtenga como resultado un resumen previamente deseado. Lo que sí es posible mediante fuerza bruta computacional de prueba y error, es ir modificando una entrada hasta obtener un hash que, digamos, empiece por un cero, o por dos, o por algunos más.

Los usos de las funciones hash son numerosos, pero lo que nos interesa ahora es que, cuando hablamos de firma digital, usualmente los algoritmos de firma no se aplican directamente sobre la información o documento completo sino sólo sobre su resumen, lo que conlleva evidentes ventajas de rapidez (el texto a firmar es mucho más pequeño) y otras no tan evidentes como reducir estadísticamente las posibilidades de que la clave utilizada en la firma sea averiguada por un atacante.

Entrando en materia, los diseñadores de Bitcoin definen la moneda, literalmente, como “una cadena de firmas digitales”.[1] Es importante la literalidad de la definición: una cadena de firmas. Cada transacción es como un certificado que está compuesto de un hash sobre el resultado del encadenamiento de la transacción anterior (o título) , más la clave pública del nuevo propietario, que a la vez es firmado por la clave privada del anterior propietario, que valida la transacción.

Un poco más despacio: si un propietario transfiere una moneda a otro, lo que el software soporte de Bitcoin hace es tomar la representación en bits de la transacción anterior (que como hemos visto es el resultado de una firma digital), le une la representación en bits de la clave pública del beneficiario de la transferencia, obtiene el hash sobre toda la información anterior, y transmite la firma digitalmente con su clave privada. Es precisamente esta firma la que se encadena a las anteriores firmas para dejar registro de todas las transacciones durante la existencia de la moneda, así como para poder demostrar públicamente quién es su actual propietario, puesto que el hash ha incluido su clave pública.

Lo anterior debe complementarse con mecanismos adicionales de certificación de los tiempos en los que se realicen las transacciones para impedir la transferencia de una misma moneda a dos o más beneficiarios y que, por tanto, el nuevo propietario pueda estar completamente seguro de que no se han producido transferencias previas antes de recibirla él.

También debe asegurarse la integridad de la cadena de firmas para que no pueda ser falsificada. Además, se necesitan procesos que permitan el anuncio público de las transacciones y que, en última instancia, todos los participantes de la red se muestren de acuerdo sobre los históricos de las mismas. En definitiva, la seguridad del beneficiario radica, precisamente, en el carácter público de su propiedad (ojo, que no de su identidad: la propiedad última de las parejas de claves no queda necesariamente acreditada), así como en el consenso de la red en que quien le transfirió la moneda no lo hizo previamente a ningún otro beneficiario. Todos los procesos necesarios dan lugar a la red y software distribuidos en los que se fundamenta Bitcoin.

Un sistema “Prueba-de-Trabajo”

Una iteración del proceso comienza con la reunión en lo que se denomina un bloque (block) de las transacciones de bitcoins realizadas durante un determinado periodo de tiempo, y antes de incluirse de forma oficial y consensuada en el registro o cadena oficial de transacciones (la block chain que define la moneda) el bloque debe ser trabajado por nodos de la red denominados mineros para resolver un problema computacional vinculado a la conexión de ese bloque a la cadena, es decir, al último bloque validado. Este problema debe cumplir los requisitos de ser relativamente complejo en términos computacionales, pero con solución en tiempos razonables (digamos algunos días).

Este mecanismo se denomina Prueba-de-Trabajo (Proof-of-Work, o PoW, en inglés), y se fundamenta en añadir a cada nuevo bloque un campo conteniendo un hash que se forma añadiendo al contenido del mismo campo del bloque anterior una cadena adicional tal que, tras obtener un nuevo hash sobre la concatenación, éste comience con un número determinado de ceros. Es un trabajo de fuerza bruta de computación por el que se van añadiendo diferentes cadenas arbitrarias hasta dar, por casualidad, con la solución, y por la que compiten por ser primeros los nodos mineros. Conforme va existiendo mayor poder de computación en la red, este trabajo se va haciendo cada vez más complejo mediante la sencilla solución de exigir cada vez más ceros iniciales a los hash buscados, de tal manera que la adición de bloques en la cadena se mantenga a un ritmo relativamente estable (un bloque cada 10 minutos, aproximadamente).

El principal objetivo de la prueba-de-trabajo es hacer que la cadena resultante de la actualización de las transacciones sea difícil de atacar: cualquier falsificador del tracto de la cadena mediante la modificación de sus bloques debe proceder a la resolución del problema computacional sobre los bloques modificados compitiendo contra la totalidad del resto de la red, que trabaja sobre los bloques no falsificados, agravado además por la posible existencia de bloques posteriores, que también deberían ser objeto de la prueba-de-trabajo al estar cada hash de cada bloque interrelacionado con el del bloque anterior. Esa competencia contra toda la red de mineros honestos hace estadísticamente improbable la falsificación a no ser que se reúna una potencia computacional comparable a la del resto de la red.

Una vez resuelto el problema computacional el bloque se añade a la cadena. Es evidente que la block chain es creciente conforme aumentan las transacciones, y finalmente, tras la adición del bloque, el resultado se va transmitiendo a todos los nodos de la red para su consenso. Convenimos que esta cadena es, en resumen, la moneda.

BBVA-OpenMind-Bitcoin-Agustin-Isasa-Tecnologia-Bitcoin
Figura 1: esquema de la cadena de firmas que compone la moneda Bitcoin / Créditos: Satoshi Nakamoto

 

Agustín Isasa

Bibliografía

  1. Bitcoin: A Peer-to-Peer Electronic Cash System, S. Nakamoto, 2008,
  2. https://bitcoin.org/en/bitcoin-paper (entre las traducciones, la del español latinoamericano es técnicamente mejor que la del español de España)
  3. Fuente: Bitcoin: A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto, 2008

Comentarios sobre esta publicación

El nombre no debe estar vacío
Escribe un comentario aquí…* (Máximo de 500 palabras)
El comentario no puede estar vacío
*Tu comentario será revisado antes de ser publicado
La comprobación captcha debe estar aprobada