Estoy trabajando en un sistema de administración de cuentas REST a través de https que debería ser compatible con los esquemas de autenticación de nombre de usuario / contraseña y de nombre de usuario / publicación. Es decir. cuando un usuario registra una cuenta, puede optar por cargar adicionalmente su clave pública ssh; todas las solicitudes posteriores ya no necesitarán una contraseña.
No quisiera depender de que el servidor tenga un sistema de archivos para que OpenSSH almacene sus claves, por eso no puedo simplemente ejecutar sshd y hacer que se encargue de la autenticación.
Por lo tanto, el plan es que el cliente firme algún mensaje con la clave privada del usuario (es decir, openssl dgst -sha256 -sign ~/.ssh/id_rsa ...
). El servidor, que tiene la clave pública del cliente, verificará que el mensaje esperado esté correctamente firmado.
La pregunta es ahora, ¿qué firmar? Según tengo entendido, OpenSSH utiliza un identificador de sesión, que, entre otros, se basa en el secreto compartido calculado entre el cliente y el servidor.
No quiero inventar mi propio criptografía, así que me preguntaba si podría reutilizar el secreto compartido de la conexión https para eso. ¿O esto ya se considera "inventar mi propio cripto"?