Il password cracking resta uno dei vettori più sfruttati per ottenere accesso non autorizzato a sistemi e dati. Difendere correttamente le credenziali richiede un approccio multilivello che combina protezione lato server, mitigazioni degli attacchi online, e strategie complementari come l’autenticazione a più fattori e le soluzioni passwordless. Questo articolo descrive le tecniche pratiche e le scelte tecnologiche per ridurre il rischio di compromissione.
Perché le password vengono violate
Gli attacchi alle password si dividono generalmente in due categorie: online e offline. Gli attacchi online tentano accessi ripetuti verso un servizio e sono limitati dalla rete, dai controlli di accesso e dai sistemi anti-bot. Gli attacchi offline avvengono quando un avversario ottiene un dump di hash delle password: senza limiti esterni, può provare milioni o miliardi di combinazioni usando hardware dedicato.
Protezione lato server: hash, salt e KDF
La prima linea di difesa è non conservare mai password in testo chiaro. Alcune regole chiave:
- Usare algoritmi di hashing progettati per password: bcrypt, scrypt o Argon2. Evitare MD5, SHA1 o SHA256 non iterati perché troppo veloci e vulnerabili a brute force.
- Applicare un salt univoco per utente. Il salt è valore casuale concatenato alla password prima dell’hash per prevenire l’uso di tabelle rainbow e rendere inefficace il riutilizzo di attacchi su più account.
- Usare KDF (Key Derivation Functions) memory-hard con fattore di costo regolabile. Argon2 è oggi lo standard consigliato per nuove implementazioni; scrypt e bcrypt sono alternative valide, con trade-off su consumo memoria e rete legacy.
- Regolare periodicamente il costo (work factor). All’aumentare della potenza hardware, incrementare iterazioni o parametri della KDF per mantenere la difficoltà computazionale.
Pepper e HSM: ulteriori barriere per attacchi offline
Un pepper è un valore segreto condiviso aggiunto alle password prima dell’hash e memorizzato separatamente dall’archivio utenti, idealmente in un HSM o in una vault sicura. Anche se il database con salt+hash viene esfiltrato, il pepper aiuta a impedire la verifica offline senza accesso al segreto centrale. Attenzione: se il pepper è gestito male diventa un singolo punto di fallimento.
Mitigare attacchi online: rate limiting, lockout e monitoraggio
Per ridurre efficacemente i brute force online:
- Implementare rate limiting per IP e per account, con backoff esponenziale per tentativi ripetuti.
- Usare lockout temporanei o progressive delays dopo N tentativi falliti, evitando però politiche troppo aggressive che facilitino attacchi di denial-of-service contro utenti legittimi.
- Integrare CAPTCHA o challenge-response nelle situazioni sospette per fermare bot automatizzati.
- Monitorare pattern anomali, come tentativi massicci da diverse geolocalizzazioni o credential stuffing (prova di credenziali violate presi da leak esterni).
Difese aggiuntive: MFA, passwordless e uso di HSM
L’autenticazione a più fattori (MFA) è una misura fondamentale: anche se la password viene compromessa, un secondo fattore riduce significativamente il rischio di takeover. Soluzioni da preferire:
- FIDO2/WebAuthn e chiavi hardware, che forniscono forte autenticazione basata su chiavi pubbliche e resistono al phishing.
- OTP time-based o push notification come secondo fattore nei contesti dove FIDO non è praticabile, con attenzione alla sicurezza del canale di consegna.
- Passwordless authentication per eliminare in tutto o in parte il problema delle password, ad esempio magic link sicuri o WebAuthn.
Per la gestione dei segreti (pepper, certificati, chiavi), considerare l’uso di HSM o di un vault centralizzato con controllo degli accessi e logging delle operazioni.
Best practice operative e gestione del ciclo di vita
Oltre alla tecnica pura, è importante operare con processi robusti:
- Controllo delle password: integrare blacklist di password comuni e il servizio Pwned Passwords per impedire l’uso di credenziali già compromesse.
- Misurare e testare: eseguire penetration test ed esercizi di red team focalizzati sulle autenticazioni.
- Log e alerting: registrare eventi di autenticazione e alertare su pattern sospetti per una risposta rapida.
- Migrazione sicura: quando si passa da algoritmi deprecati a KDF moderni, eseguire migrazioni progressive e forzare il re-hash delle password al login successivo.
- Formazione utenti: promuovere password manager e pratiche di autenticazione sicura per ridurre il rischio di riutilizzo e phishing.
Checklist rapida per implementazione
- Non conservare password in chiaro.
- Usare Argon2 o almeno bcrypt/scrypt con salt univoci per utente.
- Applicare pepper conservato in HSM o vault sicuro.
- Abilitare MFA e preferire standard FIDO2 quando possibile.
- Implementare rate limiting, progressive lockout e monitoraggio degli accessi.
- Utilizzare blacklist di password e Pwned Passwords per bloccare credenziali note vulnerabili.
- Pianificare test, migrazioni e tuning regolare dei parametri KDF.
Conclusione: non esiste una singola misura che elimini il rischio di password cracking. Una difesa efficace combina hashing robusto e parametrizzato, protezione contro attacchi online, autenticazione forte e gestione operativa continua. Implementando questi principi si riduce drasticamente la probabilità e l’impatto di compromissioni delle credenziali.