Estándares de billeteras Bitcoin

Aníbal Santaella
5 min readOct 19, 2020

--

Por Aníbal Santaella

Billeteras deterministas jerárquicas, BIP-32

BIP-32 en github

Una billetera determinista jerárquica o billetera HD por su siglas del inglés «Hierarchical Deterministic wallet “HD Wallet”», es un sistema de derivación de llaves desde un único punto de partida conocido como semilla. La semilla permite al usuario realizar fácilmente una copia de seguridad y restaurar una billetera sin necesitar ninguna otra información y, en algunos casos, puede permitir la creación de direcciones públicas sin el conocimiento de la llave privada.

¿Por qué determinista jerárquica?

  • Determinista significa que las llaves y las direcciones siempre se generan de la misma manera.
  • Jerárquica significa que las llaves y las direcciones se pueden organizar en un árbol con jerarquía.

Una billetera HD es un sistema para derivar un árbol de pares de llaves a partir de una sola semilla y construir una estructura de billetera encima de dicho árbol. Las billeteras se crean a partir de una única semilla raíz, que es un número aleatorio de 128, 256 o 512 bits, más comúnmente, esta semilla se genera a partir de un código mnemónico como lo menciono más adelante.

En pocas palabras, una billetera HD es una billetera que genera todas sus llaves y direcciones de una sola fuente.

Cada llave de la billetera HD se deriva de forma determinista de esta semilla usada como raíz para el árbol jerárquico, lo que hace posible recrear la billetera completa a partir de esa semilla en cualquier otra billetera compatible. Esto facilita la realización de copias de seguridad, restauración, exportación e importación de billeteras HD que contienen miles o incluso millones de llaves, simplemente transfiriendo solo el mnemónico del que se deriva la semilla raíz.

El estándar BIP-32 es un mecanismo muy poderoso para administrar llaves y direcciones, incluso es más útil si se combina con una forma estandarizada de crear semillas a partir de una secuencia de palabras que son fáciles de transcribir, exportar e importar a través de billeteras, esto se conoce como mnemónico y el estándar está definido por BIP-39. Hoy en día, la mayoría de las billeteras Bitcoin y de otras criptomonedas utilizan estos estándares interoperables que permiten importar y exportar semillas para realizar copias de seguridad y recuperar acceso a monedas.

Código mnemónico para generar claves deterministas, BIP-39

BIP-39 en github

Un código mnemónico o frase mnemotécnica, es una secuencia de palabras que representan (codifican) un número aleatorio utilizado como semilla para la generación de billeteras HD. Concretamente, es un conjunto de palabras destinadas a transportar la aleatoriedad generada por una computadora usando una trascripción legible para los humanos, esto permite una interacción a un nivel superior de simplicidad para las personas que el manejo de códigos binarios o hexadecimales, las palabras se pueden escribir o comunicar por voz de manera normal.

Comúnmente los usuarios nos referimos a el código mnemónico como «las palabras o semilla», ya que es solo un grupo de palabras que facilitan la experiencia humana para la generación de billeteras HD.

Hablando técnicamente, el BIP-39 consta de dos partes: generar el mnemónico y convertirlo en una semilla binaria. Esta semilla puede usarse luego para generar billeteras HD usando BIP-32 o métodos similares. El mnemónico debe codificar la entropía en un múltiplo de 32 bits. Con más entropía se mejora la seguridad, pero aumenta el número de palabras. El tamaño permitido de entropía es de 128 bits (representa 12 palabras) a 256 bits (representa 24 palabras).

Cuanto más largo sea el conjunto de palabras mnemónicas, más seguridad hay, ya que una semilla de 24 palabras es más difícil de descifrar en comparación a una de 12 palabras. La lista de palabras en español para BIP-39 contiene 2048 palabras, por lo que para descifrar una conjunto 12 palabras se requerirían descubrir 2048¹² =2¹³² permutaciones posibles. Cuanto más larga sea la frase mnemónica, el número de permutaciones posibles se vuelve exponencialmente más difícil de descifrar.

La siguiente tabla describe la relación entre la longitud de la entropía inicial (ENT), la longitud de la suma de comprobación (CS), la longitud de la oración mnemotécnica generada (MS) en palabras y el número de pernmutaciones posibles

CS = ENT / 32

MS = (ENT + CS) / 11

La tabla describe la relación entre la longitud de la entropía inicial (ENT), la longitud de la suma de comprobación (CS), la longitud de la oración mnemotécnica generada (MS) en palabras y el número de pernmutaciones posibles.

Lista de palabras:

Analogía

Piense en las palabras como en una «semilla de un árbol» que está plantada en el suelo, es decir, oculta y solo la conoce el que la sembró y de la cual se pueden generar miles de millones de ramas que representan caminos de derivación de llaves y direcciones a las cuales se pueden asociar unidades de valor de bitcoin. Por lo tanto, cuando un usuario instala o inicializa una billetera software o hardware usualmente se le presentan las palabras (12 a 24) para que haga una copia de seguridad de ellas, ya que de allí se generará una llave privada maestra y a partir de ella siempre se generarán pares de llaves para su billetera de la misma manera (determinista).

En conclusión, cada vez que una billetera genera un conjunto de palabras esta es una llave privada maestra y cualquiera que conozca las palabras tendrá acceso a las monedas.

También puedes encontrar este artículo en:

Aníbal Santaella

Twitter @a_santaellas

Canal de YouTube Aníbal Santaella

Canal de Telegram

Si deseas invitarme una cerveza 🍺 puedes hacerlo a la siguiente dirección de Bitcoin: 3KouoLjZMgXimRWpjK6AuEfVX61nyGzWvz

--

--