Las claves criptográficas suelen ser valores de longitud fija. Desafortunadamente, los humanos no pueden recordar largas cadenas de números, por lo que usamos contraseñas en su lugar.
Por ejemplo, esta podría ser su clave de 256 bits:
d4f6d068b4e8c4e924ce9b28585a6009672e56d61215e7d9251b5d36283edd5d
No es tan fácil de recordar, ¿verdad?
Sin embargo, lo anterior se generó mediante el cálculo de un hash criptográfico (en este caso SHA256 ) de la palabra "waffles", que es mucho más fácil de recordar. Una función hash toma una entrada de longitud arbitraria y calcula una salida de longitud fija.
En realidad, necesitamos que las funciones de derivación de claves (KDF) tengan propiedades especiales. Una propiedad deseable es que no debería ser computacionalmente computable m
from h
, donde h = KDF(m)
, es decir, es difícil calcular la entrada de la función si solo conoce la salida. Otra propiedad deseable es que la función es computacionalmente costosa (lenta) lo suficiente para hacer que la computación de millones de claves no sea factible, sin degradar el rendimiento para usos legítimos. Como tal, los esquemas KDF especiales como PBKDF2 y bcrypt se usa generalmente para calcular estas claves criptográficas a partir de contraseñas fáciles de recordar.
La única forma práctica de romper una clave generada por una función ideal de derivación de clave fuerte es adivinar las contraseñas probables. Si su contraseña es "contraseña", es probable que se rompa. Si la contraseña es una cadena de 20 letras y números aleatorios, es mucho menos probable que se adivine.
Para responder a la pregunta que hace al final:
Si la contraseña es "pasar", ¿cuál es la clave resultante?
Esto no es realmente una pregunta que tenga mucho sentido. El resultado podría ser cualquier cosa. Hay muchas funciones hash diferentes (MD5, SHA1, SHA256, SHA512, Whirlpool, RIPEMD160, etc.) y muchas funciones diferentes de derivación de claves (PBKDF2, bcrypt, scrypt), que pueden usar sales o HMAC . ¡Las posibilidades son infinitas!