In che modo l'ID della chiave di accesso AWS e la chiave di accesso segreta sono generati internamente

5

In base alla documentazione di AWS, per accedere alle risorse AWS a livello di programmazione o tramite CLI, può generare una chiave di accesso nella console AWS come:

Access Key ID: AKIAIOSFODNN7EXAMPLE

Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

E si dice nel documento:

  1. Choose Download Credentials, and store the keys in a secure location.

Your secret key will no longer be available through the AWS Management Console; you will have the only copy.

Poiché AWS non memorizza la chiave di accesso segreta, mi chiedo come l'ID della chiave di accesso, la chiave di accesso segreta possa essere generato internamente e in che modo un accesso API / CLI possa essere autenticato in modo sicuro.

Penso che AWS possa:

  • genera un ID della chiave di accesso in modo casuale
  • utilizza una chiave interna in AWS con un algoritmo crittografico per generare la chiave di accesso segreta
  • quando autenticare una richiesta, applicare la stessa chiave interna e lo stesso algoritmo all'ID della chiave di accesso e verificare se il risultato calcolato è il tasto di accesso segreto

Ma io sono lontano da un esperto di sicurezza e vorrei sapere come questo potrebbe essere fatto in AWS in produzione. Grazie.

    
posta nybon 16.12.2016 - 08:10
fonte

1 risposta

6

Dalla documentazione [0] [1], vediamo che tu prova ad AWS di conoscere la chiave di accesso segreto usando HMAC, non usando le firme digitali. Ciò significa che durante la verifica dell'autenticazione, AWS deve essere in grado di generare l'esatta chiave di accesso segreto per l'ID della chiave di accesso.

Pertanto, la loro promessa di non mostrarti mai più la chiave di accesso segreto è una questione di politica, non di verità sulla tecnologia di base. Se si trattava di crittografia a chiave pubblica e la chiave di accesso segreta era una chiave privata che corrispondeva all'ID chiave di accesso che era una chiave pubblica, e che essi memorizzavano solo la chiave pubblica, non sarebbero in grado di rigenerare e mostrare la chiave privata. Ma ciò richiederebbe al client di generare una firma di chiave privata per autenticare le richieste, che è lento e meno portatile di HMAC.

Non ho prove a riguardo, ma credo che la chiave di accesso segreta sia generata utilizzando HMAC dall'ID chiave di accesso, utilizzando una chiave disponibile solo per Amazon. Rubare quella chiave senza che Amazon se ne accorga ti permetterebbe di falsificare la chiave di accesso segreta di chiunque, dato solo il suo ID della chiave di accesso. Se la chiave AWS viene mai rubata, AWS dovrebbe invalidare tutte le chiavi e causare enormi tempi di inattività globali mentre tutti ne generano di nuovi sulla console AWS e redeploys. Non so quali misure di sicurezza abbiano adottato per renderlo improbabile, ma presumo che la chiave non possa risiedere su un singolo HSM per Zona di disponibilità, poiché è necessario elaborare ogni richiesta non pubblica.

In alternativa, la chiave di accesso segreto potrebbe essere casuale e memorizzata insieme all'ID della chiave di accesso nell'autenticazione AWS & sistema di autorizzazione, che viene replicato in ogni zona di disponibilità. Ciò significherebbe che per causare una catastrofe, qualcuno dovrebbe esfiltrare una grossa fetta di dati, non una singola chiave segreta.

0 - link

1 - link

    
risposta data 20.12.2016 - 22:27
fonte

Leggi altre domande sui tag