Considere la siguiente cuenta de Ethereum que creé en MyEtherWallet :
{ version: 3,
id: '4447b704-e28c-4e93-8b1d-32f519b46692',
address: '115312fc0ab77a0fb15a66baf51f58baefcee1dd',
Crypto:
{ ciphertext: '299dd3b289bbfa049b42b9e8caff2a37ea9cc0606b33dad64afbb9b8aa5b2bc7',
cipherparams: { iv: 'ab6abe38032296123b16b029cfce8240' },
cipher: 'aes-128-ctr',
kdf: 'scrypt',
kdfparams:
{ dklen: 32,
salt: '2605c6988ea0c68dd8c363e29f815bbabb329a74493abc6766cad31b85b6fa2a',
n: 1024,
r: 8,
p: 1 },
mac: 'f4425caa02c682c74ffe1ba546ddec1f7e85b573848b896ef1e80f09adbc5511' } }
El n
valor de kdfparams
es 1024
. Otras implementaciones parecen tener el número de rondas de hashing establecido en 262144
(mencionado en keythereum ). ¿Son estos parámetros menos seguros? Si es así, ¿en qué medida? ¿Si no, porque no?
Bueno, comencemos:
Primero, AES no es una función HASHING, sino una función criptográfica. No es lo mismo, así que no mezcles ambos.
El número de rondas significa, obviamente, más seguridad. Es un cifrado básico. Cuanto mayor sea el número de transformaciones realizadas, menos vulnerable a los ataques de descifrado y análisis. Pero más rondas significa también más tiempo de ejecución y recursos, por lo que debe encontrar un punto medio en el que optimice la seguridad y los recursos de cómputo. Para mí, 1024 parece un número justo.
En tu caso, el punto más débil es el IV. El IV nunca será un valor fijo, sino aleatorio o pseudoaleatorio, debido a que el uso de un IV fijo hace que su encriptación sea más débil y más vulnerable a los ataques de "criptoanálisis".
Espero que mi respuesta te ayude.
tayvano
Cosas y cosas
kanekidev
Ajoy Bhatia