Generación de frase de contraseña mnemotécnica en billeteras / billeteras de hardware: ¿falla de seguridad?

¿No sería más ahorrativo generar una frase de contraseña mnemotécnica manualmente simplemente tomando palabras aleatorias de una tabla de búsqueda?

Mis pensamientos:

un creador de billetera puede accidentalmente o a propósito usar semillas deterministas para crear la frase de contraseña mnemotécnica

¿Cuál es tu opinión acerca de esto?

Estoy usando mycelium, por lo que, en teoría, podría verificar el código yo mismo, pero también uso ledger nano s, por lo que no hay una forma de verificar que la amenaza anterior no esté implementada en la billetera HW, ¿correcto?

Respuestas (1)

¿No sería más ahorrativo generar una frase de contraseña mnemotécnica manualmente simplemente tomando palabras aleatorias de una tabla de búsqueda?

No, no lo sería. Este método puede incluso ser inseguro si en realidad lo está haciendo manualmente.

Un mnemotécnico BIP 39, si se genera correctamente, es seguro. Es igual de seguro si también elige palabras al azar. Esto se debe a que ambos métodos requieren un generador de números aleatorios criptográficamente seguro. Para BIP 39, usa un CSRNG para generar un número aleatorio de 256 bits y lo divide para producir el mnemotécnico. Hay una suma de verificación adicional que hace que el mnemotécnico represente un número de 264 bits.

En su método, genera 24 números aleatorios de 11 bits (porque hay 2048 palabras en la lista de palabras) y usa cada número para elegir la palabra a usar. Si bien esto es más aleatorio, pierde la suma de verificación. Además, es solo 8 bits más aleatorio, lo que no es mucho más aleatorio. De cualquier manera, el mnemotécnico es lo suficientemente seguro, no por el método utilizado, sino porque se utilizó un CSRNG para generar los números.

Sin embargo, si realmente lo hace manualmente, es probable que sea inseguro. Si está generando los números usted mismo (es decir, sin la ayuda de un CSRNG), entonces su semilla no será lo suficientemente aleatoria. Los humanos son una fuente notoriamente mala de entropía, pero usted quiere que su mnemónico tenga una buena entropía. Así que hacer esto manualmente no es una muy buena idea.

Aunque podría usar un dado de 6 caras para generar aleatoriamente sus números, eso tampoco puede ser necesariamente una buena fuente de entropía. También requeriría unos cientos de rollos para tener una cantidad suficiente de bits.

un creador de billetera puede accidentalmente o a propósito usar semillas deterministas para crear la frase de contraseña mnemotécnica

Podrían, pero se notarían muy rápidamente. La billetera es de código abierto y la gente realmente audita el código fuente. La gente se daría cuenta si se produjera un cambio que modificara su generación de números aleatorios.

pero también usando ledger nano s, por lo que no hay realmente una forma de verificar que la amenaza anterior no esté implementada en la billetera HW, ¿correcto?

No necesariamente. La mayor parte del firmware del Ledger Nano S es de código abierto. Y la semilla se genera utilizando el elemento seguro que tiene un True RNG que cumple con AIS-31 Class PTG.2. Puede verificar que el firmware llame a las funciones correctas en el SDK de Secure Element para usar TRNG para la generación de semillas.

Desafortunadamente, el firmware de Secure Element es de código cerrado, sin embargo, no creo que Ledger pueda modificar ese firmware. Creo que solo obtienen un blob binario para el firmware del fabricante del chip, STMicroelectronics.