Pagina pubblicata tra il 1995 e il 2013
Le informazioni potrebbero non essere più valide
Documenti e testi normativi non sono aggiornati

 

 Firma digitale

Firma digitale e open source: ora si può
di Claudio Cilli* - 16.01.03

PGP, il più noto programma di crittografia a chiave pubblica, è finalmente disponibile in versione open source, con licenza GNU, ed è quindi possibile sviluppare applicazioni di firma digitale (anche "qualificata", ai sensi della normativa italiana) il cui codice sorgente può essere controllato dalla prima all'ultima riga.

Sono passati molti anni da quando scrivevo del PGP illustrandone la semplicità di utilizzo e i vantaggi per gli utenti (Pretty Good Privacy: La crittografia a portata di tutti, in Sicurezza Informatica, 1994).
Il prodotto era - ed è - interessante e ha significato una svolta nell'utilizzo della crittografia, consentendo a tutti di trarne vantaggio.
Come poi sempre succede, l'idealismo e i buoni propositi presto lasciano il posto ad argomentazioni più prosaiche, quali il profitto. Oggi il PGP (www.pgp.com  - US) o www.pgpl.org (internazionale) è un prodotto commerciale a tutti gli effetti, venduto in varie configurazioni e ricco di opzioni. Ad onor del vero, ne esiste una versione freeware, ma con notevoli limitazioni sia nell'utilizzo - esclusivamente personale -, che nelle funzioni offerte. Nel sito si avverte chiaramente l'intenzione di chiudere la parentesi "software gratuito" al più presto. Inoltre gli algoritmi di crittografia sono per la maggior parte coperti da diritti.

Come ormai molti sanno, il progetto GNU è stato avviato nel 1984 per sviluppare un sistema operativo Unix-compatibile completo che fosse interamente software libero, o "open source": il sistema GNU. GNU è un acronimo ricorsivo per "GNU's Not Unix" (GNU Non è Unix) e si pronuncia gh-nu (con la 'g' dura). Varianti del sistema operativo GNU, che utilizzano il kernel Linux, sono ora ampiamente utilizzate; anche se a questi sistemi ci si riferisce spesso come "Linux", essi vengono chiamati con più precisione sistemi GNU/Linux.

Le caratteristiche della licenza GNU fanno riferimento alle cosiddetta "quattro libertà":
- Libertà di eseguire il programma, per qualsiasi scopo (libertà 0)
- Libertà di studiare come funziona il programma e adattarlo alle proprie necessità (libertà 1). L'accesso al codice sorgente ne è un prerequisito
- Libertà di ridistribuire copie in modo da aiutare il prossimo (libertà 2)
- Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti, in modo tale che tutta la comunità ne tragga beneficio (libertà 3). L'accesso al codice sorgente ne è un prerequisito."

Si tratta di concetti molto importanti, che avvantaggiano tutti, compresi gli sviluppatori, che vedono i loro prodotti migliorati dagli stessi utenti. Questi possono così contribuire costruttivamente al miglioramento dei programmi e non limitarsi alla semplice segnalazione di problemi invece di assistere e sottostare passivamente alle decisioni del produttore, il quale spesso si limita a dire "il software non è più in produzione né in assistenza, per cui siete pregati di passare, pagandola a caro prezzo naturalmente, alla nuova versione". I produttori traggono il loro vantaggio dalla diffusione dei programmi e dai servizi aggiuntivi che ne possono derivare: assistenza, formazione, consulenza, ecc.

In quest'ambito è nato il progetto GnuPG, il cui significato è "GNU Privacy Guard".
GnuPG è un sostituto completo e gratuito del PGP. Poiché non usa gli algoritmi di crittografia IDEA e RSA, coperti da diritti, può essere utilizzato senza restrizioni. GnuPG è inoltre un'applicazione conforme all'RFC2440 (RFC = "Request For Comments", sono gli standard e le linee guida che disciplinano Internet. Questa si riferisce alla crittografia e ha anche il nome di "OpenPGP").

Poiché i progetti devono essere finanziati da privati o istituzioni, GnuPG ha trovato nel Ministero federale tedesco per l'economia e la tecnologia le risorse per continuare ad esistere.
La versione 1.0.0 è stata rilasciata il 7 settembre 1999. La versione stabile attualmente è 1.2.1. che può essere scaricata da www.gnupg.org/downloads.html. Sullo stesso sito sono disponibili le pagine di documentazione per le modalità di installazione ed utilizzo.

L'utilizzo di GnuPG (o più semplicemente "GPG") è semplice e immediato. Il programma è basato, come avveniva per le prime versioni del PGP, su un'interfaccia di tipo testuale, a linea di comando. Sono tuttavia già disponibili, e i riferimenti sono indicati sul sito del GPG, diverse interfacce grafiche, che lo rendono ancora più intuitivo.
Le caratteristiche di Privacy Guard sono molto interessanti, e come per tutti i progetti open source, in continuo miglioramento:

