elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Hacking (Moderador: toxeek)
| | |-+  Salts en hashes Bitcoin "wallet.dat"
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Salts en hashes Bitcoin "wallet.dat"  (Leído 11,832 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: Salts en hashes Bitcoin "wallet.dat"
« Respuesta #10 en: 23 Noviembre 2020, 20:58 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:

Código
  1. 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:

Código
  1. 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.

EDITO: Por cierto, muy bueno tu blog https://albertobsd.dev/blog/

Gracias!!

Saludos!
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines