it-swarm-es.com

¿Cuánto debe ser la longitud máxima de la contraseña?

La longitud mínima recomendada de la contraseña es de aproximadamente 8 caracteres, ¿hay alguna longitud máxima estándar/recomendada de la contraseña?

60
Mohamed

Bruce Schneier tiene un par de artículos interesantes sobre políticas de contraseña.

Contraseñas del mundo real - cubre la longitud de la contraseña, la complejidad y las contraseñas comunes.

Aviso de contraseña - algunos hacer y no hacer, incluyendo:

  • UTILICE un administrador de contraseñas
  • Cambie las contraseñas con frecuencia. Yo cambio el mío cada seis meses ...
  • No reutilices contraseñas antiguas.
  • NO use contraseñas compuestas de palabras del diccionario, cumpleaños, nombres de familiares y mascotas, direcciones o cualquier otra información personal.
  • NO acceda a cuentas protegidas con contraseña a través de redes Wi-Fi abiertas, o cualquier otra red en la que no confíe, a menos que el sitio esté protegido a través de https.

y muchos más

Cambio de contraseñas - una discusión detallada sobre la frecuencia con la que debe cambiar según el uso y el entorno de amenazas.

15
Alexandru Luchian

La respuesta a esta pregunta, como muchas preguntas en Seguridad, es "depende".

Hay varios factores a considerar al mirar la longitud de la contraseña. Primero están algunas de las cosas contra las cuales una contraseña larga está diseñada para proteger, que generalmente es una fuerza bruta de ataque de adivinación de contraseña (en línea o fuera de línea).

Para adivinar la contraseña en línea, si tiene una política de bloqueo relativamente agresiva (p. Ej., 3 intentos incorrectos y luego un bloqueo indefinido), es poco probable que los ataques contra una sola cuenta tengan éxito a menos que el atacante tenga una buena idea de cuál es la contraseña va a ser.

Si busca ataques contra una gran población de usuarios con la misma política de bloqueo, donde el atacante puede resolver los nombres de usuario (por ejemplo, foros web), entonces el elemento más importante es que las contraseñas utilizadas no son ninguna de las Realmente comunes.

Por otro lado, una cosa a tener en cuenta en el lado del bloqueo de la cuenta, es que las políticas agresivas aquí para las aplicaciones en línea pueden hacer que un ataque de Denegación de servicio sea bastante fácil, sin contramedidas adicionales.

Si existe el riesgo de fuerza bruta fuera de línea, la seguridad de la contraseña se vuelve más importante. El problema aquí es que la potencia de procesamiento mejorada y los métodos de ataque hacen de este un objetivo móvil en términos de fuerza. Siendo realistas, diría que estaría viendo más de 10 caracteres y una fuerte aplicación de que las contraseñas no están en las listas comunes de diccionarios (como @andy dice que las frases de contraseña son una buena opción aquí).

Otro factor a considerar aquí es su base de usuarios y cómo se usa la aplicación. En algunos casos, diría que los requisitos de contraseña muy estrictos pueden conducir a una aplicación menos segura. Si tiene una aplicación donde los usuarios están en el mismo lugar (por ejemplo, muchas aplicaciones corporativas) y hace que la política de contraseñas sea muy "fuerte" (tanto en términos de longitud de contraseña como de requisitos de rotación), es probable que los usuarios comiencen anotar sus contraseñas, lo que probablemente derrota uno de los objetivos de seguridad para esa aplicación en primer lugar.

Una buena fuente de mucha más información sobre esto es un libro llamado Autenticación: de contraseñas a claves públicas

20
Rory McCune

Buenas respuestas hasta ahora, pero me gustaría sugerir otra posibilidad: frases de paso . Como sugiere Jeff Atwood de StackOverflow , si no está prohibido por limitaciones técnicas, puede considerar permitir y sugerir frases de paso. Podría aplicarlos, pero eso probablemente alienaría a algunos usuarios en la mayoría de los sitios. Debido a su longitud, pueden ser significativamente más difíciles de descifrar, y también pueden ser más fáciles de recordar que una contraseña como "A1lUrB @ se!" o cosas por el estilo.

19
Andy

Si va a cambiar la contraseña, ¿por qué establecer un límite superior?

No es que deba preocuparse por alcanzar el límite máximo de caracteres en los campos de texto, basados ​​en la web o de otra manera. Por lo tanto, podría establecer un máximo de unos pocos cientos de caracteres solo para limitar algunas condiciones de contorno de los campos de texto que esté utilizando.

Por supuesto, si está hablando de generar una contraseña que intentará usar en varios sitios, no importa; nadie por ahí parece estar de acuerdo. Peor aún, he encontrado sitios que tienen diferentes límites máximos de caracteres en diferentes campos de entrada, por lo que para iniciar sesión primero debe escribirlo incorrectamente antes de que se le asigne un campo diferente que permita más caracteres. Por supuesto, si cada sitio deja que sea la capacidad mínima esperada de un campo de texto típico sin tratar de limitarlo artificialmente, entonces se permitirían unos 2k caracteres, y no tendría que preocuparse por esto en absoluto.

Editado para agregar: algo mencionado de pasada aquí me hizo hacer una pausa:

debe escalar el trabajo de hash a lo que está disponible y es razonable en sus servidores o dispositivos. Por ejemplo, tuvimos un pequeño error de denegación de servicio en Discurso donde permitimos que las personas ingresen hasta 20,000 contraseñas de caracteres en el formulario de inicio de sesión

Por lo tanto, podría valer la pena establecer un límite razonable tanto para configurar como para intentar contraseñas si está analizando las cosas de una manera que sea lo más costosa posible desde el punto de vista computacional. Unos pocos cientos de caracteres aún podrían evitar que las cosas exploten demasiado, y seguir siendo mucho más de lo que un usuario podría intentar.

16
Doug Kavendek

No debe haber una longitud máxima de contraseña: si el usuario acepta usar una contraseña muy larga, entonces debe ser recomendado, no bloqueado.

Siendo el software lo que es, varios sistemas impondrán un límite en el tamaño de la contraseña, principalmente debido a un problema de GUI, programación deficiente o compatibilidad con sistemas mucho más antiguos. Por ejemplo, los viejos sistemas Unix usaban un proceso de hash de contraseña que usaba solo los primeros ocho caracteres, e ignoraba totalmente todos los demás. Del mismo modo, los viejos sistemas de Windows tenían un límite interno de 14 caracteres. Por lo tanto, es mejor si la contraseña, cuando se trunca a sus primeros 14 caracteres, sigue siendo "segura".

Sin embargo, el único límite en el tamaño máximo de la contraseña debe ser la paciencia del usuario. No tiene sentido hacer cumplir nada aquí.

8
Thomas Pornin

Un mínimo común hoy en día es de 12 caracteres, que es apenas lo suficientemente grande como para evitar el agrietamiento por fuerza bruta por parte de una organización razonablemente bien financiada en un período de tiempo razonable.

En cuanto a la longitud máxima; Aquí hay algunos pensamientos: una contraseña de más de unos cientos de bytes es casi ciertamente maliciosa (por ejemplo, intento de inyección de SQL). También tenga en cuenta que si está troquelando su contraseña (y si no es así, debe comenzar de nuevo), entonces las contraseñas más largas que su salida de hash no agregan más entropía. Tenga en cuenta que con "más largo" quiero decir la misma cantidad de bits en su espacio de teclas, no la misma longitud de caracteres. Entonces, aunque permitir contraseñas más largas que la longitud del hash debe ser permitido como un punto de conveniencia, desde el punto de vista matemático no tendría sentido que tal cosa sea requerido .

Requerir mayúsculas y minúsculas duplica el tamaño de su alfabeto, lo que produce enormes retornos de complejidad y probablemente debería ser necesario. Requerir caracteres numéricos agrega tal vez un 20% más a su alfabeto, lo cual no es tan importante, y requerir símbolos agrega tal vez un 16% a 40% más (dependiendo de los símbolos que cuente), y nuevamente, no un retorno tan significativo, pero ciertamente no debe ser rechazado.

3
tylerl

Personalmente, usaría un generador de contraseñas (como lastpass.com o 1password) para generar y usar contraseñas de mínimo 8 caracteres y máximo 32 caracteres (ya que no todos los sitios admiten una contraseña de más de 10 o 15) y usar una contraseña maestra para la autenticación. (Esto nuevamente depende de su confianza en sitios como lastpass.com) o una utilidad 1password encriptada del lado del cliente para Mac y Windows).

No es aconsejable utilizar un conjunto de contraseñas para todos los sitios. Los foros en particular me envían contraseñas en texto plano. Algunos sitios tienen la función de enviar una contraseña simple en caso de que use la función "Olvidé mi contraseña".

Por lo general, las restricciones se configuran en el servidor (para sitios web). Tenemos que culpar a los servidores que utilizamos para no establecer restricciones en las contraseñas de los usuarios.

En resumen, use contraseñas diferentes cada vez. En caso de que tenga más de 10-15 contraseñas para recordar, es hora de comenzar a usar un administrador de contraseñas "seguro". (Para el registro, el administrador de contraseñas de Firefox no es del todo seguro)

2
Sairam

16 caracteres.

Esto le da 96 bits de acuerdo con Wikipedia , que está mucho más allá de lo que se puede descifrar de acuerdo con ese artículo.

Personalmente utilizo un programa de contraseña para mi teléfono móvil, combinado con la función de contraseña maestra de Firefox. Mi contraseña maestra tiene más de 25 caracteres y está basada en Dice Ware, lo que hace que sea bastante fácil de recordar. Casi todas mis contraseñas se renuevan aleatoriamente, ya que Firefox las recuerda de todos modos.

2

Estaba en un cliente donde el oficial de seguridad estaba loco. Quería usar todas las políticas de complejidad de contraseña posibles. (Novell eDirectory tiene MUCHOS problemas de complejidad de contraseña, ¡y quería usar un complemento adicional para agregar más!)

Hasta el punto, sería imposible generar una contraseña que pueda recordarse. Esperaba que las masas sucias lo encontraran, y lo alquitranaran y lo emplumaran después de que se implementara.

En otras palabras, puedes llevarlo demasiado lejos.

1
geoffc

Consejo

En 2019, la aleatoriedad requerida para una contraseña/frase de contraseña segura es:

  • 12 caracteres generados aleatoriamente con minúsculas, mayúsculas y dígitos; o
  • 6 palabras generadas al azar. (¡Haz no ¡elige palabras tú mismo! Eso crea patrones).

Es imposible recordar veinte de esos, así que solo memorice algunos importantes que usa regularmente. Por ejemplo, puede memorizar el de su cuenta de correo electrónico y el de su administrador de contraseñas. Para todo lo demás, almacene las contraseñas en un administrador de contraseñas.

Relevante: ¿El usuario promedio realmente necesita un administrador de contraseñas?
La respuesta más votada es un claro "sí".

Relevante: ¿Qué tan seguros son los administradores de contraseñas?
De la respuesta principal, por paj28 (el énfasis es mío):

para la mayoría de las personas, estos riesgos son aceptables, y sugeriría que el enfoque de usar un administrador de contraseñas [para] la mayoría de sus contraseñas es mejor que usar la misma contraseña en todas partes - que parece ser la principal alternativa. Pero no almacenaría todas las contraseñas allí; haga un esfuerzo por memorizar sus más importantes, como la banca en línea.

Los administradores de contraseñas que se mencionan comúnmente son KeePass (X), 1Password y LastPass. La de su navegador depende: cuando usa Firefox con una contraseña maestra, eso es casi tan bueno como usar una contraseña dedicada. Si su navegador no requiere una contraseña antes de poder acceder a las contraseñas, no es muy seguro (pero los detalles dependen de la implementación exacta, que es un tema en sí mismo).

Desarrolladores

Cuando crea una aplicación, aquí hay algunas consideraciones útiles:

¿Cómo hacer un hash seguro de las contraseñas?
Resumen: use Scrypt o Argon2, lo más lento que pueda. Si no están disponibles, Bcrypt o PBKDF2 son alternativas aceptables. Agregue ambos sal y pimienta .

