Me pregunto por qué los sitios web no usan contraseñas de un solo uso generadas por la cadena de hash. Con esto quiero decir que un cliente elige un secreto y, después de que lo saquen, aplica alguna función hash segura F () en ella n veces (por ejemplo, n = 1000000) seguidas.
F (secreto salado, n) = F (F (F (... F (secreto salado) ...))).
El cliente luego envía el resultado y el nombre de la función hash al servidor de forma segura.
Luego, cuando necesita autenticarse contra el servidor, aplica la función de hash n-1 veces en su secreto en una fila F (secreto salado, n-1) y usa este hash como contraseña de un solo uso para la proceso de inicio de sesión. El servidor autentica al cliente solo si F (F (secreto salado, n-1)) == F (secreto, n). La próxima vez, el proceso se repite para n-2 ...