2009-01-19 9 views
7

En más de una ocasión me han pedido que implemente reglas para la selección de contraseñas para el software que estoy desarrollando. sugerencias típicos incluyen cosas como:Estrategias de complejidad de la contraseña: ¿alguna evidencia para ellas?

  • contraseñas deben tener al menos N caracteres de longitud;
  • Las contraseñas deben incluir minúsculas, mayúsculas y números;
  • Sin reutilización de las últimas M contraseñas (o contraseñas utilizadas en P días).

Y así sucesivamente.

Algo siempre me ha pinchado en poner ningún restricciones acerca de las contraseñas sin embargo - al restringir las contraseñas disponibles, se reduce el tamaño del espacio de todas las contraseñas permitidos. ¿Esto no hace que las contraseñas sean más fáciles de adivinar?

Del mismo modo, al hacer que los usuarios creen contraseñas complejas que cambian con frecuencia, la tentación de escribirlas aumenta, lo que también reduce la seguridad.

¿Existe alguna evidencia cuantitativa de que las reglas de restricción de contraseña hagan que los sistemas sean más seguros?

Si existe, ¿cuáles son las estrategias de restricción de contraseñas 'más seguras'?


Editar Ólafur Waage amablemente ha señalado un Coding Horror article on dictionary attacks que tiene una gran cantidad de análisis útil en ella, pero se me ocurre que los ataques de diccionario se pueden reducir de forma masiva (como sugiere Jeff), simplemente añadiendo un retraso después de un intento fallido de autenticación.

Teniendo esto en cuenta, ¿qué evidencia hay de que las contraseñas forzadas complejas son más seguras?

Respuesta

5

Algo siempre ha pinchado conmigo sobre poner cualquier restricción de contraseñas aunque - al restringir los contraseñas disponibles, se reduce el tamaño del espacio de todas las contraseñas permitidos. ¿Esto no hace que las contraseñas sean más fáciles de ?

En teoría, sí. En la práctica, las contraseñas "débiles" que usted no permite representan un pequeño subconjunto de todas las contraseñas posibles que se eligen de manera desproporcionada cuando no hay restricciones y que los atacantes saben que atacar primero.

Igualmente, al hacer a los usuarios crear complejos, con frecuencia cambiantes contraseñas, la tentación de escribir hacia abajo aumenta, reduciendo también la seguridad .

Correcto. Obligar a los usuarios a cambiar contraseñas todos los meses es una idea muy, muy mala, excepto tal vez en entornos de alta seguridad extrema donde todos realmente entienden la necesidad de seguridad.

3

Ese tipo de normas duda ayudará, ya que evita que los usuarios estúpidos del uso de contraseñas como "micontraseña", que por desgracia sucede muy a menudo.

De hecho, está obligando a los usuarios a un conjunto extremadamente grande de contraseñas potenciales. No importa que esté excluyendo el conjunto de todas las contraseñas solo con letras minúsculas, porque el conjunto restante sigue siendo de mayor magnitud.

pero mis grandes manías son restricciones de contraseña que he encontrado en los sitios importantes, como

  • No hay caracteres especiales
  • Longitud máxima

Por qué alguien haría esto? POR QUÉ.????

+0

I * odio * longitud máxima de la contraseña. Grrrr! – Dana

0

Si bien esto no responde directamente a su pregunta, personalmente encuentro que la regla más compleja que he encontrado es una por la que no puede reutilizar ninguna contraseña previamente utilizada. Después de trabajar en el mismo lugar durante varios años, y tener que cambiar tu contraseña cada 2/3 meses, la posibilidad de utilizar una contraseña que elegí hace más de un año no parece ser particularmente insegura o insegura. Si he utilizado contraseñas "seguras" en el pasado (alfanumérico con cambios en el caso), seguramente volver a utilizarlas después de un período de un año o 2 (dependiendo de la frecuencia con la que deba cambiar su contraseña) me parecerían aceptables. . También significa que es menos probable que use contraseñas "más fáciles", lo que podría suceder si no puedo pensar en algo fácil de recordar y difícil de adivinar.

