Salts en hashes Bitcoin "wallet.dat"

Iniciado por MA40, 9 Noviembre 2020, 13:20 PM

0 Miembros y 1 Visitante están viendo este tema.

AlbertoBSD

Cita de: MA40 en 23 Noviembre 2020, 20:03 PM
¿Por qué utiliza entonces salts Bitcoin Core en sus "wallet.dat"? Supongo que para que los hashes sean siempre diferentes aun utilizando la misma contraseña. Eso protege al menos de las tablas arco iris.

Exacto, sin los SALT seria muy facil precalcular todas las tablas con los HASH para todas las contraseñas y guardar las mismas tablas  para futuras wallets "encontradas". Ten en cuenta que el proceso es el siguiente:

Tu passphrase es combianada con el SALT (8 bytes random) y es Iterada una N cantidad veces en un proceso que se llama derivacion de llave una función mas o menos asi:

keyderivation("sha512",passphrase,salt,N);

Este proceso hace N-1 veces la operación SHA512 del resultado SHA512(passphrase + salt);

Esto te da un arreglo de 64 BYTES o un string de 128 caracteres en hexadecimal

Y con ese resultado procede en un proceso aparte a Descifrar tu MasterKEY, la masterKEY descifrada se utiliza para descifrar tus llaves Privadas con las cuales se pude mover el BTC.

Con el proceso Anterior imagina que tienes 2 carteras con SALT diferente y password "Hola" pero con el mismo numero de Iteraciones N

el proceso para la cartera A te dara un arreglo de  64 BYTES totalmente distinto parta la cartera B, incluso teniendo la misma contraseña.

Ahora imagina que Quitas el SALT de la ecuación quedaría algo asi:

keyderivation("sha512",passphrase,"",N);

Con las mismas carteras A y B, el proceso te daría el mismo juego de 64 bytes para el mismo password.

Esa es la razón del SALT.

Ahora imagina si a este proceso le agregas un numero de iteraciones N muy grande, mi cartera personal de BTC tiene un N de mas de 100 Millones (lo normal es que sea entre 100 mil y 200 mil), incluso con los GPU mas rapido solo podrias probar 1 o 2 passphrase por segundo, lo normal es que sean unas 2000 palabras por segundo.

Cita de: MA40 en 23 Noviembre 2020, 20:03 PM
EDITO: Por cierto, muy bueno tu blog https://albertobsd.dev/blog/

Gracias!!

Saludos!
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW