cuáles son los buenos requisitos para una contraseña

15

Estoy haciendo un sitio web y estoy decidiendo sobre la política de contraseña. ¿Qué hace una buena contraseña? Realmente no tengo ni idea. Supongo que las contraseñas deben tener al menos 6 caracteres.

EDITAR: ¿existen recomendaciones sobre qué tan compleja debe ser la contraseña? Por ejemplo, ¿requieren 2 dígitos y 2 caracteres gramaticales y el resto de la contraseña puede ser cualquier cosa?

    
pregunta Celeritas 29.01.2013 - 00:42
fuente

5 respuestas

12

Para citar las mejores prácticas de OWASP:

  

Longitud de la contraseña   La longitud de la contraseña considera el mínimo y el máximo.   Longitud de los caracteres que comprenden la contraseña de sus usuarios. Para la facilidad   De cambiar esta longitud, su implementación puede ser configurable.   posiblemente utilizando un archivo de propiedades o un archivo de configuración xml.

     

Longitud mínima.   Las contraseñas deben tener al menos ocho (8) caracteres de largo. La combinación de esta longitud con la complejidad dificulta la contraseña.   para adivinar y / o fuerza bruta.

Además:

  

Complejidad de la contraseña Los caracteres de la contraseña deben ser una combinación de caracteres alfanuméricos. Los caracteres alfanuméricos consisten en letras,   Números, signos de puntuación, matemáticos y otros convencionales.   simbolos Vea la implementación a continuación para los caracteres exactos referidos   a. Para cambiar la funcionalidad de la contraseña, si es posible, mantenga un historial de   contraseñas antiguas hashes utilizados. No debe almacenar las contraseñas reales   para protegerse contra la fuerza bruta si el archivo de base de datos está comprometido.   De esta manera, el usuario no puede cambiar a una contraseña que se utilizó una   Hace un par de meses.

Tan importante es cómo se almacena la contraseña? OWASP también tiene una serie de recomendaciones sobre cómo almacenar los hashes de contraseñas de forma segura. Para obtener más información, lea aquí

OWASP tiene muchas buenas recomendaciones sobre cómo manejar las contraseñas y los formularios de inicio de sesión / restablecimiento de contraseña. Le aconsejo que lea estos y aprenda todo lo que pueda.

Espero que ayude!

Fuente: enlace

    
respondido por el NULLZ 29.01.2013 - 01:26
fuente
12

Bruce Schneier ha escrito un buen ensayo sobre el tema, sugiero echarle un vistazo a eso. En pocas palabras:

  • La mayoría de los usuarios tienden a usar patrones similares para sus contraseñas, y hay herramientas que son bastante buenas al adivinarlos (hasta un 65% de tasas de éxito).

    • Este patrón, como satirized here , consiste en usar una palabra del diccionario (común o no) con algunas letras sustituidas de acuerdo con las reglas comunes (como 4 para A ), seguidas de (o más raramente con el prefijo) un afijo simple (generalmente numérico).

    • El "peligro" de tales contraseñas es que proporcionan una ilusión de complejidad y, por lo tanto, de seguridad, mientras que, de hecho, son relativamente fáciles de descifrar (suponiendo un atacante fuera de línea).

  • Las contraseñas que contienen datos biográficos (como nombres, direcciones, códigos postales) son mucho más fáciles de descifrar, por lo que los usuarios no deben usarlas.

  • Las contraseñas muy cortas (4 caracteres o menos) también son susceptibles de búsquedas exhaustivas.

  • Una buena contraseña, por lo tanto, debe tener una longitud razonable (8 caracteres como recomienda OWASP podría estar bien, pero en principio cuanto más mejor) y no seguir un patrón fácilmente reconocible.

    • Alternativamente, podría seguir un patrón, pero uno que no se pueda replicar fácilmente. Un ejemplo sería pensar en una oración y crear una contraseña a partir de las primeras letras de cada palabra en esa oración.

    • Otra opción (también sugerida en el ensayo, aunque personalmente no estoy de acuerdo con eso) es poner el afijo (la secuencia numérica) en el medio de la raíz (la palabra), o usar dos palabras unidas con la afijo.

Lo más importante de todo es que IMHO no tiene una "longitud máxima de contraseña" o, si es inevitable, dejar ese valor máximo en un valor muy alto (como 64 caracteres). Dado que no almacenará la contraseña en sí, en su lugar, guardará un hash seguro de la misma, la longitud no debería afectar su diseño de back-end.

(Tampoco intentes "forzar" la complejidad de las contraseñas, o tus usuarios comenzarán a luchar contra ti, por ejemplo, escribiendo sus contraseñas)

    
respondido por el mgibsonbr 29.01.2013 - 03:13
fuente
10

Una contraseña es tan fuerte como aleatoria. No puedes probar la aleatoriedad de una contraseña inventada por un usuario en su cerebro, porque la aleatoriedad es una propiedad del proceso de generación , no del resultado. Su sitio web solo verá el resultado.

