Pregunta

Puedo entender que imponer una longitud mínima a las contraseñas tenga mucho sentido (para salvar a los usuarios de sí mismos), pero mi banco tiene el requisito de que las contraseñas tengan entre 6 y 8 caracteres, y comencé a preguntarme...

  • ¿No facilitaría esto los ataques de fuerza bruta?(Malo)
  • ¿Esto implica que mi contraseña se almacena sin cifrar?(Malo)

Si alguien con (con suerte) algunos buenos profesionales de seguridad de TI trabajando para ellos está imponiendo una longitud máxima de contraseña, ¿debería pensar en hacer algo similar?¿Cuáles son los pros y los contras de esto?

¿Fue útil?

Solución

Las contraseñas tienen un hash de 32, 40, 128, cualquiera que sea su longitud.La única razón para una longitud mínima es evitar contraseñas fáciles de adivinar.No hay ningún propósito para una longitud máxima.

lo obligatorio XKCD explicando por qué le estás haciendo un flaco favor a tu usuario si impones una longitud máxima:

The obligatory XKCD

Otros consejos

La longitud máxima especificada en un campo de contraseña debe leerse como un ADVERTENCIA DE SEGURIDAD:Cualquier usuario sensato y consciente de la seguridad debe asumir lo peor y esperar que este sitio almacene su contraseña literalmente (es decir,no hash, como lo explica epochwolf).

En ese caso es así:(a) Evite usar este sitio como la plaga si es posible [obviamente conocen nueces sobre la seguridad] (b) Si debe usar el sitio, asegúrese de que su contraseña sea única, a diferencia de cualquier contraseña que use en otro lugar.

Si está desarrollando un sitio que acepta contraseñas, NO ponga un límite tonto de contraseñas, a menos que quiera que le sigan con el mismo pincel.

[Internamente, por supuesto, su código puede tratar solo los primeros 256/1028/2k/4k (lo que sea) bytes como "significativos" para evitar contraseñas gigantescas.]

Permitir una longitud de contraseña completamente ilimitada tiene un gran inconveniente si acepta la contraseña de fuentes que no son de confianza.

El remitente podría intentar darle una contraseña tan larga que resulte en una denegación de servicio para otras personas.Por ejemplo, si la contraseña es 1GB de datos y dedicas todo tu tiempo acéptala hasta que te quedes sin memoria.Ahora supongamos que esta persona le envía esta contraseña tantas veces como usted esté dispuesto a aceptar.Si no tiene cuidado con los demás parámetros involucrados, esto podría provocar un ataque DoS.

Establecer el límite superior en algo así como 256 caracteres parece demasiado generoso para los estándares actuales.

En primer lugar, no dé por sentado que los bancos tienen buenos profesionales de seguridad de TI trabajando para ellos. muchos no lo hacen.

Dicho esto, la longitud máxima de la contraseña no tiene valor.A menudo requiere que los usuarios creen una nueva contraseña (aparte por el momento los argumentos sobre el valor de usar diferentes contraseñas en cada sitio), lo que aumenta la probabilidad de que simplemente las escriban.También aumenta en gran medida la susceptibilidad a ataques, por cualquier vector, desde la fuerza bruta hasta la ingeniería social.

La hoja de referencia de autenticación de OWASP ahora desaconseja el límite máximo de longitud de contraseña

https://www.owasp.org/index.php/Authentication_Cheat_Sheet

Citando el párrafo completo:

Las contraseñas más largas proporcionan una mayor combinación de caracteres y, en consecuencia, hacen que sea más difícil de adivinar para un atacante.

La aplicación debe imponer la longitud mínima de las contraseñas.Las contraseñas de menos de 10 caracteres se consideran débiles ([1]).Si bien la aplicación de una longitud mínima puede causar problemas a la hora de memorizar contraseñas entre algunos usuarios, las aplicaciones deberían animarles a establecer frases de contraseña (frases o combinaciones de palabras) que pueden ser mucho más largas que las contraseñas típicas y, sin embargo, mucho más fáciles de recordar.

La longitud máxima de la contraseña no debe establecerse demasiado baja, ya que impedirá que los usuarios creen frases de contraseña.La longitud máxima típica es de 128 caracteres.Las frases de contraseña de menos de 20 caracteres generalmente se consideran débiles si solo constan de caracteres latinos en minúscula.¡¡Cada personaje cuenta!!

