Posible colisión con contraseña hash

2

Normalmente, el tamaño de la contraseña se fija mediante la función hash en la que se proporciona la contraseña, ¿no?

De lo contrario, si el tamaño de la contraseña es más grande que el tamaño del resultado de hash, debería haber una colisión potencial, ¿verdad?

Ejemplo: considere la función Hash SHA-1, el tamaño del resultado es de 160 bits (o 20 bytes). Si el tamaño de la contraseña es mayor que 20 bytes, entonces hay al menos dos contraseñas posibles para el mismo hash.

    
pregunta Kruncho 09.06.2015 - 12:27
fuente

3 respuestas

6

De lo que estás hablando se conoce como el principio del casillero : si tienes n posibles contraseñas y una función de hash con m posibles salidas, donde n > m , siempre habrá algunos valores de entrada que producen los mismos hashes de salida.

La pregunta entonces es: ¿esto importa? Con un espacio de salida de hash de 2 160 valores posibles, una colisión accidental tiene una probabilidad de alrededor de 6.842 × 10 -49 . No mucho. Esto se vuelve más interesante cuando te fijas en los ataques de cumpleaños , porque las probabilidades son mucho más altas, pero en general aún se considera inviable. Colisiones de 160 bits que utilizan métodos ingenuos como la fuerza bruta.

En realidad, es más probable que un atacante inteligente se centre en vulnerabilidades dentro de la función hash que reducen El cálculo necesario para encontrar una colisión. Pero, en la arena del almacenamiento de contraseñas, esto debe ser en su mayor parte discutible: las contraseñas son fáciles de descifrar si solo las hash con SHA1, ya que las GPU pueden ejercer fuerza bruta a una tasa de miles de millones de hashes por segundo debido a su naturaleza masivamente paralela.

Si desea almacenar contraseñas de manera segura, no use un hash. Utilice un algoritmo de derivación de claves diseñado para el almacenamiento de contraseñas, como PBKDF2 o crypt . También deberías echar un vistazo a una respuesta relacionada que escribí sobre hashes salados, que dice en la historia de cómo progresamos de hashes, a hashes salados, a KDF modernos, y las razones detrás de cada paso de defensa y ataque.

    
respondido por el Polynomial 09.06.2015 - 12:47
fuente
1

el tamaño de la contraseña se fija mediante la función hash en la que se proporciona la contraseña

- > No.

Las contraseñas de hash de las funciones hash de cualquier longitud a una cadena de longitud más pequeña. Apenas chocan.

Lo que te puede prometer una colisión es que hash 2 ^ 160 + 1 número de contraseñas diferentes, entonces al menos un hash debe colisionar. Solo el hash de dos contraseñas de longitud superior a 20 bytes no chocará.

    
respondido por el Johnny Wong 09.06.2015 - 12:42
fuente
0

Sí, estadísticamente tienes razón. Pero considere el número de contraseñas con una longitud de 160 bits, su 2 ^ 160 = 1461501637330902918203684832716283019655932542976

Y la colisión puede ocurrir incluso entre dos contraseñas de 3 caracteres de longitud :)

    
respondido por el Romeo Ninov 09.06.2015 - 12:41
fuente

Lea otras preguntas en las etiquetas