it-swarm.dev

Qual è una buona configurazione della chiave GnuPG per scopi generici?

Poiché la maggior parte dei tipi di chiave può essere utilizzata per molteplici scopi, vale a dire certificazione, autenticazione, crittografia e firme, si potrebbe semplicemente utilizzare una chiave per tutto - che è un cattivo idea, come elaborato ad es di Thomas Pornin . Quindi si dovrebbero usare coppie di chiavi diverse per scopi diversi, con diversi metodi di backup (la decrittografia dovrebbe rimanere possibile "per sempre", mentre le chiavi di firma possono "semplicemente" essere sostituite) e la protezione. Ma non sono riuscito a trovare uno scritto unico delle migliori pratiche che riassuma le risposte alle seguenti domande:

  • Quale tipo di chiave dovrebbe essere usata per quale scopo (RSA, DSA, ... quanti bit, quando dovrebbero scadere ecc.)?
  • Tutte le chiavi devono essere sottochiavi (separate?) Della chiave master di certificazione o essere chiavi master individuali firmate dalla precedente? Ho trovato alcune guide non banali su come rimuovere la chiave master segreta dalle sottochiavi utilizzate quotidianamente, ma vale davvero la pena di avere una catena di fiducia più corta rispetto a una chiave di certificazione completamente separata ?
  • Quanto è importante mantenere offline la chiave di certificazione quando si usa a) una passphrase "davvero" forte oppure b) un dispositivo hardware come una scheda OpenPGP?
66
Tobias Kienzler

Informazioni sull'utilizzo delle sottochiavi

Utilizzare una chiave primaria per ogni identità è necessario, altrimenti utilizzare le sottochiavi.

Esempi per l'utilizzo di più chiavi primarie:

  • Non vuoi confondere le tue chiavi private e professionali
  • Hai bisogno di un tasto no connesso alla tua identità di "vita reale", ad es. quando perseguito dalle autorità

Esempi per l'utilizzo di sottochiavi:

  • Vuoi usare più chiavi per più dispositivi (quindi non dovrai revocare la chiave del tuo computer se perdi il cellulare)
  • Vuoi cambiare le chiavi regolarmente (ad es., Ogni qualche anno) senza perdere la tua reputazione nel Web of Trust

Di recente ho pubblicato un post su quante chiavi OpenPGP creare in un'altra risposta.

Informazioni sulle dimensioni chiave

Gli sviluppatori GnuPG consigliano di utilizzare chiavi RSA 2k sia per la crittografia che per la firma. Questo andrà sicuramente bene per le sottochiavi attualmente utilizzate.

Dato che la tua chiave primaria sarà non sarà usata per altro che per firmare e convalidare le firme (e ovviamente la revoca), è considerata una buona pratica avere una chiave abbastanza grande qui, mentre usi dimensioni più piccole ( abbastanza grande per il tempo che ne avrai bisogno) per le sottochiavi (che accelereranno i calcoli e ridurranno le dimensioni dei file).

Ho avuto una risposta più dettagliata di fronte a RSA con DSA/Elgamal per un'altra domanda al Superuser, andate lì per leggere più avanti.

Scadenza chiave

Esistono due modi per compromettere una chiave privata:

  1. Qualcuno è in grado di rubartelo
  2. Qualcuno è in grado di ricalcolarlo dalla tua chiave pubblica

Il primo è una questione di sicurezza del tuo computer (e come usi la tua chiave, leggi sotto), il secondo è una questione di tempo. Oggi (e probabilmente i prossimi anni), le chiavi RSA 2k andranno benissimo. Ma la potenza di calcolo aumenta notevolmente, quindi un utente malintenzionato ha bisogno di meno core CPU/schede grafiche/computer/centrali elettriche per ricalcolare la chiave privata. Inoltre, negli algoritmi utilizzati si possono riscontrare anomalie, che richiedono una potenza di calcolo molto inferiore. I computer quantistici potrebbero accelerare ulteriormente le cose.

Una data di scadenza della chiave limiterà la validità della chiave a un determinato momento in cui prevedi che sia sicura. Qualunque utente malintenzionato lo creerà in seguito potrà solo leggere i dati crittografati inviati a te, ma nessuno lo utilizzerà più; se un attaccante si impadronisce della tua chiave e tu rimani inosservato, almeno gli impedirà di usarla dopo un determinato tempo.