¿Debería tener una longitud máxima de contraseña?
Resumen: solo contra ataques DoS, unos pocos kilobytes más o menos.

Implementar hashing de contraseña del lado del cliente
Revelación completa: enlace a mi propia respuesta porque creo que es la más completa. Asegúrese de leer también las opiniones de otras personas.

Detalles

Quizás se pregunte "¿por qué mi código PIN solo tiene 4 dígitos? Eso es suficiente para mantener mi cuenta bancaria segura!" Hay na pregunta dedicada a esto , pero el resumen es dos cosas: necesita su tarjeta bancaria para acceder (un segundo factor de autenticación) y el chip lo bloquea después de 3 intentos.

Los sitios web son mucho más indulgentes, por lo que un atacante puede hacer más intentos. Además, se espera que los sitios web sean pirateados tarde o temprano, después de lo cual el atacante puede descifrar su contraseña hash de manera eficiente.

La mayoría de los sitios web almacenan su contraseña con una especie de encriptación unidireccional, que se denomina hashing. No hay clave de descifrado. Al volver a aplicar el mismo algoritmo de hash, el sistema puede comparar la contraseña (que acaba de escribir) con la almacenada (de la base de datos) y saber si son iguales. Pero con solo la base de datos, no puede conocer la contraseña original.

En el pasado, los métodos rápidos de hashing eran comunes. Esto también significa que un atacante, que ha obtenido el hash, puede hacer que su computadora haga miles de millones de intentos por segundo en una computadora de juego promedio. Suponiendo diez mil millones de intentos por segundo, una contraseña aleatoria de 11 caracteres se mantiene durante unos 165 años. Y ese es solo un jugador, imagínese que tiene acceso a los datos de la compañía en los que algunos competidores extranjeros están interesados: con algo de poder de cómputo adicional, esos 165 años de repente se convierten en unos pocos meses de ruptura. Y el próximo año, habrá nuevas CPU que son más rápidas por el mismo precio, lo que reduce la fuerza nuevamente. Es por eso que doce caracteres son el mínimo para una contraseña segura: ese carácter adicional agrega literalmente diez mil años al tiempo de descifrado (165 años versus 10 230 años), y es seguro en el futuro previsible.

Por cierto, calcular la seguridad de la contraseña es fácil: variations^length / guesses_per_time. La variación es cuántos elementos únicos hay y la longitud es la cantidad de elementos que usa. Entonces, si usa solo dígitos, hay diez variaciones (0 a 9). Si usa palabras de un diccionario, sin embargo, hay muchas palabras en el diccionario. Entonces, guessses_per_time es qué tan rápido asumes que el atacante puede crackear. Un valor razonable es decenas de miles de millones por segundo.
Ejemplo: 10^14/10e9/3600 le muestra cuántas horas le tomaría descifrar un código de 14 dígitos, cuando asume 10e9 intentos por segundo (hay 3600 segundos en una hora, 60 * 60).

Algunos sitios web son inteligentes y utilizan un algoritmo de hash lento. No podemos decir cuáles son, porque el servidor hace el hash, por lo que no puede verlo desde el exterior. Si este es el caso, una sola suposición tomará mucho más tiempo para computar (para el servidor, pero también para un atacante). En un caso razonable, un atacante bien financiado puede hacer solo cincuenta mil conjeturas por segundo, en cuyo caso una contraseña de 9 caracteres sería suficiente. Pero 9 caracteres aleatorios ya son muy difíciles de memorizar para muchas cuentas diferentes, especialmente si no los usa con regularidad. Por lo tanto, se requiere un administrador de contraseñas para tener realmente seguridad en las contraseñas.

¿Pero es realmente necesario tener contraseñas únicas? ¿Por qué no reutilizar contraseñas seguras en algunos sitios diferentes? Porque los sitios web con frecuencia se ven comprometidos. No es un hecho cotidiano, pero intente ingresar su (s) dirección (es) de correo electrónico en haveibeenpwned.com : definitivamente sucede mucho. Así es como se piratean las cuentas con mayor frecuencia: reutilización de contraseñas. Los compromisos de los administradores de contraseñas son mucho menos comunes.

0
Luc