BIP32 recomienda una semilla de 256 bits. ¿Por qué la mayoría de las billeteras de Bitcoin solo usan una semilla de 128 bits?

De acuerdo con la sección "Generación de clave maestra" de BIP32, "se recomiendan 256 bits".

Consulte https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Master_key_generation

¿Por qué BIP32 consideró que 256 bits era el tamaño de semilla recomendado y por qué los autores de tantas implementaciones de billetera Bitcoin consideraron innecesarios los 256 bits?

Respuestas (2)

Las razones de los 3 números:

  • Bitcoin utiliza firmas ECDSA de 256 bits. Estos requieren del orden de 2 128 pasos para encontrar una clave privada a partir de la clave pública conocida. Este es el nivel de seguridad de Bitcoin: nuestro objetivo es exigir siempre que un atacante realice 2 128 pasos. Si la semilla tiene menos de 128 bits de entropía, esto conduce inevitablemente a un algoritmo más rápido, donde un atacante puede simplemente iterar a través de todas las semillas posibles en menos de 2 128 pasos. Por eso, BIP32 requiere al menos 128 bits de entropía .

  • Cuando la semilla tiene menos de 256 bits de entropía (pero más de 128), las claves resultantes también tendrán menos de 256 bits de entropía. Como la criptografía de curva elíptica usa claves con 256 bits completos (a pesar de que hay un atacante más rápido que lo rompe en 2 128 pasos), BIP32 también recomienda 256 bits de entropía .

  • La combinación de clave privada y código de cadena (la "clave privada extendida") en BIP32 tiene un tamaño de 512 bits. Por eso, usar una semilla con más entropía que 512 bits no puede aumentar más la seguridad, es solo información que se desecha. Debido a eso, BIP32 limita la semilla a un máximo de 512 bits de entropía .

Gracias por tu respuesta, Pedro. Sin embargo, no estoy muy claro: como usted dice, tanto las claves públicas (puntos EC de representación comprimida) como las claves privadas (escalares) se representan cada una con 256 bits, pero ambas tienen una potencia de bits efectiva de solo 128 bits. Por lo tanto, ¿por qué hay alguna ventaja en generar claves escalares a partir de una semilla que tiene más de 128 bits de entropía? La única razón por la que puedo pensar es que la fuerza de bits se reduce un poco cuando la semilla se codifica para derivar subclaves, pero eso explicaría una recomendación para una semilla de, por ejemplo, 140 bits en lugar de 256 bits completos.
Bueno, ser capaz de romper una clave EC con solo 2^128 pasos es algo teórico. En la práctica, estos algoritmos tienen compensaciones significativas de memoria/cpu, y en la práctica aún serían mucho más lentos que una búsqueda exhaustiva directa de 2^128 en claves con solo 128 bits de entropía. Supongo que la respuesta es una defensa en profundidad: menos de 128 bits de entropía definitivamente daña la seguridad. Menos de 256 bits pueden doler. Más de 512 bits no pueden ayudar.

Parece una pregunta mejor respondida por el(los) autor(es) de BIP32.

Aparte de eso, es la antigua pregunta de "¿cuánta entropía" necesito?

Esta es una lectura bastante interesante sobre: ​​128 bits en general. https://crypto.stackexchange.com/questions/48256/cuánta-entropía-necesita-para-una-generación-de-certificado-seguro

También como regla general: cuando inserta 128 bits de entropía en un sistema, también forma el límite superior para la entropía de cualquier cosa derivada de él.

Si se me permite especular sobre la intención del autor, probablemente se recomienden 256 bits porque las claves eventuales tienen ese tamaño exacto, y de esa manera la entropía coincide con el tamaño de la clave.

Gracias por la idea, le envié un correo electrónico al autor de BIP32 para preguntarle si consideraría responder esta pregunta en stackexchange.