Copyright © 1986 Università di Firenze.All rights reserved.
Free license available.
Revisori: Franco Pirri e Maurizio Lunghi
Come già descitto nel capitolo dedicato alla crittografia simmetrica il problema più importante nell' implementazione di questa è la scelta della chiave. Questa difatti è l'idea base della tecnica crittografica: mediante l'utilizzo della chiave si vuole rendere incomprensibili delle informazioni a coloro che non dispongono di tale chiave.
Per cui, se Alice vuole trasmettere un messaggio codificato a Bob, ha il problema di inviare a quest'ultimo la chiave segreta, con la quale egli decodificherà il messaggio.
E' ovvio che se un'altra persona diversa da Bob riuscisse ad intercettare la chiave potrebbe usarla, in primo luogo per decriptare i messaggi e quindi leggerli liberamente, poi anche per modificarli e di nuovo inviarli cifrati o, addirittura, autenticarli.
Grazie alla crittografia a public-key o crittografia asimmetrica i problemi di gestione della chiave sono stati risolti.
Il concetto di crittografia asimmetrica è stato introdotto, nel 1976, da Whitfield Diffie e Martin Hellman, che pensarono di sfruttare una coppia di chiavi, l'una detta appunto public-key e l'altra secret-key o privacy-key.
Il metodo si basa su due concetti fondamentali:

Oltre al problema della "privacy" tale metodo risolve anche quello dell' "autenticazione" del mittente, infatti Alice codificando il proprio messaggio con la sua chiave segreta è come se vi mettesse la sua firma elettronica.
Quando Bob utilizzerà la chiave pubblica di Alice per decifrarlo potrà essere sicuro che solo lei ha manipolato tale testo dato che è l'unica a possedere la chiave giusta.
E' possibile autenticare oltre al mittente anche il contenuto del messaggio: Alice potrebbe effettuare un hashing del testo da inviare, cioè applicare una funzione unidirezionale che a partire da un certo messaggio fornisce un valore di hash (di lunghezza fissa), e tale che se il messaggio viene alterato questo valore cambia.
Alice, una volta aggiunto tale valore in fondo al suo messaggio, passerà alla cifratura con la sua chiave personale. Chiunque potrà decodificare con la chiave pubblica di Alice il testo inviato o solo il valore di hash per verificare che sia stata proprio lei a scriverlo, ed inoltre che il valore di hash non sia modificato ma corrisponda sempre a quel messaggio.
Purtroppo gli algoritmi a chiave pubblica sono piuttosto lenti e quindi vengono di solito usati solo per cifrare una chiave di sessione con la quale si codifica il messaggio nel modo tradizionale cioè con crittografia simmetrica.
Diffie-Hellman, che porta il nome dei suoi inventori, è un algoritmo a chiave pubblica comunemente usato per lo scambio delle chiavi.
E' considerato sicuro se le chiavi sono sufficientemente lunghe e sono usati generatori di chiavi appropriati. La sicurezza di Diffie-Hellman si basa sulla difficoltà dei problemi logaritmici (che sono da considerarsi equivalenti a quelli di fattorizzazione sfruttati dal famoso RSA).
Diffie-Hellman è patentato fino al 29/4/97.
Molte implementazioni sono disponibili a:
http://www.cs.hut.fi/ssh/crypto/software.html#crypto++.
Bibliografia e sorgenti d'informazione