Le API AWS utilizzano l'ID della chiave di accesso e la chiave di accesso segreta per l'autenticazione delle chiamate API. Come funziona esattamente e in che modo è diverso da SSH?
L'API AWS richiede di firmare ogni richiesta HTTP. La firma offre due proprietà: autenticità e integrità.
Ti autentica perché una firma valida può essere prodotta solo da qualcuno che ha la chiave / coppia segreta. Fornisce integrità poiché la richiesta viene prima canonizzata (trasformata in un modulo standard) e quindi firmata utilizzando HMAC. Qualsiasi modifica al messaggio comporterà l'annullamento della firma originale.
Le firme AWS forniscono un meccanismo di difesa approfondito all'integrità di TLS.
Seguono alcune differenze chiave. SSH utilizza anche la crittografia asimmetrica mentre l'API AWS utilizza solo un simmetrico. SSH utilizzerà lo scambio di chiavi e la negoziazione di codici, mentre AWS non fa nulla oltre all'utilizzo di TLS. L'autenticazione AWS è "imbullonata" HTTP mentre SSH è un protocollo completo.
Informazioni su come funziona. Questo è tutto nei documenti AWS, ma ecco un breve riassunto. Costruisci la tua richiesta, quindi calcoli un modulo canonico e infine usi la chiave / il segreto per firmarlo. Aggiungi la firma alla tua richiesta originale e invialo a AWS. Il server elaborerà la tua richiesta: calcola il modulo canonico, recupera il tuo segreto dalla loro memoria, calcola la firma e confrontala con quella che hai inviato. Se ti abbinano, sei quasi pronto.
Un'altra cosa che fanno è controllare l'ora e assicurarsi che questa richiesta non venga riprodotta. Quando si calcola il modulo canonizzato, è necessario aggiungere anche la data corrente. AWS controllerà questa data per assicurarsi che sia all'interno di una finestra accettabile. Questo limita la riproduzione alla finestra data.
Le coppie di chiavi SSH vengono utilizzate solo per l'autenticazione con un server SSH. È necessaria una coppia di chiavi pubblica privata per l'autenticazione corretta. La crittografia avviene in altro modo tramite una chiave stabilita utilizzando lo scambio di chiavi.
L'ID della chiave di accesso AWS e la chiave segreta non servono solo per autenticare il servizio di autenticazione AWS. La mia ipotesi è che il caso in cui le chiamate API sono senza stato. Ricorda che la coppia di chiavi è composta da una chiave ID e una chiave di accesso segreta. In parole povere, l'ID della tua chiave è qualcosa come un nome utente (e non una chiave pubblica / privata) mentre la tua chiave di accesso segreta viene utilizzata per firmare le richieste fatte dal tuo cliente.
Proprio come SSH, se hai una chiave di accesso valida ma non una chiave segreta valida, le tue richieste falliranno perché non saranno firmate correttamente. Puoi fare riferimento a Documentazione AWS per riferimento.
Direi che le chiavi AWS si basano anche sullo stesso concetto (PKI) come SSH o SSL, ma l'eventuale implementazione del sistema di autenticazione sarebbe diversa.
Leggi altre domande sui tag api authentication aws