Tenemos una discusión en nuestra compañía sobre la seguridad de la contraseña para nuestra aplicación.
Además del hecho de que usamos autenticación de 2 factores (certificados + inicio de sesión / contraseña), actualmente aplicamos contraseñas con al menos 12 caracteres de longitud.
Actualmente no se aplica el uso de caracteres no alfanuméricos. Y desde mi perspectiva, hay poca o ninguna ganancia en seguridad, cuando el usuario se ve obligado a mezclar (caracteres no alfanuméricos).
Según tengo entendido, si tiene el alfabeto de posibles caracteres, la entropía para 123456789012
y !"§$%&/()=!"
debe ser la misma y ambas contraseñas deben tener el "mismo grado" de seguridad (las opciones tomadas desde el alfabeto son diferentes, pero el alfabeto es el mismo).
La única diferencia sería la información al atacante, que la primera contraseña utiliza solo un subconjunto del alfabeto, lo que reduciría la entropía.
Por otra parte, lo que hace que la primera contraseña sea "insegura" es el hecho de que es realmente predecible; las posibilidades son altas para una coincidencia rápida si se usa un diccionario. Dado el hardware lento y un diccionario, realmente importaría elegir uno sobre el otro.
Pero con el poder actual (GPU / Cloud) para bruteforcing , la diferencia en seguridad es desde mi punto de vista despreciable, por lo que es válido decir: uno es tan seguro como el otro.
tl;dr
¿Es la diferencia en la seguridad entre 123456789012
y !"§$%&/()=!"
como contraseñas hoy en día despreciable?
(hash fuerte y uso de sales presumidas).