Estamos trabajando en un proyecto escolar que maneja información confidencial (un administrador de contraseñas) que transita entre un cliente que cifra los datos y un servidor que no sabe nada sobre los datos. Para obtener los datos, el cliente necesita autenticarse a través de un nombre de usuario / contraseña y luego obtiene un token generado aleatoriamente.
Será una aplicación auto hospedada, y nuestro objetivo es tener algo seguro incluso si el usuario no se molesta en usar HTTPS. Así que queremos asegurarnos de que si alguien revisa el token, no podrá usarlo.
Pensamos que podríamos usar un mensaje firmado a través de OpenPGP, pero esto significa que cada mensaje debe ser diferente, y los datos más antiguos deben almacenarse en el lado del servidor para que no se pueda usar el ataque de reproducción.
Esta idea claramente no es la mejor. ¿Alguien tiene uno mejor?