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.
|