Sin embargo, puede excluir las contraseñas que son demasiado cortas porque las contraseñas cortas son susceptibles de una búsqueda exhaustiva muy primitiva, lo que significa probar todas las combinaciones de letras hasta una cierta longitud. El principal riesgo que debe evitar es contradecir a los usuarios : las contraseñas serán tan seguras como el usuario así lo elija, por lo tanto, debe convertirlo en un colaborador voluntario de la política del sitio. El usuario, por sí mismo, no está muy interesado en la seguridad del sitio. Ingresa la contraseña porque tiene que hacerlo (el sitio impone una entrada de contraseña), pero ve la contraseña como un obstáculo: no vino al sitio para ingresar una contraseña, sino para acceder a las páginas que contiene el sitio.

Esto se reduce a las siguientes recomendaciones:

  • Imponga una longitud de contraseña mínima de 8 caracteres . No mucho más que eso; pero la gente está acostumbrada a ingresar contraseñas de 8 caracteres. Si solicita más, los usuarios protestarán (y protestarán al elegir contraseñas "ingeniosas", que no son seguras en absoluto).

  • Usted puede requerir una mezcla de letras y dígitos . Pero no te excedas. Las letras y los dígitos están bien; no imponga la combinación o la puntuación en mayúsculas / minúsculas: estos son notablemente más difíciles de escribir en teléfonos inteligentes y tabletas.

  • Proporcione un opcional generador de contraseñas . Ya que las mentes humanas no son buenas para generar aleatoriedad, usa la computadora. Pero tenga cuidado de no hacer que el generador sea obligatorio : el usuario debe verlo como una herramienta útil, no como una regulación inevitable. Por lo tanto, proporcione un botón "generar una buena contraseña" que genere una secuencia de letras minúsculas y dígitos (no demasiado largo, tenga cuidado; 8 caracteres).

  • Directrices de publicación que explican lo que debería ser una buena contraseña (es decir, aleatoria). Los usuarios aman sentirse empoderados. Además, adviértales sobre problemas de usabilidad con respecto a las letras que no son ASCII: acentos, caracteres no latinos ... hará su vida mucho más difícil si las usan.

respondido por el Thomas Pornin 29.01.2013 - 13:17
fuente
1

Habló acerca de la política de contraseña, que también incluye la duración del cambio de contraseña. ¿Cómo medir una buena contraseña?

  • fuerte
  • Memorable

Strong property has inverse relation with memorable

Entonces, es tu esfuerzo decidir sobre ellos, ¿cuál es más crítico? luego establece una prioridad alta para esa, pero considera que cada contraseña debe coincidir con algunas reglas (requisito mínimo):

  • longitud: entre (6-12)
  • patrón: [a-Z] [0-9] [caracteres especiales]
  • la contraseña debe contener al menos 4 caracteres diferentes de cada grupo (si longitud = 6)
  • la contraseña debe contener al menos 6 caracteres diferentes de cada grupo (si longitud = 8)
  • Duración del cambio de contraseña (política de caducidad): por ejemplo, cada tres meses
  • Bloqueo de cuenta: número de intentos inválidos permitidos: 3, entonces, la cuenta debe ser bloqueada y desbloqueada por el administrador
respondido por el Akam 29.01.2013 - 12:11
fuente
0

Sé que han pasado 3 años, pero necesita una actualización.

Siempre que haya configurado suficiente protección de conexión (bloque después de 3 intentos incorrectos, por ejemplo), estará seguro. Mientras la base de datos no se escape. Pero si la base de datos es hackeada, estás casi muerto.

Toma esta contraseña Lov3t©cöde se ve bien, ¿no es así? Contiene:

  • caracteres minúsculos;
  • mayúsculas y minúsculas;
  • Números;
  • Carácter especial.

Y tiene 10 caracteres de longitud. Se ve muy bien. Pero con el poder de GPU de hoy en día y unos pocos miles de dólares, puede dividirse dentro de una semana . ¿No confías en mí? Pruébelo .

Lo que recomendaría es una frase de contraseña . Algo que puedes recordar , porque ¿para qué tienes que escribirlo en un archivo de texto?

Toma una oración fácil:

I eat chocolate at night!

agregue entropía :

I*eat%chocolate*at%n8!

¡Felicitaciones! Ahora tiene una contraseña larga de 22 que tomaría alrededor de 1.04 cientos de millones de siglos para romper, ¡lo que puede recordar! (Debido a que el espacio de complejidad es 95^22 . Si permite un conjunto de 33 caracteres especiales, lo que hace ~3.27 x 10^43 . Suponiendo cien trillones de adivinanzas por segundo, tomará my 1.04 cientos de millones de trillones de siglos. .)

Genial, ¿qué podría ser mejor ? Permitir a los usuarios conectarse a través de ellos google / facebook / cuentas cualesquiera. Entonces nunca tendrás que preocuparte por tu política de contraseña.

    
respondido por el Thomas Ayoub 01.06.2016 - 17:12
fuente

Lea otras preguntas en las etiquetas