Translation(s) : English -Italiano


Usare sottochiavi OpenPGP nello sviluppo di Debian

Cosa sono le chiavi?

Nella crittografia a chiave pubblica, una chiave è in realtà una coppia: una chiave pubblica e una chiave privata. Si usa la chiave privata per firmare in modo digitale i file e gli altri usano la chiave pubblica per verificare la firma. Oppure gli altri usano la chiave pubblica per cifrare qualcosa e il destinatario usa la chiave privata per decifrarlo.

Fino a che l'utente ha accesso alla propria chiave privata, gli altri possono fare affidamento sulle firme digitali che egli fa, e lui può fare affidamento sul fatto che nessuno altro possa leggere i messaggi cifrati destinati a lui.

GnuPG, l'implementazione usata in Debian, prende la chiave giusta in un dato momento.

Cosa sono le sottochiavi?

OpenPGP gestisce inoltre le sottochiavi, che sono come chiavi normali tranne per il fatto che sono legate ad una coppia di chiavi principali. Una sottochiave può essere usata per firmare o per la cifratura. L'aspetto veramente utile delle sottochiavi è il fatto che possono essere revocate indipendentemente dalle chiavi principali così come possono essere archiviate separatamente.

In altre parole, le sottochiavi sono come un paio di chiavi separate, ma sono automaticamente associate al paio di chiavi principale.

GnuPG di fatto usa una chiave solo per firmare come chiave principale e crea automaticamente una sottochiave di cifratura. Senza una sottochiave per la cifratura, non si possono ottenere affatto messaggi di posta elettronica cifrati con GnuPG. Debian richiede il possesso di una sottochiave di cifratura in modo che certi tipi di dati possano essere inviati in modo sicuro per posta elettronica all'utente, come la password iniziale per l'account shell di debian.org.

Perché

Le sottochiavi rendono più facile la gestione delle chiavi. Il paio di chiavi principale è piuttosto importante: è la migliore prova della propria identità online, almeno per Debian, e se la si perde è necessario ricostruire la propria reputazione partendo da zero. Se qualcun altro ottiene l'accesso alla chiave privata principale dell'utente o alla sua sottochiave privata, può far credere a tutti di essere l'utente: può caricare pacchetti a suo nome, votare a suo nome e fare praticamente qualsiasi altra cosa che può fare l'utente. Questo può essere un grande danno per Debian. Inoltre non è piacevole per l'utente. Perciò si devono mantenere al sicuro tutte le proprie chiavi private.

Si dovrebbe mantenere la propria chiave privata principale molto molto al sicuro. Tuttavia, mantenere tutte le proprie chiavi estremamente al sicuro è scomodo: ogni volta che si deve firmare un nuovo caricamento di pacchetti è necessario copiare i pacchetti su un supporto portabile adatto, andare nello scantinato, dimostrare alle guardie armate la propria identità usando svariati metodi biometrici e altri tipi di identificazione, attraversare un labirinto mortale, dare da mangiare ai cani da guardia il giusto tipo di carne e da ultimo aprire la cassaforte, tirare fuori il portatile per la firma e firmare i pacchetti. Poi fare il percorso inverso per tornare alla propria connessione ad Internet per caricare i pacchetti.

Le sottochiavi rendono tutto ciò più semplice: si ha già una sottochiave di cifratura creata automaticamente e si crea un'altra sottochiave per firmare e le si conserva sul proprio computer principale. Si pubblicano le sottochiavi sui normali server di chiavi e tutti le useranno al posto delle chiavi principali, con una eccezione. In modo analogo l'utente userà le chiavi principali solo in circostanze eccezionali.

Le eccezioni sono:

Nel caso che la sottochiave venga rubata mentre la chiave principale rimane sicura, si può revocare la sottochiave compromessa e sostituirla con una nuova sottochiave senza dover ricostruire la propria reputazione e senza ridurre la reputazione delle chiavi di altri firmate dalla propria chiave principale.

Come?

Sfortunatamente l'interfaccia utente di GnuPG non è proprio un divertimento da usare. Di seguito verranno mostrati i passi necessari uno a uno.

