Articoli

Difese contro il password cracking: best practice per proteggere le credenziali

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.