¿Qué es la "semilla de palabra" de billetera que se usa comúnmente en clientes de billeteras populares y qué hace?

He estado usando una versión bastante antigua de Multibit classic y recientemente decidí actualizar. Probé Multibit HD y Electrum y me di cuenta de que ambos me tenían configurando una billetera con una "semilla de palabra". Es solo una cadena de palabras aleatorias que aparentemente se usa en un algoritmo. La pregunta es, ¿qué hace exactamente? Alguien me dijo que genera claves privadas para ti, y todo lo que necesitas es esa palabra semilla y podrás restaurar/generar todas tus claves privadas. Como funciona esto exactamente? ¿Qué algoritmo se está utilizando en la semilla para generar las claves?

Estas palabras son aparentemente muy importantes, como advierte Multibit en su sitio :

Para restaurar su billetera y recuperar su bitcoin, debe tener las palabras de su billetera.

Con las palabras de tu billetera, puedes recuperar tu bitcoin. Debe mantener seguras las palabras de su billetera, porque cualquiera que conozca las palabras de su billetera puede robar su bitcoin.

Las palabras semilla parecen ser un reemplazo de las claves privadas, según lo que dice Multibit sobre ellas. Personalmente, estoy bastante apegado a la idea de tener mis claves privadas, entonces, ¿por qué debería contentarme con esta palabra semilla? Aparentemente, algunos piensan que es lo suficientemente seguro: ¿Es la frase inicial de 12 palabras lo suficientemente segura? , pero ¿es lo suficientemente utilizable?

Estas preguntas: ¿una billetera que contiene varias direcciones tiene una sola clave privada? y ¿Por qué las mismas 12 palabras pueden producir diferentes semillas en un archivo de billetera Electrum? insinúa lo que está sucediendo aquí, pero le faltan detalles. Parece que la frase es carteras "deterministas jerárquicas", de ahí el "HD" en "Multibit HD".

Esta pregunta expresa exactamente mis preocupaciones: ¿Es importante tener una copia de seguridad sin cifrar de la clave privada?

Respuestas (2)

Con las billeteras HD , se puede usar una sola clave para generar un árbol completo de pares de claves. Esta clave única sirve como la "raíz" del árbol. La palabra semilla es simplemente una forma más comprensible para los humanos de expresar la clave utilizada como raíz, ya que se puede convertir algorítmicamente en la clave privada raíz. Esas palabras, en ese orden, siempre generarán exactamente la misma clave.

Esa clave única no reemplaza a todas las demás claves privadas, sino que se utiliza para generarlas . Todas sus direcciones todavía tienen diferentes claves privadas... pero todas pueden restaurarse con una sola clave.

Compare esto con las carteras no deterministas. En una billetera no determinista, cada clave se genera aleatoriamente por sí sola y no se genera a partir de una clave común. Por lo tanto, cualquier copia de seguridad de la billetera debe almacenar todas y cada una de las claves privadas utilizadas como dirección... así como un búfer de 100 o más claves futuras que pueden haber sido entregadas como direcciones pero que aún no han recibido pagos.

Una billetera determinista jerárquica no necesita respaldar tantos datos. Las claves privadas de todas las direcciones que ha proporcionado se pueden volver a calcular dada la clave raíz. Esa clave raíz, a su vez, se puede volver a calcular ingresando la palabra semilla.

BIPS relevantes:

https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki

Gran trabajo hasta ahora. Gracias. De interés específico, quiero saber exactamente cómo la palabra semilla se convierte en un árbol de clave privada. Digamos que comenzamos con la semilla this is the word seed. Cómo se usa y con qué algoritmos hacer el árbol de claves privadas. Entonces, ¿puedo decir con confianza que puedo generar ese árbol sin la billetera que lo generó primero?
Creo que está definido en BIP 39: github.com/bitcoin/bips/blob/master/…
Quiero saber eso también, cuando tengo una semilla que me da un software de billetera, en términos generales, ¿se puede importar esa semilla en otra billetera y restaurar todas mis monedas en caso de que desaparezca el proveedor inicial de la billetera?
Si ambas billeteras se adhieren a BIP 39, entonces deberían ser compatibles. Si no, no puedo decir.

Respuesta principal a su pregunta principal en el título: La cadena de palabras, conocida como la "frase de recuperación" de la billetera criptográfica, o "palabras mnemotécnicas" o "palabras semilla" son simplemente un formato legible por humanos de la entropía subyacente legible por máquina, que es un gran número aleatorio, que se utiliza para crear la bóveda criptográfica.

respuesta a su segunda y tercera pregunta: los pasos exactos desde la semilla hasta las direcciones de billetera incluyen el uso de una función hash (HMAC) y extensión de clave con PBKDF2 con valores predeterminados para el campo de frase de contraseña.

[Excerpt from BIP39 specification "To create a binary seed from the mnemonic, we use the PBKDF2 function with a mnemonic sentence (in UTF-8 NFKD) used as the password and the string "mnemonic" + passphrase (again in UTF-8 NFKD) used as the salt. The iteration count is set to 2048 and HMAC-SHA512 is used as the pseudo-random function. The length of the derived key is 512 bits (= 64 bytes)." ]

