Cos'è l'autenticazione reciproca? | Autenticazione bidirezionale

L'autenticazione reciproca, o autenticazione bidirezionale, si verifica quando entrambi i lati di una connessione verificano l'identità dell'altro.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire l'autenticazione reciproca
  • Spiegare come funziona l'autenticazione reciproca
  • Elencare i principali casi d'uso per l'autenticazione reciproca

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è l'autenticazione reciproca?

L'autenticazione reciproca avviene quando due parti di un canale di comunicazione verificano reciprocamente l'identità, anziché essere una sola a verificare l'altra. L'autenticazione reciproca è anche nota come "autenticazione bidirezionale" perché il processo avviene in entrambe le direzioni.

Quando qualcuno utilizza un'app di ridesharing, solitamente controlla la targa o la descrizione del veicolo per assicurarsi di salire sull'auto giusta. Una volta saliti, l'autista chiede al passeggero il suo nome per confermare che sta prendendo la persona giusta. Il passeggero e il conducente controllano ciascuno di interagire con la persona designata, in modo che il conducente stia fornendo il servizio corretto, il passeggero si trovi in un'auto diretta verso la sua destinazione ed entrambi possano confermare di essere con qualcuno che è stato verificato dall'app di ridesharing.

Allo stesso modo, l'autenticazione reciproca verifica entrambe le parti in un canale di comunicazione digitale. Ad esempio, un client e un server che utilizzano l'autenticazione reciproca verificano in modo indipendente l'identità dell'altro, anziché lasciare che sia solo il client ad autenticare il server. Anche le connessioni tra dispositivi, come quelle tra dispositivi Internet of Things (IoT), spesso utilizzano l'autenticazione reciproca.

L'autenticazione reciproca è più comunemente associata al protocollo TLS (Transport Layer Security), ma può essere utilizzata anche da altri protocolli e in altri contesti. Scopri di più sul mutual TLS.

Come funziona l'autenticazione reciproca?

Esistono tre metodi principali per autenticare reciprocamente le estremità di un canale di comunicazione:

1. Autenticazione con chiave pubblica: questo metodo si basa sulla crittografia a chiave pubblica. Una chiave è una stringa di dati che può essere utilizzata per crittografare o firmare digitalmente i dati. La crittografia con chiave pubblica utilizza due chiavi: una chiave pubblica e una chiave privata. I dati crittografati con la chiave pubblica vengono decrittografati con la chiave privata.

Nell'autenticazione reciproca con chiave pubblica, entrambe le parti della comunicazione pubblicizzano una chiave pubblica ed entrambe devono dimostrare di possedere la chiave privata che accompagna la loro chiave pubblica, come se qualcuno mostrasse un documento d'identità rilasciato dal governo per verificare il proprio nome. Ogni lato invia una firma digitale all'altro lato. Se la firma può essere verificata con la chiave pubblica, allora è stata utilizzata la chiave privata corretta e la parte che ha inviato la firma è legittima.

2. Autenticazione tramite certificato: questo approccio è simile all'autenticazione tramite chiave pubblica, con la differenza che invece di una sola chiave pubblica, entrambe le parti dispongono di un certificato tramite chiave pubblica. Il certificato contiene informazioni aggiuntive che aiutano a verificare l'identità delle parti, tra cui chi ha emesso il certificato e la chiave pubblica, a chi si applica il certificato, quando scade e così via. I certificati TLS possono essere utilizzati per questo tipo di autenticazione reciproca se entrambe le parti ne dispongono di uno.

3. Nome utente e password: nonostante il nome, questo metodo di autenticazione reciproca utilizza comunque un certificato sul lato server. Il server presenta un certificato al client, che lo verifica. Dal lato client, funziona esattamente come la tipica autenticazione tramite nome utente/password: il client invia la combinazione di nome utente e password al server, che verifica le credenziali.

Quando viene utilizzata l'autenticazione reciproca?

L'autenticazione unidirezionale è un fenomeno ricorrente su Internet. Ogni volta che qualcuno carica un sito web che utilizza HTTPS, il suo dispositivo autentica l'identità del server web controllando il certificato TLS del server. Un altro esempio potrebbe essere una persona che accede al proprio account su un'applicazione: in questo caso, l'applicazione sta autenticando la persona.

