24.3 GNU Privacy Guard
GNU Privacy Guard,
o più comunemente GnuPG o GPG, è una suite per la gestione di chiavi crittografiche
asimmetriche
e della cifratura stessa. Tale strumento costituisce un 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 brevetti (come ElGamal, DSA, RSA, 3DES,
SHA-1, ...). Le chiavi sono memorizzate in insiemi detti keyring (portachiavi) che sono
costituiti 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.
Ogni coppia di chiavi è identificata da un valore univoco detto ID, che viene generato
automaticamente da GPG.
Il comando principale di GNU Privacy Guard è gpg (man page gpg(1)).
____________________________________________________________________
Comando: gpg
Path: /usr/bin/gpg
SINTASSI
$ gpg [option] command
DESCRIZIONE
-
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;
-
--card-edit
visualizza un menù per gestire le
smartcard;
-
--card-status
visualizza lo stato della smartcard;
-
--change-pin
permette di cambiare il PIN di una smartcard;
-
--sign-key pkey
firma la chiave pubblica pkey con la propria chiave privata;
-
--lsign-key pkey
firma la chiave pubblica pkey con la propria chiave privata marcandola però
come non esportabile;
-
--delete-key pkey
rimuove la chiave pubblica pkey dal proprio keyring;
-
--delete-secret-key skey
rimuove la chiave privata skey dal proprio keyring;
-
--delete-secret-and-public-key key
rimuove sia la chiave privata (se esiste) che quella pubblica, identificate da
skey, dai propri keyring;
-
--gen-revoke key
genera un certificato di revoca per la coppia di chiavi identificate da
key;
-
--desig-revoke key
genera un certificato di revoca per la coppia di chiavi identificate da key di
proprietà di terzi;
-
--export [keys]
esporta le chiavi pubbliche indicate da keys dal proprio keyring,
visualizzandole sullo schermo;
-
--send-keys [keys]
esporta le chiavi pubbliche indicate da keys dal proprio keyring, inviandole
ad un keyserver;
-
--export-secret-keys [keys]
esporta le chiavi private indicate da keys dal proprio keyring,
visualizzandole sullo schermo;
-
--export-secret-subkeys [keys]
esporta le chiavi private indicate da keys dal proprio keyring,
visualizzandole sullo schermo. La chiave primaria è resa inutilizzabile;
-
--import [files] | --fast-import [files]
importa nei propri keyring le chiavi presenti nei file specificati da
files;
-
--recv-keys [keyIDs]
importa da un keyserver le chiavi identificate da keyIDs nel proprio
keyring;
-
--refresh-keys [keyIDs]
richiede l’aggiornamento dal keyserver per le chiavi identificate da
keyIDs già presenti nel proprio keyring. Se non viene specificata
nessun keyID vengono aggiornate tutte le chiavi presenti nel
keyring;
-
--search-keys [keyIDs]
ricerca sul keyserver le chiavi identificate da keyIDs;
-
--update-trustdb
crea la rete di fiducia (web of trust) per le chiavi presenti nel proprio
keyring, richiedendo i livelli di fiducia per le singole chiavi per le quali esso
non sia già stato indicato;
-
--check-trustdb
aggiorna la rete di fiducia (web of trust) per le chiavi presenti
nel proprio keyring, rivedendo i livelli di fiducia delle singole
chiavi;
-
--export-ownertrust
visualizza i livelli di fiducia sullo schermo;
-
--import-ownertrust [files]
aggiorna i livelli di fiducia con quelli presenti nei file files (o dallo standard
input se files non è stato speificato);
-
--rebuild-keydb-caches
aggiorna la cache delle firme per le varie chiavi;
-
--print-md algo [files]
visualizza il message digest dell’algoritmo algo per i file indicati da files (o
per lo standard input);
-
--print-mds [files]
visualizza il message digest di tutti gli algoritmi per i file indicati da files (o
per lo standard input);
-
--gen-random lvl [count]
genera count byte casuali del livello di qualità indicato da lvl (0, 1 o 2). Se
count non è indicato o è 0, viene visualizzata una sequenza indefinita di
byte casuali;
-
--gen-prime mode bits [qbits]
?;
-
--version
visualizza la versione di gpg;
-
--warranty
visualizza infomrazioni sulla garanzia di gpg;
-
-h | --help
visualizza un aiuto sommario di gpg;
-
option indica le eventuali opzioni che determinano il comportamento di gpg. Può
assumere i seguenti valori:
-
-a | --armor
crea un output in ASCII;
-
-o file | --output file
crea il file di output file;
-
--max-output n
specifica il numero massimo di byte (n) generati nell’elaborazione di
un file (default 0, nessun limite);
-
--mangle-dos-filenames
indica a gpg di generare nomi di file di output contenenti un solo ‘.’;
-
--no-mangle-dos-filenames
indica a gpg di non curarsi di generare nomi di file di output
contenenti un solo ‘.’ (default);
-
-u skey | --local-user skey
indica la chiave con la quale firmare (si impone a --default-key);
-
--default-key skey
indica la chiave di default con la quale firmare (se non è indicata,
viene considerata la prima chiave privata presente nel keyring);
-
-r pkey | --recipient pkey
indica la chiave pubblica da utilizzare per la cifratura;
-
-R pkey | --hidden-recipient pkey
indica la chiave pubblica da utilizzare per la cifratura, facendo in
modo che la stessa rimanga nascosta (per nasondere il destinatario
del messaggio);
-
--default-recipient pkey
indica la chiave pubblica di default da utilizzare per la cifratura;
-
--default-recipient-self
indica di utilizzare come chiave pubblica di default per la cifratura
dei messaggi quella relativa alla chiave privata di default (v.
--default-key);
-
--no-default-recipient
indica di non considerare le opzioni --default-recipient e
--default-recipient-self;
-
--encrypt-to pkey
come --recipient, ma non viene effettuato alcun controllo
sull’affidabilità della chiave;
-
--hidden-encrypt-to pkey
come --hidden-recipient, ma non viene effettuato alcun controllo
sull’affidabilità della chiave;
-
--no-encrypt-to
indica di non considerare le opzioni --encrypt-to e
--hidden-encrypt-to;
-
-v | --verbose
indica di fornire ulteriori informazioni in fase di elaborazione (può
essere utilizzato 2 volte per ottenere più informazioni);
-
-q | --quit
indica di effettuare l’operazione in maniera silente;
-
-z n | --compress-level n | --bzip2-compress-level n
imposta il livello di compressione per zip, zlib o bzip2 (per default è
6);
-
--bzip2-decompress-lowmem
indica di utilizzare un metodo di compressione alternativo per bzip2
che utilizza circa la metà della memoria, ma è circa il doppio più
lento;
-
-t | --text-mode
indica di considerare i file in ingresso come file di testo e di produrre
file di output con i caratteri CR e LF come terminatori di riga (utile
quando si utilizzano piattaforme diverse);
-
--no-text-mode
indica non di considerare i file in ingresso come file di testo e di non
produrre necessariamente file di output con i caratteri CR e LF come
terminatori di riga (default);
-
-n | --dry-run
(non ancora implementato);
-
-i | --interactive
richiede conferma prima di sovrascrivere dei file;
-
--batch
esegue l’elaborazione in modalità batch, non permettendo
l’inserimento interattivo di comandi;
-
--no-batch
disattiva la direttiva --batch;
-
--no-tty
indica che il terminale (TTY) non deve essere utilizzato per
visualizzare alcun output;
-
--yes indica di assumere “yes” come risposta alla maggior parte delle
domande;
-
--no indica di assumere “no” come risposta alla maggior parte delle
domande;
-
--ask-cert-level
richiede all’utente di specificare un livello di certificazione per la firma
di una chiave;
-
--no-ask-cert-level
indica di non richiedere all’utente di specificare un livello di
certificazione per la firma di una chiave (default);
-
--default-cert-level n
specifica il livello di certificazione di default necessario per firmare una
chiave. I possibili valori per n sono i seguenti
-
0 indica che non si richiede una particolare attenzione su come
deve essere verificata la chiave (default);
-
1 indica che si ritiene che la chiave appartenga effettivamente
alla persona il cui nome è su essa riportato, ma non si ha la
possibilità di verificarlo;
-
2 indica che si è effettuata una verifica sommaria della chiave (per
esempio verificando la relativa fingerprint e controllando il nome
dell’utente su essa riportato);
-
3 indica che si è effettuata una profonda verifica della chiave
(per esempio confrontando la fingerprint con quella ricevuta
di persona dal proprietario della chiave, confrontando il nome
dell’utente con quello presente su un documento di identità del
proprietario della chiave e controllando che l’indirizzo di posta
elettronica corrisponda effettivamente a quello dell’intestatario
della chiave, per mezzo di qualche scambio di e-mail);
-
--min-cert-level lvl
indica di considerare non valide le firme con un livello di certificazione
inferiore a lvl (default 2);
-
--trusted-key keyID
indica di considerare la chiave identificata da keyID affidabile coma la
propria chiave privata;
-
--trust-model model
specifica il livello di fiducia da seguire. model può assumere uno dei seguenti
valori
-
pgp è la catena della fiducia realizzata per mezzo delle firme come
avviene per PGP 5.x e successivi (default);
-
classic
è la catena della fiducia standard come avviene per PGP 2.x e
precedenti;
-
direct
la validità di una chiave è impostata direttamente dall’utente
senza alcuna catena della fiducia;
-
always
assume che le chiavi siano tutte sempre verificate;
-
--always-trust
come --trust-model always;
-
--keyid-format fmt
indica come visualizzare gli ID delle chiavi. fmt può assumere uno dei
seguenti valori
-
short
ID di 8 caratteri (default);
-
long
ID di 16 caratteri;
-
0xshort
ID di 8 caratteri con prefisso ‘0x’;
-
0xlong
ID di 16 caratteri con prefisso ‘0x’;
-
--keyserver srv
specifica il nome del keyserver da utilizzare;
____________________________________________________________________
[da completare ...]
Il file di configurazione di gpg è ~/.gnupg/gpg.conf ed in sua assenza viene considerato il
file ~/.gnupg/options/gpg.conf. Al suo interno possono essere indicate anche le
opzioni di default di gpg, ma soltanto in forma estesa e senza i due caratteri iniziali
‘--’.
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 poterlo fare il processo in questione 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.
|