Copyright © 1986 Università di Firenze.All rights reserved.
Free license available.
revisori: Franco Pirri e Maurizio Lunghi
Al giorno d'oggi la parola Crittografia è usata per indicare una grande varietà di tecniche il cui obiettivo congiunto è quello di garantire la completa riservatezza delle informazioni consentendo applicazioni quali l'autenticazione, il denaro elettronico e molte altre ancora.
Alcuni metodi si basano sulla segretezza degli algoritmi utilizzati; tuttavia essi sono soltanto di interesse storico e non si adattano alle necessità del mondo odierno.
In effetti una regola fondamentale della crittografia moderna è che bisogna supporre che il crittoanalista conosca il metodo generale di cifratura impiegato. La quantità di sforzi necessari per inventare, collaudare e installare un nuovo metodo ogni volta che quello vecchio è compromesso (o si pensa che lo sia) ha sempre reso poco pratico il mantenimento di tale segreto, ed il fatto di pensare che esso sia un segreto quando in realtà non lo è fa più male che bene.
Entra quindi in gioco la chiave, che è una stringa di caratteri che seleziona una tra le molte cifrature potenziali. Tutti i moderni metodi utilizzano una chiave per eseguire la crittazione e la decrittazione; un messaggio può essere decrittato solo se la chiave di decifratura si "accoppia" con quella di cifratura. Per alcuni algoritmi le due chiavi sono uguali, mentre per altri esse sono diverse.
In base a questa sostanziale differenza gli algoritmi basati sullo utilizzo di chiavi si dividono in algoritmi simmetrici (detti anche a chiave simmetrica o a chiave segreta) e asimmetrici (detti anche a chiave asimmetrica o a chiave pubblica).
Gli algoritmi simmetrici sono quelli usati dalla crittografia classica ed essi permettono al mittente e al destinatario di usare la medesima chiave per rispettivamente crittare e decrittare un messaggio. Questo tipo di algoritmi si dividono in cifrari a flusso e cifrari a blocco. I primi possono crittare un solo bit di testo chiaro alla volta, mentre i secondi prendono un certo numero di bit (tipicamente 64 bit nei moderni cifrari) e li crittano come una singola unità.
I sistemi a chiave simmetrica possono essere utilizzati per implementare servizi di sicurezza quali:
Tuttavia per sistemi di tal genere non mancano i punti deboli:
Questi problemi sono risolti dalla crittografia a chiave pubblica.
Le tecniche asimmetriche utilizzano coppie di chiavi complementari invece di una sola chiave segreta.
Un singolo utente possiede una coppia univoca di chiavi complementari; di esse, una è una chiave pubblica, nel senso che può essere conosciuta da tutti, ed è usata per cifrare il messaggio, mentre l'altra è una chiave privata ed è tenuta al sicuro dal suo proprietario di modo che solo lui possa utilizzarla.
Le due chiavi sono create in maniera tale che un messaggio cifrato da una delle due può essere decifrato solo e soltanto dall'altra. In pratica se si vuole spedire un messaggio a una certa persona, si critta quel messaggio con la sua chiave pubblica, e si è sicuri che soltanto quella persona potrà decifrarla con la propria chiave privata: neanche la chiave pubblica utilizzata per cifrare riuscirà a decrittare il messaggio.
Gli algoritmi asimmetrici possono essere utilizzati anche per generare le cosidette "firme elettroniche". Esse sfruttano delle elaborazioni algoritmiche particolari (one-way hash function) grazie alle quali è possibile verificare l'autenticità del messaggio.
Con questa importante tecnica si assicura che il messaggio originale, la firma e la coppia di chiavi dell'utente siano strettanente legate; alla modifica di qualsiasi componente la validazione (il riconoscimento) della firma fallisce.
In fin dei conti il vantaggio principale offerto dalla crittografia asimmetrica sta nella facilità di gestione delle chiavi; non occorre infatti scambiarsi segretamente chiavi di cifratura con il rischio che esse possano essere intercettate, in quanto basta inviare ad un corrispondente la propria chiave pubblica per essere sicuri di essere gli unici a poter decifrare un eventuale messaggio cifrato con essa.
Ma non si pensi che gli algoritmi asimmetrici risolvano completamente i problemi di sicurezza.
Vi sono in realtà vari motivi che fanno propendere per un uso ibrido e combinato dei sistemi simmetrici e asimmetrici:
Nel caso in cui si debbano crittare grandi volumi di dati, la crittografia asimmetrica impiegherebbe per tale operazione un tempo di gran lunga maggiore rispetto a quello impiegato da un algoritmo simmetrico, ragion per cui la scelta dei metodi a chiave unica è quasi obbligatoria;
Se il messaggio è diretto a più destinatari, la cifratura asimmetrica va ripetuta per ogni destinatario.
Un sistema di cifratura combinato simmetrico-asimmetrico è per esempio sfruttato dalla più importante applicazione crittografica relativa allo scambio di posta elettronica: PGP.
Ricordiamo per ultimo anche l'importanza dei generatori di numeri casuali per applicazioni crittografiche.
I generatori di numeri casuali convenzionali, usati in molti linguaggi di programmazione o in altri ambienti, non sono adatti per applicazioni di crittografia in quanto la loro casualità è spesso legata alla catene di Markov che si sa essere dotate di una certa memoria, dunque non abbastanza casuali per resistere agli attacchi dei crittoanalisti.
Nel caso ottimale essi dovrebbero essere basati su delle vere sorgenti fisiche di casualità, per le quali ogni tentativo di predizione sarebbe vano.Queste sorgenti potrebbero includere, ad esempio, il rumore prodotto da un dispositivo a semiconduttore, il bit meno significativo di un segnale audio, gli intervalli tra le interruzioni di un certo dispositivo o infine i caratteri generati dal tempo che intercorre tra le battute sulla tastiera.
Bibliografia e sorgenti d'informazione