Generar semillas BIP39 con dados

BIP39 ha permitido facilitar la tarea del guardado y restaurado de las claves privadas de nuestras billeteras. Estas claves son alfanuméricas, de más de 100 carácteres y se hacía tedioso si queríamos guardarlo en un entorno distinto al del digital, como en un papel o una lámina de acero. Tener esta clave de manera digital, podría verse comprometido por una intrusión no deseada, haciendo que esta opción sea a veces poco segura.

Para ello BIP39 nos dota de un sistema mnemónico, de 12 a 24 palabras, donde es posible restaurar nuestra billetera en aquellos clientes compatibles (Trezor, Ledger, Electrum, etc) y que permite obtener varias direcciones distintas con distintas claves privadas.

La seguridad ante todo

Lo normal para generar esta semilla es utilizar estas billeteras electrónicas (al final del artículo dejaré un enlace interesante sobre billeteras compatibles BIP39), pero al utilizarlas para generar esta semilla, nos deja a merced de que lo creado con software sea lo suficientemente seguro.

Es complicado adecuar un entorno que permita una buena entropía en el mundo digital y lograr generar una semilla segura. Los equipos informáticos pueden generar números aleatorios, pero se basan en un sistema que podría ser replicable o que por lo menos, tener un menor grado de entropía real. Esto se puede solucionar con un dado o dados y una moneda.

IMPORTANTE: A la hora de generar las palabras de manera manual, es necesario saber que la última palabra es un «checksum» para validar que el SEED es correcto. Aquí trataremos de como sacarlo con el SEED de 24 palabras.

Entropía a base de dados

Varios dados y una moneda nos van a permitir generar suficiente entropía como para crear una semilla lo más segura posible. Para ello nos basaremos en una idea del usuario taelfrinn en Github:

https://github.com/taelfrinn/Bip39-diceware

El funcionamiento es tan sencillo como:

1º – Lanzar la moneda al aire.

  • Si es Cara (Head) = H
  • Si es Cruz (Tails) = T

2º – Lanzar el dado 4 veces o disponer de 4 dados de colores diferentes para asignar una posición (como en el vídeo adjunto).

3º – Con el resultado de la moneda y de los dados, debe haber algo como: H2459, T1342, H3211. El valor en H es completo, H1111 hasta H6666. Pero en T es desde T1111 hasta T4363 y a partir de este valor se debe volver a tirar los dados.

4º – Con este código basta ir a la tabla generada por taelfrinn y apuntar la palabra que aparezca. Si sale todo bien, esta será la primera de muchas palabras para nuestro SEED.

Este proceso se repetirá las veces que sean necesarias para generar nuestra semilla de 23 palabras, que es lo que trataremos aquí. Con esto lograremos obtener una semilla con muy buena seguridad y sin miedo a estar comprometida por haber sido generada en entornos digitales.

Obtener la palabra 24

Esta última parte es la más sensible de todas, ya que será necesario disponer de un equipo informático para sacar esta última palabra. Para ello existe una web llamada seedpicker.net que dispone de un html para averiguar esta palabra. Como es código abierto, lo he retocado para utilizar la mínima cantidad de archivos para descargar. En este caso serían dos archivos.

1º – Descargar los dos archivos de mi github necesarios: https://github.com/blockmit/seedpicker/tree/master/blockmit

(Botón derecho encima de cada enlace y guardar como)
https://raw.githubusercontent.com/blockmit/seedpicker/master/blockmit/bundle.js
https://raw.githubusercontent.com/blockmit/seedpicker/master/blockmit/palabra24(bip39).html

2º – Buscar un entorno seguro, sin internet y a poder ser otro PC para encontrar esta última palabra. En este punto recomiendo crear un Linux Live USB que podemos generar de manera muy sencilla por medio de esta guía, vídeo incluido:
https://blockmit.com/privacidad/como-crear-un-linux-live-usb

3º – En el entorno seguro y sin internet, ejecutar el archivo «palabra24(bip39).html» guardado en un pendrive.

generar-semillas-bip39-con-dados - palabra24bip3901

4º – En la casilla de calculo introducir las 23 palabras generadas con un espacio entre palabras.

generar-semillas-bip39-con-dados - palabra24bip3902

5º – Pulsa «CALCULAR» y espera unos segundos al resultado.

generar-semillas-bip39-con-dados - palabra24bip3903

6º – Queda apuntarlo, able en este caso, cerrar el navegador y reiniciar el PC sin conectar a Internet por precaución.

Con esto se tendrían las 24 palabras para el SEED BIP39 lista para ser usada en cualquier billetera compatible. Importante reseñar el añadir la «passphrase» (frase adicional), para generar las direcciones.

Esta frase que esta fuera de las 24 palabras permitirá tener una mayor seguridad ante robos de estas palabras, pero si esta frase o palabra se olvida, no se podrán recuperar los fondos ni las direcciones. Aquí una pequeña guía sobre las passphrase y su importancia:

https://blockmit.com/guias/variadas/passphrase-por-que-es-importante

Consejo final

Si no se tiene suficiente experiencia creando semillas seguras o se tienen dudas sobre crearlas, aconsejo el ir haciendo pruebas apoyandose en la billetera Electrum (bitcoin) que permite restaurar una billetera con la semilla generada y también utilizar el script de Ian Coleman para verificar y generar semillas.

No usar nunca una semilla que se vaya a usar de manera ONLINE, solo para pruebas

Online: https://bip39.net
Offline: https://github.com/iancoleman/bip39/releases (archivo bip39-standalone.html)

generar-semillas-bip39-con-dados - semilla-dados-last-word-04

VÍDEO RELACIONADO

Tabla de palabras

La tabla de palabras se puede descargar de: https://github.com/taelfrinn/Bip39-diceware. Recomiendo el archivo PDF, que esta preparado para imprimir y utilizar en la obtención de la semilla.


Enlaces de interés