Perché Amazon rilascia chiavi private anziché pubbliche?


20

Il mio cervello è avvolto attorno all'asse delle chiavi pubbliche e private. Quando si crea un server cloud (istanza) sul servizio EC2 di Amazon e si desidera connettersi ad esso tramite SSH, Amazon richiede di scaricare una chiave privata per stabilire la connessione. L'idea alla base della chiave pubblica / privata non suggerisce che Amazon dovrebbe richiedere di scaricarne una pubblica?

Inoltre, se imposto un server SFTP da utilizzare per un cliente, dovrei installare la sua chiave sul server o fornire loro una chiave dal server? In entrambi i casi, dovrebbe essere una chiave pubblica o privata?


1
Per quelli di noi che hanno meno familiarità con EC2, Amazon ti ha richiesto di scaricare una chiave privata?
Zoredache,

2
Quando si configura un server cloud su Amazon EC2 e si desidera connettersi ad esso tramite SSH, la console Amazon consente di scaricare una chiave privata utilizzata per stabilire la connessione. Devi proteggere la chiave, ovviamente.
Seth,

@Zoredache In tutta onestà, questa è un'opzione. Qualcuno che cerca di spostarsi rapidamente su una finestra di Windows probabilmente non ha mai usato OpenSSH prima, quindi è un bel avvio rapido.
Ceejayoz,

Risposte:


36

Pensando più profondamente al processo di autenticazione, cosa deve essere tenuto segreto? Amazon conosce la metà pubblica della chiave e chiunque può conoscere la metà pubblica. La metà pubblica della coppia di chiavi, se abbinata alla metà privata, indica che la metà privata è stata utilizzata per l'autenticazione.

La tua chiave privata che ti viene fornita quando Amazon genera una coppia di chiavi per te è utile solo se sei l'unico che ce l'ha. Se non è un segreto, chiunque lo sappia può anche autenticarsi con chiunque detenga la metà pubblica della coppia di chiavi.

Chiunque venga autenticato deve detenere la metà privata . Va bene se tutti nel mondo possono autenticarti tenendo la metà pubblica della chiave, ma solo tu dovresti avere il controllo della metà privata.


18

Amazon fornisce servizi di generazione delle chiavi perché alcuni sistemi operativi (tosse, Windows, tosse) potrebbero non semplificare la generazione delle coppie di chiavi SSH.

Con SSH (e SFTP), la chiave pubblica viene installata nel file authorized_keys dell'utente all'avvio dell'istanza EC2. La chiave privata è detenuta solo dall'utente e viene presentata per l'autenticazione sul server.

Dalla documentazione su:

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

sembra che Amazon generi la coppia di chiavi sui loro server e ti mandi la chiave privata tramite HTTPS. Questo è forse meno che perfetto (idealmente, tu e nessun altro avrai il possesso della chiave privata), ma probabilmente non terribilmente, dato che tutto ciò si verifica nel contesto della tua sessione autenticata e solo tu (e Amazon temporaneamente) vedi la chiave privata. Puoi anche generare e caricare sempre la tua chiave pubblica per l'uso di EC2, mantenendo la chiave privata strettamente privata.

Per configurare gli utenti SFTP per l'autenticazione con chiave, dovrebbero generare chiavi SSH sui loro computer. Una volta generata una coppia di chiavi, dovrebbero solo inviarti la chiave pubblica da installare nel file authorized_keys pertinente. La chiave privata, come suggerisce il nome, è privata.


5
Genero regolarmente coppie di chiavi su macchine Windows. Non è difficile, anche se viene fatto utilizzando il software installato e non da Windows stesso.
Dominic Cronin,

2
D'accordo con Domenico. È più il fatto che l'utente medio di Windows sia terrorizzato e perso alla vista di una CLI e che Windows non abbia ancora un'opzione "login con chiave SSH".
HopelessN00b

Oh, sì, d'accordo. Uso Cygwin, ecc., Con openssh, quindi tutto funziona in modo pulito. Immagino che la maggior parte degli utenti Windows che eseguono questa operazione utilizzeranno PuTTY e dovranno eseguire una conversione chiave. Sono solo altri passaggi.
cjc,

