Anche i sistemi di crittografia che usano algoritmi a chiave asimmetrica non eludono il problema. Che una chiave pubblica possa essere conosciuta da tutti senza compromettere la sicurezza di un algoritmo di crittografia (per alcuni di questi algoritmi, anche se non per tutti) è certamente utile, ma non impedisce alcuni tipi di attacchi. Per esempio, un attacco di spoofing in cui la chiave pubblica A è dichiarata pubblicamente come quella dell’utente Alice, ma è in realtà una chiave pubblica appartenente all’attaccante man-in-the-middle Mallet, è facilmente possibile. Nessuna chiave pubblica è intrinsecamente legata ad un particolare utente, e qualsiasi utente che faccia affidamento su un binding difettoso (inclusa Alice stessa quando invia messaggi protetti) avrà problemi.
La soluzione più comune a questo problema è l’uso di certificati a chiave pubblica e autorità di certificazione (CA) per essi in un sistema di infrastruttura a chiave pubblica (PKI). L’autorità di certificazione (CA) agisce come una “terza parte fidata” per gli utenti che comunicano e, utilizzando metodi crittografici vincolanti (ad esempio, le firme digitali) rappresenta ad entrambe le parti coinvolte che le chiavi pubbliche che ciascuno detiene e che presumibilmente appartengono all’altro, lo fanno davvero. Un servizio notarile digitale, se volete. Tali CA possono essere organizzazioni private che forniscono tali garanzie, o agenzie governative, o qualche combinazione delle due. Tuttavia, in un senso significativo, questo sposta semplicemente il problema dell’autenticazione delle chiavi indietro di un livello, perché ogni CA può fare una certificazione in buona fede di qualche chiave ma, per errore o malizia, essere in errore. Qualsiasi affidamento su un certificato di chiave difettoso che “autentica” una chiave pubblica causerà problemi. Di conseguenza, molte persone trovano tutti i design PKI inaccettabilmente insicuri.
Si stanno attivamente ricercando metodi di autenticazione delle chiavi.