Know-how / Sicurezza delle password

Come funzionano gli attacchi brute force

Perché la lunghezza conta: esempi di calcolo e contromisure.

Negli attacchi brute force gli aggressori cercano di indovinare una password tramite prove sistematiche di tutte le possibili combinazioni di caratteri. L'idea di base è semplice: testare il maggior numero possibile di combinazioni al secondo, idealmente su GPU o in sistemi distribuiti. Si parla anche di una ricerca esaustiva (ricerca esaustiva).

In pratica, purtroppo questi attacchi hanno spesso successo perché molte password sono troppo corte , si limitano a pochi gruppi di caratteri (solo lettere) oppure compaiono in liste di parole. Questo riduce drasticamente lo spazio di ricerca e rende più facile indovinarle. Ancora più importante: si distingue tra attacchi online (contro i moduli di login, dove aiutano il rate limiting e il blocco dell’account) e attacchi offline (contro hash di password rubati, dove la funzione di hash e la robustezza della password determinano il tempo necessario per l’attacco).

Craccare password (offline) ≠ “decifrare”

Le password non vengono decifrate, ma memorizzate come valori hash e poi ricercate tramite tentativi + hashing (brute force, attacchi a dizionario/maschera). La velocità di calcolo dell’hardware moderno raggiunge miliardi al secondo (per gli algoritmi di hash veloci), motivo per cui le password lunghe e hashate con algoritmi lenti (ad es. Argon2, scrypt, PBKDF2, bcrypt) sono fondamentali.

Riferimento storico e attuale: Il progetto RC5 di distributed.net dimostra la forza bruta di una ricerca esaustiva applicata a uno spazio delle chiavi: 56 bit furono trovati nel 1997 dopo 250 giorni, 64 bit nel 2002 dopo 1.757 giorni. Attualmente, il Proxy-Status per RC5-72 circa 2,38 trilioni di chiavi al secondo (dato aggiornato al giorno della consultazione). Si tratta di forza bruta delle chiavi e non di hashing delle password, ma rende evidente quanto possa scalare la potenza di calcolo distribuita.

Combinazione e lunghezza della password

Gli esempi seguenti mostrano l’influenza di lunghezza e scelta dei caratteri. A scopo illustrativo si considera una velocità di 2 miliardi di tentativi al secondo (singolo sistema molto potente; i valori reali variano notevolmente in base all’hardware e, nel caso offline, anche al metodo di hashing).

Gruppi di caratteri tipici:

  • Numeri (10: 0-9)
  • Lettere (52: A-Z e a-z)
  • Caratteri speciali (≈ 32; dipende dal set di caratteri consentito dal servizio)

Il numero di combinazioni possibili si ottiene da:

Combinazioni possibili = (insieme di caratteri)lunghezza della password

Importante: La tabella mostra il tempo di ricerca massimo. In media, il tempo effettivo è pari a circa la metà. Inoltre, gli attacchi con dizionario, basati su regole e con maschere riducono notevolmente lo spazio di ricerca, mentre i metodi di hashing delle password lenti riducono drasticamente il tasso effettivo.

La password è composta daTempo necessario (a 2 mld/s)Combinazioni possibili (formula)
5 caratteri
3 minuscole, 2 cifre
0,009 secondi(53) × 263 × 10217.576.000
7 caratteri
1 maiuscola, 6 minuscole
≈ 28 secondi(71) × 261+656.222.671.232
8 caratteri
4 minuscole, 2 caratteri speciali, 2 cifre
≈ 2,73 ore(84) × (42) × 264 × 322 × 10219.653.623.808.000
9 caratteri
2 maiuscole, 3 minuscole, 2 cifre, 2 caratteri speciali
≈ 53 giorni(92) × (73) × (42) × 262+3 × 102 × 3229.197.895.942.144.000
12 caratteri
3 maiuscole, 4 minuscole, 3 caratteri speciali, 2 cifre
≈ 115.591 anni(123) × (94) × (53) × 263+4 × 323 × 1027,30 × 1021
14 caratteri
4 maiuscole, 4 minuscole, 3 cifre, 3 caratteri speciali
≈ 455.812.388 anni(144) × (104) × (63) × 264+4 × 103 × 3232,88 × 1025

Conclusione: Ogni carattere aggiuntivo moltiplica lo spazio di ricerca. La lunghezza conta più delle regole di complessità, soprattutto contro Attacchi offline – a condizione che i servizi utilizzino algoritmi di hash adeguati e lenti con salt.

Protezione dagli attacchi brute force

La misura più efficace per gli utenti è una Master-Passwort lungo e casuale oppure una passphrase (ad es. più parole casuali) – unica per ogni servizio. Password Depot aiuta a generarla e mostra un’stima del tempo di attacco che, oltre a lunghezza/set di caratteri, tiene conto anche delle vulnerabilità legate al dizionario.

  • Attivare MFA/2FA (ad es. app TOTP o token hardware) – dove possibile, i Passkeys sono ancora meglio. Vedi le indicazioni del BSI.
  • Nessun riutilizzo delle password. Ogni account deve avere una password propria e robusta.
  • Meglio la lunghezza che la complessità obbligatoria. I servizi dovrebbero consentire password/passphrase lunghe (almeno 64 caratteri) e bloccare le password compromesse (blacklist).
  • Algoritmi di hash lenti lato server (ad es. Argon2, scrypt, PBKDF2, bcrypt) con Salt e fattori di lavoro adeguati; hash veloci come MD5/SHA-1 non sono adatti alla memorizzazione delle password.
  • Rate limiting/throttling e blocchi: Gli attacchi online devono essere rallentati tramite un numero limitato di tentativi errati, tempi di attesa progressivi e, se necessario, CAPTCHA.

Inoltre, Password Depot ostacola i tentativi di online rate guessing bloccando per breve tempo la schermata di inserimento del Master-Passwort dopo input errati, con tempi di attesa crescenti in caso di ripetuti tentativi falliti.

Indicazioni pratiche per i fornitori di servizi (team tecnici)

  • Accettate tutti i caratteri stampabili, inclusi spazi/Unicode, e consentite il copia e incolla.
  • Implementate blocklist (password compromesse/comuni) e rate limiting con indicazioni chiare per gli utenti.
  • Memorizzate le password esclusivamente come valori con salt e hash con KDF lenti e verificate regolarmente i fattori di lavoro.

Fonti di approfondimento

Creare password sicure

Scoprite come creare password in grado di resistere agli attacchi brute force.

Consigli per password sicure