Asimmetrica
La crittografia asimmetrica è un'evoluzione molto recente.
Fonda le sue radici nel lavoro di Diffie ed Hellman, che hanno proposto un metodo per scambiare in sicurezza una chiave su un canale non sicuro, "piantando" il seme dell'idea che si possano usare chiavi diverse per criptare e decriptare.
I sistemi asimmetrici (o "a chiave pubblica") prevedono infatti l'uso di due chiavi diverse ma legate matematicamente. In generale deve essere difficile ricavare la chiave segreta data quella pubblica (non sempre vale il viceversa) e quello che viene criptato con una deve essere decriptabile con l'altra (anche se non sempre le due operazioni sono intercambiabili).
L'esempio più noto è RSA che ha anche molte proprietà desiderabili: le due chiavi sono intercambiabili (una volta che sono state generate, non importa quale delle due decido di rendere pubblica), non importa l'ordine di cifratura e decifratura (quindi si può usare sia per firmare che per ottenere riservatezza) ed è componibile (si può utilizzare per il metodo di Massey-Omura tra due soggetti senza che nessuno dei due si fidi della chiave dell'altro). Bisogna però anche conoscerne bene i punti deboli, o è semplice creare sistemi non sicuri.
Un esempio: se si considera sicuro firmare un messaggio di "x" caratteri criptandolo con la propria chiave privata, qualcuno potrebbe pensare di aumentare la sicurezza "firmando" singolarmente ogni carattere. Giusto?
No. Sbagliatissimo. Un attaccante, dato un messaggio così firmato, avrebbe gioco facile ad usare ogni blocco "carattere firmato" per comporre qualunque messaggio lo aggradi, semplicemente concatenando i blocchi che gli servono.
Altro esempio: usare le operazioni 'raw' invece di quelle con padding (come previsto dagli standard più recenti), può portare a grossi guai (perfino al recovery della chiave segreta!).
Un punto negativo dei sistemi asimmetrici è l'enorme lentezza rispetto ai sistemi simmetrici. È stato inoltre dimostrato da Maurer (cap. 3) che i sistemi asimmetrici non possono essere "unconditionally secure" ma solo "computationally secure":
The security of public-key cryptosystems is inherently bound to be computational rather than information-theoretic. (Actually, this follows from Theorem 1 below.)
La sicurezza dipende quindi solo dal limite che si pone alle risorse di calcolo dell'attaccante. Maurer è però stato contraddetto da Renner e Wolf:
[...]this implies that in many cases, information-theoretically secure key agreement protocols exist which do not require authentic channels at all.
La cosa si farebbe interessante (non partono esattamente dalle stesse ipotesi)... ma sarebbe eccessiva per questa breve trattazione. Dovrò approfondire la ricerca.
Gli usi principali sono appunto la firma digitale e lo scambio di chiavi tra soggetti che non abbiano a disposizione un canale di comunicazione sicuro.