¿Es razonable tener múltiples claves SSH?

40

Hasta ahora he creado una clave SSH independiente para cada servidor al que necesito iniciar sesión (para cada propósito, para ser más precisos). Lo hice por una sensación de seguridad, al igual que las contraseñas diferentes a diferentes sitios.

¿Tener múltiples claves SSH realmente mejora la seguridad? Todos ellos se usan desde la misma máquina, están ubicados en la misma ~ / .ssh, la mayoría incluso tienen la misma frase de contraseña.

Entonces ... ¿debería renunciar a todo el sistema y solo usar una clave SSH para todo?

[ACTUALIZACIÓN 2015-08-05] Github publica su clave pública, y su cliente SSH puede enviar todas sus claves públicas a cada servidor, dependiendo de la configuración , por lo tanto, si le preocupa que un servidor SSH de terceros conozca su identidad al conectarse, debería Usa múltiples claves SSH, aunque en mi opinión es paranoica.

Leonid Shevtsov
fuente

Respuestas:

23

Las claves SSH utilizan criptografía de clave pública. Eso significa que lo que estás instalando en todos esos servidores es solo tu público llave, que tu querer Todo el mundo para saber. El único secreto real es su clave privada que mantiene bloqueada en su propia máquina. Así que sí, yo diría que estás perdiendo el tiempo.

Spiff
fuente
17
Creo que hay razones válidas para tener claves separadas, y esto no sería una pérdida de tiempo. En el caso de una clave comprometida, el riesgo con esto se reduce. La contraseña debe ser diferente para cada clave, estoy de acuerdo.
jfmessier
¿Es razonable tener pares de llaves diferentes en máquinas diferentes? ¿Te gustan las diferentes instancias de los sistemas operativos VirtualBox?
Santosh Kumar
Esta respuesta ignora el concepto de defensa en profundidad, porque confía en "su clave privada que usted mantiene bloqueada en su propia máquina". Considere, por ejemplo, qué sucede si le roban su computadora portátil mientras (s) su (s) clave (s) privada está siendo utilizada por ssh-agent. Si tiene varias claves, entonces todas las que aún estaban cifradas son seguras. No lo llamaría una pérdida de tiempo.
Jon Bentley
29

En última instancia, esto depende de usted. Necesitas evaluar tu modelo de amenaza. ¿Qué tan probable es que una de tus llaves esté comprometida? Si una clave está comprometida, ¿qué tan probable es que las otras claves estén comprometidas? ¿Cuáles son las consecuencias de que sus llaves se vean comprometidas? ¿Cuál es el costo (incluido el tiempo) de administrar varias claves?

Tener en cuenta factores como estos debería ayudarlo a decidir si realmente necesita claves separadas. En mis máquinas personales en mi red local, por lo general no me molesto en tener una sobrecarga adicional al tratar de administrar varias claves. Sin embargo, fuera de mi red usaría claves diferentes, cada una con una frase de contraseña única. Pero esa es solo mi opinión personal.

heavyd
fuente
6
+1 para "evaluar el modelo de amenaza". Este es el punto.
sleske
18

No, no es una pérdida de tiempo usar más de una tecla.

Más diversidad == menos riesgo.

Esa afirmación de Spiff es incorrecta.

El punto es la clave pública que otorga acceso a la llave privada titular y nadie más.

El riesgo de preocuparse aquí es la autenticación. Un sitio deshonesto reenvía las solicitudes de autenticación a la tarea de su agente. Si usa una sola tecla, entonces incluso cuando solo se carga una llave en su agente todos los sitios están abiertos al pícaro.

Esto tiene nada que ver con las frases de contraseña , podrias tener varias llaves con la misma frase de contraseña que no haría ninguna diferencia aquí. Porque no es la frase de contraseña que se compromete.

El pícaro reenvía los desafíos a su agente y puede conectarse a todos los sitios para cual tienes las llaves cargadas . Con diferentes claves, una tecla cargada - & gt; un sitio en riesgo .