La especificación BIP39 incluye un esquema de notación que utiliza una lista de palabras con 2048 valores (con soporte para varios idiomas) como tabla de búsqueda.

La forma en que esto funciona es cuando se crea una bóveda criptográfica, una cierta cantidad de datos binarios subyacentes es generada por el generador de números aleatorios criptográficamente seguros (CSPRNG) del software de billetera que recopila bits aleatorios del dispositivo del usuario localmente, como 128 bits para un Frase de recuperación mnemotécnica de 12 palabras.

Esas 12 palabras son simplemente una representación de los 128 bits + una suma de verificación de 4 bits (totalizando 132 bits, basados ​​en 12 grupos de 11 bits, donde cada grupo representa un número de 11 bits en la lista de 2048 números de 11 bits donde cada número corresponde a una palabra única en la lista). Por lo tanto, las palabras son solo una manera fácil de recrear ese número, ya que las palabras se pueden manejar más fácilmente (es decir, escribir, recitar, anotar, almacenar y tratar en comparación con escribir o recitar un número binario de 132 bits).

  • Otra opción para la copia de seguridad en lugar del mnemotécnico (aunque no se sugiere), como alternativa o complemento es hacer una copia de seguridad de la entropía inicial, ya sea en formato binario o hexadecimal, o cualquier formato base que le convenga, siempre que no haya ceros a la izquierda. perdió.

Por ejemplo, el siguiente nemotécnico a continuación se basa en la siguiente entropía:

132 bits of initial entropy:  011001011001101110001010000000111011111110111011100000001100110111001101110000111100001110000011110101001011000011010101000001011100
Length of total bits: 132 bits divided into 12 groups of 11 bits
['01100101100', '11011100010', '10000000111', '01111111011', '10111000000', '01100110111', '00110111000', '01111000011', '10000011110', '10100101100', '00110101010', '00001011100']
Corresponding index values for each group (in base 10):
[812, 1762, 1031, 1019, 1472, 823, 440, 963, 1054, 1324, 426, 92]
Corresponding mnemonic based on BIP39 english wordlist:
grain sword liberty legal retreat group damage journey long pitch crystal argue

La siguiente herramienta se puede utilizar con fines educativos con frases de recuperación: https://iancoleman.io/bip39/ (nota: soy colaborador de esa herramienta en Github)

Creo que es mejor referirse a las palabras mnemotécnicas como las "claves" de la "bóveda de cifrado" (y no la clave privada de una billetera o dirección de billetera, que es un contexto diferente donde la clave privada se multiplica con un punto generador para calcular la dirección pública, usando criptografía de curva elíptica). Nuevamente, una bóveda criptográfica BIP39 que usa BIP44 puede contener múltiples criptomonedas (cuentas con diferentes rutas de derivación) y donde cada criptomoneda puede contener hasta 2 mil millones de direcciones secundarias derivadas, de sus claves públicas/privadas extendidas basadas en la estructura de billetera HD según BIP32 .

Con respecto a su pregunta sobre seguridad/usabilidad: en términos de si un mnemotécnico de 12 palabras es seguro, podemos medir que su seguridad teórica máxima en bits es como máximo 128 bits (usando la ecuación de entropía de Claude Shannon donde (2048^12 = 2 ^132)-4 bits = 2^128), dado el tamaño de la entropía inicial, y como los últimos 4 bits son deterministas, restamos eso del total de bits que representa el mnemotécnico (ya que está basado en hash, que es un significa ralentizar a alguien por fuerza bruta al intentar 12 palabras al azar).

  • De lo contrario, eliminar solo un bit reducirá la seguridad a la mitad, ya (2**127)*2 == 2**128que 128 bits de seguridad es solo la raíz cuadrada de un mnemotécnico de 24 palabras que tiene 256 bits de seguridad desde (2**128)*(2**128) == 2**256.

En términos de si estos son lo suficientemente seguros, depende de las capacidades de un atacante. Con el algoritmo de Grover ejecutándose en una computadora Quantum, una búsqueda que normalmente tomaría n tiempos podría acelerarse hasta la raíz cuadrada de n tiempos, por lo que una seguridad de 128 bits podría reducirse a 64 bits utilizando los supuestos clásicos de seguridad informática. mientras que una clave de 256 bits bajo un ataque cuántico de este tipo podría reducirse a 128 bits de seguridad en una computadora clásica. También existen amenazas potenciales del algoritmo de Shor que se ejecuta en una computadora cuántica lo suficientemente rápida, así como la versión cuántica de la factorización de curva elíptica (ECM) conocida como GEECM, que podría aplicarse a las bóvedas criptográficas de bitcoin, así como a las claves privadas.

Con respecto a su pregunta sobre las billeteras HD:

No es factible hacer una copia de seguridad de todas las claves privadas posibles en una billetera HD, ya que podría haber 2 mil millones de ellas por cada criptomoneda admitida, cada una derivada de las claves principales públicas/privadas extendidas (xPub y xPrv). Por lo tanto, las palabras mnemotécnicas sirven como una gran conveniencia para la custodia y recuperación de esas claves privadas/públicas, ya que pueden derivarse fácilmente a partir de las palabras mnemotécnicas o la entropía subyacente que representan las palabras. Y luego las claves públicas/privadas extendidas se pueden usar para recrear todas las claves privadas/públicas secundarias.