¿Cómo los servicios web de Amazon generan claves SSH? ¿Genera el par de claves completamente en el navegador o genera las claves en el servidor y nos envía la clave privada a través de HTTPS?
Traté de averiguar qué está sucediendo mirando las solicitudes y la respuesta en la consola de desarrollo en Firefox. Pero no podía entender lo que estaba pasando.
Primero, hay una llamada POST
a enlace con los siguientes datos
{"keyName":"testkey", "region":"us-east-1"}
La respuesta a la llamada es el propio par de claves privadas
{"keyFingerprint":"0a:93:6b:50:95:cc:2e:7c:ac:67:b1:c2:4b:ea:c5:72:dd:23:28:ea","keyMaterial":"-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEAs49qE5S4YEX0zgVyCMl1zaU26c7bJ4GpgerP0uEkNOS9oJ7lleP+S6JmszBy\nvsZn2XCv1bwj/Yi4/Pqxd+38WFJRzYNh8bqfe4e3BoSCubCW2mGlTehf8Bzkhhkh/JilHj4UlTQK[..snip..]\n4S5HcZrTeMkVukx8nXmchdI7sy16LHQEwdOdKaLemDynwljdQ2nYMq382wgdV1aRyvM=\n-----END RSA PRIVATE KEY-----","keyName":"testkey"}
Hay una segunda llamada POST
a enlace donde La respuesta es una lista de los nombres clave y el ID de la huella digital que coinciden con el término de búsqueda que había puesto
DATOS POSTALES:
{"filters":[{"name":"search", "values":["testkey"]}], "start":0, "count":50, "sorting":[{"name":"keyName", "direction":"ASC"}], "region":"us-east-1"}
La respuesta a esto es una matriz JSON de una lista de claves y sus huellas digitales correspondientes.
Finalmente, hay otra llamada POST
a enlace con mi clave privada como formulario carga útil de datos (!!) con el encabezado:
Content-disposition attachment; filename=testkey.pem
Esto devuelve un archivo de clave de texto sin formato, perfectamente formateado y todo. ¿Por qué es necesaria la tercera solicitud? ¿No podría AWS haber generado la clave en el navegador sin que POST
ingrese la clave?
Intenté cambiar al modo Desconectado (para esto es un gran grito para Mozilla) y la creación del par de teclas falló. Pero esto no pudo demostrarme de manera concluyente que el par de claves se está generando en el servidor de AWS porque la falla podría deberse a que AWS no haya recibido la clave pública, la huella digital y el nombre de la clave. La atomicidad de la creación de la clave, incluso si se realiza en el navegador, podría incluir el hecho de que AWS obtenga (y acepte) la clave pública, la huella digital y el nombre de la clave que mi modo fuera de línea habría bloqueado.
Finalmente, ¿tiene sentido preocuparse por esto ya que AWS tiene un control total sobre el hipervisor, incluido el contenido de la memoria RAM física desde la que podrían, en teoría, descargar mis claves?