Asegúrese de que cada carácter que escriba el usuario esté realmente incluido en la contraseña.Hemos visto sistemas que truncan la contraseña en una longitud más corta que la proporcionada por el usuario (por ejemplo, truncada a 15 caracteres cuando ingresa 20).Esto generalmente se maneja estableciendo la longitud de TODOS los campos de entrada de contraseña para que tengan exactamente la misma longitud que la longitud máxima de la contraseña.Esto es particularmente importante si la longitud máxima de su contraseña es corta, como entre 20 y 30 caracteres.

Una razón que puedo imaginar para imponer una longitud máxima de contraseña es si la interfaz debe interactuar con muchos backends del sistema heredado, uno de los cuales impone una longitud máxima de contraseña.

Otro proceso de pensamiento podría ser que si un usuario se ve obligado a utilizar una contraseña corta, es más probable que invente galimatías aleatorias que un eslogan o apodo fácilmente adivinable (por sus amigos/familiares).Por supuesto, este enfoque solo es efectivo si la interfaz obliga a mezclar números/letras y rechaza contraseñas que tengan palabras del diccionario, incluidas palabras escritas en l33t-speak.

Una razón potencialmente válida para imponer una longitud máxima de contraseña es que el proceso de hash (debido al uso de una función de hash lenta como bcrypt) lleva demasiado tiempo;algo de lo que se podría abusar para ejecutar un ataque DOS contra el servidor.

Por otra parte, los servidores deben configurarse para descartar automáticamente los controladores de solicitudes que tardan demasiado.Así que dudo que esto sea un gran problema.

Creo que tienes mucha razón en ambos puntos.Si almacenan las contraseñas en formato hash, como deberían, entonces la longitud de la contraseña no afecta en absoluto su esquema de base de datos.Tener una longitud de contraseña abierta agrega una variable más que un atacante de fuerza bruta debe tener en cuenta.

Es difícil ver alguna excusa para limitar la longitud de la contraseña, además del mal diseño.

El único beneficio que puedo ver en una longitud máxima de contraseña sería eliminar el riesgo de un ataque de desbordamiento del búfer causado por una contraseña demasiado larga, pero hay formas mucho mejores de manejar esa situación.

El almacenamiento es barato, ¿por qué limitar la longitud de la contraseña?Incluso si está cifrando la contraseña en lugar de simplemente cifrarla, una cadena de 64 caracteres no requerirá mucho más que una cadena de 6 caracteres para cifrarla.

Lo más probable es que el sistema bancario esté superponiendo un sistema más antiguo, por lo que solo pudieron permitir una cierta cantidad de espacio para la contraseña.

Mi banco también hace esto.Solía ​​​​permitir cualquier contraseña y yo tenía una de 20 caracteres.Un día lo cambié y he aquí que me dio un máximo de 8 y había eliminado los caracteres no alfanuméricos que estaban en mi contraseña anterior.No tenía ningún sentido para mí.

Todos los sistemas de back-end del banco funcionaban antes, cuando usaba mi contraseña de 20 caracteres sin caracteres alfanuméricos, por lo que el soporte heredado no puede haber sido el motivo.E incluso si lo fuera, deberían permitirle tener contraseñas arbitrarias y luego crear un hash que se ajuste a los requisitos de los sistemas heredados.Mejor aún, deberían arreglar los sistemas heredados.

Una solución de tarjeta inteligente no me iría bien.Ya tengo demasiadas tarjetas tal como están...No necesito otro truco.

Si acepta una contraseña de tamaño arbitrario, se supone que se truncará a una longitud de cortina por razones de rendimiento antes de aplicar el hash.El problema con el truncamiento es que a medida que el rendimiento de su servidor aumenta con el tiempo, no puede aumentar fácilmente la longitud antes del truncamiento, ya que su hash sería claramente diferente.Por supuesto, podría tener un período de transición en el que ambas longitudes se controlen y verifiquen, pero esto utiliza más recursos.

Ignore a las personas que dicen no validar contraseñas largas.Owasp dice literalmente que 128 caracteres deberían ser suficientes.Sólo para dar suficiente espacio para respirar, puedes dar un poco más, digamos 300, 250, 500, si te apetece.

https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length

