Por lo general, soy la persona que discute contra los límites estúpidos, pero me pregunto: ¿quién usa en serio contraseñas de más de 72 caracteres? Una contraseña tan larga sería muy poco práctica de escribir, por lo que es casi seguro que es un robot (o ctrl + v de un administrador de contraseñas). A los robots * y a los administradores de contraseñas no les importa si tienen que recordar cadenas alfanuméricas aleatorias en lugar de frases de contraseña.
Suponiendo que no utilicen caracteres especiales, es decir 26 + 26 + 10 = 62 posibilidades por carácter y digamos hasta 72 caracteres. Esto permite 62^72 = 1.13*10^129
de posibilidades. Al convertir a bits de entropía, un número mucho más manejable, obtenemos log(62^72)/log(2) = 428.7
bits de entropía.
La última vez que lo verifiqué, las claves de 256 bits se consideran razonables incluso después del cuántico, por lo que esto debería ser abundante .
En el raro caso de que sea una frase de contraseña, tomemos un diccionario muy estándar: el predeterminado en mi sistema Debian. Después de algunas podas estándar (insensibilidad a mayúsculas y minúsculas; eliminar variantes posesivas como "horse's" en lugar de "horse") contiene aproximadamente 50k palabras. Estoy menos seguro de estos cálculos, pero creo que esto significa que cada palabra, cuando se selecciona de forma aleatoria (como debería hacerse con las frases de contraseña), proporciona aproximadamente log(50000)/log(2)=15.6
bits de entropía. La longitud promedio de las palabras en general se considera 5 caracteres, más un espacio, por lo que 72 son aproximadamente 12 palabras.
Esto se reduce a 15.6*12 = 187.3
bits de entropía en una frase de contraseña de 72 caracteres. Como límite inferior, porque mi dictado no contiene todas las palabras. Yo diría que eres bueno.
El verdadero límite tonto son los 72 caracteres de bcrypt, pero si es con eso que tienes que trabajar, creo que es un límite razonable para los usuarios.
* Bien, bien, tal vez a los robots les importe. Pregúntame de nuevo cuando la Enmienda de Derechos de Robot esté allí.
Editar: estaba respondiendo el título. Para abordar otras preguntas en su publicación:
Entonces, la pregunta es: ¿es mejor establecer simplemente el límite de longitud de la contraseña en 72 caracteres o permitir que los usuarios elijan contraseñas más [...] largas aunque sean truncadas?
No trunques en silencio. No hay ventaja en esto. O recibirás solicitudes de soporte "boo-hoo, no puedo usar una contraseña de 105 caracteres" o, finalmente, alguien se dará cuenta "¡Dios mío, solo tengo que ingresar el primer 56% de mi contraseña para que funcione! ¿Qué es esta mierda ?! ??? ". Creo que el último realmente tiene un punto razonable y el primero será extremadamente raro (si alguna vez).
El primer criterio es la seguridad y solo entonces la usabilidad
Creo que podría interesarle conocer los certificados TLS del lado del cliente.