¿Qué razones técnicas existen para tener una longitud máxima de contraseña baja?

760

Siempre me he preguntado por qué tantos sitios web tienen restricciones muy firmes en la longitud de la contraseña (exactamente 8 caracteres, hasta 8 caracteres, etc.). Estos tienden a ser bancos u otros sitios donde realmente me importa su seguridad.

Entiendo que la mayoría la gente elegirá contraseñas cortas como "contraseña" y "123456", pero ¿existen razones técnicas para forzar esto? Al usar una aplicación como 1Password, casi todas mis contraseñas son algo así como fx9@#^L;UyC4@mE3<P]uzt u otras cadenas largas generadas al azar que probablemente no puedan adivinar cosas.

  • ¿Existen razones específicas por las que los sitios web imponen límites estrictos en la longitud de las contraseñas (más como 8 o 10, entiendo que 100000000 podría ser un problema ...)?
pregunta enderland 30.03.2013 - 22:30
fuente

14 respuestas

1597

Toma cinco chimpancés. Ponlos en una jaula grande. Suspender algunos plátanos del techo de la jaula. Proporcionar a los chimpancés una escalera de tijera. PERO también agregue un detector de proximidad a los plátanos, de modo que cuando un chimpancé se acerca al plátano, se activan las mangueras de agua y toda la jaula se empapa por completo.

Pronto, los chimpancés aprenden que los plátanos y la escalera de tijera se ignoran mejor.

Ahora, retire un chimpancé y reemplácelo por uno nuevo. Ese chimpancé no sabe nada de las mangueras. Ve el plátano, se da cuenta de la escalera y, como es un primate inteligente, se imagina que pisa la escalera para alcanzar los plátanos. Luego agarra hábilmente la escalera ... y los otros cuatro chimpancés se abalanzan sobre él y lo golpean de lleno. Pronto aprende a ignorar la escalera de tijera.

Luego, retire otro chimpancé y reemplácelo por uno nuevo. El escenario vuelve a ocurrir; cuando toma la escalera de tijera, es atacado por los cuatro otros chimpancés, sí, incluido el chimpancé "fresco" anterior. Él ha integrado la noción de "no debes tocar la escalera".

Iterar. Después de algunas operaciones, tiene cinco chimpancés que están listos para golpear a cualquier chimpancé que se atreva a tocar la escalera, y ninguno de ellos sabe por qué.

Originalmente, algún desarrollador, en algún lugar, estaba trabajando en un antiguo sistema Unix del siglo anterior, que usaba el antiguo " crypt "basado en DES , en realidad es una función hashing de contraseña derivada del cifrado de bloque DES. En esa función de hash, solo se utilizan los primeros ocho caracteres de la contraseña (y solo los 7 bits bajos de cada carácter, también). Los caracteres subsiguientes son ignorados. Ese es el plátano.

Internet está lleno de chimpancés.

    
respondido por el Tom Leek 30.03.2013 - 22:48
fuente
213

Estas restricciones a menudo se aplican por varias razones:

  • Interacción con sistemas heredados que no admiten contraseñas largas.
  • Convención (es decir, "siempre lo hemos hecho de esa manera")
  • simple ingenuidad o ignorancia.

En cuanto a la seguridad, no es necesario limitar la longitud de las contraseñas. Deben ser hash de todos modos, utilizando un KDF como bcrypt. Para ayudar con el rendimiento, podría valer la pena colocar un límite muy grande (por ejemplo, 512 caracteres) en la longitud de la contraseña, para evitar que alguien le envíe una contraseña de 1 MB y haga su servidor durante 10 segundos mientras calcula el hash.

    
respondido por el Polynomial 30.03.2013 - 22:49
fuente
79
  1. Si lo almacenan en texto sin formato o texto encriptado, entonces ese es probablemente el valor máximo que se puede almacenar en la base de datos. Por otro lado, uno debería llegar lo más lejos posible de estos sitios
  2. Para evitar ataques de DOS. Esto suele ocurrir si tienen un límite muy alto, como 512 o 1024 bytes
  3. Para cumplir con las regulaciones que realmente hacen las personas que no saben nada acerca de la seguridad de TI
  4. Por razones de legado, como ha señalado Tom Leek

