Saltar al contenido

La criptografía de Bitcoin y el algoritmo de Bitcoin

Con el gran poder viene la gran responsabilidad

Ahora que hemos cubierto los pares de claves en Bitcoin, podemos cubrir la forma única en que se crean. Las claves privadas nos dan un control completo sobre nuestras finanzas, este es el propósito de Bitcoin. Sin embargo, en muchos sentidos, tener un control completo es aterrador. Si se pierde una clave privada, los fondos asociados a ella desaparecen, para siempre. Si alguien roba una llave privada, tiene acceso completo a los fondos, y teóricamente es el nuevo propietario de dichos fondos. Y, no hay recurso en caso de pérdida o robo de la clave privada, o cualquier otro asunto.

Eso es mucha presión para un usuario de Bitcoin. Por supuesto, un usuario podría hacer lo que hace con cualquier otro dato valioso, y crear una copia de seguridad de la clave privada. Sin embargo, las claves privadas deberían estar muy vigiladas. Las claves privadas deberían nunca ser respaldadas en un servidor de nube o transmitidas a través de comunicaciones de Internet de cualquier tipo. Almacenarlas en un ordenador o teléfono móvil es peligroso, ya que si un sistema se ve comprometido por un ladrón o atacante, todos los fondos asociados a las claves privadas del sistema estarán libres para su uso. Una llave privada podría ser almacenada en una caja fuerte a prueba de fuego y enterrada a 3 metros bajo tierra en un desierto remoto, pero como el uso de Bitcoin genera cientos o miles de llaves privadas para un solo usuario. ¿Cómo es posible que alguien pueda seguir el rastro de todas esas llaves? ¿Cómo se puede almacenar algo sin guardarlo?

La criptografía de Bitcoin y el algoritmo de Bitcoin
La criptografía de Bitcoin y el algoritmo de Bitcoin

Aquí es donde la «cartera determinista jerárquica» o «cartera HD» entra para salvar el día.

Eso es un Bocado

Vamos a desglosar la cartera HD palabra por palabra. Ser «jerárquico» es estar dispuesto en un orden u ordenamiento, o estar colocado en secuencia. La secuencia es muy importante en el sistema de carteras HD. «Determinismo» es una forma elegante de decir «causa y efecto». Siempre habrá un resultado para cualquier evento en el sistema. Y una «billetera» es una interfaz para usar Bitcoin que permite acceder, enviar y recibir bitcoins. Algunas carteras notables incluyen Electrum, Mycelium, ybread.

Por lo tanto, una cartera HD es una cartera Bitcoin que genera una secuencia de claves privadas, donde cada clave privada está determinada por la clave anterior o «padre» de la secuencia. Este sistema se añadió a BitcoinBIP-32. Un BIP es una «propuesta de mejora de Bitcoin» o el formato para realizar cambios enBitcoin.

De manera similar a la relación entre una clave privada y una clave pública, la secuencia de clave privada que resulta de la utilización de una cartera de HD se define por una relación unidireccional entre las entradas y salidas del analgoritmo. A un alto nivel, las claves privadas de Bitcoin se generan utilizando un «generador de números pseudoaleatorios». Debido a que los programas están tan estrictamente definidos y orientados al proceso, es muy difícil capturar el concepto humano de «aleatoriedad» en un ordenador. Así que, a menudo estos generadores aleatorios requieren una entrada de entropía llamada «semilla». Esto a veces se representa con movimientos de ratón o pulsaciones de teclas aleatorias en otros programas, y se requiere una mayor o «más aleatoria» semilla de entropía para la generación «más aleatoria». Una peculiaridad de los generadores de números pseudoaleatorios es el resultado del pensamiento algorítmico: el generador sigue una secuencia de pasos para producir una salida. Como tal, con muchos algoritmos, hay una y sólo una salida para una sola entrada. Con la HDsequence, utilizamos las salidas (claves privadas) de la generación de números anterior como entradas para la nueva generación de números, y creamos una «cadena» de claves.

