Estoy pensando en limitar los derechos de los usuarios que eligen contraseñas inseguras (la inseguridad de una contraseña está determinada por la longitud, cuántos tipos de caracteres (mayúsculas / minúsculas, números, símbolos, etc.) se usan, y si puede ser ubicado en una tabla de arcoíris) para limitar cuánto daño puede hacer su cuenta si se ve comprometido.
Todavía no tengo una aplicación para esta idea, pero digamos que estoy escribiendo un foro o algo así: los usuarios que usan 1234 como contraseña pueden tener que completar un captcha antes de publicar, o estar sujetos a medidas rigurosas contra el correo no deseado como como tiempos de espera o filtros bayesianos que rechazan su contenido. Si este foro es muy jerárquico, lo que permite la "promoción" a los moderadores o lo que sea de alguna manera, esto les impediría obtener privilegios o les dirá que tienen privilegios, pero no les permitirá ejercerlos sin un cambio a un lugar más seguro. contraseña.
Por supuesto, esta no podría ser la única medida de seguridad, pero podría ir bien junto a las buenas prácticas de seguridad.
¿Qué piensas? ¿Esto es simplemente exagerar, robando el foco de las prácticas de seguridad más importantes, o es una buena manera de limitar el riesgo y alentar a los usuarios a usar contraseñas más seguras (y con suerte convencer a las personas de que está usando buenas prácticas de seguridad)?
fuente
Respuestas:
YAGNI , KISS , DRY , la regla de los 10 segundos y el hecho de que "a los usuarios no les importas" probablemente debería reducirlo a una solución: no lo hagas.
fuente
O bien forzar una contraseña segura en el cambio de registro, o usar un OpenId (Jeff Atwood's 2c: http://www.codinghorror.com/blog/2010/11/your-internet-drivers-license.html ). Luego concéntrese en una funcionalidad más interesante.
Por un lado, los usuarios están acostumbrados a verse obligados a crear contraseñas seguras o usar su OpenId, por lo que es simple para ellos.
fuente
¿Por qué permitir las contraseñas que crees que son malas en primer lugar? Detener el problema en la fuente le ahorrará mucho tiempo de diseño al tratar de averiguar qué clases de contraseñas se asignan a qué roles. Dado que un administrador, por definición, tendría todos los derechos, ya necesitaría funcionalidad para asegurarse de que no ingrese una contraseña que lo restringiría.
Mi respuesta realmente se reduce a KISS .
fuente
Como usuario, eso probablemente me convencería de no usar su sitio. Quiero decir, en serio, mi banco me dice que un código de 6 dígitos es perfectamente seguro para la banca en línea, pero cuando quiero escribir un comentario en un blog menos conocido, se supone que debo recordar una contraseña única que contenga al menos 8 letras superiores. - y letras minúsculas, un dígito, un carácter especial y un símbolo griego o cirílico que solo se puede ingresar si conoce la secuencia unicode de memoria. Y cámbielo regularmente.
No me malinterpreten, la seguridad es importante. Pero si no debe molestar a sus usuarios a menos que tenga una razón realmente sólida para creer que alguien intentará descifrar sus contraseñas para obtener acceso a su sitio. Si su sitio proporciona acceso VPN a la red del FBI, adelante, moleste. Pero si se trata de un foro de usuarios donde cualquiera con una dirección de correo electrónico puede registrarse, ¿cuál es el punto, realmente?
fuente
Mejor solución: caras sonrientes.
¡Lo digo en serio! La lectura de libros de economía del comportamiento como "Empujar: mejorar las decisiones sobre salud, riqueza y felicidad" me había convencido de algunas cosas:
Veo que estos principios se aplican a su situación así:
fuente
No para agregar, pero pensé en otra razón para archivar esto bajo "Mala idea" que aún no he visto mencionado: atención al cliente.
Si este es un producto que tendrá representantes de atención al cliente, no les va a gustar mucho. Una de las suposiciones subyacentes del soporte es que entienden y pueden predecir la experiencia del usuario: si están ayudando a un usuario normal, entonces la página 1 debe tener enlaces a las páginas 2, 3 y 4, donde pueden hacer X, Y, Z etc.
Ahora, les está dando otra variable que deben tener en cuenta. Si el usuario no ve el enlace a la página 4, ¿es porque hizo algo estúpido? ¿O es porque su contraseña apesta y su sistema los está castigando al negarles el acceso a la página 4? Espera ... mierda, ¿está negando el acceso a la página 4 uno de los castigos por una contraseña incorrecta, o estoy pensando en la página 5? Permítanme buscar eso, solo un momento ... está bien, dice que para una contraseña que no mezcle letras mayúsculas y minúsculas, el acceso a páginas pares está permitido pero restringido a solo lectura ... está bien, señor, su contraseña, ¿consiste en mayúsculas o minúsculas? Caso. Cuando solo escribe la letra, es minúscula; cuando usas shift, es cuando es mayúscula. ¿Mezcló los casos en su contraseña? La contraseña que usó para iniciar sesión en el sistema. El que acabas de usar. De acuerdo, vaya a Editar, luego seleccione Preferencias, luego Seguridad. Seleccione "Contraseñas guardadas" ... no, señor, no puedo ver sus contraseñas desde aquí ...
Si. No hagas esto.
fuente
Restrinja las contraseñas o informe a los usuarios de los riesgos de contraseñas débiles. Supongo que si a un usuario no le importan sus datos, puede restringir el acceso a otros. Tal vez los usuarios se sientan más seguros si los que siguen prácticas de contraseña descuidadas son eliminados. ¿Cuál es el punto de requerir una contraseña más segura si va a terminar en una nota adhesiva debajo del teclado o pegada a la computadora portátil? (No puedo inventar esas cosas; lo he visto suceder).
fuente
Supongo que te refieres al diccionario y no a la mesa del arco iris. El ataque del diccionario funciona simplemente probando todas las palabras del diccionario si coinciden con la contraseña. Este ataque se puede solucionar con 5 intentos y bloqueo durante x minutos ...
Una tabla de arcoiris solo se usará si hash hash la contraseña y el atacante sabe el hash. De lo que podría encontrar el hash en la mesa del arcoíris si fuera solo "12345" o algo similar.
Solo para completar el viaje de ida y vuelta: para que una tabla de arcoíris sea inútil, debe eliminar las contraseñas. Y use una sal unqiue para cada contraseña y no solo una para todas. Si haces eso, el atacante debe crear una tabla de arcoíris con la sal única para cada cuenta a la que quiera acceder. Listo a tu lado, puedes darle vida al algoritmo hash múltiple de concatenación para que una generación pueda tomar medio segundo. Si ha hecho esto, acceder a una cuenta en su sitio web debe valer días, probablemente un mes de generar hashes para encontrar una coincidencia con esta cuenta ... No puedo pensar en un atacante que intente obtener todas las contraseñas cuando sea necesario. toma tanto tiempo
Para el momento del hash: piense en el tiempo de espera de 500 ms para un mecanismo de inicio de sesión. Creo que es aceptable ... (un recordatorio: casi un segundo toma un apretón de manos para SSL)
fuente