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
(3 lettere minuscole,
2 numeri)

( 53) × 263 × 102 =
17.576.000

17.576.000 / 2.000.000.000 =
0,008788 secondi

7 caratteri
(1 maiuscola,
6 minuscole)

( 71) × 261+6 =
56.222.671.232

56.222.671.232 / 2.000.000.000 =
28,111335616 secondi

8 caratteri
(4 lettere minuscole,
2 caratteri speciali,
2 numeri)

( 84) × ( 42 ) × 264 × 322 × 102 =
19.653.623.808.000

19.653.623.808.000 / 2.000.000.000 =
9.826,811904 secondi =
≈ 2,73 ore

9 caratteri
(2 lettere maiuscole,
3 lettere minuscole,
2 numeri,
2 caratteri speciali)

( 92 ) × ( 73) × ( 42 ) × 262+3 × 102 × 322 =
9.197.895.942.144.000

9.197.895.942.144.000 / 2.000.000.000 =
4.598.947,971072 secondi =
≈ 53,23 giorni

12 caratteri
(3 lettere maiuscole,
4 lettere minuscole,
3 caratteri speciali,
2 numeri)

( 123) × ( 94 ) × ( 53) × 263+4 × 323 × 102 =
7.295.525.784.083.496.960.000

7.295.525.784.083.496.960.000 / 2.000.000.000 =
3.647.762.892.041,74848 secondi =
≈ 115.590,63 anni

14 caratteri
(4 lettere maiuscole,
4 lettere minuscole,
3 numeri,
3 caratteri speciali)

( 144 ) × ( 104) × ( 63 ) × 264+4 × 103 × 323 =
28.768.690.008.569.256.345.600.000

28.768.690.008.569.256.345.600.000 / 2.000.000.000 =
14.384.345.004.284.628,1728 secondi =
≈ 455.812.387,64 anni

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