La longitud de la contraseña de las contraseñas más largas proporcionan una mayor combinación de caracteres y, en consecuencia, dificulta que un atacante adivine.

...

La longitud máxima de la contraseña no debe establecerse demasiado, ya que evitará que los usuarios creen frases de contraseña. La longitud máxima típica es de 128 caracteres.Las frases de contraseña de más de 20 caracteres generalmente se consideran débiles si solo consisten en caracteres latinos en minúsculas.

¿Debería haber una longitud máxima?Este es un tema curioso en TI en el sentido de que las contraseñas más largas suelen ser más difíciles de recordar y, por lo tanto, es más probable que se escriban (un GRAN no-no por razones obvias).Las contraseñas más largas también tienden a olvidarse más, lo que si bien no necesariamente supone un riesgo para la seguridad, puede provocar problemas administrativos, pérdida de productividad, etc.Es probable que los administradores que crean que estos problemas son urgentes impongan longitudes máximas a las contraseñas.

Personalmente creo que en este tema específico, cada usuario tiene lo suyo.Si crees que puedes recordar una contraseña de 40 caracteres, ¡mucho más poder para ti!

Dicho esto, las contraseñas se están convirtiendo rápidamente en un modo de seguridad obsoleto, las tarjetas inteligentes y la autenticación de certificados resultan muy difíciles o imposibles de aplicar fuerza bruta, como usted dijo, es un problema, y ​​solo es necesario almacenar una clave pública en el extremo del servidor con la privada. clave en su tarjeta/computadora en todo momento.

Las contraseñas o frases de contraseña más largas son más difíciles de descifrar simplemente por su longitud y más fáciles de recordar que requerir una contraseña compleja.

Probablemente sea mejor optar por una longitud mínima bastante larga (10+), restringiendo la longitud de forma inútil.

Los sistemas heredados (ya mencionados) o la interfaz con sistemas externos del proveedor pueden requerir un límite de 8 caracteres.También podría ser un intento equivocado de salvar a los usuarios de sí mismos.Limitarlo de esa manera resultará en demasiados pssw0rd1, pssw0rd2, etc.contraseñas en el sistema.

Una de las razones por las que es posible que las contraseñas no estén codificadas es el algoritmo de autenticación utilizado.Por ejemplo, algunos algoritmos de resumen requieren una versión de texto sin formato de la contraseña en el servidor, ya que el mecanismo de autenticación implica que tanto el cliente como el servidor realicen los mismos cálculos en la contraseña ingresada (lo que generalmente no producirá el mismo resultado cada vez que la contraseña se combine con una contraseña generada aleatoriamente). 'nonce', que se comparte entre las dos máquinas).

A menudo, esto se puede reforzar ya que el resumen se puede calcular parcialmente en algunos casos, pero no siempre.Una mejor ruta es almacenar la contraseña con cifrado reversible; esto significa que las fuentes de la aplicación deben protegerse ya que contendrán la clave de cifrado.

La autenticación Digst está ahí para permitir la autenticación a través de canales que de otro modo no estarían cifrados.Si usa SSL o algún otro cifrado de canal completo, entonces no es necesario usar mecanismos de autenticación de resumen, lo que significa que las contraseñas se pueden almacenar en formato hash (ya que las contraseñas se pueden enviar en texto sin formato por cable de forma segura (para un valor determinado de seguridad).

Intenta no imponer ninguna limitación a menos que sea necesario.Tenga cuidado:podría y será necesario en muchos casos diferentes.Tratar con sistemas heredados es una de estas razones.Asegúrese de probar bien el caso de contraseñas muy largas (¿puede su sistema soportar contraseñas de 10 MB de longitud?).Puede encontrarse con problemas de denegación de servicio (DoS) porque las funciones de definición de claves (KDF) que utilizará (normalmente PBKDF2, bcrypt, scrypt) consumirán mucho tiempo y recursos.Ejemplo de la vida real: http://arstechnica.com/security/2013/09/long-passwords-are-good-but-too-much-length-can-be-bad-for-security/

Las contraseñas de solo 8 caracteres suenan simplemente incorrectas.Si debería haber un límite, entonces al menos 20 caracteres es una mejor idea.

Creo que el único límite que debería aplicarse es como un límite de 2000 letras, o algo increíblemente alto, pero sólo para limitar el tamaño de la base de datos si eso es un problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top