+0

La restricción de "contraseña anterior" trata más sobre la detección de intrusos que sobre la seguridad de las contraseñas. si un atacante logra restablecer su contraseña, entonces pueden volver a configurar lo que era antes, entonces usted no sabrá que se rompió mediante un reinicio. Y luego, si no lo restablecieron a su valor anterior, pero lograron regresar a su cuenta, aún podrían dejarlos con acceso si supieran a qué se había asignado previamente debido a la intrusión. –

1

Uno también podría señalar el reciente fiasco en Twitter, donde una de las contraseñas de su administrador resultó ser "felicidad", que se redujo a un ataque de diccionario.

1

Para preguntas como esta, me pregunto a mí mismo what Bruce Schneier would do - el artículo vinculado es sobre cómo elegir contraseñas que son difíciles de adivinar con ataques típicos.

También tenga en cuenta que si agrega un retraso después de un intento fallido, también puede agregar un retraso después de un intento exitoso; de lo contrario, el retraso es simplemente una señal de que el ataque ha fallado y debe iniciarse otro intento.

+1

Una demora después de un intento exitoso es una molestia significativa para los usuarios, y no oculta más información que no tener esa demora, porque hay otras formas de probar la falla. –

+0

Quizás le preocupe la filtración de los ID de usuario y suponiendo que los inicios de sesión fallidos para los ID de usuario que no existen no pueden causar un retraso. No veo por qué esa necesidad sea cierta. –

2
  1. Nunca evitar que el usuario haciendo lo que realmente desean, a menos que exista una limitación técnica de hacerlo.
  2. Puede fastidiar al usuario por hacer cosas estúpidas como usar una palabra de diccionario o una contraseña de 3 caracteres, o solo usar números, pero vea el n. ° 1 arriba.
  3. No hay una buena razón técnica para requerir solo caracteres alfanuméricos, o al menos una letra mayúscula, o al menos un número; ver # 1 arriba.

Olvidé que sitio web tenía este consejo con respecto a las contraseñas: "Elija una contraseña que sea muy fácil de recordar, pero muy difícil de adivinar para alguien más". Pero luego procedieron a requerir al menos una letra mayúscula y un número.El problema con las contraseñas es que son tan omnipresentes que es prácticamente imposible para cualquier persona sin una memoria fotográfica recordarlas realmente sin escribirlas, y por lo tanto dejar un serio vacío de seguridad si alguien tiene acceso a esta lista de contraseñas anotadas.

La única forma en que puedo administrar esto por mí mismo es dividir la mayoría de mis contraseñas, y acabo de revisar mi lista, ¡hasta ahora estoy en 130! - en dos partes, una que es la misma en todos los casos, y la otra que es única pero simple. (Desconozco esta regla para sitios que requieren alta seguridad como cuentas bancarias.)

Al requerir "complejidad", como se define como múltiples tipos de caracteres todos presentes, es que obliga a las personas a un conjunto dispar de convenciones para diferentes sitios, lo que hace que sea más difícil recordar la contraseña en cuestión.

La única razón por la que reconoceré los sitios que limitan el conjunto de caracteres de contraseña permitidos, es que debe ser escribible en un teclado. Si tiene que asumir que se debe acceder a la cuenta desde varios países, es posible que los teclados no siempre admitan los mismos caracteres en el teclado del hogar del usuario.

Uno de estos días tendré que publicar un blog sobre el tema. :(

2

Mi viejo teorema del límite:

A medida que la seguridad de la contraseña se aproxima adecuada, la probabilidad de que sea en una nota adhesiva adjunta a la computadora o el monitor se acerca a uno

0

En primer lugar me dejó. Dicen que los detalles como la longitud mínima, la distinción entre mayúsculas y minúsculas y los caracteres especiales requeridos deben depender de quién tiene acceso y qué contraseña les permite hacer. Si se trata de un código para lanzar un misil nuclear, debe ser más estricto que una contraseña para iniciar sesión para jugar su edición pagada en línea de Angry Birds.

Pero tengo un SPE Carne de vacuno CIFIC con sensibilidad a mayúsculas

Para empezar, los usuarios lo odian. El cerebro humano piensa "A = a". Por supuesto, los cerebros de los desarrolladores no suelen ser típicos. ;-) Pero a los desarrolladores también les molesta la sensibilidad de mayúsculas y minúsculas.

