¿Por qué una contraseña acompañada por un nombre de usuario se considera "más segura"?

4

Mientras navego por esta comunidad, me doy cuenta de que algunas personas dicen que la principal ventaja de los nombres de usuario acompañados de contraseñas es que requieren más intentos de ser brutal, sin embargo, no creo que ese sea el caso, por ejemplo:

#Easy password just for example

Username: admin
Password: c1235

Es tan difícil de descifrar como un solo token / contraseña para iniciar sesión:

Password: adminc1235

Otro argumento que la gente da es que los nombres de usuario acompañados de contraseñas pueden ser salados , sin embargo, también puede agregar una sola contraseña al dividirlos en dos subcadenas diferentes y al salatarlas.

También la inyección SQL es mucho más difícil de encontrar los detalles de la cuenta que desea hackear si no hay un nombre de usuario ...

Por supuesto, aparte de las medidas de seguridad, entiendo que los nombres de usuario también sirven como la memoria del usuario para la contraseña, pero observando los datos de seguridad no veo mucha diferencia entre un nombre de usuario con una contraseña y una frase de contraseña larga / oración.

Así que me gustaría preguntar, ¿hay alguna razón más por la que las contraseñas acompañadas por nombres de usuario se consideren más seguras? Si cometí errores en mis publicaciones, dígalo, ¡no soy un experto!

    
pregunta Thomas W 02.06.2015 - 18:31
fuente

4 respuestas

9

En la mayoría de los sistemas, se requiere que el nombre de usuario sea único, pero la contraseña no lo es.

Si la contraseña se usó como credencial de inicio de sesión sin un nombre de usuario, la contraseña tendría que ser única. En ese caso, los mismos ataques contra el nombre de usuario funcionarán con la contraseña, como intentar registrarse con una contraseña de diccionario y buscar un error que indique que la contraseña ya está en uso.

    
respondido por el CoverosGene 02.06.2015 - 18:38
fuente
7

Antes de que se pueda validar la contraseña, se debe buscar el registro del usuario en la base de datos para que sepa qué sal usar cuando se utiliza el hash de la contraseña. Si no tuviera un nombre de usuario, tendría que extraer el salt de cada contraseña de hash almacenada, sal y el hash de la contraseña ingresada, y compare el resultado con el guardado. Esto debería hacerse para cada registro en la base de datos hasta que se encuentre una coincidencia. Esto sería prohibitivamente costoso ya que los algoritmos de almacenamiento de contraseñas (por ejemplo: bcrypt y PBKDF2) están diseñados para ser costosos, de modo que protejan contra ataques de fuerza bruta en caso de robo de la base de datos de contraseñas.

Por lo tanto, en un mundo con solo contraseñas, sería necesario crear un mecanismo de almacenamiento de contraseñas completamente nuevo. Sería caro para el atacante hacerlo en masa, pero no para que el sistema lo haga en masa al iniciar sesión en un usuario. No diré que es imposible, pero sospecho que cualquier solución sería incluso más compleja que la que tenemos. hoy.

    
respondido por el Neil Smithline 02.06.2015 - 19:51
fuente
3

Además de la respuesta de CoverosGene, tiene el problema de que ahora solo hay contraseñas para la autenticación de identidad y . Piénselo de esta manera, si una persona simplemente eligió su contraseña como "bob", solo tiene que resolver eso una vez y estará en su cuenta, ya que no tiene que aplicarla a ningún nombre de usuario / identidad específico. Es increíblemente fácil de descifrar, ya que nunca tiene que hacer coincidir las contraseñas con una cuenta específica, ya que es el identificador de la cuenta ahora.

Suponga en un sistema con nombres de usuario y contraseñas que su atacante haya recibido una lista de todos sus nombres de usuario registrados e intente ingresar en las cuentas. Tendrá que intentar descifrar la contraseña de cada cuenta por separado para ingresar a cada una de las cuentas. Si no hubiera un nombre de usuario por separado, no existe tal salvaguarda, ya que solo tienen que probar las contraseñas en una sola pasada del sistema.

    
respondido por el Greg 02.06.2015 - 18:56
fuente
2

Además de las contraseñas únicas y los problemas informáticos, aún debe poder identificar a un usuario en la mayoría de los sistemas sin autenticarlo. El mejor ejemplo es el correo electrónico: necesita tener un ID público de un usuario para poder enviarle un mensaje.

Y como desea evitar las colisiones de contraseñas, en su mundo debe asegurarse de que la contraseña de un usuario que desea recibir el correo se entregue, al menos parcialmente, desde el ID de usuario que forma parte del contraseña y no una contraseña. El "token" de autenticación aún consistirá en un ID y en un secreto, por lo que no hay razón para poner estos dos juntos y tratarlos como un solo secreto como se explica en otras respuestas.

    
respondido por el mikky 03.06.2015 - 11:04
fuente

Lea otras preguntas en las etiquetas