Fondo
Actualmente estoy configurando un nombre de usuario básico & Proceso de inicio de sesión basado en hash para una aplicación web. El proceso consta de los siguientes pasos:
- El usuario envía su nombre de usuario.
- El servidor responde con sal.
- El usuario borra la contraseña y la envía junto con el nombre de usuario al servidor.
- El servidor autentica al usuario.
Obviamente, esto se simplifica un poco y se pasan por alto varios pasos durante el proceso de hashing real.
Lo que veo aquí es un potencial para enumerar los nombres de usuario existentes. Si un atacante envía un nombre de usuario que no existe, no se proporcionará sal, indicando al atacante si el nombre de usuario está en uso o no.
Pregunta
Cuando se proporciona un nombre de usuario no existente, si tuviera que proporcionar un salt al azar, ¿impide que el atacante enumere a los usuarios existentes?
¿Esa precosión sería tan pequeña que podría omitirse?
Preocupaciones
- Un atacante podría ver que el servidor solo está arrojando valores aleatorios.