Sebbene l'autenticazione reciproca elimini alcune falle di sicurezza e renda alcuni tipi di attacchi molto più difficili da portare a termine, aggiunge più tempo e potenza di calcolo allo scambio di informazioni. Richiede anche una certa configurazione anticipata: entrambe le parti della comunicazione necessitano di un set di credenziali, una coppia di chiavi pubblica-privata o un certificato di chiave pubblica (a seconda del tipo di autenticazione utilizzato). Ciò rende difficile implementare l'autenticazione reciproca per l'utente medio ed è il motivo per cui l'autenticazione reciproca normalmente non fa parte di TLS quando qualcuno utilizza un'applicazione Web.

I principali casi d'uso dell'autenticazione reciproca includono:

  • IoT: la maggior parte dei dispositivi IoT deve connettersi a un server remoto per funzionare correttamente. Potrebbero aver bisogno di connettersi anche ad altri dispositivi IoT. I dispositivi IoT devono farlo tramite una rete non protetta (Internet). L'autenticazione reciproca aiuta a garantire che i dati ricevuti siano accurati e provengano da una fonte legittima, riducendo le possibilità che un aggressore abbia compromesso le loro connessioni.
  • Sicurezza API: l'autenticazione garantisce che le richieste API provengano da una fonte legittima. L'autenticazione reciproca è un modo per assicurarsi che un'API non accetti richieste da parte di aggressori e che un utente API non accetti risposte API falsificate.
  • Sicurezza Zero Trust: "Zero Trust" è una filosofia che presuppone che qualsiasi utente o dispositivo possa rappresentare una minaccia. Richiedendo l'autenticazione di entrambi i lati di una connessione, l'autenticazione reciproca garantisce che solo gli utenti legittimi siano connessi alla rete, al server o all'applicazione. Al contrario, gli utenti possono essere certi di essersi connessi alla rete, al server o all'applicazione corretta.

Quali tipi di attacchi aiuta a fermare l'autenticazione reciproca?

Attacchi di interposizione: in un attacco di interposizione, l'autore di un attacco si trova nel mezzo di una connessione tra due parti. L'autore dell'attacco intercetta le comunicazioni in entrambe le direzioni e si spaccia per le due parti della conversazione. L'autenticazione reciproca aiuta a fermare questo tipo di attacco perché l'aggressore non sarà in grado di autenticarsi su entrambe le estremità della comunicazione.

Spoofing e impersonificazione: i malintenzionati utilizzano questi attacchi per indurre un server o un utente a pensare di essere una parte nota e attendibile. Un autore di un attacco potrebbe ingannare un server Web e ingannare un utente, o viceversa. Tali attacchi risultano molto più difficili quando entrambe le parti devono autenticarsi.

Furto di credenziali: alcune forme di autenticazione reciproca sono basate su password e potrebbero comunque essere soggette a furto di credenziali (quando un aggressore ruba la password di un utente legittimo). Tuttavia, poiché l'autenticazione reciproca è solitamente basata su una chiave pubblica, il furto di credenziali non è possibile perché non ci sono credenziali da rubare. Ciò può impedire agli attacchi di phishing di avere effetto.

Quali protocolli supportano l'autenticazione reciproca?

Questi protocolli di rete dispongono di autenticazione reciproca integrata o offrono la possibilità di utilizzarla:

Secure Shell Protocol (SSH): SSH è un protocollo di tunneling per la connessione sicura a un server o dispositivo remoto. SSH può utilizzare sia l'autenticazione con chiave pubblica che l'autenticazione tramite certificato. In altre parole, è possibile autenticarsi reciprocamente in SSH con una chiave pubblica o con un certificato a chiave pubblica.

TLS: sebbene TLS non autentichi reciprocamente entrambe le estremità di una connessione per impostazione predefinita, può essere utilizzato per questo scopo. Il mutual TLS (mTLS) è uno dei tipi di autenticazione reciproca più comunemente applicati. In mTLS, entrambi i lati di una connessione dispongono di un certificato TLS. mTLS è comunemente utilizzato per la sicurezza delle API, la sicurezza IoT e le applicazioni di sicurezza Zero Trust.

Cloudflare offre l'autenticazione reciproca?

L'autenticazione reciproca è fondamentale per molte delle soluzioni di sicurezza Zero Trust offerte da Cloudflare. Cloudflare Zero Trust, una piattaforma per il controllo degli accessi alle applicazioni e la navigazione Internet, offre mTLS per la verifica di utenti e dispositivi. Cloudflare API Shield supporta mTLS per l'autenticazione e la sicurezza API.

Informazioni sulla gestione degli accessi