Come si esegue il backup sicuro di una chiave privata GPG?


23

Ho trovato un gestore di password CLI molto interessante chiamato pass . Per usarlo, si genera una coppia di chiavi GPG2 e si usa lo strumento per aiutarti a memorizzare le password in file crittografati con gpg2.

Per crittografare i file (aggiungere una nuova password), utilizza la chiave pubblica.

Per decrittografare i file (recuperare una password memorizzata), utilizza la chiave privata, che richiede una password.

Funziona benissimo.

Ora che lo strumento sta memorizzando tutte le mie password, voglio eseguire il backup di tutti questi dati in modo che se il mio computer si blocca, non sarò bloccato da tutti i miei account online.

Lo strumento si integra perfettamente con git, quindi sono stato in grado di inviare facilmente i file .gpg al mio repository git privato su un altro computer. Da quello che ho capito, questi file sono inutili senza la chiave privata per decrittografarli.

La mia domanda è questa: come posso eseguire il backup delle chiavi private e pubbliche in modo sicuro, in modo da poter ripristinare il "database" su un altro computer in caso di necessità? Posso semplicemente archiviare sia le chiavi pubbliche che private nel mio repository git e importarle in un altro computer in un secondo momento? O è considerata una pratica non sicura archiviare una chiave privata in un repository git privato e locale? Il repository git richiede una password per accedere. La chiave privata è crittografata e richiede l'apertura di una password: è sicuro archiviarla?

Risposte:


10

La memorizzazione di una chiave privata PGP in un sistema di controllo di revisione non pone di per sé alcun problema di sicurezza significativo. La memorizzazione della chiave privata in un repository git locale, privato (non pubblicato) non dovrebbe avere implicazioni di sicurezza significative rispetto alla memorizzazione della chiave privata sullo stesso computer ma al di fuori di qualsiasi repository git.

L'unico problema a cui riesco a pensare viene dalla memorizzazione della chiave privata in modo controllato dalla versione è che, a meno che tu non riesca in qualche modo a distruggere le revisioni precedenti, le modifiche alla passphrase della chiave ti offrono una protezione molto meno di quanto altrimenti potrebbero fare.

Ciò che può derivare da una serie di implicazioni per la sicurezza è l'archiviazione di una chiave privata in modo tale che qualcun altro possa accedere al file della chiave. In una situazione del genere, tutto ciò che si frappone tra un attaccante e la tua chiave è la forza della sua passphrase.

Riconoscendo che la sicurezza dell'archiviazione non è perfetta, e ancora di più nell'ambiente moderno in cui le persone eseguono regolarmente il backup dei servizi cloud (che letteralmente tradotto significa "il computer di qualcun altro"), di solito proteggiamo le nostre chiavi segrete con passphrase. Confido che, anche se stai eseguendo ad esempio gpg-agent, stai facendo lo stesso.

La linea di fondo è che, fintanto che la tua passphrase è buona, anche archiviare una copia del file della chiave crittografata sul computer di qualcun altro dovrebbe essere relativamente sicuro.

Tuttavia, è piuttosto grande se: le password o le passphrase della maggior parte delle persone sono piuttosto scadenti per quanto riguarda i tentativi informatici di decifrarle. GnuPG va a un po 'di lunghezza per cercare di lavorare così come si può con ciò che si dà, ma per la protezione dei dati solida, si ha bisogno di una buona passphrase, e si ha bisogno per impostare prima di importare la chiave privata nel repository git. Dopo che la chiave è stata importata, un utente malintenzionato potrebbe in linea di principio attaccare qualsiasi versione di essa, e se hanno motivo di credere che una particolare revisione abbia una passphrase di qualità inferiore, probabilmente lo farà. Per questo motivo, assicurati di scegliere con cura la passphrase. Ho scritto un piccolo manuale su come gestire le password, inclusosuggerimenti su come scegliere password o passphrase che devi ricordare , che potresti trovare utili.


6

Ho preso in considerazione un'installazione simile di recente. Prima di affrontare la tua domanda, lascia che ti mostri ciò che mi preoccupa. Questo è spiegato a fondo qui . In breve, quando Pass chiama GPG, esegue criptovalute asimmetriche (RSA / EC) non necessarie sotto il cofano. Non necessario - perché non esiste una parte non attendibile qui.

Questo è fastidioso perché la crittografia asimmetrica è meno a prova di futuro rispetto alla crittografia simmetrica. Ad esempio, la crittografia asimmetrica di oggi è rotta da computer quantistici sufficientemente grandi, che non esistono ancora. Più in generale, la crittografia asimmetrica si basa su "problemi matematici" che non sappiamo risolvere, molto più della crittografia simmetrica.

Per mitigare questa debolezza, il minimo che puoi fare è mantenere la tua chiave pubblica GPG utilizzata anche con Pass private, perché ad esempio il (potenziale) attacco quantico ha bisogno di questa chiave pubblica: vedi qui .

Sulla tua domanda reale, non è chiaro se intendi archiviare il repository git (con le password) pubblicamente o privatamente. Se si desidera mantenerlo privato, è possibile praticamente fare ciò che si desidera e ridurre la sicurezza della chiave privata GPG a quella del supporto su cui si esegue il backup del repository. Tuttavia, ciò potrebbe diventare un problema a base di pollo e uova: se il repository è privato, come si ottiene in caso di crash? In altre parole, in caso di "brutto incidente", ci deve essere qualcosa che recuperi prima . Quindi potresti voler mantenere privato il repository git, ma esegui il backup della chiave GPG in modo tale da poterlo recuperare prima, indipendentemente da qualsiasi altra cosa.