Scadendo la tua chiave primaria ti farà perdere tutta la tua reputazione di Web of Trust, ma almeno invalidi la tua chiave dopo un determinato tempo se perdi l'accesso (cosa dovrebbe mai e poi mai, continua a leggere alla fine della mia risposta).

Archiviazione offline della chiave primaria

La tua chiave primaria è la chiave più cruciale. Tutta la fiducia - sia in entrata che in uscita - è connessa a questo. Se qualcuno vi accede, è in grado di:

  • Crea nuove chiavi usando il tuo nome (e GnuPG usa sempre la tua nuova sottochiave per impostazione predefinita!)
  • Revoca di sottochiavi e chiavi primarie
  • Dare fiducia ad altre chiavi, che è la cosa peggiore che accada: un attaccante potrebbe creare una nuova chiave, dandole fiducia dalla tua vecchia e quindi revocare la tua vecchia chiave, lasciandoti senza alcun accesso alla tua identità "spostata" - è letteralmente sorpassa la tua identità .

Quanto è importante mantenere offline la chiave di certificazione quando si usa a) una passphrase "davvero" forte [...]?

Il tuo computer potrebbe sempre essere hackerato o infetto da alcuni malware che scaricano le tue chiavi e installano un registratore di chiavi per recuperare la tua password (e non si tratta di quale sistema operativo utilizzi, tutti includono gravi falle di sicurezza che nessuno conosce in questo momento ).

Mantenere offline la chiave primaria (privata) è una buona scelta prevenire questi problemi. Include alcune seccature, ma riduce i rischi come indicato sopra.

La massima sicurezza significherebbe ovviamente utilizzare un computer offline separato (hardware, nessuna macchina virtuale!) Per eseguire tutta la gestione delle chiavi utilizzando la chiave primaria e trasferire solo i dati OpenPGP (chiavi esterne e firme emesse) utilizzando una chiavetta USB.

b) un dispositivo hardware come una scheda OpenPGP?

Le smart card OpenPGP sono da qualche parte tra la memorizzazione offline su una chiavetta USB, ma il collegamento al computer per la firma e l'utilizzo di un altro computer offline dedicato a questo scopo. La tua chiave privata non lascerà mai la smart card (tranne per scopi di backup) che richiede un "PIN amministratore", tutte le firme e persino la creazione della chiave avverranno all'interno della scheda. "Usare" la tua chiave (crittografia, firma, fiducia) richiederà solo un "PIN utente", quindi anche se colleghi la scheda a un computer "danneggiato", l'attaccante non sarà in grado di superare completamente il tuo ID.

Puoi archiviare la tua chiave pubblica ovunque tu voglia, per avere un reale utilizzo di OpenPGP, dovresti persino inviarla (e le altre tue chiavi pubbliche) ai server di chiavi.


E non dimenticare di creare e stampare un certificato di revoca della tua chiave primaria. Perdere la tua chiave privata senza questo certificato significa che esiste una chiave a cui non puoi più accedere sui server dei tasti e non puoi farci nulla .

Stampalo, possibilmente più volte, e mettilo nei luoghi di cui ti fidi. I tuoi genitori, una cassetta di sicurezza bancaria, ... - Se questo certificato perde, la cosa peggiore che succede è perdere la tua Rete di Fiducia.

49
Jens Erat

La scadenza della chiave ha senso solo se è possibile prevedere un momento nel quale la chiave cesserà di essere sicura, a causa dei progressi della scienza, della tecnologia o della mancanza di interesse da parte vostra in merito alla protezione della chiave privata. Se una determinata chiave asimmetrica diventerà debole in futuro dipende dalle stime sul futuro aumento del potere computazionale (che è solo prevedibilmente sfocato) e dai nuovi risultati scientifici (che non sono affatto prevedibili). Per il potere computazionale, vari ricercatori e organi istituzionali hanno pubblicato raccomandazioni con equazioni predittive; vedi questo sito per un buon sondaggio. Ricorda che mentre una buona parte della Scienza e delle ipotesi informate sono entrate in queste raccomandazioni, il loro tasso di successo predittivo non è necessariamente migliore di se avessero macellato una pecora e guardato il suo fegato per svelare la volontà degli dei.

Comunque, il solito presupposto è che le chiavi RSA a 2048 bit dovrebbero mantenere la linea fino almeno all'anno 2030, e probabilmente più a lungo, nelle seguenti condizioni:

