secure remember plus password online norton google generate easy security passwords

security - remember - Estrategias de complejidad de la contraseña: ¿alguna evidencia para ellas?



password generator plus (10)

En más de una ocasión me pidieron que implemente reglas para la selección de contraseñas para el software que estoy desarrollando. Las sugerencias típicas incluyen cosas como:

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

Y así.

Sin embargo, siempre me ha molestado sobre poner restricciones a las contraseñas: al restringir las contraseñas disponibles, se reduce el tamaño del espacio de todas las contraseñas permitidas. ¿No hace esto 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ñas hacen 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 ha señalado amablemente un artículo de Coding Horror sobre ataques de diccionario que tiene muchos análisis útiles, pero me parece 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. .

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


Sin embargo, siempre me ha molestado sobre poner restricciones a las contraseñas: al restringir las contraseñas disponibles, se reduce el tamaño del espacio de todas las contraseñas permitidas. ¿No hace esto que las contraseñas sean más fáciles de adivinar?

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.

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.

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 entienden realmente la necesidad de seguridad.


  1. Nunca evite que el usuario haga lo que realmente quiere, a menos que haya una limitación técnica al 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.

No recuerdo qué 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 otra persona". 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 memoria fotográfica recordarlas 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 verificar mi lista, ¡hasta el momento estoy en 130! - en dos partes, una que es la misma en todos los casos, y la otra que es única pero simple. (Rompo esta regla para los sitios que requieren alta seguridad como las cuentas bancarias).

Al requerir "complejidad", tal como se define como múltiples tipos de caracteres, todos los 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. :(


Ese tipo de reglas definitivamente ayuda porque evita que los usuarios estúpidos usen contraseñas como "mypassword", que desafortunadamente sucede con bastante frecuencia.

Entonces, en realidad, 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 preocupaciones son las restricciones de contraseña que he encontrado en sitios importantes, como

  • Sin caracteres especiales
  • Longitud máxima

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


Mi viejo teorema del límite:

A medida que la seguridad de la contraseña se acerca a ser adecuada, la probabilidad de que aparezca en una nota adhesiva adjunta a la computadora o monitor se acerca a una.


Para preguntas como esta, me pregunto qué haría Bruce Schneier : 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, es posible que también desee agregar un retraso después de un intento exitoso; de lo contrario, la demora es simplemente una señal de que el ataque ha fallado y se debe iniciar otro intento.


Si bien esto no responde directamente a su pregunta, personalmente encuentro que la regla más compleja que he encontrado es una en 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.


También se 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.



Primero permítanme decir 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é le permite la contraseña. 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 y reproducir su edición pagada en línea de Angry Birds.

Pero tengo una carne de res ESPECÍFICA con sensibilidad a mayúsculas y minú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 CapsLock 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 entre 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 se permiten letras y dígitos, cada carácter agregado multiplica el número de contraseñas posibles por 36.

Alguien que es menos perezoso que yo con las matemáticas podría decirle la diferencia en el número de combinaciones entre, por ejemplo, una contraseña mínima sensible a las mayúsculas y minúsculas de 8 caracteres y una contraseña insensible a las mayúsculas y minúsculas de 12 caracteres. 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 le 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 tome su foto.)

Otro problema: los desarrolladores que entran en y regurgitan las reglas duras y 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.

Por favor, perdona la diatriba. ;-) Prometo que respeto el desacuerdo.


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, solo se permiten contraseñas con un puntaje superior a 4 (y se proporcionan comentarios al usuario a medida que crean su contraseña a través de javascript)