Por cierto. Aquí hay una lista (histórica) de sitios de alto rango que tienen longitudes de contraseña máximas:

enlace

    
respondido por el SztupY 30.03.2013 - 22:52
fuente
59

Hice esta pregunta en Bol.com, una de las tiendas online más grandes de los Países Bajos. Su respuesta fue evitar que se inundaran los correos electrónicos de asistencia sobre contraseñas olvidadas. Luego, curiosamente, ignoraron mi consulta acerca de la función de restablecimiento de contraseña, que solo te envía un enlace de restablecimiento cuando olvidaste tu contraseña.

He concluido que es muy probable que sea una decisión del equipo de administración. Alternativamente, podría ser que no tengan contraseñas de hash y utilicen esto para evitar que su base de datos se inunde (aunque puede tener un nombre de usuario más largo, por lo que parece poco probable). Tampoco respondieron a una pregunta sobre si tienen contraseñas de hash (pensarías que si todo está bien, no habría razón para no responder).

    
respondido por el Luc 31.03.2013 - 15:45
fuente
36

Citaría un intento de reducir los problemas relacionados con el servicio al cliente.

Mientras más grandes y complejas sean las contraseñas, mayor será la probabilidad de que el cliente ingrese una contraseña no válida, se bloquee y luego contacte al servicio al cliente para amarrar el tiempo de esa persona.

Es sorprendente la cantidad de personas que no pueden escribir con precisión una contraseña débil normal, por no hablar de una contraseña que es unos pocos caracteres más larga o que tenía que tener un carácter adicional o 2 inyectados por complejidad.

Posiblemente OT, pero las contraseñas largas no son necesariamente una verdadera medida de seguridad garantizada, ya que las contraseñas se roban directamente con bastante frecuencia en la actualidad.

Los intentos fallidos de inicio de sesión y el seguimiento de la distancia geográfica del uso normal de inicio de sesión es una métrica mucho más precisa. si una IP perteneciente a un país con un alto perfil de piratería / ataque conocido inicia sesión en un banco estadounidense y ese inicio de sesión nunca se ha utilizado desde esa ubicación antes ...

Muchos lugares de alto perfil, como SF / banks, generalmente tienen muy pocos intentos fallidos de inicio de sesión con los bloqueos resultantes en todo el sistema. Algunos, como SF, llegan tan lejos como hacer una asignación de IP individual, lo que significa que no puede iniciar sesión desde una nueva dirección IP sin autorizarla.

    
respondido por el MDR 30.03.2013 - 23:56
fuente
24

"Interacción con sistemas heredados que no admiten contraseñas largas". como se mencionó anteriormente, es la razón por la que una empresa en la que trabajé para imponer una longitud máxima de contraseña.

Como una variación en el tropo "un grupo se mueve tan rápido como su miembro más lento", el uso de múltiples sistemas a los que todos los usuarios tenían que tener acceso para usar las mismas credenciales de inicio de sesión significaba que cualquier restricción por parte de uno de esos sistemas tendría para ser aplicado a todas las cuentas .

Entonces, si a una aplicación no le gustó ^, todas las contraseñas de todos los sistemas no podrían tener ^. Si a un programa no le gustaran las contraseñas > 8 caracteres, entonces todas las cuentas tenían que tener contraseñas < 9 caracteres. Así que en un entorno complejo como BigCo, donde trabajé, esto podría involucrar una docena o dos docenas de diferentes piezas de software; El LCD fue lo que todos obtuvieron.

También usaron IE6.

    
respondido por el user2228243 31.03.2013 - 01:16
fuente
18

Otra posibilidad que me gustaría abordar es que las contraseñas a veces están limitadas por la longitud del campo que se usa para guardarlas, cuando se guardan en texto sin formato. Si su campo es un VARCHAR (32), puede guardar un máximo de 32 caracteres.