Con todo detalle, este proceso es ligeramente más complicado, pero para el alcance de este artículo, esa definición de llaves encadenadas es suficiente.

¿Por qué es esto importante? Bueno, considera lo siguiente. Se sabe que en una secuencia de claves, cada clave privada se genera en base a alguna entrada, que es una clave precedente. Esto significa que simplemente teniendo acceso a la primera clave de una secuencia, cada clave siguiente de la secuencia puede ser generada. En teoría, una «copia de seguridad» de toda la colección de claves está disponible recordando sólo una.

Mejorando la mejora

El BIP-32 definió un sistema de generación secuencial de claves privadas para su uso en carteras. De esta manera, los usuarios de Bitcoin pueden tener una sensación de seguro contra el robo o la pérdida de datos almacenando una única clave «maestra». Sin embargo, hay un último problema: es difícil recordar incluso una única clave privada. Son largas y poco manejables. Este es un problema común en la informática: lo que es útil para un sistema informático (grandes números, conjuntos de datos y largas cadenas) suele ser muy molesto para los seres humanos. Por comodidad, los ingenieros de software suelen pasar mucho tiempo creando formas de «abstraer» datos informáticos en un formato más cómodo para que la gente los asimile. Esto nos lleva a BIP-39, que introduce una frase semilla mnemotécnica en el protocolo de la billetera HD.

Si busca en la base de código de una cartera de Bitcoin, probablemente encontrará en algún lugar un archivo llamado «words.txt», «wordlist.txt», o similar. Esta es la lista de palabras usadas para generar la mnemotecnia para una cartera HD. Contiene 2048 palabras y está disponible en muchos idiomas diferentes.

Este proceso es bastante simple. Cuando se crea una cartera HD, genera «endopía generada por ordenador». Esta entropía se convierte en una secuencia de números entre el 0 y el 2047, y esos números se usan como índices para tomar una secuencia de 12 números de la lista de palabras y combinarlos para formar una frase aseada.

1bambú menor gota de suciedad mamá octubre tema alfa grupo filtro vaso doce

Cuando este proceso se completa, la frase de semillas resultante se utiliza como entrada de semillas para la HDwallet, y todas las claves privadas que genera su cartera pueden ser recuperadas simplemente recordando esa frase.

Más números grandes

Cuando me enteré del proceso de la llave mnemotécnica, me preocupaba que fuera menos seguro que el mismo Bitcoin. Estaba en lo cierto. Sin embargo, 2^132 sigue siendo un conjunto monumentalmente enorme (de hecho, sigue siendo mayor que el recuento total de partículas de arena que discutimos anteriormente) y en general lo suficientemente seguro como para ser utilizado.

Para aquellos que estén interesados, 2^132 se ve así:

15,444,517,870,735,015,415,413,993,718,908,291,383,296

Lo que es realmente valioso sobre este proceso no es tan obvio. Lo que realmente está sucediendo aquí es la conversión de datos de computadora (en este caso, aleatorios) en un formato conveniente, amigable para los humanos . Esta frase inicial no sólo es memorable, sino que también es comunicable (buena suerte decirle a alguien una clave privada por teléfono) y, por lo tanto, tiene una utilidad mucho mayor para una persona que una clave privada por sí misma. Una vez más, gran parte del tiempo que los ingenieros de software dedican a perfeccionar el software es la abstracción de los datos informáticos a los datos humanos. Las computadoras y las personas tienen fortalezas y debilidades opuestas, y sistemas como este les permiten interactuar de manera ingeniosa.

En resumen, el sistema de cartera determinista jerárquica o «cartera HD» se añadió a Bitcoin viaBitcoin Improvement Proposals (BIP) 32 y 39. El sistema permite a los usuarios «almacenar» toda su colección de claves privadas recordando una única frase inicial, que puede utilizarse para recuperar sus claves privadas en caso de pérdida.