No puede estar seguro de que el servidor tenga la contraseña antes de almacenarla. @Rory señala que es un requisito razonable que puede intentar cumplir por medios no informáticos, pero no es realista creer que todos los servidores harán las cosas correctamente. La solución es no usar la misma contraseña (o contraseñas que se pueden adivinar entre sí) para dos sitios distintos.
Las contraseñas "distintas" se pueden generar a partir de una "contraseña maestra" con una función criptográfica hash (p. ej., hash la concatenación del nombre del sitio y la contraseña maestra; hay formas de fallar, pero el principio es correcto) . El software existe para eso. O puede almacenar contraseñas generadas aleatoriamente en un archivo, cifradas simétricamente con una contraseña maestra. El software también existe para eso. Podría tomar varias formas (un archivo cifrado, una conexión SSH a un servidor que aloja el archivo de contraseña, una extensión del navegador que utiliza una función de cifrado criptográfico, ...).
De cualquier manera, es difícil hacerlo solo en tu cabeza (¡maldita ese cerebro biológico!), porque requiere hacer cálculos extensos y / o recordar muchos elementos aleatorios.
Sin embargo, afirmo que el escenario "hazlo en tu cerebro" es no realista . ¿Por qué querrías calcular todo en tu cerebro? Esto se debe a que la máquina local en la que está a punto de escribir la contraseña no tiene instalado el software necesario; Esa es una máquina aleatoria en, digamos, un cibercafé. Hey, espera ! ¿Está a punto de escribir su contraseña en una máquina de cibercafé ? ¿Una máquina que podría estar llena de registradores clave y otros programas maliciosos? Ahora es una mala idea. No es necesario un servidor mal escrito, en estas condiciones: usted es muy bueno haciendo cosas inseguras por usted mismo.
Por lo tanto, la necesidad de un esquema de almacenamiento / derivación de contraseña que pueda ejecutarse "en su cerebro" es en realidad una necesidad de poder hacer algo que es bastante estúpido, desde el punto de vista de la seguridad. Así que no lo hagas. Si no puede acceder a un almacenamiento seguro o generador para las contraseñas por sitio, entonces no está en un contexto en el que pueda usar dicha contraseña de manera segura.