Changes

20,378 bytes added ,  09:51, 6 May 2016
Aggiunto un nuovo articolo incentrato su GPG per MacOsX
{{header_it|title=StudioSG - Gnu Privacy Guard per MacOsX| keyword={{Template:keyword_it_crittografia}}| description=Installazione, configurazione ed esempi d'uso di Gnu Privacy Guard su piattaforma Mac | link_page=gpg_and_macosx}}


== GPG per MacOsX ==

'''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 Macintosh. Per tale sistema in particolare esistono '''tre versioni''' "ufficiali" di GPG:
* [http://macgpg.sourceforge.net/it/index.html MacGPG] è la conversione ufficiale del ramo 1.4 di GPG. Lo sviluppo di tale versione è concluso e i pacchetti forniti servono solo nell'evenienza di dover supportare vecchie installazioni o vecchie versioni di OsX.
* [https://sourceforge.net/projects/gpgosx GPGOsX] è la conversione ufficiale del ramo 2.1 di GPG. Include tutte le funzionalità introdotte con la versione 2.0 e la recente 2.1.
* [https://gpgtools.org GPGTools] è un'alternativa a GPGOsX basata sula ramo 2.0 di sviluppo. GPGTools ha il vantaggio di includere molte integrazioni al programma di base come i plug-in per Apple Mail ed un'interfaccia grafica funzionante.

Sia GPGOsX che GPGTools supportano solo versioni piuttosto recenti di OsX. La versione minima richiesta per installare i due programmi è la 10.6 oppure la 10.7. MacGPG invece supporta le vecchie architetture ed è pertanto indicato per chi ancora possedesse un Mac basato su architettura '''PowerPC'''. Questi ultimi dovranno però prepararsi ad utilizzare la riga di comando dato che il file di installazione non include una interfaccia grafica.

=== Installazione ===
La procedura di installazione varia leggermente al variare del programma che si installa. Si rimanda alla documentazione presente sui siti web dei rispettivi programmi per istruzioni dettagliate. Di seguito sono forniti alcuni collegamenti a pagine web che descrivono la procedura di installazione di GPGTools:
* [http://notes.jerzygangi.com/the-best-pgp-tutorial-for-mac-os-x-ever Istruzioni passo, passo per installare GPGTools].
* [https://www.encrypteverything.ca/index.php?title=Installing_and_configuring_GPGTools_for_Mac_to_encrypt_emails_and_files Un altro semplice tutorial ricco di immagini].

=== Creazione delle Chiavi & Configurazione ===
Le pagine collegate più sopra contengono indicazioni circa la creazione della coppia di chiavi utilizzate da GPG per cifrare e decifrare i file. Le chiavi sono fondamentali per GPG dato che da esse dipende la robustezza delle informazioni cifrate. Per informazioni esaustive si rimanda alla [https://www.gnupg.org/documentation/manuals/gnupg-2.0 documentazione del programma] mentre più sotto verranno riassunti i 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 è segreta e non deve essere condivisa con nessuno'''.
* Informazioni cifrate con la chiave pubblica possono essere decifrate solo con quella privata.
* '''La chiave privata può essere protetta con una passphrase'''. Anche se sottratta da persone non autorizzate, una chiave protetta risulta inutilizzabile senza conoscere la passphrase.

Le chiavi devono essere create come prima cosa a seguito dell'installazione per consentire il funzionamento del programma. La lunghezza delle chiavi è un aspetto delicato ed oggetto di discussione frequente. Una chiave di lunghezza maggiore garantisce in teoria una maggiore sicurezza, ma il suo impiego comporta svantaggi da prendere in considerazione. GPG consente di impostare una '''lunghezza massima di 4096 bit''' per le chiavi, ma si consiglia comunque di impostare il valore standard di '''2048 bit'''. La lunghezza standard rappresenta un buon compromesso tra sicurezza e prestazioni garantendo inoltre la possibilità di utilizzare dispositivi esterni quali le smart card. Le [https://www.gnupg.org/faq/gnupg-faq.html FAQ di GPG] (In inglese) contengono una trattazione della lunghezza in cui vengono soppesati i vantaggi e gli svantaggi del ricorso a dimensioni maggiori di 2048 bit.

La procedura per la generazione delle chiavi è descritta di seguito. Seppure alcune versioni di GPG per Mac dispongano di una interfaccia grafica di amministrazione, la riga di comando è l'unica interfaccia comune a tutte e tre perciò se ne farà ricorso.
* Aprire un terminale.
* Lanciare il comando '''gpg''' ''--gen-key'' fornendo tutte le informazioni richieste come nell'esempio sottostante:
hostname:~ user1$ '''gpg''' ''--gen-key''
gpg (GnuPG) 1.4.9; Copyright (C) 2008 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) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection? 1
DSA keypair will have 1024 bits.
ELG-E 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

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich heine (Der Dichter) <heinrichh@dusseldorf.de>"

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 CE95C1E9 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, 1u
pub 1024R/CE95C1E9 2016-03-22
Key fingerprint = 4313 91CC F222 161E 3B19 54CE AC09 5248 CE95 C1E9
uid StudioSG (sg_test_03) <studiosg@giustetti.net>
sub 2048g/1C97007E 2016-03-22

La procedura chiede di inserire un identificatore ed altre informazioni personali utilizzate per distinguere le chiavi. Per ottenere un elenco delle chiavi registrate utilizzare il comando '''gpg''' ''--list-keys'':
hostname:~ user1$ '''gpg''' ''--list-keys''
/home/user1/.gnupg/pubring.gpg
-----------------------------
pub 1024D/CE95C1E9 2016-03-22
uid StudioSG (sg_test_03) <studiosg@giustetti.net>
sub 2048g/1C97007E 2016-03-22

'''Durante la creazione delle chiavi &egrave; possibile digitare una passphrase opzionale per la chiave privata'''. Si consiglia caldamente di utilizzare sempre una passphrase, che 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ù di otto caratteri contenente lettere, numeri e caratteri speciali salvaguarderà da tale tipo di attacchi.

Il comportamento di GPG varia impostando opportuni valori per le opzioni del programma. In un sistema MacOsX le opzioni di configurazione sono salvate in file di testo modificabili con comune elaboratore di testo. Ogni utenza configurata sul sistema possiede una copia personale dei file di configurazione, che sono salvati nella cartella principale. Il file di configurazione di GPG &egrave; '''/Users/<nome utente>/.gnupg/gpg.conf'''. Ad esempio il file di configurazione di un ipotetico utente user1 sar&agrave;: /Users/user1/.gnupg/gpg.conf. Il punto all'inizio del nome .gnupg impone che la cartella sia nascosta. Per visualizzare la cartella utilizzare l'opzione ''-a'' del comando '''ls''':
: '''ls''' ''-la''
Per leggere o modificare il proprio file di configurazione:
: '''/Applications/TextEdit.app/Contents/MacOS/TextEdit''' /Users/<nome utente>/.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. Le opzioni predefinite sono adeguate per la quasi totalit&agrave; degli usi privati o professionali. Si consiglia di cambiare tali valori solo quando si sia certi del risultato ottenuto.

Il comando gpg deve essere rimpiazzato da '''gpg2''' dagli utenti di GPGOsX o GPGTools che usino la riga di comando invece delle rispettive interfacce grafiche.

==== Back-up della Coppia di Chiavi ====
La coppia di chiavi &egrave; fondamentale per leggere i file cifrati: la perdita della chiave privata potrebbe rivelarsi una catastrofe essendo impossibile per i processori attualmente in commercio decifrare i file senza di essa. L'intero archivio andrebbe perso assieme alla chiave ed &egrave; pertanto buona norma generare una copia delle chiavi da conservare poi in un luogo sicuro, diverso dalla macchina su cui si lavori abitualmente. Tutte le chiavi generate sono contenute all'interno della cartella '''/Users/<nome utente>/.gnupg''' in appositi file binari. Un modo semplice ottenere la copia di sicurezza delle chiavi consiste nella creazione di un archivio compresso protetto da password:
: '''zip''' ''-er'' key_backup.zip /Users/<nome utente>/.gnupg

Il comando zip chiederà all'utente di fornire una password per l'archivio e di confermarla immediatamente dopo. L'archivio generato, key_backup.zip, potrà essere aperto solo fornendo la password impostata. La versione del comando '''zip''' installata in OsX 10.4 o precedenti '''non supporta la crittografia'''. Gli utenti di tali sistemi devono rimuovere l'opzione ''-e'' altrimenti il comando fallir&agrave; rendendo l'errore "(encryption not supported)":
: '''zip''' ''-r'' key_backup.zip /Users/<nome utente>/.gnupg

=== Cifrare e Decifrare File ===
Il lancio dei comandi di GPG per cifrare e decifrare documenti su Mac dipende dal software installato pertanto anche in questo caso si rimanda alla documentazione del programma specifico. Seguono alcuni collegamenti alle pagine del sito di GPGTools:
* [https://gpgtools.tenderapp.com/kb/gpgservices-faq/how-to-encrypt-and-sign-text-or-files-with-gpgservices Cifrare e decifrare file con GPGTools]].
* [http://sites.allegheny.edu/its/best-practices/encrypting-files-gpg-tools Altri esempi d'uso di GPGTools].

L'interfaccia a riga di comando ha il vantaggio di essere uniforme per tutti i programmi. &Egrave; possibile ottenere informazioni ed esempi d'uso nella [http://blog.ghostinthemachines.com/2015/03/01/how-to-use-gpg-command-line documentazione ufficiale di GPG], che illustra i comandi e le relative opzioni. Il comando base per cifrare un file è:
: '''gpg''' ''--encrypt'' <file>
GPG chieder&agrave; all'utente di fornire un identificatore per la chiave del destinatario del file che verr&agrave; utilizzata per cifrare il documento come illustrato nell'esempio sottostante:
hostname:~ user1$ '''gpg''' ''--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:
2048g/1C97007E 2016-03-22 "StudioSG (sg_test_03) <studiosg@giustetti.net>"

Enter the user ID. End with an empty line:

hostname:~ user1$

Il file così generato avrà 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ò essere richiamato mediante l'opzione ''--list-keys'':
hostname:~ user1$ '''gpg''' ''--list-keys''
/Users/user1/.gnupg/pubring.gpg
-----------------------------
pub 1024D/CE95C1E9 2016-03-22
uid StudioSG (sg_test_03) <studiosg@giustetti.net>
sub 2048g/1C97007E 2016-03-22

Per cifrare molti file con un unico comando esiste l'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 nella riga di comando. Nell'esempio riportato sotto tre documenti sono protetti utilizzando la chiave del destinatario StudioSG:
hostname:~ user1$ '''ls''' ''-la''
total 48
drwx------ 3 user1 user1 4096 Mar 18 18:50 .
drwx------ 17 root admin 4096 Mar 18 18:37 ..
-rw------- 1 user1 user1 7737 Mar 18 18:50 st_test01.pdf
-rw------- 1 user1 user1 7844 Mar 18 18:50 st_test02.pdf
-rw------- 1 user1 user1 7932 Mar 18 18:50 st_test03.pdf
hostname:~ user1$ '''gpg''' ''-r'' StudioSG ''--multi --encrypt'' st_test0*
hostname:~ user1$ '''ls''' ''-la''
total 72
drwx------ 3 user1 user1 4096 Mar 18 18:50 .
drwx------ 17 root admin 4096 Mar 18 18:37 ..
-rw------- 1 user1 user1 7737 Mar 18 18:50 st_test01.pdf
-rw------- 1 user1 user1 7378 Mar 18 18:50 st_test01.pdf.gpg
-rw------- 1 user1 user1 7844 Mar 18 18:50 st_test02.pdf
-rw------- 1 user1 user1 7487 Mar 18 18:50 st_test02.pdf.gpg
-rw------- 1 user1 user1 7932 Mar 18 18:50 st_test03.pdf
-rw------- 1 user1 user1 7574 Mar 18 18:50 st_test03.pdf.gpg

Per decifrare un file si utilizza il comando gpg 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.
: '''gpg''' ''--output'' <file in chiaro> ''--decrypt'' <file cifrato>
hostname:~ user1$ '''gpg''' ''--output'' st_test01.pdf ''--decrypt'' st_test01.pdf.gpg

You need a passphrase to unlock the secret key for
user: "StudioSG (sg_test_03) <studiosg@giustetti.net>"
2048-bit ELG-E key, ID 1C97007E, created 2016-03-22 (main key ID CE95C1E9)

gpg: encrypted with 2048-bit ELG-E key, ID 1C97007E, created 2016-03-22
"StudioSG (sg_test_03) <studiosg@giustetti.net>"
hostname:~ user1$ '''ls''' ''-la''
total 56
drwx------ 3 user1 user1 4096 Mar 18 18:50 .
drwx------ 17 root admin 4096 Mar 18 18:37 ..
-rw------- 1 user1 user1 7737 Mar 18 18:50 st_test01.pdf
-rw------- 1 user1 user1 7378 Mar 18 18:50 st_test01.pdf.gpg
-rw------- 1 user1 user1 7487 Mar 18 18:50 st_test02.pdf.gpg
-rw------- 1 user1 user1 7574 Mar 18 18:50 st_test03.pdf.gpg

=== GPG-AGENT ===
'''Gpg-agent''' &egrave; un demone che memorizza in una propria cache tutte le passphrase digitate da un utente fornendole poi ai programmi che le richiedano successivamente. L'utente dovr&agrve; inserire ogni password solo una volta e non all'apertura di ogni documento. Il risparmio di tempo risulter&agrave; notevole per il personale di un ufficio che debba leggere e gestire una gran quantit&agrave; di documenti ogni giorno.

Il demone deve essere esplicitamente avviato ed attivo perch&egrave; memorizzi le password e l'ambiente deve essere opportunamente configurato perch&egrave; ne avverta la presenza e lo interroghi quando necessario. Per automatizzare l'avvio di gpg-agent in MacOsX &egrave; necessario configurare un '''launch agent''':
* Aprire il terminale.
* Spostarsi nella cartella del launch agent:
: '''cd''' ~/Library/LaunchAgents
* Creare un file che contenga la configurazione di gpg-agent:
: '''/Applications/TextEdit.app/Contents/MacOS/TextEdit''' org.gnupg.gpg-agent.plist
* Popolare il file con la configurazione di gpg-agent in formato '''XML''':
<syntaxhighlight lang="xml">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.gnupg.gpg-agent</string>
<key>ProgramArguments</key>
<array>
<string>/Users/<nome utente>/bin/gpg_agent_start.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
</syntaxhighlight>
* Nella cartella del proprio utente creare la sotto-cartella '''bin''' ove salvare lo script di avvio di GPG:
: '''mkdir''' /Users/<nome utente>/bin
* Creare lo script di avvio:
: '''/Applications/TextEdit.app/Contents/MacOS/TextEdit''' gpg_agent_start.sh
<syntaxhighlight lang="bash">
if test -f $HOME/.gpg-agent-info && \
kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null; then
GPG_AGENT_INFO=`cat $HOME/.gpg-agent-info`
export GPG_AGENT_INFO
else
eval `/usr/local/bin/gpg-agent --daemon --write-env-file $HOME/.gpg-agent-info`
fi
export GPG_TTY=`tty`
</syntaxhighlight>
* Rendere il file di avvio eseguibile:
: '''chmod''' 700 gpg_agent_start.sh
* Aggiornare la configurazione del terminale perch&agrave; tutti i comandi siano informati della presenza dell'agente. Il terminale utilizza una shell '''bash''' ergo sar&agrave; necessario aggiornare il file di configurazione della stessa:
: ''cd''
: '''/Applications/TextEdit.app/Contents/MacOS/TextEdit''' .bash_profile
<syntaxhighlight lang="bash">
export GPG_TTY=$(tty)
if [[ -f "${HOME}/.gpg-agent-info" ]]; then
. "${HOME}/.gpg-agent-info"
export GPG_AGENT_INFO
fi
</syntaxhighlight>

I parametri di configurazione di gpg-agent sono contenuti nel file /'''Users/<nome utente>/.gnupg/gpg-agent.conf'''. Tra questi vale la pena citare '''default-cache-ttl''' che imposta '''l'intervallo di tempo per cui una password verr&agrave; mantenuta nella cache'''. Scaduto tale limite la password verrà 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 si modifichi la riga:
default-cache-ttl 600
in
default-cache-ttl 3600
e si riavvii il demone gpg-agent.

Gli utenti con versione di OsX 10.4 o meno recente '''non potranno usufruire dei servizi di gpg-agent''' essendo lo stesso un componente introdotto con la versione 2.0 di GPG.


== Conclusioni ==

Il presente articolo contiene una breve presentazione delle versioni di Gnu Privacy Guard sviluppate per piattaforma Mac. Sono state descritte la procedura di installazione ed il funzionamento base del programma. 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 offerti 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)]
* [http://macgpg.sourceforge.net/it/index.html GPG versione 1.4 per MacOsX]
* [https://gpgtools.org GPG versione 2.0 per MacOsX (Inglese)]
* [https://sourceforge.net/projects/gpgosx Versione alternativa di GPG 2.0 per MacOsX (Inglese)]

----

{{footer_it | link_page=gpg_and_macosx}}