Autenticación de publicación personalizada

0

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"?

    
pregunta Philip Kamenarsky 11.04.2015 - 13:19
fuente

1 respuesta

0

Lo que quiere garantizar aquí es la frescura, por lo que hacer que el cliente firme un nonce (cualquier nonce, siempre que sea fresco) funcionará. Idealmente, esa firma también debería estar vinculada al canal, pero la firma y la identidad se transmiten dentro del canal cifrado, por lo que tal vez sea suficiente.

Sin embargo, idealmente, tienes razón, firmar el secreto compartido de TLS lograría ambas cosas. Simplemente no estoy seguro de lo fácil que es implementar realmente.

El uso de la autenticación del cliente TLS sería aún mejor, porque TLS hace todo esto por usted. Los certificados de cliente serían mi primera opción, pero si está empeñado en usar claves SSH, la autenticación de clave pública sin formato TLS podría ser la solución.

    
respondido por el Justin King-Lacroix 13.04.2015 - 12:19
fuente

Lea otras preguntas en las etiquetas