Digo bien por ti, elegiste la privacidad de otras personas sobre tu propia pereza.

PD la moraleja de la historia es tenga cuidado con el envío de agentes

pbernatchez
fuente
Supongamos que genero tres claves SSH, una para cada uno de los tres servidores en los que me registro regularmente. Un día, después de que ya haya iniciado sesión en las tres (lo que significa que ssh-agent ha guardado las frases de acceso para las tres claves), luego, según su argumento, si mi agente ssh se compromete, los tres inicios de sesión se verán comprometidos. En tal caso, tener varias claves SSH no me ha protegido. ¿Te he entendido bien?
sampablokuper
9

Creo que hay un buen caso de uso para múltiples claves públicas, y eso es si tiene claves privadas almacenadas en computadoras en diferentes áreas de confianza. Por lo general, mantengo una clave que es mi clave de "trabajo" y otra que es mi clave de "inicio", simplemente porque la clave privada de mis cosas de "inicio" no se almacena en la computadora de mi trabajo y viceversa.

krosenvold
fuente
Buena respuesta, si tienes máquinas diferentes con llaves diferentes, perfecto. Si una (o varias) máquinas tienen las mismas claves, bueno, no te estás protegiendo de nada extra, solo con una sola clave. Si uno está comprometido, todo el resto de esa máquina también lo está.
xref
1

Yo creo que razonable Se puede considerar desde dos ángulos diferentes: seguridad y conveniencia .

Cuando creamos un par de claves SSH, se nos pide que proporcionemos una frase de contraseña para agregar una capa más para proteger la clave privada, de la siguiente manera:

$ ssh-keygen -t rsa -b 4096 -C 'With_OR_Without_Passwd'
Generating public/private rsa key pair.
Enter file in which to save the key (/Your/HomeDir/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

Aunque hay un mensaje explícito que solicita una frase de contraseña, pero algunas (o muchas) personas aún se centran más en la información entre paréntesis: (vacío sin frase de contraseña) , y siguiendo esa sugerencia.

Combinatorio si o no utilizar múltiples pares de claves SSH y si o no introducir contraseña adicional , tenemos al menos cuatro maneras de ir. Y asumamos todos los pares de llaves y la config archivo se almacenan en ~/.ssh/.

Ahora consideremos seguridad primero.

La siguiente tabla proporciona una clasificación simple sobre seguridad (un número más grande significa más seguro):

Security     Ways to go
   1         One   SSH key-pair  (NO passwd)
   1         Multi SSH key-pairs (NO passwd)
   2         One   SSH key-pair  (WITH passwd)
   2         Multi SSH key-pairs (WITH passwd) (SAME passwd)
   3         Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Sin contraseña , si nuestro sistema es invadido por alguien, entonces el interruptor puede obtener todas nuestras claves privadas y configuración, también la autenticación de servidores remotos. Entonces, en esta situación, un par de llaves y varios pares de llaves son iguales. La forma más segura es usar diferentes contraseñas para diferentes pares de claves ssh.

Entonces no pensemos conveniencia .

Pero más pares de claves y más contraseñas también hacen que nuestra vida sea menos conveniente, la siguiente tabla proporciona un rango simple sobre seguridad (un número más grande significa más seguro):

Convenient  Security  Ways to go
   5           1      One   SSH key-pair  (NO passwd)
   4           2      One   SSH key-pair  (WITH passwd)
   3           1      Multi SSH key-pairs (NO passwd)
   2           2      Multi SSH key-pairs (WITH passwd) (SAME passwd)
   1           3      Multi SSH key-pairs (WITH passwd) (DIFF passwds)

Entonces, en una situación general, si tenemos que negociar con seguridad y conveniencia al mismo tiempo, podemos multiplicar las dos puntuaciones, y tal vez Un par de claves SSH (CON contraseña) Es la buena para elegir.

YaOzI
fuente