Come funzionano gli attacchi brute force
Perché la lunghezza è importante: esempi di calcolo e contromisure.
Negli attacchi brute force, gli aggressori cercano di indovinare una password provando sistematicamente tutte le possibili combinazioni di caratteri. L'idea alla base è semplice: testare il maggior numero possibile di combinazioni al secondo, idealmente su GPU o in sistemi distribuiti. Si parla anche di ricerca esaustiva (exhaustive search).
Nella pratica, purtroppo, tali attacchi hanno spesso successo perché molte password sono troppo brevi, si limitano a pochi gruppi di caratteri (solo lettere) o compaiono in elenchi di parole. Ciò riduce drasticamente lo spazio di ricerca e rende più facile indovinare la password. Ancora più importante: si distingue tra attacchi online (contro i moduli di login, dove aiutano il rate limiting/il blocco degli account) e attacchi offline (contro gli hash delle password rubate, dove la funzione hash e la forza della password determinano il tempo di attacco).
Decifrare le password (offline) ≠ “decodificare”
Le password non vengono decodificate, ma memorizzate come valori hash e poi cercate con tentativi + hash</ em> (brute force, attacchi con dizionario/maschera). La velocità di calcolo dell'hardware moderno è dell'ordine di miliardi al secondo (per i processi di hash veloci), motivo per cui le password lunghe e con lenti (ad es. Argon2, scrypt, PBKDF2, bcrypt) sono fondamentali.
Combinazione e lunghezza della password
Gli esempi seguenti mostrano l'influenza della lunghezza e della selezione dei caratteri. A titolo illustrativo, si calcolano 2 miliardi di tentativi al secondo (computer singolo molto potente; i valori reali variano notevolmente a seconda dell'hardware e, in caso di offline, del processo di hash).
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 è dato da:
Combinazioni possibili = (insieme di caratteri)lunghezza password
Importante: la tabella mostra il tempo di ricerca massimo. In media, il tempo effettivo è circa la metà. Inoltre, gli attacchi con dizionario, regole e maschere riducono notevolmente lo spazio di ricerca, mentre i metodi di hash delle password lenti riducono drasticamente il tasso effettivo.
| La password è composta da | Possibili combinazioni (formula) | Tempo necessario (a 2 miliardi/s) |
|---|---|---|
|
5 caratteri |
( 53) ×
263 × 102 = |
17.576.000 / 2.000.000.000 = |
|
7 caratteri |
( 71) ×
261+6 = |
56.222.671.232 / 2.000.000.000 = |
|
8 caratteri |
( 84) × ( 42 ) × 264
× 322 × 102 = |
19.653.623.808.000 / 2.000.000.000 = |
|
9 caratteri |
( 92 ) × ( 73) × ( 42 ) ×
262+3 × 102 × 322 = |
9.197.895.942.144.000 / 2.000.000.000 = |
|
12 caratteri |
( 123) × ( 94 ) × ( 53) ×
263+4 × 323 × 102 = |
7.295.525.784.083.496.960.000 / 2.000.000.000 = |
|
14 caratteri |
( 144 ) × (
104) × ( 63 ) ×
264+4 × 103 × 323 = |
28.768.690.008.569.256.345.600.000 / 2.000.000.000 = |
Conclusione: Ogni carattere aggiuntivo moltiplica lo spazio di ricerca. La lunghezza prevale sulle regole di complessità, in particolare contro gli 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 l'utente è una password master lunga e casuale o una passphrase (ad es. più parole casuali) – unica per ogni servizio. Password Depot aiuta nella generazione e mostra un tempo di attacco stimato, che tiene conto non solo della lunghezza/del set di caratteri, ma anche delle vulnerabilità del dizionario.
- Attiva MFA/2FA (ad es. app TOTP o token hardware) – ove possibile, le passkey sono ancora migliori. Vedi BSI‑Hinweise.
- Nessun riutilizzo delle password. Ogni account necessita di una password forte e unica.
- Complessità lunga anziché obbligatoria. I servizi dovrebbero consentire password/frasi di accesso lunghe (minimo 64 caratteri) e bloccare le password compromesse (lista nera).
- Procedure di hash lento lato server (ad es. Argon2, scrypt, PBKDF2, bcrypt) con salt e fattori di lavoro adeguati; gli hash veloci come MD5/SHA-1 non sono inadatti alla memorizzazione delle password.
- Limitazione della velocità/throttling e blocchi: gli attacchi online devono essere rallentati tramite tentativi di accesso limitati, tempi di attesa progressivi e, se necessario, CAPTCHA.
Inoltre, Password Depot rende più difficili i tentativi di password online bloccando brevemente la maschera di immissione della password principale dopo inserimenti errati, con tempi di attesa crescenti in caso di tentativi errati ripetuti.
Ulteriori fonti
- NIST SP 800‑63B (Rev. 4), Appendice: Strength of Passwords – Lunghezza, passphrase, attacchi offline (miliardi di hash/sec.) e concetto di limitazione della velocità.
- NIST SP 800‑63B (Rev. 3) – tra l'altro lunghezza minima, consentire password lunghe (≥ 64), blacklist, consentire il copia-incolla; limitazione della frequenza/throttling con limite massimo di 100 tentativi falliti consecutivi.
- OWASP Password Storage Cheat Sheet – procedure adeguate (Argon2, scrypt, PBKDF2, bcrypt), fattori salt/work.
- OWASP Authentication Cheat Sheet – Linee guida per l'inserimento delle password, la lunghezza, le blacklist e i meccanismi di blocco.
- BSI: Creare password sicure – tra cui password e passphrase lunghe/complesse; consigli pratici.
- Comunicato stampa BSI del 31/01/2025 – Nessun obbligo di cambiare regolarmente la password; preferire 2FA/passkey.
- distributed.net RC5 / Stato attuale del proxy – Esempio illustrativo di ricerca esaustiva e potenza di calcolo distribuita.