Sin embargo, esto significa algo aún peor: que la contraseña se guarda en texto sin formato. Por eso aceptamos este tipo de delitos como evidencia (ligera) en plaintextoffenders.com .

    
respondido por el Omer van Kloeten 31.03.2013 - 09:30
fuente
17

Un límite de longitud de contraseña es razonable siempre y cuando ese límite aún permita frases de contraseña seguras; por ejemplo, el límite no es inferior a 64 caracteres. Un límite alto cuando se configura la contraseña es significativamente mejor que truncar silenciosamente la contraseña.

Si la aplicación finalmente almacena la contraseña con un hash de 128 bits (es de esperar que esté salado y se estire con la llave), no se obtiene ninguna ventaja al permitir contraseñas de más de ~ 64 caracteres. Por ejemplo, con una frase de contraseña de diceware con palabras de 5 caracteres con espacios entre ellas, una frase de contraseña de 64 caracteres permite 10 palabras que tendrían una entropía de más de 128 bits.

Un desarrollador podría estar preocupado por la inyección de SQL o los ataques de desbordamiento del búfer inyectados a través del campo de la contraseña. Le recomendamos que use los métodos estándar para evitar estos ataques: siempre use los parámetros enlazados con SQL (en lugar de la manipulación de cadenas para construir consultas) y siempre verifica adecuadamente las cadenas (posiblemente utilizando un lenguaje de programación seguro o bibliotecas seguras con protecciones integradas). Debe preocuparse por estos ataques en todas las aportaciones de los usuarios; esto no es exclusivo del campo de contraseña, por lo que la protección obtenida por un tamaño máximo de contraseña es probablemente despreciable.

También podría haber razones tangenciales para los límites. Un banco que otorga a los usuarios tarjetas de cajero automático con un PIN (número de identificación personal) puede optar por obligar a los usuarios a usar PIN de entre 4 y 10 dígitos de longitud. Permitir que un usuario establezca y use un PIN de 50 dígitos probablemente tenga poca ganancia de seguridad en la práctica que un PIN de 8 dígitos: cuando un atacante necesita la tarjeta de cajero automático de un usuario (a la que no se ha llamado como robada), use un monitor ATM, y se bloquea después de 4 intentos incorrectos. Un PIN de 50 dígitos podría ser más costoso en costos humanos para su banco, ya que se olvidaría / ingresaría de manera incorrecta con más frecuencia, tal vez provocará que un empleado investigue (por ejemplo, verifique el video del cajero automático y compare con transacciones exitosas anteriores) o tenga un el empleado recorre al cliente a través de algún mecanismo de restablecimiento de contraseña necesariamente largo (por ejemplo, el mecanismo de restablecimiento tiene que ser costoso, por lo que no es el enlace más débil). Todo este proceso podría llevar a una mala experiencia de usuario del cliente que el banco quiere evitar.

    
respondido por el dr jimbob 31.03.2013 - 00:22
fuente
7

Como ya lo han dicho otros, la razón principal que surge de 8 caracteres o menos es tratar con sistemas más antiguos que no admiten nada más que eso.

Luego está la buena idea general de colocar un límite superior en lo que es razonable. Digamos que es de 500 caracteres. No sería irrazonable pensar que cualquier persona que proporcione más de 500 caracteres para una contraseña podría no ser buena.

Pero incluso si está utilizando un sistema de hash de contraseña recomendado actualmente, todavía hay límites. Bcrypt, que se usa ampliamente y por lo que puedo decir que generalmente se considera una opción buena / segura para las contraseñas de hash, solo trata con los primeros 72 caracteres. Cualquier cosa más allá de los 72 caracteres se tira. Si mi contraseña tiene 100 caracteres de longitud y la suya tiene 150, si comienzan con los mismos 72 caracteres, bcrypt los considerará iguales.

Dado ese límite específico en bcrypt, si está utilizando bcrypt, es posible que desee imponer un límite de 72 caracteres para asegurarse de que todas las contraseñas únicas sean realmente consideradas únicas por su sistema de autenticación.

    
respondido por el Joseph Scott 31.03.2013 - 07:38
fuente
6

