¿Por qué Amazon lanza claves privadas en lugar de claves públicas?

20

Mi cerebro está envuelto alrededor del eje en teclas públicas y privadas. Cuando crea un servidor en la nube (instancia) en el servicio EC2 de Amazon y luego quiere conectarse a él a través de SSH, Amazon requiere que descargue una clave privada para realizar la conexión. ¿La idea detrás de la clave pública / privada no sugiere que Amazon deba exigirle que descargue una pública?

Además, si configuro un servidor SFTP para que lo use un cliente, ¿debería instalar su clave en el servidor o darle una clave del servidor? En cualquier caso, ¿debería ser una clave pública o privada?

Seth
fuente
1
Para aquellos de nosotros menos familiarizados con EC2, ¿Amazon está requiriendo que descarguen una clave privada?
Zoredache
2
Cuando configura un servidor en la nube en Amazon EC2 y luego desea conectarse a él a través de SSH, la consola de Amazon le permite descargar una clave privada que utiliza para realizar la conexión. Debes proteger la llave, por supuesto.
Seth
@Zoredache Para ser justos, esa es una opción. Alguien que esté buscando herramientas rápidamente en un cuadro de Windows probablemente nunca haya usado OpenSSH antes, por lo que es un buen inicio rápido.
ceejayoz

Respuestas:

36

Pensando más profundamente en el proceso de autenticación, ¿qué debe mantenerse en secreto? Amazon conoce la mitad pública de la clave, y cualquiera puede conocer la mitad pública. La mitad pública del par de claves, cuando se combina con la mitad privada, denota que la mitad privada se usó para autenticar.

Su clave privada que se le proporciona cuando Amazon genera un par de claves para usted solo es útil si usted es el único que la tiene. Si no es un secreto, cualquier otra persona que lo sepa también puede autenticarse ante cualquiera que tenga la mitad pública del par de claves.

Quien sea autenticado debe tener la mitad privada . Está bien si todos en el mundo pueden autenticarlo manteniendo la mitad pública de la clave, pero solo usted debe tener el control de la mitad privada.

Jeff Ferland
fuente
18

Amazon proporciona servicios de generación de claves porque algunos sistemas operativos (tos, Windows, tos) pueden no facilitar la generación de los pares de claves SSH.

Con SSH (y SFTP), la clave pública se instala en el archivo autorizado de claves del usuario cuando se inicia la instancia EC2. La clave privada solo la posee el usuario y se presenta para autenticarse en el servidor.

De la documentación en:

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

parece que Amazon genera el par de claves en sus servidores y le envía la clave privada a través de HTTPS. Esto es quizás menos que perfecto (idealmente, usted y nadie más tendrá posesión de la clave privada), pero probablemente no tan terriblemente, dado que todo esto ocurre en el contexto de su sesión autenticada y solo usted (y Amazon temporalmente) ven La clave privada. También siempre puede generar y cargar su propia clave pública para el uso de EC2, mientras mantiene la clave privada estrictamente privada.

Para configurar usuarios SFTP para la autenticación de claves, deberían generar claves SSH en sus máquinas. Una vez que generan un par de claves, solo deberían enviarle la clave pública para instalar en el archivo autorizado de claves autorizadas. La clave privada, como su nombre lo indica, es privada.

cjc
fuente
55
Regularmente genero pares de claves en máquinas con Windows. No es difícil, aunque se hace con el software instalado, y no con el propio Windows.
Dominic Cronin
2
De acuerdo con Dominic. Es más el hecho de que el usuario promedio de Windows está aterrorizado y perdido ante la vista de una CLI, y que Windows todavía no tiene una opción de "inicio de sesión con clave SSH".
HopelessN00b
Oh, sí, de acuerdo. Yo uso Cygwin, etc., con openssh, por lo que todo funciona de manera limpia. Me imagino que la mayoría de los usuarios de Windows que hagan esto usarán PuTTY y tendrán que hacer alguna conversión de clave. Son solo más pasos.
cjc
1
En realidad, nunca he usado Amazon, pero en lugar de culpar a Windows, supongo que la razón por la que Amazon le envía una clave es que si no le dieron una clave para iniciar sesión, ¿cómo iniciaría sesión para instalar su público? clave en primer lugar?
DerfK
1
@DerfK Puede enviar su propia clave pública y seleccionarla para instalarla en una nueva instancia de EC2. Seleccionar una clave en particular es parte del proceso de creación de instancias.
cjc
2

