Va bene condividere file di chiave privata tra più computer / servizi?


110

Quindi sappiamo tutti come usare la chiave pubblica / le chiavi private usando SSH, ecc. Ma qual è il modo migliore per usarle / riutilizzarle? Devo tenerli in un posto sicuro per sempre? Voglio dire, avevo bisogno di un paio di chiavi per accedere a GitHub. Ho creato un paio da zero e l'ho usato per qualche tempo per accedere a GitHub. Quindi ho formattato il mio HDD e ho perso quella coppia. Un grosso problema, ho creato una nuova coppia e configurato GitHub per utilizzare la mia nuova coppia. O è qualcosa che non voglio perdere?

Avevo anche bisogno di un paio di chiavi pubbliche / private per accedere ai nostri sistemi aziendali. Il nostro amministratore mi ha chiesto la mia chiave pubblica e ho generato una nuova coppia e gliel'ho data. È generalmente meglio creare una nuova coppia per l'accesso a sistemi diversi o è meglio avere una coppia e riutilizzarla per accedere a sistemi diversi? Allo stesso modo, è meglio creare due coppie diverse e usarne una per accedere ai sistemi della nostra azienda da casa e l'altra per accedere ai sistemi dal lavoro, oppure è meglio avere solo una coppia e usarla da entrambi i posti?


Questa non è direttamente una risposta alla tua domanda, ma è consigliabile avere anche passphrase per ogni chiave. Idealmente, passphrase separate per ogni chiave (utilizzare un gestore di password). Il motivo è il seguente: se una chiave privata viene compromessa (il laptop viene rubato, il computer è stato violato), allora hai un po 'di tempo prima che la chiave possa essere forzata brutalmente e puoi sostituire la chiave pubblica su tutte le macchine che la hanno , prima che l'attaccante possa farlo. Fonte: help.ubuntu.com/community/SSH/OpenSSH/…
Xandor Schiefer

Risposte:


86

Dovresti assolutamente avere chiavi private separate per origine . Fondamentalmente ciò significa che in genere dovrebbe esserci una singola copia di ogni chiave privata (senza contare i backup). Va bene usare la stessa chiave privata da una macchina strettamente correlata, in situazioni in cui la suddivisione in una ti dà sostanzialmente accesso all'altra (ad esempio se sono l'una nell'altra shosts.equiv). Non utilizzare la stessa chiave privata su macchine in diversi ambiti (ad esempio casa e ufficio), non condividere mai una chiave privata tra due utenti e mai condividere una chiave privata tra un laptop e qualsiasi altra macchina.

Per la maggior parte, non vedo il punto di avere chiavi private diverse per destinazioni diverse. Se una chiave privata viene compromessa, anche tutte le altre chiavi private memorizzate nella stessa directory verranno sicuramente compromesse, quindi si verificherebbero ulteriori complicazioni senza alcun vantaggio per la sicurezza.

Se segui questi principi, ogni coppia di chiavi identifica una coppia (macchina, utente), il che semplifica la gestione delle autorizzazioni.

Posso pensare a due eccezioni alla regola generale di una singola chiave privata per origine:

  • Se si dispone di una chiave senza password che consente l'accesso solo a un comando specifico su una macchina specifica (ad esempio un meccanismo di backup o notifica automatizzato), tale chiave deve essere diversa dalla chiave di accesso generale alla shell.
  • Se alcune macchine sono connesse in modo intermittente, potresti avere una vecchia chiave privata accanto a una nuova chiave privata, fino a quando non riesci a completare la distribuzione della nuova chiave.

5
È così che ho sempre usato la mia coppia di chiavi. Non capivo perché GitHub stava sostenendo la generazione di una nuova coppia di chiavi nelle loro istruzioni di installazione. L'ho ignorato e ho usato la mia coppia di chiavi standard. Presumo che siano conservatori.
toolbear74,

Ok, quindi dici "Non usare la stessa chiave privata su macchine in diversi regni" ma cosa succede se il DNS risolve un determinato nome host su una macchina a seconda della posizione? Senza condividere la chiave privata ricevo avvisi o errori quando provo a ssh o rsync a quel nome host perché ssh viene confuso con due chiavi separate per lo stesso nome host.
Michael,

@Michael Non capisco quale problema potresti avere con le chiavi utente nello scenario che descrivi, di cosa tratta questo thread. SSH si confonderebbe con le chiavi dell'host , ma come utente ciò che vedi è la chiave pubblica dell'host, non la chiave privata dell'host, e condividere la chiave privata di un host è pericoloso - consiglierei solo se gli host sono completamente equivalenti (ridondanza nel caso in cui uno di questi fallisca), e probabilmente nemmeno allora.
Gilles,

