¿Podría alguien potencialmente averiguar el algoritmo que utilizan para generar estas contraseñas?
Eso depende. Mi enfoque sería simplemente generar un resultado legible para el usuario a partir de /dev/urandom
, en cuyo caso esto no es probable?
también estas contraseñas temporales deben almacenarse en algún lugar en texto sin formato, ¿correcto?
En realidad, no. Si el sitio en cuestión utiliza esquemas de almacenamiento seguro de contraseñas, es decir, hash lentos con sal, como bcrypt o PBKDF2, lo que deben hacer es almacenar el hash derivado de la contraseña. En esencia, es lo mismo que si le hubiera ordenado al servidor que cambie su contraseña, excepto que el servidor lo hizo en su nombre.
La ventana para mantener esa contraseña en la memoria es, por lo tanto, tan larga como la genera, la envía en un correo electrónico, la hash y la almacena.
Ahora, la verdadera cuestión de la pregunta es realmente ¿es esta una forma segura de enviar una contraseña a alguien? La respuesta no es realmente, pero las alternativas son:
La segunda opción es probablemente prohibitiva. Este último no es un buen almacenamiento de contraseñas. La primera opción es "tan mala" en el sentido de que todo lo que necesita para secuestrar la cuenta es el acceso a ese correo electrónico.
Creo que, combinada con una ventana de tiempo limitado para este restablecimiento de contraseña, en la actualidad esta es la mejor solución posible para los sitios web de uso general que no cuentan con la infraestructura para admitir otros métodos de restablecimiento de contraseña.
Toda esta respuesta supone que obtener un correo electrónico / enlace para restablecer la contraseña requiere saber algo sobre la cuenta que no sea solo la dirección de correo electrónico. Las preguntas secretas son otra lata de gusanos, por lo que supongamos que obtener el enlace / correo electrónico para restablecer la contraseña es al menos más difícil que saber la dirección de correo electrónico.