En segundo lugar, la tecla Bloq Mayús es demasiado fácil de golpear por error. Está entre las teclas Tab y Shift, pero DEBERÍA estar arriba de la tecla Esc. Su ubicación se estableció hace mucho tiempo en la época de las máquinas de escribir, que no tenían una fuente alternativa disponible. En aquellos días, era útil tenerlo allí.

Todas las contraseñas tienen riesgo ... Usted está equilibrando el riesgo con la facilidad de uso, y sí, la usabilidad es importante.

MI ARGUMENTO: Sí, la distinción de mayúsculas y minúsculas es más segura para una longitud de contraseña determinada. Pero a menos que alguien me obligue a hacerlo de otra manera, opto por una longitud de contraseña mínima más larga. Incluso si asumimos que solo letras y dígitos están permitidos, cada personaje agregado multiplica el número de contraseñas posibles por 36.

Alguien que es menos perezoso que yo en matemáticas podría decirle la diferencia en el número de combinaciones entre, digamos un mínimo de 8 contraseña sensible a mayúsculas y minúsculas, y una contraseña de 12 caracteres insensible a mayúsculas y minúsculas. Creo que la mayoría de los usuarios preferiría lo último.

Además, no todas las aplicaciones exponen nombres de usuario a otros, por lo que hay dos campos potenciales que el hacker puede tener que encontrar.

También prefiero permitir espacios en las contraseñas siempre que la mayoría de las contraseñas no sean espacios.

En el proyecto que estoy desarrollando ahora, mi pantalla de administración permite al administrador cambiar los requisitos de contraseña, que se aplican a todas las contraseñas futuras. También puede obligar a todos los usuarios a actualizar las contraseñas (a los nuevos requisitos) en cualquier momento después del próximo inicio de sesión. Hago esto porque siento que mis cosas no necesitan distinción entre mayúsculas y minúsculas, pero el administrador (que probablemente me pagó por el software) puede estar en desacuerdo, así que dejo que esa persona decida.

El PIN de mi tarjeta bancaria tiene solo cuatro dígitos. Como solo son números, no distingue entre mayúsculas y minúsculas. Y diablos, ¡es mi DINERO! Si no considera nada más, esto suena bastante inseguro, de no ser por el hecho de que el hacker tiene que robar mi tarjeta para obtener mi dinero. (Y que le tomen una foto.)

Otro problema: los desarrolladores que entran en StackOverflow y regurgitan las reglas rápidas que leen en algún artículo. "Nunca codificas nada". (Como si eso fuera posible). "Todas las consultas deben estar parametrizadas" (no si el usuario no contribuye a la consulta). Etc.

Disculpe la queja. ;-) Prometo que respeto el desacuerdo.

0

Personalmente para este problema particular, tiendo a dar a las contraseñas un 'puntaje' basado en las características del texto ingresado, y rechazo las contraseñas que no cumplen con el puntaje.

Por ejemplo:

Contains Lower Case Letter +1 

Contains different Lower Case Letter +1 

Contains Upper Case Letter +1 

Contains different Upper Case Letter +1 

Contains Non-Alphanumeric character: +1 

Contains different Non-Alphanumeric character: +1 

Contains Number: +1 

Contains Non Consecutive or repeated Second Number: +1 

Length less than 8: -10 

Length Greater than 12: +1 

Contains Dictionary word: -4 

entonces sólo permiten contraseñas con una puntuación superior a 4, (y proporcionar la retroalimentación de los usuarios, ya que crean su contraseña a través de javascript)

Cuestiones relacionadas