Casi todas las funciones principales de hash están sujetas a “colisiones” como no lo hizo anteriormente: la creación de un valor de hash idéntico para dos entradas diferentes.
Sin embargo, la probabilidad estadística de que esto suceda es bastante remota – 1/2 ^ 218 – en otras palabras,
1 en 340,282,366,920,938,463,463,374,607,431,768,211,456 basado en una posibilidad aleatoria completa.
- Cómo hacer que tu Gmail sea más seguro
- ¿Es Kaspersky Endpoint Security un producto diferente de Kaspersky Internet Security?
- Si tiene 2 usuarios en una computadora (Admin y Usuario1) y el Usuario1 obtiene un virus, ¿afecta a ambos usuarios o solo al que lo adquirió?
- ¿Cuál es el trabajo de un arquitecto de seguridad?
- Cómo recuperarse de un ataque cibernético
Ahora, eso cambia considerablemente si mantiene todos los hashes, y no solo compara dos hashes generados aleatoriamente entre sí. Entonces, necesitaría generar 2 ^ 64 hashes antes de alcanzar un 50% de probabilidad de colisión. Eso es 18,446,744,073,709,551,616 hashes.
Entonces … sí, es posible, pero también es bastante remoto.
Nota: estos números no son míos: ¿cuántos elementos aleatorios antes de MD5 producen colisiones?
Además, para evitar el tipo de colisión que le preocupa aquí (mismos valores = mismo hash), la mayoría de los sitios usan algo conocido como hash “salado”, que combina algún valor pseudoaleatorio con el valor estático para crear el hash . Por lo tanto, pueden tomar el valor UNIX de fecha / hora de su registro (o el último cambio de contraseña) y agregarlo a su contraseña antes de cifrarla. Esto garantiza que el valor hash de mi contraseña no sea el mismo que el valor hash de su contraseña, incluso si el contenido es idéntico. Y, suponiendo que almacenen el valor pseudoaleatorio en algún lugar, pueden compararlo limpiamente al iniciar sesión.