La mayoría de los propietarios de Ledger Nano en algún momento empiezan a preguntarse si existe la posibilidad de personalizar su semilla. Algunos podrían ir incluso más allá e intentar utilizar palabras elegidas al azar durante el proceso de recuperación. En tales casos, después de confirmar la última palabra, es casi seguro que verán el mensaje:
"Recovery phrase is invalid, retry"
¿Significa esto que es imposible crear una nueva billetera con su propio conjunto de palabras personalizado?
He aquí una agradable sorpresa: es posible, aunque con ciertas limitaciones. Pero empecemos desde el principio.
La primera restricción es el requisito de que todas las palabras deben estar en la lista estándar BIP39.
(Propuesta de mejora de Bitcoin - número 39). Puede descubrir exactamente qué son las propuestas de mejora de Bitcoin en este artículo de Wikipedia.
BIP39 no es más que un conjunto de 2048 palabras, elegidas de tal manera que las primeras 4 letras de cada palabra sean únicas. Esta regla se aplica incluso a las palabras de tres letras.
Esta propiedad hace que sean más fáciles de recordar al crear una secuencia de varias palabras, que es exactamente lo que es su semilla.
La segunda restricción es un requisito para la última palabra de la secuencia. Es una suma de verificación específica determinada por el resto de elementos de la secuencia y no puede elegirlo usted mismo. Esta es exactamente la razón por la que usted ve un mensaje de error cada vez que intenta ingresar palabras elegidas al azar como semilla para su Ledger Nano. Por lo general, la condición de suma de verificación se cumple con más de una sola palabra; sin embargo, la posibilidad de encontrar uno válido simplemente adivinando es increíblemente pequeña. La cantidad de palabras que satisfacen la condición de suma de verificación está estrictamente relacionada con la cantidad total de palabras iniciales. En el caso de una semilla de 24 palabras (la opción más segura), siempre hay exactamente 8 palabras posibles que pueden servir como suma de verificación. Por lo tanto, la probabilidad de extraer aleatoriamente una válida del conjunto BIP39 de 2048 palabras es exactamente 8 en 2048, o apenas un 0,39 %. No es de extrañar que haya visto un mensaje de error.
Entonces, ¿cómo podemos encontrar la suma de verificación adecuada para una secuencia de nuestra elección? Por ejemplo, tomemos un conjunto aleatorio de 23 palabras que cumplen con el estándar BIP39:
Cada palabra tiene un índice, que es un número basado en su orden alfabético. Es importante comenzar la numeración desde 0. Luego, cada índice debe expresarse como un valor binario. Dado que la lista BIP39 contiene 2048 elementos, cada índice de palabras debe constar de 11 bits. Así encontramos:
En el siguiente paso, concatenamos todos los índices, preservando su orden de aparición. Esto nos da una secuencia binaria de 253 bits:
El resultado obtenido lo complementamos con 3 bits adicionales de nuestra propia elección.
¿Recuerda, como dijimos, que la semilla de 24 palabras tiene exactamente 8 resultados de suma de verificación posibles?
El número 8 es sólo una simple consecuencia de esos 3 bits.
Los 8 resultados los obtendremos simplemente poniendo aquí 000, 001, 010, 011, 100, 101, 110 y 111.
Para este ejemplo elegimos: 000.
Lo concatenamos al final, lo que da como resultado una palabra binaria de 256 bits:
El siguiente paso es calcular el hash SHA256 de dichos datos binarios preparados.
El algoritmo SHA256 (algoritmo de hash seguro, salida de 256 bits) es una parte esencial de la tecnología blockchain.
Puede encontrar más información sobre el SHA256 en el artículo de Wikipedia sobre el algoritmo SHA-256.
Como resultado de este cálculo obtenemos la siguiente palabra hexadecimal:
El siguiente paso es extraer los primeros 8 bits del resultado anterior. Por lo tanto, tomamos los primeros 2 caracteres hexadecimales: 27.
Corresponden a:
Una vez más utilizamos los mismos 3 bits que hemos elegido antes. Esta vez los conectamos al frente de la cadena binaria extraída. En consecuencia, obtenemos:
que es el valor binario 39. Este es un índice BIP39 de la palabra de suma de verificación que estamos tratando de encontrar. No olvides que la numeración del índice comienza desde '0'. Entonces, si usa una lista de palabras BIP39 con numeración estándar que comienza en '1', entonces, el número de índice real será 40. Encontramos el índice adecuado en la lista BIP39 y obtenemos la palabra: agent Finalmente, la semilla de 24 palabras que contiene 23 palabras de nuestra propia elección es:
Para las combinaciones restantes de 3 bits, la última palabra de suma de comprobación es:


