Como usuario, existen dos reglas para el uso de contraseñas:
1). Nunca reutilice la misma contraseña con diferentes entidades (por ejemplo, no use la misma contraseña en su banco en línea como un foro web gratuito creado por alguna persona anónima). Cualquier sitio potencialmente registra las contraseñas en texto simple (incluso las contraseñas de otros sitios que se escriben accidentalmente) y potencialmente podría usar esas contraseñas para atacar a los usuarios de otros sitios. [1] .
2). Elija alta entropía contraseñas / frases de contraseña (preferiblemente generadas aleatoriamente y solo ligeramente modificadas) que no se encontrarán en un ataque de diccionario o en cualquier lista de contraseñas comunes.
Un sistema donde los usuarios almacenan localmente una lista cifrada con contraseña protegida por contraseñas generadas aleatoriamente sincronizadas entre todas sus computadoras es una excelente solución, pero no puede esperar que la mayoría de los usuarios hagan esto.
Como desarrollador, establece reglas de contraseña para un sistema, es un acto de equilibrio. Las reglas más estrictas generalmente significan una experiencia de usuario más difícil (UX). Si sus reglas son especialmente estrictas, los usuarios burlarán sus reglas de alguna manera. Lo escribirán en su computadora, lo guardarán en texto sin formato en su escritorio, dejarán de usar su servicio, se quejarán incesantemente a los más altos o usarán el mecanismo de restablecimiento de contraseña cada vez que inicien sesión (lo que puede terminar siendo) un enlace mucho más débil). Tal vez necesite un número en su contraseña, ellos toman una palabra común del diccionario y solo agregan un 1 al final. Necesita que las contraseñas se cambien cada tres meses y no se reutilicen, y el usuario final rota su contraseña para que sea Spring2012
, Summer2012
.
Por el contrario, no tener reglas significa que encontrarás muchos usuarios idiotas que elegirán una contraseña que se encuentra en una lista de las listas de contraseñas principales 100/1000.
Las reglas personalizadas son agradables, ya que puede establecer un mínimo de longitud / complejidad y, además, puede evitar la reutilización de la contraseña si sus reglas son bastante particulares (por ejemplo, no hay símbolos especiales, pero al menos dos números y una mayúscula / minúscula) . Sin embargo, debe asegurarse de que sus reglas personalizadas no excluyan las frases de contraseña seguras, que son una buena manera de lograr contraseñas memorables de alta entropía. Además, la invalidación de contraseñas débiles comunes puede ayudar a proteger su aplicación. Por ejemplo, si no permite que un usuario establezca una contraseña que sea una palabra del diccionario más un número al final, o una contraseña de una lista de contraseñas común, eso puede reforzar la seguridad. (Aunque, de nuevo, un atacante puede usar esa información para saber qué contraseñas no debe probar y sus usuarios pueden encontrar el mínimo que pasa sus reglas).
Pero para responder a su pregunta, la entropía de una contraseña de 8 caracteres que consta de cualquier número de dígitos, mayúsculas y minúsculas elegidas al azar es lg (62 8 ) ~ 47.6 bits (ignoremos simbolos). La entropía de una contraseña de 8 caracteres donde exactamente tres letras son dígitos es 44.3 bits ~ lg (56 * 52 5 10 3 ) (56 = 8 elija 3; el número de combinaciones de tres dígitos elegidos entre 8 posiciones), por lo que es un poco más débil. Si relaja la condición, debe ser de 8 caracteres y tener tres o más dígitos; entonces es todavía sólo 44.6 bits. Por lo tanto, al requerir d
dígitos en una contraseña larga de N
, la contraseña la debilita ligeramente en comparación con permitir cualquier símbolo, pero solo por un par de bits de entropía. Aunque, alternativamente, si compara una contraseña de 7 dígitos sin ningún requisito numérico lg (62 7 ) ~ 41.7 bits y agregue una elección forzada de un dígito insertado en el espacio al azar; la nueva contraseña es 80 veces (6.3 bits) más fuerte (diez opciones por dígito; 8 opciones por ubicación de dígito forzado).