¿Qué es una función haseadora?
Las funciones hasheadoras son diferentes de la encriptación. No hay clave y se supone que son imposibles (o computacionalmente imprácticas) de descodificar.
Una de estas toma un input de cualquier tamaño y crea un resumen de la información. El resultado tiene una longitud fija. Es difícil predecir el resultado dado el input y viceversa. Los buenos algoritmos de hashing son rápidos de computar e increíblemente lentos de deshacer. Cualquier ligero cambio aunque sólo sea un bit causará un gran cambio en el resultado.
Algunos
¿Por qué es importante hashear?
El hashing es esencial para proteger la integridad de los datos y asegurar la confidencialidad de las contraseñas.
Cuando te logueas en un sitio web, se usa hashing para comprobar tu contraseña. Por buenas razones de seguridad, el servidor no almacena tu contraseña sino el hash. Para darte acceso, se compararán los hashes de tu contraseña y el guardado por el servidor.
¿Qué es una colisión de hashes?
Una colisión de hashes es cuando dos inputs diferentes dan el mismo resultado. Las funciones hasheadoras están diseñadas para evitar esto. Además previenen a usuarios de hacerlo adrede. Sin embargo, como el número de inputs es prácticamente ilimitado y los resultados son limitados, esto lleva al efecto pigeonhole (encasillamiento).
Por poner un ejemplo numérico: Si una función hash produce un valor hash de 4 bits. Sólo tenemos 16 valores hash. El número total de valores hash posibles es 2^numero_de_bits = 2⁴ = 16. La probabilidad de colisión es bastante alta.
El efecto pigeonhole declara que el número de ítems (pigeons) es mayor que el numero de casillas (pigeonholes), es lo mismo que pasa si juntas a 400 personas y preguntas por su cumpleaños, al menos dos cumplirán el mismo día, es inevitable.
MD5 y SHA1 han sido atacados y ahora son considerados inseguros dado a la habilidad de generar colisiones de hashes. Sin embargo, ningún ataque las ha generado en ambos a la vez. Si comparamos MD5 y SHA1 veremos que son diferentes. Aprende más sobre estos ataques en MD5 ataque de colisión y SHA1 ataque de colisión.