Ah ok. Sembra che non ci sia molta chiara distinzione tra i due, e si presume solo che tu sappia di quale si sta parlando.
Michael,

1
@JSBach La presenza di chiavi separate per realm consente di definire autorizzazioni più precise (la chiave memorizzata nel realm A di bassa sicurezza è consentita per l'uso tra le macchine di A, ma l'accesso a B richiede un fattore di autenticazione più forte) e consente di revocarle separatamente (il regno A è stato compromesso, ma posso ancora accedere a C da B). SSO è il caso in cui si accede al sistema con la massima sicurezza e quindi è possibile accedere altrove. Non so quali rischi vedono nell'avere più chiavi per utente. Questo sarebbe un argomento per la sicurezza delle informazioni .
Gilles,

4

Non so quale sia il modo migliore, ma posso dire quale sia il mio modo.

Come amministratore di sistema utilizzo una chiave diversa per accedere a ciascun server / servizio come root. In questo modo, se una chiave viene persa o compromessa, limito il rischio a un singolo server e non ho bisogno di aggiornare tutti i miei servizi con chiavi nuove di zecca.

A proposito di utenti, utilizzo una chiave diversa per ognuno di essi. Con quella chiave l'utente può accedere al servizio di cui ha bisogno come utente non privilegiato. In questo modo, posso facilmente concedere o revocare l'accesso a singoli servizi a ciascun utente. Nel caso in cui l'utente perda la sua chiave, posso eliminarla da tutti i servizi e limitare il rischio di accesso non autorizzato.


+1 Ho intenzione di parlare con il mio capo di una nuova politica di utilizzo delle chiavi ;-) per server / servizio sembra ancora più sicuro di una semplice rete
Diskilla,

1

Credo che potresti usare la chiave privata ovunque fintanto che ci metti una passphrase, il che significa che se desideri condividere la tua chiave privata con poche macchine, ad esempio laptop 1, 2, desktop 1, 2, dovrebbe andare bene.

In base alla mia esperienza, la mia macchina principale è il desktop in cui svolgo la maggior parte del mio lavoro con il suo potente processore, ma a volte ho bisogno di usare il mio portatile sul cellulare, la risoluzione dei problemi nel data center e roba del genere, quindi posso ancora accedere a qualsiasi host in cui risiede la mia chiave pubblica.


1
Leggi la risposta migliore qui. Lo stai facendo male. Non è che non puoi farlo in questo modo ma non dovresti.
PhilT

2
Non riesco a capire perché tutti i downvotes. Le reti universitarie (ad esempio) hanno spesso una home directory in rete, quindi la stessa chiave privata viene utilizzata ovunque da un utente, anche sui laptop che ti vengono dati. Finché non lo copi non crittografato su Internet, penso che vada bene se comprendi il rischio. Sanguinosamente più conveniente anche in questo modo, non dovendo aggiungere la tua chiave pubblica a 2.000 luoghi diversi solo perché hai effettuato l'accesso a una macchina diversa.
Asfand Qazi,

Eseguito l'upgrade perché non dovresti perdere la reputazione di questa risposta. È una preferenza personale, ovviamente l'utilizzo di una chiave separata per servizio e macchina alla fine ti dà un maggiore controllo, ma a volte è solo una perdita di tempo a seconda del tuo caso d'uso.
Daniel Dewhurst,

0

Nella mia azienda utilizziamo queste chiavi specifiche dell'utente. Ciò significa il secondo caso. L'utente ha la propria chiave e questa viene utilizzata per ogni macchina che utilizza per connettersi al sistema aziendale. la mia opinione è di usare una chiave per un sistema. Ciò significa che si utilizza questa chiave su ogni macchina necessaria per connettersi a reti specifiche. Per il tuo caso sarebbe una chiave per GitHub e una chiave per il sistema aziendale. Quindi, se il tuo amministratore ti chiedesse di nuovo, gli darei la stessa chiave dell'ultima volta. non uno nuovo. Ma non so se esiste una politica di utilizzo comune per queste chiavi e da allora sto sbagliando. Questo è sicuramente possibile ;-)


0

La chiave pubblica che hai generato è per tutti. Permetterà loro di a) verificare l'autenticità b) crittografare per te

La chiave privata è, beh, privata. È solo per te. Ed è la chiave che dovresti eseguire il backup da qualche parte, in un luogo sicuro. Puoi anche crittografarlo con una password sicura se, ad esempio, lo salvi su una chiavetta USB.

La chiave pubblica è la tua identità per gli altri. Quindi non ci sono problemi / è meglio usare una coppia di chiavi per tutto, almeno dove non vuoi usare una nuova identità esplicita, così gli altri non sapranno che sei tu.


3
Grazie, ma la tua risposta è per lo più estranea alla mia domanda. Vedi la risposta di @ Diskilla.
Behrang,
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.