1
In realtà non ho mai usato Amazon, ma piuttosto che incolpare Windows, suppongo che il motivo per cui Amazon ti invia una chiave è che se non ti fornissero una chiave per accedere, come accederai per installare il tuo pubblico chiave in primo luogo?
DerfK,

1
@DerfK È possibile inviare la propria chiave pubblica e selezionarla per l'installazione in una nuova istanza EC2. La selezione di una chiave particolare fa parte del processo di creazione dell'istanza.
cjc

2

L'autenticazione con chiave pubblica funziona nella direzione opposta al modo in cui probabilmente stai pensando. La chiave pubblica crittografa i messaggi e la chiave privata li decodifica. Il server memorizza la chiave pubblica del titolare dell'account e la utilizza per crittografare un messaggio. Solo il titolare della chiave privata può decrittografare quel messaggio.

Se invii a qualcuno un segreto crittografato con la sua chiave pubblica, se possono dirti qual è quel segreto, allora sai che hanno la chiave privata corrispondente. L'utente viene quindi autenticato.

AWS richiede il download e il salvataggio della chiave privata perché non la memorizzano, per motivi di sicurezza. Poiché la chiave privata non è memorizzata da nessuna parte su AWS, puoi essere sicuro che la tua istanza EC2 è sicura.


1

In un certo senso, non importa. Una coppia di chiavi privata / pubblica è composta da due parti e quale di esse è quella pubblica dipende da te. Se qualcosa è crittografato con una chiave, è necessario che l'altra lo decifri. Se hai pubblicato una chiave pubblicamente e non l'altra, la chiave privata è quella che non hai pubblicato.

Raggiungere la tua vera domanda: presumibilmente la chiave che Amazon ti dà è permetterti di controllare le tue risorse, quindi non dovrebbe essere dato ad altre persone. In questo contesto, devi fidarti di Amazon per avere la tua chiave privata, almeno per il tempo necessario per la configurazione.

Se vuoi che i tuoi clienti accedano in questo modo, hai bisogno che ti forniscano una chiave che sono pronti a condividere con te, quindi la loro chiave pubblica. Lo installi sul server in authorized_keys, che sta effettivamente dicendo "chiunque abbia la chiave privata corrispondente a quella pubblica può accedere a questa risorsa".


1
Uhm, no, non è vero. Almeno con RSA / DH crittografate con la chiave pubblica e decifrate con il privato, non funziona al contrario. La firma non è la stessa della crittografia / decrittografia.
Zoredache,

1
@ErikA No, la chiave pubblica non può essere derivata dalla chiave privata. I file delle chiavi private spesso includono entrambe le chiavi. Se vuoi davvero entrare in una discussione, suggerirei crypto.stackexchange.com . Quella gente può darti i dettagli interni davvero profondi, comprese le differenze effettive delle chiavi RSA e perché la chiave che è considerata pubblica contro privata non è solo un lancio arbitrario di una moneta.
Jeff Ferland,

@Zoredache - Non lo sapevo: grazie. Hai un link a un buon riferimento?
Dominic Cronin,

en.wikipedia.org/wiki/Asymmetric_key_algorithm - Una chiave blocca o crittografa il testo in chiaro e l'altra sblocca o decodifica il testo cifrato. Nessuno dei due tasti può eseguire entrambe le funzioni. - en.wikipedia.org/wiki/RSA_(algorithm) - RSA implica una chiave pubblica e una chiave privata. La chiave pubblica può essere conosciuta da tutti e viene utilizzata per crittografare i messaggi . I messaggi crittografati con la chiave pubblica possono essere decrittografati solo utilizzando la chiave privata.
Zoredache,

Nessuno di questi due riferimenti suggerisce ciò che stai dicendo @Zoredache. Naturalmente , una volta che hai deciso quale chiave è privata e quale pubblica, ciò determina il modo in cui la usi. Al momento della generazione delle chiavi, questa decisione non è stata ancora presa. Per quello che vale, la logica della firma dipende interamente dalla logica della crittografia, poiché la firma richiede la crittografia.
Dominic Cronin,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.