Le soluzioni di backup offline sono numerose, avvocati, scantinati, ecc. Vedi qui . Ma gli scantinati non sono per tutti, quindi lasciami suggerire una soluzione online:

  • Crea una passphrase super forte che non è stata pensata per essere digitata per anni. Suggerimento: lungo, memorabile errore di ortografia di una frase che ha un significato personale, o di un libro che non finirà le copie se è necessario cercarlo.

  • Crea un tarball con la tua chiave segreta GPG esportata e forse le tue credenziali SSH.

  • Cifrare simmetricamente la passphrase: gpg --symmetric --armor.

  • Crea un account di hosting git gratuito.

  • Creare un repository pubblico , che può essere clonato senza credenziali.

  • Metti la palla catramata criptata e corazzata.

Per recuperarlo dopo un "brutto arresto":

  • Avvia una chiavetta USB live.

  • Clonare repository pubblico.

  • gpg --decrypt.

La passphrase simmetrica sarà la tua principale protezione contro gli zombi. Le persone a volte non danno a te, o al lettore anonimo, il beneficio del dubbio quando si tratta di scegliere passphrase. Ma con una buona passphrase, la crittografia simmetrica dovrebbe essere solida.

Quando esporti la tua chiave privata GPG, questa verrà crittografata con una sua passphrase. Le versioni recenti di GPG non consentiranno un'esportazione non crittografata. È possibile utilizzare la passphrase GPG "normale" qui. Ricorda solo che in caso di crash, avrai bisogno di entrambe le passphrase per accedere alla tua chiave privata GPG.


4

Un'altra opzione che uso è: Stampa la tua chiave su carta .

I dettagli sono nella risposta collegata. I grandi vantaggi sono: puoi facilmente memorizzarlo dove vuoi e puoi verificare se è ancora probabile che sia in buone condizioni semplicemente guardandolo. Ma il vantaggio più grande è: nessuno può hackerarlo senza essere fisicamente nel luogo in cui è archiviato il backup e lo prende.


Per quanto posso vedere, in questo caso la carta non ha alcun vantaggio rispetto ai supporti rimovibili e lo svantaggio che se è necessario ripristinare la chiave, è necessario digitare tutto il gibberish per la chiave.
MAPPA

Il vantaggio è che è molto più resistente e puoi controllare se è ancora leggibile con i tuoi occhi senza un computer. Se avessi un dollaro per ogni floppy disk, CD o DVD che ho usato che ora ha errori di dati irrecuperabili, potrei andare venerdì con quei soldi. Non devi digitare nulla! PaperBack lo stampa come codici 2D con la correzione degli errori aggiunta. Basta scansionarlo o fotografarlo e il programma lo trasforma nuovamente in qualsiasi cosa tu gli abbia dato per stampare prima.
Josef,

Supponendo, ovviamente, che tu abbia ancora la tecnologia per farlo.
MAPPA

Bene, la probabilità che riesca facilmente a ottenere una VM Windows o Linux con Wine con una copia di quel software Open Source in 20 anni è secondo me molto più alta della probabilità che riesca a ottenere l'hardware per leggere un floppy disk / CD /DVD. Suppongo di averlo fatto nel 1990. Ora posso anche eseguire software da allora nel mio browser . Ma buona fortuna cercando di ottenere hardware che ti permetta di leggere un floppy da 5 1/4 pollici con il tuo PC moderno.
Josef,

2

Un'altra risposta è "offline", ovvero la memorizzazione in un luogo sicuro e non collegato a nessun computer. Conservo una copia completa e non crittografata di tutte le mie chiavi su un dischetto (lo sto facendo da molto tempo, ormai è un'abitudine) nella cassetta di sicurezza della banca. Il motivo per cui li mantengo non crittografati sui media in banca è che uno scenario potenziale per "perdere" la chiave è dimenticare la passphrase (le mie passphrase tendono ad avere un sacco di punteggiatura e ortografia bizzarre, e dimenticare solo una di quelle lo rende inutilizzabile). Non ho mai dovuto ricorrere a recuperarlo da quella copia, ma prevedo il peggio.

Inoltre, c'è una revoca chiave sui media e una nota che istruisce i miei eredi su cosa farne, nel caso non fossi più disponibile.


Se si esegue il backup della chiave privata di firma principale, non è possibile utilizzarlo per generare un certificato di revoca? In quale scenario è utile eseguire il backup del certificato di revoca?
Matei David,

Ah sì, ma devi capire che non posso essere certo di quanto sia esperto di computer la persona che esegue la richiesta (nota che non sono io che la userò, ma "i miei eredi"). Pertanto, la revoca è già stata generata e le istruzioni di "basta inviare un'e-mail con questo file allegato" hanno meno probabilità di essere gestite male.
MAP

@MateiDavid La generazione di un certificato di revoca quando si crea inizialmente la coppia di chiavi e la memorizzazione di tale certificato di revoca, consente di revocare la chiave se la chiave non è più disponibile. Esistono scenari validi in cui ciò può accadere. Ovviamente, devi proteggere molto bene il certificato di revoca, perché chiunque lo metta in mano può pubblicarlo revocando così la tua coppia di chiavi. Tuttavia, non sono sicuro di come un certificato di revoca si applichi alla situazione del PO.
un CVn

Sì, siamo scesi in una buca per topi. Mi scuso, la mia menzione del certificato di revoca è stata solo per completezza nella descrizione dei passi che faccio, e non aveva nulla a che fare con la domanda originale.
MAPPA
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.