Contraseña diferente para cada inicio de sesión - basado en alguna variable

1

Esto podría sonar como una pregunta tonta, pero pensaba que esto era una opción adicional (que no es necesaria) principalmente para usuarios avanzados, que quieren proteger sus cuentas aún más. Consideremos que existen otras medidas de seguridad (por ejemplo, protección contra ataques de fuerza bruta en línea, que requieren contraseñas seguras al registrar / actualizar la contraseña, advirtiendo al usuario de posibles intentos fallidos de inicio de sesión, que requieren información adicional al iniciar sesión desde una IP desconocida o entre dos ubicaciones a distancia en un corto período de tiempo, mostrando la lista de sesiones activas (como en gmail), autenticación de 2 factores, etc.). Por lo tanto, esto es como intentar agregar una capa adicional de seguridad.

Aquí está la idea. Cuando el usuario activa esta opción de seguridad, debe elegir el tipo de variable que debe concatenar con su contraseña habitual cuando intenta iniciar sesión. P.ej. El usuario puede elegir el actual (día + 7). Entonces, si mi contraseña es myPassword , y la fecha de hoy es 11, entonces tengo que escribir myPassword18 . Lo que significa que si tengo que iniciar sesión otro día, tendré que insertar otra contraseña "total" basada en ese día. Por supuesto, la fecha es un ejemplo, puede ser un tipo de variable diferente, por ejemplo, las primeras 3 letras de mi dirección IP actual (en caso de que el usuario inicie sesión con frecuencia desde diferentes ubicaciones), quizás algo asociado con un navegador (y / o su versión), la idea es tener algo que cambie constantemente, pero el usuario puede identificar fácilmente ese cambio y hacer la entrada correcta.

Aunque esto creará problemas con la contraseña del navegador autocompletada, pero quienes no la necesiten, supongo que no habrá problema desde ese punto de vista.

Validación de la contraseña del usuario durante el inicio de sesión: Estoy utilizando la comprobación / validación de contraseñas como se describe aquí enlace

Por lo tanto, la parte de hash se ve sin problemas y, por supuesto, solo hago la parte myPassword . Durante la validación, cuando recupero los datos del usuario de la base de datos, puedo verificar y ver si esa opción está habilitada y, en función de la elección del usuario, puedo calcular qué debe concatenarse con la contraseña "principal", por lo que se verificará y será válida. , se cortará de la cadena para validar la contraseña.

Entonces,

  • Si esa opción de seguridad está deshabilitada, será una validación de contraseña habitual
  • Si está habilitado, digamos que el usuario eligió la opción actual (día + 7), entonces sé que la contraseña debería terminar con 18, si no lo hace, entonces el inicio de sesión falló. Si es correcto, eliminaré ese 18 de la contraseña proporcionada por el usuario y verificaré la validez de la cadena restante comparándola con el hash de la contraseña que se obtuvo de la base de datos.

Admito que, en general, esto hace que el proceso de inicio de sesión sea más complejo (lo cual es malo), pero, por otro lado, creo que podría ser útil si alguien vio su contraseña (directamente o tal vez a través del keylogger, o simplemente cuando hizo clic accidentalmente en guardar en una computadora que no sea de confianza), porque la próxima vez que se cambie esa parte variable (posiblemente) y que el último número / cadena ya sea un poco más, y si el usuario malintencionado intentó iniciar sesión, se notificará al propietario de la cuenta que alguien lo intentó para iniciar sesión desde cualquier ip / ubicación, proporcionando una contraseña válida (la primera parte), aunque no proporcione el segundo parámetro correcto (parte variable), lo que podría ayudar al usuario a cambiar la contraseña "principal" y / o la parte variable de la contraseña .

¿Alguna idea sobre si esto podría mejorar la seguridad o hay algunos defectos que no consideré que tendrán el efecto contrario?

Gracias

    
pregunta dav 11.03.2015 - 13:08
fuente

2 respuestas

1

Si bien esta es una idea interesante, sugeriría que se mantenga normal como la tiene, pero que los usuarios tengan la opción de autenticación de 2 factores en la configuración de su cuenta.

En este caso, cuando un usuario ingresa sus credenciales con éxito, se le enviará un enlace por correo electrónico para hacer clic / seguir. Una vez seguidos se iniciaría su sesión.

Debe asumir que sus clientes son estúpidos, ya que las funciones de inicio de sesión complicadas con contraseñas variadas los confundirán.

En cuanto a las funciones adicionales de seguridad, muchos sitios web utilizan funciones como:

  1. dispositivos aprobados
  2. autenticación de 2 factores
  3. registro avanzado
  4. restricciones de IP
  5. fail2ban (x cantidad de intentos = bloqueo)
  6. análisis avanzados que sugieren que la persona real no está usando la cuenta (común con los bancos)

Espero que algunas de estas características te den algunas buenas ideas.

ADVERTENCIA:

Su idea podría interferir con la seguridad de la contraseña, agregar datos al final de una contraseña con hash podría causar numerosos errores, nunca debería poder descifrar las contraseñas y hacer esto de esta manera, debería cambiar los hashes de contraseña la base de datos para tener ese número añadido en ella. Veo que mencionaste hash y por lo tanto no puedes revertir la ofuscación. Aunque, una vez más, sugiero que evites tu idea como si se tratara de una característica que todos conocen al respecto.

de todos modos, imagino que harías esta función numérica: o bien:

  1. Predecible y, por lo tanto, sin sentido (si fuera un hacker, simplemente esperaría esto)
  2. codificación sucia que fuerza la función en lugar de aplicar seguridad adicional
respondido por el TheHidden 11.03.2015 - 13:45
fuente
0

El mayor problema que veo es que no ayuda contra ataques sin conexión, o los lastima.

Será mejor que esté aprovechando el hashing y el hash de la contraseña, o de lo contrario está debilitando drásticamente su seguridad. Y si está haciendo eso, entonces esto debe hacerse mediante una llamada externa, y todo lo que queda es seguridad por oscuridad.

    
respondido por el McKay 21.08.2015 - 15:58
fuente

Lea otras preguntas en las etiquetas