Changes

From Studiosg
Jump to navigationJump to search
27,604 bytes added ,  19:45, 15 May 2016
Aggiunto nuovo articolo circa l'impiego di GPG su Linux
{{header_it|title=StudioSG - Gnu Privacy Guard per Linux| keyword={{Template:keyword_it_crittografia}}| description=Installazione, configurazione ed esempi d'uso di Gnu Privacy Guard su piattaforma Linux | link_page=gpg_and_linux}}

== GPG per Linux ==

'''Gnu Pravacy Guard è un programma per la crittografia ad uso personale''' che gira su di una moltitudine di piattaforme tra cui i sistemi operativi della famiglia '''Linux'''. L'installazione di base di quasi tutte le distribuzioni include un pacchetto dedicato a GPG, che spesso viene installato automaticamente essendo considerato uno strumento fondamentale. Le distribuzioni recenti includono due pacchetti dedicati al programma: uno per la famiglia 1.4.x ed un secondo per la nuova versione 2.x. In questo modo gli utenti che desiderino usufruire delle funzionalità introdotte nel nuovo ramo di sviluppo potranno installare il pacchetto chiamato '''gnupg2''', mentre chi desiderasse mantenere il livello di compatibilità maggiore possibile con le vecchie installazioni potrà installare il pacchetto '''gnupg'''. Nel proseguo dell'articolo verranno illustrate le caratteristiche base del programma.

=== Installazione ===
Come anticipato in precedenza il programma '''viene installato automaticamente dalla maggior parte delle distribuzioni'''. Vale comunque la pena illustrare la procedura di installazione nel caso in cui la macchina sia incompleta o sia stato installato solo un sistema minimale da personalizzare secondo le esigenze oppure la versione installata non sia quella desiderata. La procedura di installazione di GPG su Linux '''differisce dagli altri sistemi operativi e anche tra le diverse distribuzioni'''. In linea generale si possono classificare quatto metodologie di installazione in base alla distribuzione utilizzata. Tutte le distribuzioni Linux attualmente esistenti hanno radici comuni e possono essere catalogate in '''quattro famiglie principali''':
* Debian / Ubuntu
* Gentoo
* Red Hat
* Slackware
La stragrande maggioranza delle macchine Linux esistenti montano uno dei quattro sistemi elencati oppure un sistema derivato da uno di essi. Di seguito verranno illustrate istruzioni specifiche per ogni variante. L'installazione di programmi e software su di un sistema Linux richiede privilegi di amministratore perciò nel seguito si darà per scontato che l'utente stia operando come '''root'''.

==== Installazione su Debian ====
'''Debian''' e '''Ubuntu''' sono tra i più noti e diffusi sistemi Linux. Entrambi utilizzano pacchetti nel formato '''deb''' che gestiscono mediante il comando '''apt-get'''. In particolare per installare GPG sarà sufficiente lanciare il comando:
* '''apt-get''' install gnupg
Oppure
* '''apt-get''' install gnupg2
La prima riga dell'esempio fa riferimento al pacchetto della versione 1.4 obsoleta di GPG mentre la seconda riga opererà sulla recente versione 2.x del programma.

==== Installazione su Gentoo ====
'''Gentoo''' si differenzia parecchio dalle altre distribuzioni citate nell'articolo per due motivi. Il primo motivo è che la distribuzione '''non usa numeri di versione''', ma è '''aggiornata costantemente'''. Il secondo e non meno importante consiste nel fatto che è '''una distribuzione basata sul codice sorgente'''. Vale a dire che la maggioranza del software deve essere compilato al momento dell'installazione. La ricerca, installazione, manutenzione e rimozione dei programmi viene gestita attraverso un opportuno strumento chiamato '''emerge'''. Per installare un qualsiasi programma si lanci il comando:
: '''emerge''' <nome_del_programma>
In automatico il sistema si preoccuper&agrave; di compilare ed installare il programma e le relative dipendenze. Il comando da lanciare per installare GPG &egrave;:
: '''emerge''' ''--ask'' app-crypt/gnupg
Ove l'opzione ''--ask'' fornir&agrave; un'anteprima delle modifiche che verranno apportate al sistema prima di eseguire l'installazione, che si avvier&agrave; solo dopo aver ricevuto una conferma dall'utente.

==== Installazione su Red Hat ====
I sistemi Linux '''Red Hat''' e derivati, '''CentOS''' &egrave; forse uno dei pi&ugrave; noti, utilizzano pacchetti nel formato '''rpm''' gestiti attraverso i comandi '''rpm''' e '''yum'''. Qualora sia configurato correttamente, yum consente di installare facilmente pacchetti mediante la sintassi yum install <nome del pacchetto>. Il nome preciso del pacchetto pu&ograve; variare a seconda della distribuzione utilizzata. La versione 1.4 di GNU Privacy Guard ad esempio pu&ograve; essere identificata come gpg oppure come gnupg. Analogamente il nome dei pacchetti della versione 2.x pu&ograve; variare tra gpg2 e gnupg2. Per installare il pacchetto e le relative dipendenze &egrave; possibile utilizzare i comandi:
: '''yum''' install gpg
: '''yum''' install gpg2
Oppure
: '''yum''' install gnupg
: '''yum''' install gnupg2
I primi due comandi installeranno la versione 1.4 di GPG mentre gli ultimi due opereranno con la recente versione 2.x del programma.

==== Installazione su Slackware ====
La pi&ugrave; longeva delle distribuzioni Linux sviluppate e manutenute attivamente. '''Slackware''' utilizza un approccio molto essenziale all'amministrazione di sistema e all'installazione dei pacchetti. Per verificare quali pacchetti siano installati &egrave; ad esempio sufficiente elencare il contenuto della cartella '''/var/log/packages''' come sotto:
: '''ls''' ''-la'' /var/log/packages
Per verificare se sia installato GPG:
root@system:~# '''ls''' ''-la'' /var/log/packages/* '''| grep''' ''-i'' gnupg
-rw-r--r-- 1 root root 4467 Aug 19 2015 /var/log/packages/gnupg-1.4.19-x86_64-2_slack14.1
-rw-r--r-- 1 root root 13983 Dec 3 2014 /var/log/packages/gnupg2-2.0.24-x86_64-1_slack14.1
-rw-r--r-- 1 root root 751 Dec 14 2013 /var/log/packages/qca-gnupg-2.0.0_beta3-x86_64-1
Nell'esempio il comando rende sia un pacchetto per la versione 2.0 che uno per la 1.4 a testimoniare che entrambe sono a disposizione dell'utenza. Per installare software si fa abitualmente ricorso al comando '''installpkg'''. I pacchetti ufficiali della distribuzione possono essere scaricati dall'apposita [http://packages.slackware.com sezione del sito]. Una volta scaricato il pacchetto per la propria architettura in una cartella locale, ad esempio '''/tmp''', &egrave; possibile lanciare il comando installpkg <nome del pacchetto> per installarlo. Per installare le ultime versioni disponibili di GP per architettura a 64 bit:
: '''installpkg''' gnupg-1.4.19-x86_64-2_slack14.1
: '''installpkg''' gnupg2-2.0.24-x86_64-1_slack14.1
Omettere la prima riga nel caso in cui si desiderasse installare solo l'ultima versione di GPG per Linux.

Slackware dispone di uno '''strumento per automatizzare la gestione dei pacchetti''' che si occupa autonomamente di eseguire il download e la successiva installazione. '''Slackpkg''', questo il nome del programma, &egrave; normalmente disabilitato e per abilitarlo &egrave; necessario:
* Aggiornare il file '''/etc/slackpkg/mirrors''', che contiene l'elenco dei siti da cui reperire i pacchetti, impostando '''una ed una sola''' sorgente rimuovendo il carattere # dall'inizio della riga corrispondente.
* Aggiornare la configurazione di slackpkg tramite il comando:
: '''slackpkg''' update
Il programma scaricher&agrave; un elenco aggiornato dei pacchetti disponibili ed altre informazioni di configurazione quindi sar&agrave; pronto ad operare. Per installare un pacchetto lanciare il comando slackpkg install <nome del pacchetto> come nell'esempio sottostante riferito a GPG:
: '''slackpkg''' install gnupg-1.4.19-x86_64-2_slack14.1
: '''slackpkg''' install gnupg2-2.0.24-x86_64-1_slack14.1
Ad installazione ultimata sar&agrave; possibile procedere a configurare GPG.

=== Creazione delle Chiavi &amp; Configurazione ===
Dalle chiavi dipende la robustezza delle informazioni cifrate. Data la delicatezza dell'argomento si consiglia lettura del [https://www.gnupg.org/documentation/manuals/gnupg-2.0 manuale di GPG] (In inglese) prima di procedere. Di seguito verranno riassunti alcuni concetti fondamentali relativi alla crittografia ed al funzionamento di GPG:
* GPG utilizza la '''crittografia asimmetrica''' anche detta '''crittografia a chiave pubblica'''.
* La crittografia asimmetrica utilizza una coppia di chiavi: una '''chiave pubblica''', che ha la funzione di cifrare le informazioni, ed una '''chiave privata''' necessaria per decifrare i dati.
* La chiave pubblica deve essere distribuita a tutti coloro che desiderano inviarci messaggi o file cifrati.
* La chiave privata &egrave; segreta e '''non deve mai essere condivisa'''.
* Informazioni cifrate con la chiave pubblica possono essere decifrate solo con quella privata.
* '''La chiave privata pu&ograve; essere protetta con una passphrase'''. Anche se sottratta da persone non autorizzate, una chiave protetta risulta inutilizzabile senza conoscere la passphrase.

Data l'importanza che la coppia di chiavi ricopre per il funzionamento di GPG, deve essere creata come prima cosa a seguito dell'installazione. La procedura per la generazione delle chiavi &egrave; dettagliata di seguito. Seppure esistano molte interfacce grafiche per amministrare GPG, nessuna pu&ograve; essere realmente considerata uno standard su Linux per cui durante la trattazione e gli esempi si far&agrave; ricorso alla riga di comando.
* Collegarsi ad un terminale reale o emulato come ad esempio: '''xterm''', '''konsole'''.
Verr&agrave; trattata la versione 2 di GPG. Se foste interessati alla versione 1.4 il comando '''gpg2''' dovr&agrave; essere sostituito da '''gpg'''. Vale la pena sottolineare che le due versioni non sono completamente compatibili per cui alcuni comandi potrebbero non funzionare o avere esiti diversi da quelli descritti.
* Generare la coppia di chiavi lanciando il comando '''gpg2''' ''--gen-key''
user@system:~$ '''gpg2''' ''--gen-key''
gpg (GnuPG) 2.0.24; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: StudioSG
Email address: studiosg@giustetti.net
Comment: sg_test_03
You selected this USER-ID:
"StudioSG (sg_test_03) <studiosg@giustetti.net>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key BCB7BBFF marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2018-02-17
pub 2048R/BCB7BBFF 2016-03-17
Key fingerprint = B01C FA65 707E 5096 B91A 825D A4E2 1F27 BCB7 BBFF
uid [ultimate] StudioSG (sg_test_03) <sstudiosg@giustetti.net>
sub 2048R/FA671DAF 2016-03-17

La procedura chieder&agrave; di fornire un identificatore ed altre informazioni personali utilizzate per identificare le chiavi. La lunghezza massima delle chiavi gestite da GPG consiste in '''4096 bit''', ma il valore predefinito &egrave; '''2048'''. Una lunghezza pari a 2048 bit garantisce un elevato livello di sicurezza bilanciando tale aspetto con le prestazioni e la facolt&agrave; di esportare le chiavi su smartcard o altri dispositivi esterni standardizzati. Se non esistessero ragioni specifiche per impostare una lunghezza maggiore, '''si consiglia di utilizzare un valore pari a 2048 bit''' per la lunghezza delle chiavi. Per maggiori informazioni circa il formato e la lunghezza delle chiavi si rimanda alle [https://www.gnupg.org/faq/gnupg-faq.html Domande Frequenti] (In inglese) reperibili sul sito di GPG.

I valori standard dei parametri di configurazione sono adatti per la maggioranza degli usi privati o professionali, pertanto si consiglia di non modificarli a meno che sia necessario. Si consiglia comunque di non apportare modifiche per tentativi, ma di consultare preventivamente la documentazione e di procedere solo quando si sia certi del risultato voluto.

'''Durante la creazione delle chiavi &egrave; stata fornita una passphrase per la chiave privata'''. La passphrase &egrave; opzionale, ma consigliabile in quanto tutela l'utente in caso di furto del dispositivo su cui siano custodite le chiavi. Una password troppo corta o troppo facile potrebbe essere decifrata mediante un attacco di forza bruta. Una passphrase lunga pi&ugrave; di otto caratteri contenente lettere, numeri e caratteri speciali salvaguarder&agrave; da tale tipo di attacchi.

&Egrave; possibile controllare l'elenco delle chiavi esistenti utilizzando il comando '''gpg2''' ''--list-keys'':
user@system:~$ '''gpg2''' ''--list-keys''
/home/user/.gnupg/pubring.gpg
-----------------------------
pub 2048R/146BB7AD 2016-02-18 [expires: 2018-02-17]
uid [ultimate] StudioSG (SG Test Key) <studiosg@giustetti.net>
sub 2048R/8FF38CC1 2016-02-18 [expires: 2018-02-17]

pub 2048R/BCB7BBFF 2016-03-17
uid [ultimate] StudioSG (sg_test_03) <studiosg@giustetti.net>
sub 2048R/FA671DAF 2016-03-17

Il comportamento di GPG pu&ograve; essere configurato impostando opportuni valori per le opzioni del programma. In un sistema Linux le opzioni di configurazione sono salvate in comuni file modificabili con qualsiasi programma di elaborazione testi. Ogni utenza configurata sul sistema possiede una propria copia personale dei file di configurazione, che sono salvati nella cartella home. Il file di configurazione di GPG &egrave; '''$HOME/.gnupg/gpg.conf''' ove $HOME rappresenta la home directory dell'utente. Ad esempio il file di configurazione di un ipotetico utente user1 sar&agrave;: /home/user1/.gnupg/gpg.conf. Il punto all'inizio del nome .gnupg indica che la cartella &egrve; nascosta e non sar&agrave; perci&ograve; visibile. Per visualizzare la cartella utilizzare l'opzione ''-a'':
: '''ls''' ''-la''
Per leggere o modificare il proprio file di configurazione:
: '''vi''' $HOME/.gnupg/gpg.conf
Il file &egrave; commentato scrupolosamente, ma si rimanda comunque al manuale del programma per una descrizione di tutte le opzioni ivi contenute.

==== Back-up della Coppia di Chiavi ====
'''La perdita della chiave privata potrebbe rivelarsi catastrofica per un archivio di documenti cifrati mediante GPG'''. La potenza computazionale fornita dagli attuali processori &egrave; giudicata insufficiente per decifrare documenti senza la chiave preposta. L'intero archivio andrebbe perso come conseguenza della perdita della chiave ed &egrave; pertanto consigliabile generare una copia delle chiavi privata e pubblica da conservare in un luogo sicuro diverso dalla macchina su cui si lavori abitualmente. Tutte le chiavi generate sono contenute all'interno della cartella $HOME/.gnupg in appositi file binari. Un modo semplice per generare una copia di sicurezza delle chiavi consiste nella creazione di un archivio compresso protetto da password:
: '''tar''' ''-pcf'' key_backup.tar $HOME/.gnupg
: '''zip''' ''-e'' key_backup.tar.zip key_backup.tar
: '''rm''' key_backup.tar
Il comando zip chieder&agrave; all'utente di fornire una password per l'archivio e di confermarla immediatamente dopo. L'archivio generato, key_backup.tar.zip, potr&agrave; essere aperto solo fornendo la password impostata.

=== Cifrare e Decifrare File ===
Per cifrare uno o pi&ugrave; file con GPG &egrave; possibile utilizzare il comando '''gpg2''' seguito dalle opzioni ''--decrypt'' o ''--encrypt'' a seconda del caso. Il comando base per cifrare un file &egrave;:
: '''gpg2''' ''--encrypt'' <file>
Il programma chieder&agrave; all'utente di fornire un identificatore per la chiave del destinatario del file come nell'esempio sottostante:
user@system:/tmp/_sg_test$ '''gpg2''' ''--encrypt'' st_test01.pdf
You did not specify a user ID. (you may use "-r")

Current recipients:

Enter the user ID. End with an empty line: StudioSG

Current recipients:
2048R/8FF38CC1 2016-02-18 "StudioSG (SG Test Key) <studiosg@giustetti.net>"

Enter the user ID. End with an empty line:

user@system:/tmp/_sg_test$
Il file cos&igrave; generato avr&agrave; il medesimo nome del file origine ed estensione '''.gpg'''.

Per impostare molti destinatari diversi bisogna digitarne uno per riga. '''Una riga vuota indica la fine dell'elenco di destinatari'''. Un elenco delle chiavi registrate ed utilizzabili per cifrare i file pu&ograve; essere richiamato mediante l'opzione ''--list-keys'':
user@system:/tmp/_sg_test$ '''gpg2''' ''--list-keys''
-----------------------------
pub 2048R/146BB7AD 2016-02-18 [expires: 2018-02-17]
uid [ultimate] StudioSG (SG Test Key) <studiosg@giustetti.net>
sub 2048R/8FF38CC1 2016-02-18 [expires: 2018-02-17]

pub 2048R/BCB7BBFF 2016-03-17
uid [ultimate] StudioSG (sg_test_03) <studiosg@giustetti.net>
sub 2048R/FA671DAF 2016-03-17

&Egrave; possibile cifrare molti file con un unico comando facendo ricorso all'opzione ''--multi''. Nel caso sar&agrave; necessario fornire un elenco di destinatari per ogni file. L'operazione potrebbe risultare tediosa e, per semplificarla, GPG offre l'opzione ''-r'' che consente di fornire i destinatari direttamente dalla riga di comando. Nell'esempio riportato sotto tre documenti sono protetti utilizzando la chiave del destinatario StudioSG:
user@system:/tmp/_sg_test$ '''ls''' ''-la''
total 48
drwxrwxrwx 3 user1 users 4096 Mar 18 18:50 ./
drwxrwxrwt 17 root root 4096 Mar 18 18:37 ../
-rw-r--r-- 1 user users 7737 Mar 18 18:50 st_test01.pdf
-rw-r--r-- 1 user users 7844 Mar 18 18:50 st_test02.pdf
-rw-r--r-- 1 user users 7932 Mar 18 18:50 st_test03.pdf
user@system:/tmp/_sg_test$ '''gpg2''' ''-r'' StudioSG ''--multi --encrypt'' st_test0*
user@system:/tmp/_sg_test$ '''ls''' ''-la''
total 72
drwxrwxrwx 3 user users 4096 Mar 18 18:50 ./
drwxrwxrwt 17 root root 4096 Mar 18 18:37 ../
-rw-r--r-- 1 user users 7737 Mar 18 18:50 st_test01.pdf
-rw-r--r-- 1 user users 7378 Mar 18 18:50 st_test01.pdf.gpg
-rw-r--r-- 1 user users 7844 Mar 18 18:50 st_test02.pdf
-rw-r--r-- 1 user users 7487 Mar 18 18:50 st_test02.pdf.gpg
-rw-r--r-- 1 user users 7932 Mar 18 18:50 st_test03.pdf
-rw-r--r-- 1 user users 7574 Mar 18 18:50 st_test03.pdf.gpg

Per decifrare un file si utilizza il comando '''gpg2''' seguito dall'opzione ''--decrypt''. GPG chieder&agrave; all'utente di fornire una password, ricevuta la quale esporter&agrave; il contenuto del file cifrato sull'output della console. Per ottenere un file in chiaro, invece, &egrave; necessario utilizzare l'opzione ''--output'' e fornire un nome per detto file.
: '''gpg2''' ''--output'' <file in chiaro> ''--decrypt'' <file cifrato>
user@system:/tmp/_sg_test$ '''gpg2''' ''--output'' st_test01.pdf ''--decrypt'' st_test01.pdf.gpg

You need a passphrase to unlock the secret key for
user: "StudioSG (SG Test Key) <studiosg@giustetti.net>"
2048-bit RSA key, ID 8FF38CC1, created 2016-02-18 (main key ID 146BB7AD)

gpg: can't connect to the agent - trying fall back
gpg: encrypted with 2048-bit RSA key, ID 8FF38CC1, created 2016-02-18
"StudioSG (SG Test Key) <studiosg@giustetti.net>"
user1@system:/tmp/_sg_test$ '''ls''' ''-la''
total 56
drwxrwxrwx 3 user users 4096 Mar 18 19:21 ./
drwxrwxrwt 17 root root 4096 Mar 18 19:14 ../
-rw-r--r-- 1 user users 7737 Mar 18 19:21 st_test01.pdf
-rw-r--r-- 1 user users 7378 Mar 18 18:50 st_test01.pdf.gpg
-rw-r--r-- 1 user users 7487 Mar 18 18:50 st_test02.pdf.gpg
-rw-r--r-- 1 user users 7574 Mar 18 18:50 st_test03.pdf.gpg

=== GPG-AGENT ===
'''Gpg-agent''' &egrave; un demone che semplifica la vita degli utenti memorizzando in una propria cache tutte le passphrase richieste da GPG per decifrare informazioni. Le passphrase sono salvata al momento della prima digitazione. In seguito, quando GPG chieda nuovamente una password, questa sar&agrave; letta dalla cache e fornita direttamente da gpg-agent. L'utente in sostanza dovrà fornire ogni password una volta soltanto e non all'apertura di ogni documento. Un risparmio di tempo considerevole per il personale di un ufficio che debba leggere e gestire una gran quantità di documenti ogni giorno.

'''Il demone deve essere esplicitamente avviato ed attivo perch&egrave; memorizzi le password'''; &egrave;, inoltre, necessario configurare l'ambiente perch&egrave; avverta la presenza dell'agente e lo interpelli ad ogni nuova richiesta di password. Linux &egrave; un sistema complesso in grado di funzionare sia attraverso una interfaccia grafica che una a carattere fattori di cui la configurazione deve tener conto. Nel caso dell'interfaccia testuale, poi, esistono molte shell che l'utente pu&ograve; utilizzare per lanciare i comandi e queste possono essere interattive, ossia gestite attivamente da un utente, oppure no, come nel caso degli script che eseguono comandi in maniera autonoma. Per essere sicuri che gpg-agent sia disponibile a tutti i comandi dell'interfaccia carattere &egrave; bene '''avviarlo automaticamente assieme alla shell'''.

Il comando da lanciare per avviare l'agente &egrave;:
: '''/usr/bin/gpg-agent''' ''--sh --daemon --write-env-file'' $HOME/.cache/gpg-agent-info
Aggiungere la riga riportata sopra nel file di configurazione della shell in modo da automatizzare l'avvio di gpg-agent. Supponendo che la shell da configurare sia '''bash''', predefinita in Linux, i file da aggiornare sono:
* '''$HOME/.bash_profile''' oppure '''$HOME/.profile''' per una shell di login ossia quella aperta quando ci si collega ad una macchina.
* '''$HOME/.bash_rc''' per una shell non di login ossia una interfaccia secondaria aperta quando si &egrave; gi&agrave; collegati ad un computer.
Di seguito &egrave; riportato un esempio dei comandi di avvio:
<syntaxhighlight lang="bash">
# Avvio di gpg-agent al collegamento.
# Verificare che il servizio non si gi&agrave; attivo
if test -f $HOME/.cache/.gpg-agent-info && \
kill -0 `cut -d: -f 2 $HOME/.cache/.gpg-agent-info` 2>/dev/null; then
GPG_AGENT_INFO=`cat $HOME/.cache/.gpg-agent-info | cut -c 16-`
else
# gpg-agent fermo => Avvio
eval `gpg-agent --daemon --sh --write-env-file $HOME/.cache/.gpg-agent-info`
fi
# Impostazione delle variabili di ambiente
GPG_TTY=$(tty)
export GPG_TTY
export GPG_AGENT_INFO
</syntaxhighlight>
Nel caso in cui fosse usata '''ksh''', '''zsh''' o altra shell, il comando di avvio di gpg-agent dovr&agrave; essere inserito nel file di configurazione letto all'avvio della stessa. Si rimanda alla documentazione specifica di ogni shell per informazioni dettagliate in merito.

Su Linux sono disponibili svariate interfacce grafiche: '''Gnome''', '''KDE''', '''TDE''', '''XFCE''', fortunatamente la configurazione risulta molto pi&ugrave; standardizzata rispetto a quelle testuali dato che molti dei servizi che offrono sono basati sul server grafico '''[https://www.x.org | X]'''. Per avviare automaticamente gpg-agent &egrave; possibile modificare il file '''$HOME/.xinitrc''', che contiene le opzioni di avvio di una sessione X. Segue un esempio della riga da aggiungere nel file per informare l'ambiente desktop della presenza di gpg-agent:
<syntaxhighlight lang="bash">
eval "$(gpg-agent --daemon)"
</syntaxhighlight>
La riga aggiunta render&agrave; disponibili ai programmi lanciati durante la sessione i servizi offerti da gpg-agent.

I parametri di configurazione di gpg-agent sono contenuti nel file '''$HOME/.gnupg/gpg-agent.conf'''. Tra questi vale la pena citare '''default-cache-ttl''' che imposta '''il lasso di tempo per cui una password verr&agrave; mantenuta nella cache'''. Scaduto tale limite la password verr&agrave; rimossa e chiesta nuovamente all'utente in caso di bisogno. Il tempo di vita standard di una password ammonta a 600 secondi ossia 10 minuti. Per aumentare tale intervallo ad un'ora sar&agrave; necessario modificare la riga
default-cache-ttl 600
in
default-cache-ttl 3600
e riavviare il demone gpg-agent.

=== Interfacce Grafiche ===
Esistono molte interfacce grafiche per amministrare GPG su Linux. La maggior parte delle interfacce sono integrate con l'ambiente grafico in uso ad esempio '''Kgpg''' per KDE 4, oppure '''Kleopatra''' un'interfaccia multi-piattaforma disponibile per Linux ed altri Unix e perfino per Windows. Tutti i programmi forniscono funzionalit&agrave; equivalenti ed hanno aspetto simile. Esistono comunque differenze derivanti dall'integrazione degli stessi con l'ambiente per cui sono sviluppati si consiglia pertanto di consultare la documentazione specifica di ognuno di essi. Il pacchetto standard GPG comprende una interfaccia predefinita '''Gpa''' che viene di solito installata con lo stesso:

[[File:gpa_main.jpg| GPA - L'interfaccia grafica di GPG]]

Attraverso Gpa &egrave; possibile generare coppie di chiavi, cifrare e decifrare file e impostare le opzioni di funzionamento di GPG o gpg-agent:

[[File:gpa_option.jpg| GPA - Opzioni di funzionamento]]

Tutte le operazioni descritte in precedenza per interfaccia testuale possono essere eseguite tramite Gpa.


== Conclusioni ==

Il presente documento contiene una breve presentazione della versione di Gnu Privacy Guard ottimizzata per piattaforma Linux. Sono state descritte la procedura di installazione ed il funzionamento base del programma. Nel far ci&ograve; si &egrave; cercato di mantenere la neutralit&agrave; per quanto concerne la distribuzione utilizzata. &Egrave; stato infine fornito un accenno alle numerose interfacce grafiche di amministrazione per il programma ed i servizi correlati. Per maggiori informazioni si rimanda al manuale del progetto ed ai numerosi articoli disponibili in rete e in questo stesso sito web. Se foste interessati ai servizi che offriamo o solo per ottenere maggiori informazioni, per cortesia contattateci attraverso l'apposita [[Special:Contact/crittografia | maschera]].


Per commenti, consigli, domande inviate una e-mail all'indirizzo ''studiosg [chiocciola] giustetti [punto] net''.


Link esterni

----

* [https://www.gnupg.org/index.it.html Pagina ufficiale di GNU Privacy Guard (Inglese)]

----

{{footer_it | link_page=gpg_and_linux}}

Navigation menu