L'attacco della forza bruta — operazione completa
Documento di riferimento del progetto Time2Crack
Recipienti: sviluppatori, ricercatori di sicurezza, utenti avanzati
Contenuto
1. Panoramica
La forza cruda è l'attacco più fondamentale in cracking password: si compone di test sistematicamente tutte le combinazioni possibili Nessuna intelligenza, nessuna euristica — solo la potenza di calcolo raw contro le dimensioni dello spazio per viaggiare.
Nel Time2Crack, la forza bruta gioca un duplice ruolo:
2. Sfondo storico e accademico
2.1 Origini
La forza cruda precede il computer: il principio di testare tutte le possibili combinazioni viene utilizzato fin dalle prime macchine di crittografia meccanica (Enigma durante la seconda guerra mondiale). La bomba di Alan Turing era, in senso lato, un dispositivo di forza cruda forzato da un'ipotesi di presepi.
Con l'avvento dei computer, la forza password unix è stata formalizzata dagli anni '70 agli anni '80:
| Anno | Evento |
| ------ | ---------- |
| 1979 | Morris & Thompson: Primo articolo accademico sulla sicurezza delle password Unix, con l'analisi delle forze crude su /etc/passwd |
| 1988 | Morris Worm: prima impresa di massa utilizzando, tra le altre cose, un dizionario e una forza cruda crepa password |
| 1993 | Crack 5.0 (Alec Muffett): primo strumento di cracking pubblico da forza grezza su Unix |
| 2004 | Ophcrack: tabelle di scanalatura + forza grezza su LM/NTLM hashes Windows |
| 2007 | GPU-accelerated cracking (Elcomsoft): primo uso pubblico della GPU per accelerare la forza lorda |
| 2012 | Hashcat open source: strumento di riferimento, massima operazione GPU |
| 2016 | Hive Systems: pubblicazione annuale delle tabelle "gross force by GPU" diventa riferimento industriale |
2.2 Benchmarks
La rivoluzione della GPU ha cambiato l'ordine di grandezza della forza grezzo. Su CPU, un attaccante degli anni '90 ha testato ~10.000 password MD5/second. 168,9 miliardi al secondo — un'accelerazione di 16 milioni di volte in 30 anni.
Principali fonti accademiche :- Gosney, J (2012) : primo benchmark pubblico multi-GPU su LM/NTLM, che mostra 180 GH/s con 8 GPU
- Sistemi di sollevamento (2025) : tabelle annuali calibrate su 12× RTX 4090, citate da Forbes, CNBC, BBC
- Diffamazione, M. (2011) : Tesi di Radboud University su cracking GPU, formalizzazione matematica
3. Basi matematiche: keyspace e entropia
3.1 Spazio chiave
Keyspace (keyspace) è il numero totale di possibili password per una data lunghezza e serbatoio:
keyspace = charset_size ^ length
Esempi:
| Caricamento | Dimensione | Lunghezza | Spazio chiave | Valutazione |
| -------- | -------- | ---------- | ---------- | ---------- |
| cifre singole | 10 | 8 | 108 = 100.000 | - 108 |
| Minuscoli da soli | 26. | 8 | 268 milioni di euro | ~2 × 1011 |
| Alfanumerologia | 62 | 8 | 628 milioni | ~2 × 1014 |
| ASCII completo | 95 | 8 | 958 miliardi | ~6 × 1015 |
| ASCII completo | 95 | 12 | 9512 - 5.4 × 1023 | ~5 × 1023 |
| ASCII completo | 95 | 16 | 9516 - 4.4 × 1031 | ~4 × 1031 |
3.2 entropia binaria
Entropia (misurata in bit) è la formulazione logaritmica dello spazio chiave:
entropie = length × log₂(charset_size)
In Time2Crack (funzione entropy())
function entropy(pw) {
return pw.length * Math.log2(getCharset(pw).size);
}
Il rapporto tra entropia e keyspace:
keyspace = 2^entropie
entropie = log₂(keyspace)
Esempi concreti :
| Password | Caricamento | Lunghezza | Entropia | Spazio chiave |
| ------- | -------- | ---------- | ---------- | ---------- |
| "12345678" | 10 (digits) | 8 | 26.6 bit | 108 |
| "password" | 26 (più basso) | 8 | 37.6 bit | 268 |
| Password1 | 62 (alfano) | 9 | 53.6 bit | 629 |
| "P@ssw0rd!" | 95 (completa ASCII) | 9 | 59.3 bit | 959 |
| xQz7@mK9#2pL | 95 (completa ASCII) | 12 | 79 bit | 9512 |
3.3 Speranza matematica: Keyspace / 2
La forza cruda non sempre prova keyspace Combinazioni Integer — in media, trova la password a metà strada, in quanto l'obiettivo è equiprobabilmente distribuito nello spazio.aspettativa matematica il numero di tentativi è quindi:
tentatives_attendues = keyspace / 2
Questo è esattamente ciò che modelli bruteTime() in Time2Crack:
// "For brute force: expected value is keyspace/2 (uniform random search)"
function bruteTime(keyspace, rate) {
const ls = Math.log(keyspace / 2) - Math.log(rate);
return Math.exp(ls); // = (keyspace / 2) / rate
}
Questa divisione di 2 è corretta secondo l'ipotesi che l'attaccante viaggi lo spazio linearmente (non ripetitivo). keyspace/2 Tentativi.
14. Efficace difesa
14.1 lato utente: lunghezza e casualità
La forza lorda è sconfitta da due fattori combinati:
Lunghezza : ogni carattere aggiuntivo moltiplica lo spazio chiave percharset_sizeDa 8 a 12 caratteri (charset 95) moltiplica lo spazio chiave per 954 - 81 milioni.
Vero casuale : un generatore crittografico sicuro (CSPRNG) produce password che non beneficiano di alcuna riduzione probabilistica.
Raccomandazione pratica :
- Password Manager + Generazione casuale ≥ 16 caratteri con galleggiante completo = fuori gamma di qualsiasi forza grezza in un orizzonte di vita umana
14.2 lato server: algoritmi resistenti
La scelta dell'algoritmo hash moltiplica o divide il tempo di forza cruda per fattori fino a diversi milioni :
| Raccomandazione | Algoritmo | Motivazione |
| ---------------- | --- | -------- |
| Consigliato | Argon2id | Memory-hard, GPU resistente |
| Consigliato | bcrypt (costo ≥ 12) | Intenzionalmente lento, salato |
| Accettabile | Crittografia | Memoria dura ma meno standardizzata |
| Inadeguato | SHA-256 salato | Troppo veloce anche con sale |
| Pericoloso | MD5, SHA-1, NTLM | Non salato, estremamente veloce |
15. Riferimenti biblici
Accademica
Morris, R., & Thompson, K. (1979). Sicurezza della password: Una storia del caso. Comunicazioni dell'ACM, 22(11), 594-597. → Articolo fondatore sulla sicurezza di password UnixSprengers, M. (2011). Monitoraggio password basato su GPU (le tesi di Master). Radboud University Nijmegen. → formalizzazione matematica di cracking GPU, benchmark su GPU singolo
Wheeler, D.L. (2016). zxcvbn: stima della forza della password a basso costo. 25 ° Simposio di sicurezza USENIX. → Dati sullo spazio chiave efficace (Tabella 2: -30% per password strutturate)
Dürmuth, M. et al. (2015). OMEN: Ordine Markov ENumerator. ESORICS 2015. → Riferimento comparativo per terminali probabilistici vs forza lorda
Industria
Hive Systems. (2025). 2025 Hive Systems Password Table. https://www.hivesystems.io/password-table → benchmark annuali su 12× RTX 4090, riferimento standardGosney, J (2012). 8x Nvidia GTX 1080 Hashcat benchmarks. GitHub Gist. → Primo riferimento pubblico multi-GPU, riferimento storico
Hashcat. (2024). Punti di riferimento ufficiali Hashcat v6.2.6. https://hashcat.net/hashcat/ → Velocità ufficiali per algoritmo, fonte di costanti Time2Crack
NIST SP 800-63B. (2017, aggiornato 2024). Linee guida per l'identità digitale: autenticazione e gestione del ciclo di vita. → Raccomandazioni ufficiali sulla lunghezza e la complessità delle password
OWASP. (2024). Scheda di deposito della password. https://cheatssheetseries.owasp.org/cheatssheets/Password Storage Cheat Sheet.html → Raccomandazioni su bcrypt (costo ≥ 12), Argon2id come standard moderni
Documento generato per il progetto Time2Crack — ultimo aggiornamento: 2026-04-18 Sulla base dell'implementazione in app.js, funzioni grezzeTime(), getCharset(), e guardia monotonicity