L’autenticazione (authentication, AuthN) è il processo mediante il quale un sistema verifica che un’entità — utente, dispositivo, applicazione o servizio — sia effettivamente chi dichiara di essere. È il prerequisito indispensabile dell’autorizzazione (AuthZ), che determina cosa l’entità autenticata può fare. I due concetti sono distinti e complementari: autenticare non significa autorizzare. Insieme all’accounting (registrazione delle azioni), formano il framework AAA (Authentication, Authorization, Accounting) che governa il controllo degli accessi nei sistemi informatici.
I tre fattori di autenticazione
Ogni meccanismo di autenticazione si basa su almeno una delle tre categorie di prove dette fattori:
- Conoscenza (something you know): un segreto che solo il legittimo utente conosce. Esempi: password, PIN, domande di sicurezza. È il fattore più diffuso ma anche il più vulnerabile: le password possono essere rubate, indovinate o riutilizzate tra servizi diversi.
- Possesso (something you have): un oggetto fisico o digitale che solo il legittimo utente detiene. Esempi: OTP via SMS, app TOTP (Google Authenticator, Authy), smart card, token hardware (YubiKey). Più robusto della sola password, ma vulnerabile a SIM swapping per gli OTP via SMS.
- Inerenza (something you are): una caratteristica biometrica intrinseca. Esempi: impronta digitale, riconoscimento facciale, iride, voce. Difficile da rubare, ma irrevocabile in caso di compromissione.
Autenticazione multi-fattore
L’autenticazione multi-fattore (MFA) richiede la combinazione di almeno due fattori appartenenti a categorie diverse. Il razionale è che la compromissione di un singolo fattore non è sufficiente: l’attaccante deve compromettere simultaneamente più elementi indipendenti. Il FIDO2/WebAuthn rappresenta lo stato dell’arte: usa crittografia asimmetrica con chiave privata che non lascia mai il dispositivo, ed è immune al phishing per costruzione perché la chiave è legata al dominio del sito legittimo.
Protocolli di autenticazione
Nei sistemi distribuiti l’autenticazione avviene tramite protocolli standardizzati. Kerberos è il protocollo a ticket usato in ambienti Active Directory: un Key Distribution Center (KDC) emette ticket con scadenza temporale che il client presenta ai servizi senza trasmettere la password in rete. OAuth 2.0 è un framework di autorizzazione delegata che permette a un’applicazione di accedere a risorse per conto dell’utente; OpenID Connect vi aggiunge uno strato di autenticazione tramite ID Token JWT. SAML 2.0 è il protocollo XML-based dominante per l’SSO aziendale tra Identity Provider e Service Provider.
Archiviazione sicura delle credenziali
Le password non devono mai essere conservate in chiaro né con semplici hash non salati. Il pattern corretto prevede funzioni di derivazione lente con salt casuale per utente: Argon2id, bcrypt o scrypt. Il salt impedisce gli attacchi con rainbow table; il costo computazionale elevato rende il brute force impraticabile anche con GPU.
Vulnerabilità principali
Le vulnerabilità più comuni riguardano il fattore di conoscenza: credential stuffing (uso di coppie rubate da altri siti), brute force, phishing. Il SIM swapping compromette il fattore di possesso basato su SMS. Il pass-the-hash in ambienti Windows bypassa la password usando direttamente l’hash NTLM. La session fixation impone all’utente un session ID noto all’attaccante prima del login.
Vedi anche: Autenticazione Multi-Fattore, ABAC, Zero Trust.