In queste istruzioni si presume l'uso di un computer e che le chiavi principali siano conservate su un'unità USB cifrata o preferibilmente almeno due (si dovrebbero mantenere dei backup delle proprie chiavi segrete). Si presume inoltre che si abbia già una chiave; se ciò non fosse vero, guardare http://keyring.debian.org/creating-key.html per le istruzioni a riguardo.

  1. Fare dei backup dei file GnuPG esistenti ($HOME/.gnupg). Tenerli al sicuro. Se qualcosa va storto durante i passi descritti in seguito, potrebbero essere necessari per ritornare ad una situazione che si sa funzionare.

    • umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg

    (notare: l'umask 077 avrà come risultato permessi più restrittivi per il backup.)
  2. Creare una nuova sottochiave per firmare.
    • Trovare l'ID della propria chiave: gpg --list-keys proprionome

    • gpg --edit-key IDPROPRIACHIAVEPRINCIPALE

    • Al prompt gpg>: addkey

    • Viene chiesta la propria passphrase, digitarla.
    • Scegliere il tipo di chiave "RSA (solo firma)".
    • Sarebbe saggio scegliere una dimensione della chiave di 4096 (o 2048) bit.
    • Scegliere una data di scadenza (si possono ruotare le proprie sottochiavi più frequentemente delle chiavi principali, oppure mantenerle per tutta la durata della chiave principale, senza scadenza).
    • GnuPG creerà (prima o poi) una chiave, ma si deve attendere che raccolga abbastanza entropia per farlo.
    • Salvare la chiave con: save

  3. Si può ripetere il procedimento e creare anche una sottochiave "RSA (solo cifratura)", se lo si desidera. Per Debian è sufficiente solo la chiave per la firma.
  4. Ora copiare $HOME/.gnupg nelle proprie unità USB.

  5. Ora inizia la parte delicata. È necessario rimuovere la chiave privata principale e GnuPG non fornisce un modo comodo per farlo. È necessario esportare la sottochiave, rimuovere la chiave privata e reimportare la sottochiave.
    • Trovare l'ID della chiave della nuova sottochiave segreta: gpg --list-secret-keys

    • Exportare le sottochiavi: gpg --export-secret-subkeys IDSOTTOCHIAVE1 .. IDSOTTOCHIAVEn > sottochiavi

    • Esportare anche le chiavi pubbliche: gpg --export IDPROPRIACHIAVEPRINCIPALE > chiavipubbliche

    • Rimuovere la chiave principale: gpg --delete-secret-key IDPROPRIACHIAVE

    • Reimportare: gpg --import chiavipubbliche sottochiavi

    • Verificare che gpg -K mostri sec# invece del solo sec per la propria chiave privata. Ciò significa che la chiave segreta non è realmente presente.

Il computer è ora pronto per l'uso normale.

Quando è necessario usare le chiavi principali, montare l'unità USB cifrata e impostare la variabile d'ambiente GNUPGHOME:

export GNUPGHOME=/media/qualcosa
gpg -K

oppure usare nella riga di comando l'opzione --home :

gpg --home=/media/qualcosa -K

Quest'ultimo comando dovrebbe ora mostra la propria chiave privata con sec e non sec#.

E poi?

A questo punto si ha una sottochiave ed è necessario inviarla al server di chiavi di Debian, se la propria chiave è gia nel portachiavi Debian e nella rete generale dei server di chiavi:

gpg --send-key --keyserver keyring.debian.org IDPROPRIACHIAVEPRINCIPALE
gpg --send-key --keyserver subkeys.pgp.net IDPROPRIACHIAVEPRINCIPALE

Il caricamento sul server di chiavi Debian funziona solo se la chiave principale pubblica è gia nei portachiavi dei DD o DM: il server di chiavi Debian accetta aggiornamenti alle chiavi esistenti, ma non chiavi nove. Le nuove chiavi vengono aggiunte a mano dai manutentori del portachiavi. Gli aggiornamenti alle chiavi necessitano di un ulteriore aggiornamento manuale per poter essere aggiunte al portachiavi effettivamente usato dai server di Debian e questo di solito viene fatto una volta al mese. (Vedere http://anonscm.debian.org/loggerhead/keyring/debian-keyring/changes per sapere se la propria sottochiave è stata aggiunta.)

(La prima volta che la propria chiave viene aggiunta ai portachiavi Debian: manualmente, quando si viene accettati come DD o DM. Dopo di ciò, aggiornamento delle sottochiavi nel server di chaivi: automatico. Copia degli aggiornamenti dal server di chiavi ai portachiavi Debian: manuale, una volta al mese.)

Fatto questo, si dovrebbe essere in grado di caricare pacchetti in Debian usando la sottochiave, invece della chiave principale.

Se la propria chiave era già presente nel portachiavi di backports, sarà necessario aprire un ticket nel tracciatore di richieste per chiedere che la propria chiave venga aggiornata in modo da poter nuovamente caricare su backports.debian.org.

Aiuto!

Se succede un disastro ed è necessario revocare la sottochiave per una ragione qualsiasi, fare ciò che segue:

  1. Montare l'unità USB cifrata.
  2. export GNUPGHOME=/media/propriaunita

  3. gpg --edit-key IDPROPRIACHIAVEPRINCIPALE

  4. Al prompt gpg>, elencare le chiavi (list), selezionare quella desiderata (chiave 123) e generare un certificato di revoca (revkey), poi salvare.

  5. Inviare la chiave aggiornata ai server di chiavi come descritto sopra.