Autenticazione a due fattori: cos’è, come funziona e altro ancora.

Immagina che la tua porta d'ingresso abbia due serrature. Una è la tua chiave (la tua password), l'altra un codice in continua evoluzione inviato al tuo telefono (il tuo secondo fattore). Questa è l'essenza dell'Autenticazione a Due Fattori (2FA), un sistema di sicurezza che aggiunge un ulteriore livello di difesa contro accessi non autorizzati ai tuoi account online.
OTP e 2FA: Sono la stessa cosa?
Pur essendo spesso usati in modo intercambiabile, c'è una sottile differenza tra OTP (One-Time Password) e 2FA:
- OTP: Un OTP è un codice unico e singolo utilizzato per un solo tentativo di accesso. Può essere inviato via SMS, email o generato da un'app. Pensalo come il codice usa e getta sul chip della tua carta di credito.
- 2FA: Il 2FA è un sistema più ampio che si basa su due fattori per l'autenticazione: qualcosa che conosci (password) e qualcosa che possiedi (telefono, chiave di sicurezza) o qualcosa che sei (impronta digitale, riconoscimento facciale). L'OTP è un metodo utilizzato per realizzare il 2FA, ma non l'unico.
Quindi, Google Authenticator non è migliore del 2FA in sé. Google Authenticator è un'app che utilizza il metodo TOTP (Time-based One-Time Password) per generare codici OTP per il 2FA. I codici TOTP sono considerati più sicuri rispetto agli OTP tradizionali inviati via SMS perché cambiano a intervalli regolari (di solito ogni 30 secondi) e non dipendono dalle reti cellulari.
Il concorrente più forte nel campo del 2FA
Quando si parla del metodo 2FA "più forte", dipende dalla situazione. Ecco cosa sappiamo:
App Autenticatrici:
- TOTP (Time-based One-Time Password): Questo è il motore che alimenta la maggior parte delle app autenticatrici come Google Authenticator o Microsoft Authenticator. Utilizza una combinazione di:
- Chiave Segreta: Una chiave segreta unica e condivisa tra l'app e il servizio online a cui stai accedendo. Questa chiave viene solitamente generata durante la configurazione iniziale.
- Sincronizzazione Temporale: Sia l'app che il server si basano sulla stessa referenza temporale (di solito basata su UTC - Tempo Coordinato Universale).
- La Magia del Codice: L'app utilizza un algoritmo specifico (come HMAC-SHA1) per combinare la chiave segreta con il tempo corrente, generando un codice unico che cambia ogni circa 30 secondi. Questo assicura che anche se qualcuno intercetta un codice, sarà inutile entro una breve finestra temporale.
- Il Ballo della Verifica: Quando inserisci il codice generato durante il login, il server esegue lo stesso calcolo usando la stessa chiave segreta e il tempo corrente. Se i codici corrispondono, l'accesso è consentito.
Chiavi di Sicurezza:
- Crittografia a Chiave Pubblica: Le chiavi di sicurezza come YubiKey si basano sulla crittografia a chiave pubblica. Questo sistema coinvolge due chiavi matematicamente collegate: una chiave pubblica e una chiave privata.
- Chiave Pubblica (sul Server): Questa chiave è pubblicamente disponibile ed è usata dal server per criptare le sfide.
- Chiave Privata (nella Chiave): Questa chiave è conservata in modo sicuro all'interno della chiave di sicurezza stessa e non lascia mai il dispositivo. Viene utilizzata per decriptare la sfida e generare una firma digitale.
- Challenge-Response: Durante il login, il server invia una sfida alla chiave di sicurezza