¿Las claves privadas de electrum tienen una longitud de 512 o 256 bits?

Recientemente estuve revisando el código fuente de python para electrum y encontré las siguientes líneas de código en el archivo mneumonic.py a partir de la línea 130:

def mnemonic_to_seed(self, mnemonic, passphrase):
        PBKDF2_ROUNDS = 2048
        mnemonic = normalize_text(mnemonic)
        passphrase = normalize_text(passphrase)
        return pbkdf2.PBKDF2(mnemonic, 'electrum' + passphrase, iterations = 
              PBKDF2_ROUNDS, macmodule = hmac, digestmodule = 
               hashlib.sha512).read(64)

Vemos claramente que devuelve una semilla de 64 bytes o 512 bits en lugar de lo que todos sabemos que debería ser una clave privada de bitcoin: 256 bits. ¿Es esta la función final que se llamará para la generación de claves privadas o hay pasos o funciones que me perdí?

La frase semilla creada por Electrum tiene 132 bits de entropía. Esto significa que proporciona el mismo nivel de seguridad que una clave privada de Bitcoin (de 256 bits de longitud). De hecho, una clave de curva elíptica de longitud n proporciona n/2 bits de seguridad.

Respuestas (2)

¿Es esta la función final que se llamará para la generación de claves privadas o hay pasos o funciones que me perdí?

Te estás perdiendo muchos pasos.

El valor semilla es 512 bits porque más bits es más seguro, y BIP 32 especifica que se debe usar un valor semilla entre 128 y 512 bits. No importa cuál sea la longitud del valor semilla porque de todos modos se codificará y el resultado es 512 bits.

BIP 32 usa 512 bits porque el valor se divide por la mitad para dos valores de 256 bits. Uno de ellos es la clave privada, el otro es el código de cadena.

Esa es la función de estiramiento clave que agrega un poco de entropía a la semilla. El mnemotécnico pasa por esa función y luego la salida pasa por bip32_root() que lo ejecuta a través de sha512 nuevamente. BIP32 requiere un poco de 512 bits para que haya suficientes bits para el código de cadena y la clave privada maestra.

De todos modos, la semilla electrum es de 135 bits de manera efectiva .