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 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

Un dado 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 tener un equipo informático para sacar esta última palabra de manera segura y sencilla.

1º – Descargar los siguientes archivos de la web original con botón derecho encima de cada enlace y guardarlo en una carpeta del PC:

http://seedpicker.net/calculator/last-word.html
http://seedpicker.net/calculator/seedpicker.css
http://seedpicker.net/calculator/fontawesome.min.css
http://seedpicker.net/calculator/bulma.min.css
http://seedpicker.net/calculator/bundle.js

2º – Buscar un entorno seguro, sin internet y a poder ser otro PC si es posible, 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 «last-word.html» guardado en un pendrive.

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

4º – En la casilla de «Fill in your first 23 words (space separated)» pegar las 23 palabras generadas.

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

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

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

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.

Consejo final

Si no se tiene suficiente experiencia creando semillas seguras, aconsejo el ir comprobando que lo creado sea correcto y apoyarse con la billetera Electrum (bitcoin) que permite restaurar una billetera con la semilla generada. Y también otra opción es usar el script de Ian Coleman para verificar y generar semillas

No usar 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