24.3 GNU Privacy Guard
GNU Privacy Guard, o più comunemente GNUPG o ancora GPG, è una suite per la gestione
di chiavi crittografiche e della cifratura stessa. Tale strumento costituisce il backend
utilizzabile da qualunque altra applicazione che desideri far uso di chiavi per firmare e/o
cifrare/decifrare informazioni.
GPG è un sostituto di PGP (Pretty Good Privacy), un’applicazione creata da
P. Zimmermann nel 1991, che implementa il protocollo OpenPGP (RFC 2440) facendo uso
soltanto di algoritmi di cifratura non coperti da patent (DSA, RSA, AES, 3DES,
Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 e TIGER). Le chiavi sono
memorizzate in insiemi detti keyring (portachiavi) che sono rappresentati da file
all’interno della directory ~/.gnupg. Per default il keyring delle chiavi pubbliche
è rappresentato dal file pubring.gpg, mentre quello relativo alle chiavi private è
secring.gpg.
[da completare ...]
Il comando principale di GNU Privacy Guard è gpg (man page gpg(1)).
____________________________________________________________________
Comando: gpg
Path: /usr/bin/gpg
SINTASSI
# gpg [option] command
DESCRIZIONE
-
option indica la modalità di funzionamento di gpg. Può assumere i seguenti valori:
-
-b nbit
indica il numero di bit (nbit) utilizzati per la chiave del server (SSH1)
(per default è 768);
-
command indica la modalità di funzionamento di gpg. Può assumere i seguenti
valori:
-
-s | --sign
esegue un’operazione di firma;
- --clearsign
esegue un’operazione di firma in chiaro;
-
-b | --detach-sign
esegue un’operazione di firma non inglobata nel messaggio;
-
-e | --encrypt
esegue un’operazione di cifratura del messaggio;
-
-c | --symmetric
esegue un’operazione di cifratura a chiave simmetrica del messaggio;
- --store
solo memorizzazione (v. RFC 1991);
-
--decrypt [filename]
esegue un’operazione di decifratura dello standard input o del file
filename. L’output verrà visualizzato sullo schermo o memorizzato in
un file specificato dal comando --output. Se il messaggio è firmato,
viene verificata anche la firma;
-
--verify [sigfile [signed-files]]
verifica la firma contenuta nel file sigfile (o dallo standard input, se
sigfile non è specificato). Nel caso in cui sia specificato signed-files
questo viene considerato come il messaggio firmato, la cui firma
è contenuta nel file sigfile, altrimenti viene cercato un file con
estensione .sig o .asc;
-
--verify-files [files]
esegue la verifica della firma come --verify ma lavora su file che
contengono sia il messaggio firmato che la firma;
-
--list-keys [names] | --list-public-keys [names]
elenca le chiavi del portachiavi pubblico o soltanto quelle specificate
da names;
-
--list-secret-keys [names]
elenca le chiavi del portachiavi privato (segreto) o soltanto quelle
specificate da names;
-
--list-sigs [names]
come --list-keys ma elenca anche le firme relative alle chiavi;
-
--check-sigs [names]
come --list-sigs ma verifica anche le firme relative alle chiavi;
-
--fingerprint [names]
come --list-keys ma elenca anche le fingerprint relative alle chiavi
(se specificato 2 volte, vengono visualizzate le fingerprint relative
anche alle chiavi secondarie);
-
--list-packets
elenca la sequenza dei pacchetti (utile per il debug);
-
--gen-key
genera una nuova coppia di chiavi (pubblica/privata);
-
--edit-key name
attiva la modalità di gestione delle chiavi. In questa modalità sono
possibili vari comandi:
-
sign esegue un’operazione di firma sulla chiave dell’utente il cui
username è name;
-
lsign come sign ma la firma è impostata come non esportabile,
ovvero la firma non sarà utilizzabile da altri. Questo è utile
per fare in modo che le chiavi siano valide soltanto in un
ambiente locale;
-
revsig richiede la revoca della firma;
-
trust cambia l’affidabilità relativa alla veridicità del rapporto tra
la chiave ed chi afferma di esserne il proprietario;
-
disable
disabilita una chiave;
-
enable abilita una chiave;
-
adduid crea un altro user ID;
-
deluid elimina uno user ID;
-
addkey aggiunge una sottochiave alla hiave considerata;
-
delkey rimuove una sottochiave;
-
revkey revoca una sottochiave;
-
expire cambia la data di termine della validità della chiave;
-
passwd cambia la passphrase relativa alla chiave privata;
-
uid n imposta la selezione dello user id con indice n (n = 0 li
deseleziona tutti);
-
key n imposta la selezione della sottochiave con indice n (n = 0 le
deseleziona tutte);
-
check controlla tutti gli user id selezionati;
-
pref elenca le preferenze;
-
toggle cambia la modalità di visualizzazione tra le chiavi pubbliche
e quelle private;
-
save memorizza i cambiamenti effettuati sulle chiavi ed esce;
-
quit esce senza memorizzare le variazioni effettuate sulle chiavi;
____________________________________________________________________
[da completare ...]
Eseguendo gpg da un utente diverso dal superuser è possible che venga visualizzato un
messaggio di avvertimento analogo a ‘gpg: Warning: using insecure memory!’, in quanto gli
utenti che non hanno i privilegi del superuser non possono bloccare le pagine di memoria (il
kernel può scaricare sul filesystem - swap - le pagine di memoria di qualunque processo, a
meno che queste non siano state bloccate e per farlo il processo in quiestione deve avere i
privilegi di superuser).
Potrebbero essere visualizzati anche altri messaggi di avvertimento, come ‘gpg: WARNING:
unsafe permissions on configuration file "/home/username/.gnupg/gpg.conf"’, che indica
che il file in questione è leggibile da altri utenti (oltre che dal superuser), ed analogamente il
messaggio ‘gpg: WARNING: unsafe enclosing directory permissions on configuration
file’ indica che la directory contenente la configurazione di gpg è leggibile da altri
utenti.