¿Qué diferencia hay entre la clave openssh y la clave de masilla?

48

Descubrí que ssh-keygen(paquete "ssh") produce claves diferentes de puttygen(paquete "masilla").

Si creo claves públicas y privadas con ssh-keygenalgunos servidores ssh, no aceptaré mis claves. Si creo claves con puttygenun solo servidor, lo acepto.

¿Por qué los repositorios de Linux no le proponen alguna solución (paquete) común? Encontré otro paquete ssh-3.2.9.1 que crea claves que funcionan con masilla. Pero, ¿por qué no hay una solución práctica en SSH?

YarLinux
fuente
1
Para empezar, PuTTYGen ofrece explícitamente convertir claves. Por lo tanto, los formatos nativos que OpenSSH y PuTTY usan para almacenar claves son diferentes. Sin embargo, los algoritmos compatibles son compatibles. Supongo que tendría que ingresar un valor funky en el campo que le permite dar el número de bits (por ejemplo, DSA parece requerir 1024 bits) para la clave generada en PuTTYGen o, alternativamente, que eligió algo como RSA-1 que la mayoría de los servidores habrán deshabilitado en estos días. Lamentablemente, la pregunta no indica realmente lo que intentó y esperaba.
0xC0000022L

Respuestas:

47

OpenSSH es la implementación estándar de facto del protocolo SSH. Si PuTTY y OpenSSH difieren, PuTTY es el que es incompatible.

Si genera una clave con OpenSSH usando ssh-keygenlas opciones predeterminadas, funcionará con prácticamente todos los servidores disponibles. Un servidor que no acepte dicha clave sería antiguo, con una implementación diferente de SSH, o configurado de una manera extrañamente restrictiva. Las claves de un tipo no predeterminado pueden no ser compatibles con algunos servidores, en particular las claves ECDSA hacen que el establecimiento de la sesión sea un poco más rápido, pero solo son compatibles con las versiones recientes de OpenSSH.

PuTTY utiliza un formato de archivo de clave diferente. Viene con herramientas para convertir entre su propio .ppkformato y el formato de OpenSSH.

Este ssh-3.2.9.1 que encontró es un producto comercial que tiene su propio formato de clave privada diferente. No hay ninguna razón para usarlo en lugar de OpenSSH, solo puede ser menos compatible, requiere pagar y hay casi cero tutoriales sobre cómo usarlo.

Gilles 'SO- deja de ser malvado'
fuente
24

La mayoría de las distribuciones de Linux tienen puttydisponible para Linux. Puede instalar puttyen el lado de Linux y usar puttygenpara convertir los archivos .ppk a los archivos de clave de estilo ssh normales (llamados archivos PEM, a pesar de que no reciben un .pem en el nombre del archivo).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

NOTA: También puede usar puttygenpara importar archivos PEM de estilo ssh nuevamente putty.

El autor de PuTTY optó por la simplicidad, por lo que las claves públicas y privadas que constituyen la seguridad subyacente utilizada por la autenticación de clave putty / ssh 2 se almacenan en un único archivo .ppk propietario. Típicamente, estas claves se mantienen como 2 archivos separados por ssh.

En Linux, los archivos clave generalmente se guardan en el directorio, .ssh.

Hay una buena descripción general del proceso de conversión aquí en esta pregunta de desbordamiento de pila titulada: Convertir PEM a formato de archivo PPK .

El autor de Putty también discute su justificación para usar archivos .ppk en el puttymanual del usuario . Puede leer sobre esto aquí en la sección 8.2.12.

slm
fuente
¿Quiere decir que mi Linux tiene SSH-1 obsoleto y vulnerable (si no uso masilla)? ¿Y es asequible? Las vulnerabilidades de SSH-1 se describen en wikipedia
YarLinux
No estoy seguro de dónde lo conseguiste. No, deberías estar bien. ¿Qué versión de Linux estás usando? ¿Qué distribución de Linux estás usando? Ejecutar este comando para averiguar su versión de Linux: uname -a. Distribución Linux: lsb_release -a.
slm
Yo uso Ubuntu 12.04. ¿Quieres decir que SSH-2 tiene diferentes formatos? Simplemente confundí por el nombre del paquete y el comando que "ssh".
YarLinux
Veo. La herramienta ssh a la que te refieres generalmente es parte de un paquete llamado openssh. La versión de este software no tiene nada que ver con los SSH-1 y SSH-2 a los que se refiere. Esa terminología (SSH-1 y SSH-2) se refiere al tipo de archivo de clave con el que está trabajando. Este tipo de archivo no debería ser un problema para usted siempre que esté utilizando versiones recientes de openssh.
slm
¿Hay tres formatos diferentes de claves? OpenSSH, ssh.com y PuTTY?
YarLinux
12

Ambos almacenan un "par de claves RSA para la versión 2 del protocolo SSH" y se pueden convertir indistintamente; sin embargo, con respecto a la diferencia de formato almacenado real:

de https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-natively.html

Las ventajas del formato de clave PuTTY son:

  • La mitad pública de la clave se almacena en texto sin formato . El formato de clave privada de OpenSSH cifra el archivo de clave completo , por lo que el cliente tiene que pedirle su frase de contraseña antes de que pueda hacer algo con la clave. En particular, esto significa que tiene que pedir su frase de contraseña antes de que pueda ofrecer la clave pública al servidor para la autenticación. El formato de PuTTY almacena la clave pública en texto sin formato y solo cifra la mitad privada, lo que significa que puede enviar automáticamente la clave pública al servidor y determinar si el servidor está dispuesto a aceptar autenticaciones con esa clave, y solo pedirá alguna vez frase de contraseña si realmente lo necesita.

    Creo que OpenSSH leerá un.pubarchivo para este propósito si aparece junto al archivo de clave privada, pero esto es una fuente de confusión tan a menudo como conveniencia (he visto a personas reemplazar un archivo de clave privada y dejar un desactualizado .pubjunto a él, y luego estar muy confundido por el proceso de autenticación SSH resultante!).
  • La llave está totalmente a prueba de manipulaciones. Los formatos de clave que almacenan la clave pública en texto sin formato pueden ser vulnerables a un ataque de manipulación, en el que la mitad pública de la clave se modifica de tal manera que las firmas realizadas con la clave alterada filtran información sobre la mitad privada. Por esta razón, el formato de clave de PuTTY contiene un MAC (Código de autenticación de mensaje), borrado de la frase de contraseña y que cubre las mitades públicas y privadas de la clave.Por lo tanto, brindamos la conveniencia de tener la clave pública disponible en texto sin formato, pero también detectamos instantáneamente cualquier intento de ataque de manipulación, brindando una combinación de seguridad y conveniencia que no creo que se encuentre en ningún otro formato de clave. Como beneficio adicional, el MAC también cubre el comentario de la clave, evitando cualquier posible travesura que pudiera ser posible si alguien intercambiara dos claves e intercambiara los comentarios.

    El enfoque de OpenSSH de mantener la clave pública encriptada podríaTambién proporciona cierta seguridad contra este tipo de ataque, pero no está claro que proporcione la protección adecuada: el cifrado diseñado para la confidencialidad a menudo deja formas en que un atacante puede modificar los datos cifrados de manera útil. Para una protección de integridad real, desea un MAC dedicado real, que está diseñado para hacer precisamente eso.

[ énfasis agregado]

Cacahuete
fuente