PHP: ¿Password_hash / Argon2i trunca efectivamente las contraseñas después de cierta longitud?

0

Si no estoy equivocado, de forma predeterminada, password_hash con PASSWORD_ARGON2I de PHP genera un hash alfanumérico de 43 caracteres, entre otras cosas. Si bien esto significa que las contraseñas simples que tienen menos de 43 caracteres, o aquellas que usan solo caracteres alfanuméricos (o menos) se cifrarían lo suficiente, me gustaría saber si esto resulta efectivamente en contraseñas después de que se haya truncado la longitud de un certificado. Además, ¿cómo afecta a las contraseñas de suficiente longitud que utilizan caracteres especiales?

¿Por qué no sería más seguro usar un hash más largo?

    
pregunta Dwarf Vader 25.03.2018 - 21:14
fuente

1 respuesta

1

Argon2 es una función de derivación de claves o KDF. Está diseñado para ser computacionalmente costoso y requiere una gran cantidad de memoria de trabajo para dificultar los ataques de fuerza bruta. Internamente, Argon2 usa una función hash rápida y criptográficamente segura llamada Blake2b .

Una función hash toma una entrada de longitud arbitraria (el mensaje ) y la asigna a una salida de longitud fija (el resumen ). Cuando cambia un solo bit en el mensaje, se espera que el 50% de los bits en el compendio cambie. Esto significa efectivamente que cualquier cambio en la entrada da como resultado una salida completamente diferente. Debido a que el compendio es un tamaño fijo, el principio de casillero dicta que habrá algunos mensajes distintos que inevitablemente resultarán en el mismo resultado digerir. Una función hash criptográficamente segura garantiza que no haya una manera matemática de predecir qué entradas darán como resultado salidas idénticas. Cualquier técnica que facilite la búsqueda de salidas idénticas es un ataque de colisión.

Un ataque de colisión es cualquier ataque contra una función hash f donde se encuentra un par de entradas m ≠ m ' y f (m) = f ( m ') . Una salida codificada en base64 de 43 caracteres es de 256 bits de datos. Debido a la paradoja de cumpleaños , la resistencia a la colisión de un resumen de n bits (un resumen con un espacio de teclas de 2 n ) es 2 n / 2 . Esto significa que la resistencia a la colisión de un resumen de 256 bits será 2 256/2 = 2 128 . En Crypto.SE se proporciona una explicación más matemática de las colisiones de la función hash y la paradoja de cumpleaños.

En un sentido de la teoría de la información, sería más seguro utilizar un resumen de salida más grande en que el espacio de salida sería más grande. En la práctica , la resistencia a la colisión de 128 bits es más que suficiente.

    
respondido por el forest 31.03.2018 - 08:08
fuente

Lea otras preguntas en las etiquetas