Muchos sitios piensan que no es necesario tener una contraseña larga, ya que existe una protección de fuerza bruta (como un número limitado de intentos de inicio de sesión por IP), lo que hace muy poca diferencia entre tener contraseñas largas y cortas, en ambos casos tomaría Años para probar todas las combinaciones posibles.

La única recomendación sería utilizar caracteres aleatorios (! @ # $% ^ & * -_ = + / \ '") largo con a-z A-Z 0-9.

    
respondido por el sharp12345 02.04.2013 - 21:03
fuente
5

Yo diría que hay tres razones principales:

  1. Los sistemas heredados no admiten caracteres especiales
  2. El deseo de mantener bajo el costo de la asistencia y el uso del sistema, al mantener las contraseñas de los usuarios realmente recordables. En otras palabras, si permite a los usuarios crear y usar contraseñas que no pueden recordar, lo harán y, como resultado, le molestarán o dejarán de usar el sitio debido a la molestia
  3. Los desarrolladores no quieren tener que preocuparse por analizar caracteres especiales de usuarios no confiables, lo que podría ser peligroso

En el pasado, la razón principal era probablemente la falta de capacidad para admitir las contraseñas (número 1), y hoy en día es probablemente la falta de deseo para respaldarlas. -sobre todo del # 2, pero parcialmente del # 3.

    
respondido por el Daniel Miessler 31.03.2013 - 07:03
fuente
5

Otra razón es el diseño de la interfaz de usuario y la experiencia general del usuario: para muchos usuarios no es obvio lo que sucede cuando se alcanza la longitud visible del campo de entrada, ya que cada carácter se muestra como una estrella o un punto grande. Esto puede confundir a los usuarios y causar emociones negativas (menos probabilidades de comprar algo, volver o recomendar el sitio a un amigo). Las soluciones técnicas son posibles, pero es más fácil limitar la longitud, por ejemplo. a 20 caracteres, para que el cursor nunca llegue al final del campo de entrada.

    
respondido por el Joachim Wagner 30.07.2015 - 12:32
fuente
3

Con restricciones adicionales (generalmente, solo se aceptan números), también puede estar motivado por el hecho de que permite (o puede permitir, si algún día surgiera la necesidad) ingresar la contraseña a través de alguna interfaz con capacidades limitadas ...

Es por eso que muchos bancos han establecido tales restricciones para las contraseñas de acceso web, para permitir el acceso a través de sistemas heredados que solo tienen teclados numéricos (cajeros automáticos, teléfonos ...)

    
respondido por el Christophe Franco 31.03.2013 - 07:20
fuente
1

Todos los sitios de bancos que conozco tienen un sistema tipo pin que bloquea su cuenta después de 3 intentos fallidos de contraseña. Esto significa que las contraseñas largas serían contraproducentes porque son más fáciles de escribir mal o de olvidar, especialmente porque no puedes verlas (y si pudieras verlas, la seguridad sería aún peor).

Si tomas por ejemplo. un sistema de pines para teléfonos inteligentes donde se escriben 4 números, las posibilidades de adivinarlo dentro de los 3 intentos es del 0.03%. Con 8 dígitos, las posibilidades de adivinarlo correctamente (si la secuencia se genera aleatoriamente y no se eligen de forma estúpida) se vuelven tan pequeñas, que si intentara adivinar las contraseñas de 7 mil millones de personas, solo en promedio supondría correctas las contraseñas de 209 personas. Si se permiten caracteres y / o caracteres especiales, las posibilidades de adivinar se vuelven aún más pequeñas, multiplicadas por un factor de 1 ^ -4 o 1 ^ -6 respectivamente.

Incluso si los usuarios tienen permiso para elegir contraseñas y las elegirían de manera semi-predictiva, en 3 intentos es imposible descifrar una cuenta en particular y su promedio no mejoraría demasiado, incluso si tuviera un montón de datos, como todos los cumpleaños en una familia y los nombres de todos en la familia y todos los amigos de la persona. Y tampoco es probable que tenga una lista confiable y completa de ese tipo para una gran población.

    
respondido por el HopefullyHelpful 30.07.2015 - 18:34
fuente

Lea otras preguntas en las etiquetas