¿Existe tal cosa como un par de claves SSH firmado?

9

Estamos transfiriendo archivos a un servidor remoto en nuestra aplicación y el método de autenticación requerido es usar claves SSH.

Entonces, creé mi par de claves usando ssh-keygen y envié mi clave pública para su inserción en el archivo autorizado de claves del host remoto. Sin embargo, esto fue rechazado por IT Security, quien dijo que generarían el par de claves para mí y me enviarían la clave privada. Motivo: "Necesitamos que las claves SSH sean firmadas por el equipo de seguridad de TI. Esto es para garantizar que tengamos alguna ventaja en el seguimiento y la responsabilidad".

Obviamente, tengo problemas con esto. Tener la clave privada generada por otra persona significa que puedo hacer que esa persona se haga pasar por mí sin que yo lo sepa. Estoy tratando de encontrar formas de refutar este argumento.

Hasta donde puedo buscar en Google, no parece haber ninguna forma conocida de firmar las claves, de modo que ayude a rastrear a una persona que inició sesión. El hecho de que haya enviado mi clave pública significa que soy dueño de la clave y que cualquier persona que inicie sesión en el servidor remoto con esa clave se identifica por defecto como yo mismo. ¿Cómo ayudaría la firma? ¿Y cómo firmarían de todos modos?

Alguien por favor dame una pista si me equivoco, ¡gracias!


Ok, ahora que hemos determinado que no hay forma de que las claves SSH puedan firmarse, necesito mostrarle a IT Security cómo pueden realizar un seguimiento de quién ha estado iniciando sesión (supongo que debe ser constructivo, si no es que la alta presunción comienza) ) En mi propio servidor, configuré LogLevel de sshd en DEBUG. Entonces, cuando inicio sesión, puedo ver el siguiente fragmento:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Esto parece ser un valor hash. ¿Cómo relaciono esto con la clave pública en el archivo autorizado_claves que se utilizó? Sé que hay otra línea que dice:

debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1

pero esto no es tan útil ya que los números de línea se pueden cambiar fácilmente si tuviera que insertar una clave en la parte superior del archivo, presionando las teclas originales hacia abajo.

¡Gracias!

feicipet
fuente
2
¿Quizás imprimirán las llaves, las firmarán (en papel) y luego las archivarán?
innaM
Es muy probable que el valor hash que obtenga sea la llamada huella digital de la clave. Recomiendo consultar el manual de openssh sobre cómo puede enumerar estas huellas digitales.
Niels Basjes
La razón más probable por la que esta política está vigente es que realmente quieren poder suplantarlo si es necesario. El argumento de la firma es solo BS para que parezca plausible para los neófitos. Incluso si necesitaran firmar la clave pública, no tendrían que generarla ellos mismos.
b0fh

Respuestas:

13

En el tiempo transcurrido desde que hizo su pregunta, el universo ha cambiado.

Openssh5.4 agregó soporte para exactamente el tipo de certificados que buscabas. Consulte las notas de la versión en http://www.openssh.org/txt/release-5.4 (y las páginas de manual) para obtener más información, o si realmente quiere estar loco, mire PROTOCOL.certkeys para obtener los detalles sangrientos

James Polley
fuente
Acabo de ver esto después de mucho tiempo ... parece legítimo :) Lo probaré, ¡gracias!
feicipet
8

Mi primera impresión al leer su pregunta es que la persona de TI se mezcló con SSH y SSL (debe ser firmado por nosotros) y tampoco comprende cómo funciona realmente la firma SSL.

De todos modos, no hay forma de que se pueda firmar una clave SSH (que yo sepa).

Niels Basjes
fuente
+1 no puede firmar claves ssh de la misma manera que puede firmar certificados PGP o SSL. Buscaría aclaraciones de ellos.
David Pashley
4

Algo no está bien en esta solicitud.

Si está entregando archivos firmados al servidor,
esperaría que esto se haga al mínimo.

  1. Usted crea un par de claves para usted (llame a esto mi clave)
    • Cuando quieras enviar algo,
    • primero lo encriptas con my-key-private
    • luego cargó en el servidor este archivo cifrado
    • Alguien en el servidor tiene que revertir el proceso de esta manera,
    • usan tu my-key-pubpara descifrar el archivo
    • si ha enviado el archivo, el descifrado lo recuperará
    • de lo contrario, no obtendrán ningún archivo utilizable
    • efectivamente, ha firmado el archivo con su clave privada
    • han verificado la firma con su clave pública
    • la responsabilidad se realiza mediante la confirmación de que ha enviado el archivo

Hay otras formas de hacer tales cosas.
Sin embargo, obtener un par de claves generado por otra persona es inútil como esquema de autenticación .
Tiene una fuerte implicación que confías en ellos tanto como confías en ti mismo.


Estas son las preguntas iniciales que puede hacerle a su TI.
Si la responsabilidad es una preocupación para la TI,

  1. ¿Cómo se aseguran de que no compartas / pierdas el par de claves que te dieron? y,
    • ¿En qué se diferencia este concepto de par de claves de TI de una contraseña que le proporcionó la TI?
      ¿Por qué molestarse con pares de llaves en ese caso?
nik
fuente
Estás pensando en PGP / GnuPG para cifrar archivos. En este caso, la firma de claves es normal. La pregunta original es sobre las claves SSH. Tendría sentido si estuvieran pidiendo una clave SSH cifrada / firmada PGP (después de verificar y firmar las claves PGP de cada uno).
pgs
@pgs, estoy tratando de ver a qué se dirige la persona de TI aquí.
nik
Estoy bastante seguro de que el tipo de seguridad está confundido, pero como es el tipo de seguridad de TI de la empresa de mi cliente y no mi colega, necesito ser un poco más discreto y empujar constructivamente sin reírme de él y decir que tiene cosas mezclado. Sí, definitivamente es SSH y no PGP.
feicipet
@feicipet, tener tacto es donde mis últimos puntos te ayudarán.
nik
@feicipet, su objetivo sería finalmente hacer que se den cuenta del mínimo que tendrían que hacer para lograr correctamente su intención.
nik
2

No hay ninguna razón por la que no pueda usar certificados X.509 para la autenticación SSH en lugar de claves desnudas; de hecho, ¡preferiría que OpenSSH funcionara de esta manera! Pero, la versión estándar de OpenSSH no lo hace, y es la implementación dominante en estos días.

He visto algunas versiones parcheadas de OpenSSH flotando alrededor, y la implementación comercial de SSH.com también parece admitir la autenticación X.509. Por lo tanto, si su organización está utilizando uno de estos, exigir que las claves estén firmadas por una autoridad central tendría mucho sentido.

Dicho esto, ¡no hay excusa para exigir que la clave privada sea generada por un tercero! Si van por la ruta X.509, deberían hacer que genere un par de claves y una solicitud de firma de certificado, tal como lo haría con cualquier otro certificado X.509 utilizado para SSL, etc.

Stephen Veiss
fuente