La autenticación de clave pública funciona en la dirección inversa a la que probablemente esté pensando. La clave pública cifra los mensajes y la clave privada los descifra. El servidor almacena la clave pública del titular de la cuenta y la usa para cifrar un mensaje. Solo el titular de la clave privada puede descifrar ese mensaje.

Si envía a alguien un secreto encriptado con su clave pública, si puede decirle cuál es ese secreto, entonces sabrá que tiene la clave privada correspondiente. El usuario luego se autentica.

AWS requiere que descargue y guarde su clave privada porque no la almacenarán, por razones de seguridad. Debido a que la clave privada no se almacena en ningún lugar en AWS, puede estar seguro de que su instancia EC2 es segura.

jkim
fuente
1

En cierto sentido, no importa. Un par de claves privada / pública consta de dos partes, y cuál de ellas es la pública depende de usted. Si algo se cifra con una clave, necesita la otra para descifrarla. Si ha publicado una clave públicamente y no la otra, la clave privada es la que no publicó.

Llegando a su pregunta real: presumiblemente, la clave que Amazon le brinda es permitirle controlar sus propios recursos, por lo que no se debe dar a otras personas. En este contexto, debe confiar en Amazon para tener su clave privada, al menos durante el tiempo suficiente para configurarla.

Si desea que su cliente inicie sesión de esta manera, necesita que le den una clave que estén preparados para compartir con usted, por lo tanto, su clave pública. Lo instala en el servidor en claves_autorizadas, lo que efectivamente dice que "cualquiera que posea la clave privada que coincida con esta pública puede acceder a este recurso".

Dominic Cronin
fuente
1
Uhm, no, eso no es cierto. Al menos con RSA / DH, se cifra con la clave pública y se descifra con la clave privada, no funciona al revés. Firmar no es lo mismo que cifrar / descifrar.
Zoredache
1
@ErikA No, la clave pública no se puede derivar de la clave privada. Los archivos de clave privada a menudo incluyen ambas claves. Si realmente quieres entrar en una discusión, te sugiero crypto.stackexchange.com . Esas personas pueden darle detalles internos realmente profundos, incluidas las diferencias reales de las claves RSA y por qué qué clave se considera pública frente a privada no es solo un lanzamiento arbitrario de una moneda.
Jeff Ferland
@ Zoredache - No lo sabía: gracias. ¿Tienes un enlace a una buena referencia?
Dominic Cronin
en.wikipedia.org/wiki/Asymmetric_key_algorithm : una tecla bloquea o cifra el texto sin formato y la otra desbloquea o descifra el texto cifrado. Ninguna de las teclas puede realizar ambas funciones. - en.wikipedia.org/wiki/RSA_(algorithm) - RSA implica una clave pública y una clave privada. La clave pública puede ser conocida por todos y se usa para cifrar mensajes . Los mensajes cifrados con la clave pública solo se pueden descifrar con la clave privada.
Zoredache
Ninguna de esas dos referencias sugiere lo que estás diciendo @Zoredache. Por supuesto , una vez que haya decidido qué clave es privada y qué pública, eso determina la forma en que la usa. En el momento de la generación de claves, esta decisión aún no se ha tomado. Para lo que vale, la lógica en torno a la firma depende completamente de la lógica en torno al cifrado, ya que la firma requiere cifrado.
Dominic Cronin el