Ethereum · Keystore JSON
Recuperar la contraseña de un keystore JSON de Ethereum
Es el formato más duro de los cuatro, y conviene saberlo antes de gastar dinero: el keystore estándar usa scrypt con parámetros pensados para que probar una sola contraseña cueste casi un segundo. Aquí el diagnóstico honesto es más importante que en ningún otro caso.
Cómo se llama y qué contiene
Es un fichero de texto con nombre largo, del tipo UTC--2017-06-11T09-22-41.000Z--a1b2c3…, y dentro lleva un JSON con la clave privada cifrada en crypto.ciphertext, la función de derivación en crypto.kdf, sus parámetros en crypto.kdfparams y un mac que permite comprobar si una contraseña es la correcta. Lo generan geth, MyEtherWallet, MyCrypto y casi cualquier herramienta que te diera un «fichero de cartera» para Ethereum.
kdf, y los números de n, r, p, c y dklen. No son secretos, no dan acceso a nada, y con ellos sé el coste exacto por intento. Es la mitad del diagnóstico y te la puedo dar en el mismo día.Los parámetros lo deciden todo
| Lo que pone en el fichero | Qué significa | Intentos por segundo |
|---|---|---|
kdf: scrypt, n: 262144 | Parámetros estándar: 256 MiB de memoria por intento | 1 – 10 |
kdf: scrypt, n: 4096 | Parámetros «light», usados por algunas carteras de móvil | 10² – 10³ |
kdf: pbkdf2, c: 262144 | Sin coste de memoria: la GPU sí ayuda | 10³ – 10⁴ |
La diferencia entre la primera fila y la tercera es de tres órdenes de magnitud, y no depende de ti ni de mí: la fijó la herramienta que generó el fichero. Con scrypt estándar, un espacio de un millón de candidatas son días de cómputo; con diez millones, ya no.
Cuándo tiene solución
- Recuerdas la contraseña a trozos y el espacio de candidatas se queda en unos miles o unas decenas de miles.
- El fichero usa parámetros «light» o
pbkdf2, y entonces caben muchos más intentos. - Tienes tres o cuatro candidatas concretas: probarlas es cuestión de minutos aunque sea scrypt estándar.
- Era una variante de una contraseña que sigues usando o recordando.
Cuándo no
scryptcon parámetros estándar y ninguna pista sobre la contraseña. Con uno a diez intentos por segundo, incluso un millón de candidatas son semanas; ocho caracteres aleatorios son cientos de miles de años.- Perdiste el fichero. La contraseña sin el keystore no sirve para nada.
- El JSON está incompleto o le falta el
mac: sin él no se puede verificar si una contraseña acierta. - No puedes demostrar que la cartera es tuya.