¿Cuál es la razón por la que la mayoría de los sitios web limitan a 16 caracteres?
Habría pensado que cuanto más larga sea la contraseña, más difícil será que alguien la descifre.
¿Tiene algo que ver con las colisiones de hash?
Si va a cumplir con CWE-521: Requisitos de contraseña débil . Entonces, todas las contraseñas deben tener una longitud de contraseña mínima y máxima.
Hay dos razones para limitar el tamaño de la contraseña. Por un lado, el hashing de una gran cantidad de datos puede causar un consumo significativo de recursos en nombre del servidor y sería un objetivo fácil para la denegación de servicio. Especialmente si el servidor utiliza una extensión de clave como PBKDF2.
Las otras preocupaciones son el hash ataques de extensión de longitud o el ataque de prefijo contra MD5. Sin embargo, si está utilizando una función hash que no está dañada, como bcrypt o sha-256, esto no debería preocupar a las contraseñas.
IMHO 16 bytes es demasiado pequeño . bcrypt tiene un límite incorporado de 72 caracteres, que es probablemente un tamaño razonable para una función hash pesada. El estiramiento clave utilizado por estas funciones crea la posibilidad de un ataque de complejidad algorítmica o ACA .
¿Cuál es la razón por la que la mayoría de los sitios web limitan a 16 caracteres?
Límite de implementación arbitrario.
Tal vez solo quieran asignar un búfer de 17 octetos (16 caracteres ASCII / 1 octeto + NUL de terminación).
Tal vez creen que tener una contraseña con más de 16 caracteres es inútil o tonto, porque no entienden las contraseñas.
Habría pensado que cuanto más larga sea la contraseña, más difícil será que alguien la descifre.
De hecho. Una contraseña con 16 caracteres alfabéticos independientes aleatorios con una distribución uniforme tiene suficiente entropía. Pero el ser humano es malo al elegir al azar 16 caracteres alfabéticos independientes aleatorios con una distribución uniforme, y terriblemente malo en recordar tales secuencias de caracteres sin sentido , por lo que eligen las contraseñas que pueden recordar, pero con menos entropía por personaje .
Lo que importa es solo la entropía total, no la entropía por carácter. Por ejemplo, una secuencia de palabras de diccionario aleatorias, generadas con un palabra-die (palabra-morir: abrir una página al azar en un diccionario, etc.) es más fácil de recordar que una secuencia de letras obtenidas con un dado de letras.
Dichas contraseñas serán más largas que las secuencias de letras puramente aleatorias, pero serán mucho más fáciles de recordar para una entropía igual; o, si lo prefiere, tendrán mucha más entropía para un esfuerzo igual de memoria mental.
Para una fortaleza adecuada, estas contraseñas hechas de palabras del diccionario probablemente tendrán más de 16 caracteres.
En otras palabras, este límite es estúpido .
¿Tiene algo que ver con las colisiones de hash?
No.
No existe una garantía formal con respecto a las colisiones con contraseñas cortas, pero el impacto práctico de las colisiones hash no existe.
Lea otras preguntas en las etiquetas passwords password-policy entropy