Puedo entender que imponer una longitud mínima a las contraseñas tiene 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 haría esto más fácil para 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 que trabajan para ellos está imponiendo una longitud máxima de contraseña, ¿debería pensar en hacer algo similar? ¿Cuáles son las ventajas y desventajas de esto?
security
encryption
passwords
nickf
fuente
fuente
Respuestas:
Las contraseñas se reducen a 32, 40, 128, independientemente de la longitud. La única razón para una longitud mínima es evitar contraseñas fáciles de adivinar. No hay propósito para una longitud máxima.
El XKCD obligatorio que explica por qué está perjudicando a su usuario si impone una longitud máxima:
fuente
La longitud máxima especificada en un campo de contraseña debe leerse como ADVERTENCIA DE SEGURIDAD . Cualquier usuario sensible y consciente de la seguridad debe asumir lo peor y esperar que este sitio esté almacenando su contraseña literalmente (es decir, no hash, como lo explica epochwolf).
En ese ese es el caso:
Si está desarrollando un sitio que acepta contraseñas, no establezca un límite de contraseña tonto, a menos que quiera que lo asalten con el mismo pincel.
[Internamente, por supuesto, su código puede tratar solo los primeros 256/1024 / 2k / 4k / (lo que sea) bytes como "significativos", para evitar el crujido de contraseñas gigantescas.]
fuente
Permitir una longitud de contraseña completamente ilimitada tiene un inconveniente importante si acepta la contraseña de fuentes no confiables.
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 tiene 1 GB de datos y pasa todo el tiempo, acéptela hasta que se quede sin memoria. Ahora suponga que esta persona le envía esta contraseña tantas veces como usted esté dispuesto a aceptar. Si no tiene cuidado con los otros parámetros involucrados, esto podría conducir a un ataque DoS.
Establecer el límite superior en algo así como 256 caracteres parece demasiado generoso para los estándares actuales.
fuente
Primero, no asuma 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 (argumentos sobre el valor de usar diferentes contraseñas en cada sitio aparte por el momento), lo que aumenta la probabilidad de que simplemente las escriban. También aumenta enormemente la susceptibilidad al ataque, por cualquier vector, desde la fuerza bruta hasta la ingeniería social.
fuente
OWASP Authentication Cheat Sheet desaconseja establecer una longitud máxima de contraseña de menos de 128 caracteres.
https://www.owasp.org/index.php/Authentication_Cheat_Sheet
Citando todo el párrafo:
fuente
Una razón que puedo imaginar para imponer una longitud máxima de contraseña es si la interfaz de usuario debe interactuar con muchos backends del sistema heredados, 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 usar una contraseña corta, es más probable que invente galimatías aleatorias que una frase o apodo fácil de adivinar (por sus amigos / familiares). Por supuesto, este enfoque solo es efectivo si el frontend impone mezclar números / letras y rechaza las contraseñas que tienen palabras de diccionario, incluidas las palabras escritas en l33t-speak.
fuente
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 que podría ser abusado para ejecutar un ataque de 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.
fuente
Creo que tienes mucha razón en ambos puntos. Si están almacenando el hash de las contraseñas, como deberían, entonces la longitud de la contraseña no afecta su esquema de base de datos en absoluto. Tener una longitud de contraseña abierta arroja una variable más que un atacante de fuerza bruta tiene que tener en cuenta.
Es difícil ver alguna excusa para limitar la longitud de la contraseña, además del mal diseño.
fuente
El único beneficio que puedo ver para una longitud máxima de contraseña sería eliminar el riesgo de un ataque de desbordamiento de búfer causado por una contraseña demasiado larga, pero hay formas mucho mejores de manejar esa situación.
fuente
Ignora a las personas que dicen que no validen contraseñas largas. Owasp dice literalmente que 128 caracteres deberían ser suficientes. Solo para dar suficiente espacio para respirar, puede dar un poco más de 300, 250, 500, si lo desea.
https://www.owasp.org/index.php/Authentication_Cheat_Sheet#Password_Length
fuente
El almacenamiento es barato, ¿por qué limitar la longitud de la contraseña? Incluso si está encriptando la contraseña en lugar de simplemente cifrarla, una cadena de 64 caracteres no tomará mucho más que una cadena de 6 caracteres para encriptar.
Lo más probable es que el sistema bancario esté superponiendo un sistema anterior, por lo que solo pudieron permitir una cierta cantidad de espacio para la contraseña.
fuente
Mi banco también hace esto. Solía permitir cualquier contraseña, y tenía una de 20 caracteres. Un día lo cambié, y he aquí que me dio un máximo de 8 y eliminó 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 estaba usando mi contraseña de 20 caracteres con números no alfanuméricos, por lo que el soporte heredado no puede haber sido la razón. 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 cartas como están ... No necesito otro truco.
fuente
Si acepta una contraseña de tamaño arbitrario, se supone que se está truncando a una longitud de cortina por razones de rendimiento antes de que se divida. 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 calculan y comprueban, pero esto utiliza más recursos.
fuente
Trate de no imponer ninguna limitación a menos que sea necesario. Tenga cuidado: puede 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 manejar contraseñas largas de 10 MB?). Puede encontrarse con problemas de denegación de servicio (DoS) porque las funciones clave de defivación (KDF) que usará (generalmente PBKDF2, bcrypt, scrypt) tomará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/
fuente
¿Debería haber una longitud máxima? Este es un tema curioso en TI, ya 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, aunque no es necesariamente un riesgo para la seguridad, puede generar problemas administrativos, pérdida de productividad, etc. Es probable que los administradores que creen que estos problemas son apremiantes impongan longitudes máximas a las contraseñas.
Personalmente, creo en este tema específico, para cada usuario lo suyo. Si crees que puedes recordar una contraseña de 40 caracteres, ¡más poder para ti!
Dicho esto, sin embargo, las contraseñas se están convirtiendo rápidamente en un modo de seguridad desactualizado, las tarjetas inteligentes y la autenticación de certificados resultan muy difíciles de imposibles, ya que usted declaró que es un problema, y solo una clave pública debe almacenarse en el servidor clave en su tarjeta / computadora en todo momento.
fuente
Las contraseñas más largas, o frases de contraseña, son más difíciles de descifrar simplemente en función de la longitud y más fáciles de recordar que requerir una contraseña compleja.
Probablemente sea mejor ir por una longitud mínima bastante larga (10+), restringiendo la longitud inútil.
fuente
Los sistemas heredados (ya mencionados) o la interfaz de los sistemas de proveedores externos pueden necesitar 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 dará como resultado demasiadas contraseñas pssw0rd1, pssw0rd2, etc. en el sistema.
fuente
Una de las razones por las que las contraseñas pueden no estar cifradas 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 matemáticos en la contraseña ingresada (que generalmente no producirá el mismo resultado cada vez que la contraseña se combina con un 'nonce' generado aleatoriamente, que se comparte entre las dos máquinas).
A menudo esto se puede fortalecer ya que el resumen se puede calcular en parte en algunos casos, pero no siempre. Una mejor ruta es que la contraseña se almacene con cifrado reversible; esto significa que las fuentes de la aplicación deben protegerse ya que contendrán la clave de cifrado.
Digst auth está ahí para permitir la autenticación en canales que de otra manera no estarían encriptados. Si usa SSL o alguna otra encriptación de canal completo, entonces no hay necesidad de usar mecanismos de autenticación de resumen, lo que significa que las contraseñas se pueden almacenar en hash (ya que las contraseñas se pueden enviar en texto sin formato a través del cable de forma segura (para un valor dado de seguridad).
fuente
Solo 8 contraseñas largas de char suenan simplemente mal. Si debería haber un límite, al menos 20 caracteres es una mejor idea.
fuente
Creo que el único límite que debería aplicarse es como un límite de 2000 letras, o algo más increíblemente alto, pero solo para limitar el tamaño de la base de datos si eso es un problema
fuente