Si parla sempre più spesso di abbandonare le password tradizionali, considerate ormai poco sicure e vulnerabili a un ventaglio di attacchi piuttosto ampio. L’autenticazione a due fattori, comunemente nota come 2FA, è una delle soluzioni più apprezzate per aggiungere un livello di protezione extra. Il punto è che non sostituisce le password: semmai le affianca, quando è ben configurata. E soprattutto, non è un sistema monolitico. Molti utenti la percepiscono come una funzionalità “unica”, ma in realtà dietro la sigla 2FA si nascondono protocolli, algoritmi e implementazioni anche molto diversi tra loro.
La 2FA non è uno standard formalizzato. È piuttosto una categoria di autenticazione multifattoriale (MFA) che richiede almeno due fattori indipendenti. Il termine “indipendente” è cruciale: perché i fattori aumentino davvero la sicurezza, devono appartenere a categorie diverse e non essere derivabili l’uno dall’altro. Anche il NIST (National Institute of Standards and Technology) statunitense definisce i fattori come elementi distinti, che devono essere compromessi separatamente per violare un sistema.
I fattori si dividono in tre macro categorie. Il knowledge factor (“qualcosa che conosci”), come password, PIN o passphrase: è il più diffuso ma anche il più debole, esposto a phishing, keylogger, attacchi brute force e credential stuffing. Il possession factor (“qualcosa che possiedi”), come uno smartphone con app OTP, un token hardware o una chiavetta YubiKey: più robusto, ma non immune da furto fisico, malware o SIM swapping. Infine l’inherence factor (“qualcosa che sei”), cioè le caratteristiche biometriche come impronte digitali o riconoscimento facciale: unico nel suo genere, ma con il limite di non essere revocabile.
Un dettaglio fondamentale: non basta usare due fattori qualsiasi. Se ad esempio la password e il codice OTP vengono gestiti sullo stesso dispositivo, un malware potrebbe sottrarre entrambi in un colpo solo. L’indipendenza è compromessa, e con essa la sicurezza.
Come funzionano nella pratica i diversi metodi di 2FA
Standard come TOTP, HOTP o FIDO2/WebAuthn si traducono in flussi di autenticazione molto diversi. Le app come Google Authenticator sfruttano il protocollo TOTP: durante l’attivazione, il servizio genera un segreto condiviso trasferito tramite QR code. Da quel momento, server e dispositivo calcolano in autonomia codici temporanei sincronizzati sul tempo. Il codice non viene trasmesso, ma ricalcolato da entrambe le parti. Il limite è che può comunque essere intercettato su una pagina di phishing in tempo reale.
Quando il codice arriva via SMS o email, il funzionamento cambia radicalmente: il server genera un codice casuale e lo invia tramite un canale esterno. La sicurezza dipende dall’integrità di quel canale, ed è più esposta ad attacchi come il SIM swapping.
Con FIDO2 e WebAuthn si abbandona del tutto il modello dei codici. Il dispositivo genera una coppia di chiavi crittografiche: quella privata resta in locale, quella pubblica va al server. Al login, il server lancia una sfida che il dispositivo firma con la chiave privata. Non esistono segreti condivisi né codici riutilizzabili, e l’autenticazione è legata al dominio: gli attacchi di phishing tradizionali diventano inefficaci.
Quando la 2FA viene aggirata: le tecniche più usate dagli attaccanti
Molti attacchi moderni non cercano di rompere il secondo fattore, ma di aggirarlo. Il phishing in tempo reale, tramite framework come Evilginx, crea un proxy tra l’utente e il servizio reale: la vittima inserisce credenziali e OTP su un sito clone, e l’attaccante li usa immediatamente, catturando spesso anche i cookie di sessione per mantenere l’accesso.
Il furto di sessione è un’altra tecnica diffusa: una volta completata l’autenticazione, chi sottrae il token di sessione può impersonare l’utente senza ripetere la 2FA. Nei sistemi con notifiche push esiste poi il fenomeno della MFA fatigue: l’attaccante invia richieste ripetute finché la vittima, per frustrazione o errore, ne approva una.
I malware più sofisticati possono intercettare codici OTP, leggere notifiche o addirittura sottrarre il seed TOTP, la chiave segreta iniziale usata per generare i codici temporanei, permettendo agli aggressori di produrre OTP in autonomia.
Quando possibile, è preferibile orientarsi verso soluzioni basate su FIDO2/WebAuthn, come YubiKey o le passkey, che rappresentano oggi il livello più alto di sicurezza disponibile. In alternativa, le app TOTP restano un buon compromesso. Le soluzioni via SMS o email dovrebbero essere considerate solo come ultima opzione, e dove possibile è consigliabile attivare più metodi in parallelo, privilegiando quelli più sicuri come principale.
