Cómo se generan internamente la identificación de la clave de acceso de AWS y la clave de acceso secreta

5

De acuerdo con la documentación de AWS, para acceder a los recursos de AWS programáticamente o por medio de CLI, puede puede generar una clave de acceso en la consola de AWS como:

  

ID de clave de acceso: AKIAIOSFODNN7EXAMPLE

     

Clave de acceso secreta: wJalrXUtnFEMI / K7MDENG / bPxRfiCYEXAMPLEKEY

Y se dice en el documento:

  
  1. Elija Descargar credenciales y almacene las claves en una ubicación segura.
  2.   

Su clave secreta ya no estará disponible a través de la administración de AWS   Consola; Tendrás la única copia.

Dado que AWS no almacena la clave de acceso secreta, me pregunto cómo (la identificación de clave de acceso, la clave de acceso secreta) podría generarse internamente y cómo se podría autenticar de forma segura un acceso API / CLI.

Estoy pensando que AWS puede:

  • generar un ID de clave de acceso aleatoriamente
  • use una clave interna en AWS con algún algoritmo de cifrado para generar la clave de acceso secreta
  • cuando autenticar una solicitud, aplicar la misma clave interna y la misma algoritmo para la clave de acceso id, y verifique si el resultado calculado es la clave de acceso secreta

Pero estoy lejos de ser un experto en seguridad, y me gustaría saber cómo se puede hacer esto en AWS en producción. Gracias.

    
pregunta nybon 16.12.2016 - 08:10
fuente

1 respuesta

6

De la documentación [0] [1], vemos que le demuestra a AWS que conoce la Clave de acceso secreta utilizando HMAC, no utilizando firmas digitales. Esto significa que al verificar la autenticación, AWS debe poder generar la clave de acceso secreta exacta para su ID de clave de acceso.

Por lo tanto, su promesa de nunca volver a mostrarle la clave de acceso secreta es una cuestión de política, no una verdad sobre la tecnología subyacente. Si se trataba de una criptografía de clave pública y la clave de acceso secreta era una clave privada que correspondía a la ID de clave de acceso que era una clave pública, y solo almacenaban la clave pública, realmente no podrían regenerarse y mostrar la clave privada. Pero eso requeriría que el cliente genere una firma de clave privada para autenticar las solicitudes, lo que es lento y menos portátil que el HMAC.

No tengo pruebas de esto, pero creo que la clave de acceso secreta se genera usando HMAC a partir de la ID de la clave de acceso, usando una clave que solo está disponible para Amazon. Robar esa clave sin que Amazon se dé cuenta le permitiría falsificar la Clave de acceso secreta de cualquier persona solo con su ID de clave de acceso. Si alguna vez se roba la clave de AWS, AWS tendría que invalidar todas las claves y provocar un tiempo de inactividad global masivo, mientras que todos generan nuevas en la consola de AWS y las redespliegan. No sé qué salvaguardas tomaron para hacer esto poco probable, pero asumo que la clave no puede residir en un solo HSM por Zona de Disponibilidad, porque se requiere procesar todas las solicitudes no públicas.

Alternativamente, la clave de acceso secreta puede ser aleatoria y almacenada junto con la ID de la clave de acceso en la autenticación AWS & Sistema de autorización, que se replica en cada zona de disponibilidad. Eso significaría que para causar una catástrofe, alguien tendría que filtrar una gran cantidad de datos, no una sola clave secreta.

0 - enlace

1 - enlace

    
respondido por el Z.T. 20.12.2016 - 22:27
fuente

Lea otras preguntas en las etiquetas