- GPG sostituisce completamente PGP. Addirittura la funzionalità è migliorata rispetto al PGP e sono stati introdotti alcuni miglioramenti alla sicurezza rispetto a PGP2;
- non usa alcun algoritmo coperto da brevetto, quindi non si devono pagare diritti e sottostare a limitazioni di utilizzo;
- il programma è sotto licenza GPL, sin dal principio (GNU = General Public License, "Le licenze di molti software sono progettate per impedire la libertà di condividere il programma e di modificarlo. Al contrario, la GNU General Public License è intesa per garantire la libertà di condividere e modificare liberamente il software - al fine di assicurare che il software sia gratuito per per tutti gli utenti. Questa General Public License si applica alla maggior parte dei programme della Free Software Foundation e a molti altri I cui autori decidono di utilizzarla [alcuni altri programmi della Free Software Foundation sono invece coperti dalla GNU Library General Public License]. E' anche possibile applicarla ai propri programmi", http://www.gnu.org/copyleft/gpl.html);
- implementazione completa di OpenPGP. Decifra e verifica messaggi PGP 5.x.;
- utilizza gli algoritmi ElGamal (firma e crittografia), DSA, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1, RIPE-MD-160 e TIGER;
- implementazione semplice di nuovi algoritmi grazie a moduli di estensione;
- supporta date di scadenza di chiavi e firme;
- supporto per le lingue inglese, danese, olandese, esperanto, francese, tedesco, giapponese, italiano, polacco, portoghese (brasiliano), portughese (portoghese), russo, spagnolo e svedese (la versione in lingua russa è in verità in fase di ridefinizione perché la precedente conteneva molti errori grammaticali),
- Sistema di help on line.

E queste sono solo le principali: altre interessanti caratteristiche si scoprono con l'utilizzo del programma, e non stupiscono per la loro completezza e versatilità.
Dal sito si evince che il programma è stato sottoposto a molti test, da cui risulta che GnuPG funziona correttamente e senza problemi su molti sistemi operativi e anche con Windows 95/98/NT/2000/ME con CPU x86 (è necessario però uno speciale setup per la compilazione).
MacOS X è anche supportato, si veda macgpg.sf.net per informazioni dettagliate al riguardo.

Come PGP, anche GPG è un prodotto complesso, che impone di considerare aspetti non solo tecnici, ma anche etici, sociali e legali. Sono questioni dalle quali non ci si può sottrarre quando si ha a che fare con la crittografia.
Gnu Privacy Guard è uno strumento nato per proteggere la propria privacy. La privacy è protetta se è possibile corrispondere con altri senza che qualcuno possa intromettersi e leggere i messaggi in transito. Com'è noto, la crittografia "è" la soluzione, anzi è l'unica soluzione possibile.

GPG è uno strumento potente che può essere utilizzato in molti modi: è dall'analisi dell'importanza delle informazioni da proteggere, nonché da previsioni sulla determinazione e sulle risorse a disposizione dei possibili attaccanti che si determina la modalità di utilizzo idonea, che rappresenta un compromesso tra il livello di protezione assicurato e l'aumento della complessità delle operazioni di cifratura/decifratura e gestione delle chiavi che ne consegue.
L'obiettivo è di rendere il costo della decifrazione, espresso in termini di apparecchiature utilizzate, o meglio passi di computazione, e tempo necessario, superiore al valore del bene da conquistare, rendendo l'intera operazione di crittoanalisi antieconomica.

Ovviamente questa proprietà, che nella crittografia si chiama "robustezza", è ottenuta scegliendo gli algoritmi opportuni, le chiavi della giusta complessità e lunghezza, e gli strumenti di gestione del sistema. Nel caso del GPG, il raggiungimento del corretto grado di robustezza è ottenuto agendo su quattro elementi fondamentali:
- la scelta della dimensione (lunghezza) della propria coppia di chiavi pubblica/privata,
- la protezione della propria chiave privata,
- la scelta delle date di scadenza e dell'uso di sottochiavi,
- la gestione della propria rete della fiducia.

In realtà vi sono anche altri aspetti da considerare, non ultima la protezione fisica del proprio computer! Una chiave di lunghezza adeguata protegge dagli attacchi cosiddetti "a forza bruta", dove si provano tutte le chiavi possibili utilizzando dei potenti elaboratori. La tecnologia degli strumenti di generazione e prova delle chiavi di crittografia ha fatto passi da gigante, per cui una chiave che solo ieri si pensava di lunghezza tale da scoraggiare qualsiasi tentativo di attacco, oggi si può rilevare del tutto inadeguata. Proteggere la propria chiave privata, che spesso è registrata all'interno del computer, evita che un malintenzionato possa appropriarsene e quindi decifrare messaggi criptati e firmare messaggi a nome del proprietario della chiave stessa. La corretta gestione della rete della fiducia (chain of trust) evita che dei malintenzionati fingano di essere le persone con le quali usualmente si comunica.

Naturalmente quando si parla di firma digitale qualificata, il contesto è diverso: la chaive privata è contenuta nel dispositivo di firma e non può essere copiata, la chiave pubblica è certificata da un soggetto di provata fiducia e via discorrendo. Tutto questo significa anche che il passo tra GPG e documento informatico valido e rilevante a tutti gli effetti di legge non sarà né facile né rapido. Ma almeno adesso abbiamo una base dalla quale partire.