Perché consentire a una chiave API pubblica di cambiare?

1

Un metodo comune di credenziale per un'API consiste nel dare a ogni uso una coppia di chiavi pubblica / privata. La chiave pubblica viene inviata con la richiesta e la chiave privata viene utilizzata per firmare la richiesta (e viene verificata dal server che firma nuovamente la richiesta e verifica che corrisponda).

L'utente può ruotare i tasti abbastanza facilmente. Quello che non capisco è il motivo per cui una rotazione chiave comporta anche la modifica della chiave pubblica (questa operazione viene eseguita da AWS quando viene ruotata una chiave dell'utente IAM).

Dalla mia comprensione la chiave pubblica è un po 'come il nome di una persona, dice al server chi sei. Non è mai stato un segreto per cominciare. Quali benefici si ottengono cambiando la chiave pubblica e non semplicemente cambiando la chiave privata?

Modifica: per chiarire, non mi riferisco a una coppia di chiavi di crittografia tipo RSA che si basano l'una sull'altra. Mi riferisco alle coppie di chiavi utilizzate per l'accesso all'API (come gli usi di AWS)

    
posta yitzih 29.10.2018 - 15:54
fonte

3 risposte

2

Una chiave pubblica corrisponde a una chiave privata specifica , non è "un po 'come il nome di una persona". La chiave pubblica può essere utilizzata per verificare che chiunque abbia firmato il messaggio abbia la chiave privata appartenente alla chiave pubblica, poiché la chiave privata e la chiave pubblica sono correlate in un modo matematico molto specifico. In teoria, c'è sempre una sola persona che ha quella chiave privata, che consente al server di identificarti.

Tuttavia, se la chiave privata viene rubata in qualche modo, ora chiunque potrebbe firmare quel messaggio. Da qui la necessità di generare una nuova chiave privata. Ma poiché la chiave privata e la chiave pubblica sono accoppiate in un modo matematico specifico, la nuova chiave privata è inutile senza inviare al server la corrispondente chiave pubblica che è stata generata insieme ad essa.

    
risposta data 29.10.2018 - 16:14
fonte
0

Sembra che tu stia confondendo questo. Ben ha ragione, quello che stai pensando in questo caso è la crittografia a chiave pubblica: link . RSA è un'implementazione di questo, come è quello di cui stai parlando. Ecco perché la risposta di Ben è corretta.

    
risposta data 29.10.2018 - 18:36
fonte
0

L'API di AWS non usa coppie di chiavi o RSA, utilizza la derivazione da un accesso segreto (NON privato, nella moderna crittografia significano cose diverse) 'key (singolare) (che è legato a un id di chiave che lo identifica) e HMAC-SHA256. È discutibile se HMAC sia correttamente chiamato una firma o debba invece essere chiamato MAC, ma AWS lo chiama firma. (In ogni caso, né l'hash né il MAC né la vera firma sono crittografati, e sebbene la risposta di Ben assunse erroneamente la firma RSA, non aveva nulla a che fare con la crittografia.) Questo è spiegato in link specialmente nell'attività 3.

Per il rapporto tra le chiavi (di accesso) (e id) degli utenti e la rotazione, vedi link . Nota che la prossima sezione di quella stessa pagina dice esplicitamente

Key pairs are unrelated to access keys .... Key pairs are used only for Amazon EC2 [SSH] and Amazon CloudFront.

    
risposta data 30.10.2018 - 04:28
fonte

Leggi altre domande sui tag