Capitolo 2. Concetti

Sommario
Algoritmi simmetrici
Algoritmi a chiave pubblica
Algoritmi ibridi
Firme digitali

GnuPG fa uso di diversi concetti di crittografia come algoritmi simmetrici, algoritmi a chiave pubblica, e hashing a senso unico. È possibile utilizzare le funzioni di base di GnuPG senza comprendere appieno tali concetti, ma, se si vuole usarlo con cognizione di causa, una loro comprensione è necessaria.

Questo capitolo introduce i concetti di base della crittografia utilizzati in GnuPG. Si possono trovare altri libri che trattano questi argomenti più dettagliatamente. Un buon testo per approfondire ulteriormente gli studi è ``Applied Cryptography'' di Bruce Schneier.

Algoritmi simmetrici

Un algoritmo simmetrico è un algoritmo che utilizza la stessa chiave sia per criptare che per decriptare. Due parti che comunicano sfruttando un algoritmo simmetrico devono innanzi tutto mettersi d'accordo sulla chiave. Una volta d'accordo, il mittente cifra un messaggio utilizzando la chiave, lo spedisce al destinatario e questi decripta il messaggio usando la stessa chiave. Per esempio, il tedesco Enigma è un algoritmo simmetrico per il quale venivano distribuite delle chiavi giornaliere sotto forma di libri di codici. Ogni giorno un operatore radio, fosse esso un trasmittente o un ricevente, consultava la propria copia del libro codici per trovare la chiave di quel giorno. Il traffico radio di quel giorno veniva quindi criptato e decriptato utilizzando la quella chiave. Esempi moderni di algoritmi simmetrici includono 3DES, Blowfish e IDEA.

Un buon algoritmo di cifratura racchiude completamente la sicurezza nella chiave senza lasciare nulla nell'algoritmo. In altre parole, non dovrebbe essere di alcun aiuto per un malintenzionato conoscere il tipo di algoritmo utilizzato. Solo se ottenesse la chiave la conoscenza dell'algoritmo sarebbe necessaria. L'algoritmo usato in GnuPG possiede tale proprietà.

Poiché tutta la sicurezza è riposta nella chiave, è importante che sia veramente difficile indovinare la chiave stessa. Detto altrimenti, l'insieme di chiavi possibili, cioè lo spazio delle chiavi, deve essere grande. A Los Alamos, Tichard Feynman era famoso per la sua abilità nell'aprire casseforti. Per incoraggiare l'alone di mistero che lo circondava egli portava con sé perfino un serie di attrezzi, compreso un vecchio stetoscopio. In realtà egli usava una varietà di trucchi per ridurre il numero di combinazione che doveva provare e poi semplicemente tirava ad indovinare finché trovava la giusta combinazione. In altre parole, egli riduceva la dimensione dello spazio di chiavi.

La Gran Bretagna, durante la Seconda Guerra Mondiale, usò delle macchine per cercare di indovinare le chiavi usate dagli avversari. Il tedesco Enigma, infatti, possedeva uno spazio di chiavi veramente ampio, ma la Gran Bretagna costruì dei motori di calcolo specializzati, i Bombes, per provare meccanicamente le chiavi finché la chiave del giorno non veniva trovata. Questo significa che a volte riuscivano a trovare la chiave di quel giorno in capo a poche ore dal momento in cui una nuova chiave veniva usata, ma significa anche che alcuni volte non riuscissero affatto a trovare la chiave giusta. I Bombes non erano computer multi-funzione ma erano comunque i precursori dei nostri moderni elaboratori.

Oggigiorno i computer possono indovinare una chiave molto rapidamente e questo è il motivo per cui la dimensione della chiave è un requisito importante per i moderni sistemi di crittografia. L'algoritmo DES usa una chiave da 56 bit. Ciò significa che ci sono 256 chiavi possibili. 256 sono 72,057,594,037,927,936 chiavi. Un sacco di chiavi, ma un computer non specializzato può controllarle tutte in una manciata di giorni. Un computer specializzato in poche ore. D'altro canto, algoritmi sviluppati più recentemente, come il 3DES, il Blowfish e IDEA, usano tutti chiavi da 128 bit. Ciò implica che ci sono 2128 possibili chiavi. Queste sono molte, molte di più e, anche se tutti i computer della terra cooperassero, sarebbe ancora necessario più tempo di quello rappresentato dall'età dell'universo per trovare la chiave corretta.