Sebbene una di queste condizioni potrebbe non riuscire in futuro, il momento del fallimento non può essere previsto con alcun tipo di accuratezza, quindi non è possibile progettare la propria politica di scadenza chiave attorno ad esse. Il meglio che puoi fare è supponi che non si verifichino e pregare per il meglio.

Le chiavi DSA ed ElGamal offrono una resistenza simile per le stesse lunghezze di chiave; cioè anche 2048 bit per questi dovrebbero andare bene.

Da un punto di vista più pratico, dovresti mantenere le date di scadenza prima dell'anno 2038 .

La chiave principale deve essere mantenuta principalmente offline . Se la tua chiave principale è protetta da una passphrase davvero efficace, può essere memorizzata ovunque, in particolare in un computer online. Ma quando digita quella passphrase, devi essere sicuro che la macchina che stai utilizzando in quel momento sia "pulita" e non piena di keylogger e altri componenti aggiuntivi malvagi. La chiave principale è "importante" (almeno per te) e non vuoi davvero vederla rubata. Un computer che è "online" ed è stato coinvolto in attività quotidiane relative a Internet non può essere considerato pulito con una garanzia del 100%.

Quindi archiviazione sul tuo computer, smartphone, account Gmail ... va bene, purché utilizzo sia su un computer offline dedicato. Dovresti usare la tua chiave principale solo per emettere le sottochiavi, cioè al massimo una volta ogni dieci anni. Ciò solleva il problema aggiuntivo della passphrase: come ricorderai una passphrase che non scrivi mai, tra dieci anni?

Per una buona resilienza, suggerisco di stampare il file della chiave principale (codificato Base64), quindi di scrivere la passphrase con una matita (do not usa la tua stampante per questo!) sulla stessa carta e conservandola in una banca sicura. Nel peggiore dei casi, se tra dieci anni hai perso il file e hai dimenticato la passphrase, puoi comunque digitarla e recuperare la chiave principale.

18
Thomas Pornin

Ricettario

Questo è un approccio da ricettario che esemplifica la risposta di Nizza sopra. È una versione distillata di Generazione di chiavi GPG più sicure: una guida passo-passo che separa tutte quelle funzioni in chiavi separate

Crea chiave primaria

$ gpg --expert --gen-key

(8) RSA (imposta le tue capacità)

Your selection? 8

(S) Attiva/disattiva la funzionalità del segno

Your selection? s

(E) Attiva/disattiva la funzionalità di crittografia

Your selection? e

(Q) Finito

Your selection? q

What keysize do you want? (2048) 4096
Key is valid for? (0) 3y
Is this correct? (y/N)y

quindi aggiungere UID, e-mail e passphrase.

Questo genera una chiave primaria sola certificazione .

Crea sottochiavi di firma (ecc.)

$ gpg --expert --edit-key [email protected]
gpg> addkey

(8) RSA (imposta le tue capacità)

Your selection? 8
Your selection? e
Your selection? q

What keysize do you want? (2048) 3072
Key is valid for? (0) 6m
Is this correct? (y/N)y
Really create? (y/N) y

Ciò genera una sottochiave di solo segno.

(Ripetere questo processo di aggiunta per le sottochiavi di crittografia e autenticazione)

[...]

Quando avremo finito, salveremo la chiave sul nostro portachiavi.

gpg> save

Di riserva

$ gpg -a --export-secret-key [email protected] > secret_key
$ gpg -a --gen-revoke [email protected] > revocation_cert.gpg

Rimozione della chiave primaria

$ gpg -a --export-secret-subkeys [email protected] > secret_subkeys.gpg
$ gpg --delete-secret-keys [email protected]
Delete this key from the keyring? (y/N) y
This is a secret key! - really delete? (y/N) y
$ gpg --import secret_subkeys.gpg

Questo li lascia in uno stato "laptop" con la chiave segreta primaria mancante. Il trasferimento viene effettuato tramite

$ gpg -a --export-secret-keys [email protected] > laptop_keys_secret.gpg
$ gpg -a --export [email protected] > laptop_keys_public.gpg

(trasferimento tramite chiavetta USB o CD) e sul laptop

$ gpg --import laptop_keys_public.gpg
$ gpg --import laptop_keys_secret.gpg
15
serv-inc